nixpkgs/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix
sternenseemann d09528373d emacs.pkgs.ada-mode: fix build for version 7.3.1
Fixes breakage to ada-mode introduced in #200190.

ada-mode recently gained a Makefile [1] which is intended for compiling
it in the ELPA worktree. Building from the ELPA release tarball still
needs to be done via build.sh, so we need to overwrite buildPhase to
ignore the Makefile (previously it'd just do nothing).

Additionally some new build tools are needed and lzip can be removed (as
we no longer fetch an archived version of wisi from ELPA).

[1]: https://git.savannah.gnu.org/cgit/emacs/elpa.git/commit/Makefile?h=externals/ada-mode&id=d5428433e39f3de7168fdc891127a2dcff849904
2022-11-13 13:29:27 +01:00

132 lines
3.5 KiB
Nix

/*
# Updating
To update the list of packages from ELPA,
1. Run `./update-elpa`.
2. Check for evaluation errors:
# "../../../../../" points to the default.nix from root of Nixpkgs tree
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate ../../../../../ -A emacs.pkgs.elpaPackages
3. Run `git commit -m "elpa-packages $(date -Idate)" -- elpa-generated.nix`
## Update from overlay
Alternatively, run the following command:
./update-from-overlay
It will update both melpa and elpa packages using
https://github.com/nix-community/emacs-overlay. It's almost instantenous and
formats commits for you.
*/
{ lib, stdenv, texinfo, writeText, gcc, pkgs, buildPackages }:
self: let
markBroken = pkg: pkg.override {
elpaBuild = args: self.elpaBuild (args // {
meta = (args.meta or {}) // { broken = true; };
});
};
elpaBuild = import ../../../../build-support/emacs/elpa.nix {
inherit lib stdenv texinfo writeText gcc;
inherit (self) emacs;
};
# Use custom elpa url fetcher with fallback/uncompress
fetchurl = buildPackages.callPackage ./fetchelpa.nix { };
generateElpa = lib.makeOverridable ({
generated ? ./elpa-generated.nix
}: let
imported = import generated {
callPackage = pkgs: args: self.callPackage pkgs (args // {
inherit fetchurl;
});
};
super = removeAttrs imported [ "dash" ];
overrides = {
# upstream issue: Wrong type argument: arrayp, nil
org-transclusion =
if super.org-transclusion.version == "1.2.0"
then markBroken super.org-transclusion
else super.org-transclusion;
rcirc-menu = markBroken super.rcirc-menu; # Missing file header
cl-lib = null; # builtin
tle = null; # builtin
advice = null; # builtin
seq = if lib.versionAtLeast self.emacs.version "27"
then null
else super.seq;
project = if lib.versionAtLeast self.emacs.version "28"
then null
else super.project;
# Compilation instructions for the Ada executables:
# https://www.nongnu.org/ada-mode/
ada-mode = super.ada-mode.overrideAttrs (old: {
# actually unpack source of ada-mode and wisi
# which are both needed to compile the tools
# we need at runtime
dontUnpack = false;
srcs = [
super.ada-mode.src
self.wisi.src
];
sourceRoot = "ada-mode-${self.ada-mode.version}";
nativeBuildInputs = [
buildPackages.gnat
buildPackages.gprbuild
buildPackages.dos2unix
buildPackages.re2c
];
buildInputs = [
pkgs.gnatcoll-xref
];
buildPhase = ''
runHook preBuild
./build.sh -j$NIX_BUILD_CORES
runHook postBuild
'';
postInstall = (old.postInstall or "") + "\n" + ''
./install.sh --prefix=$out
'';
meta = old.meta // {
maintainers = [ lib.maintainers.sternenseemann ];
};
});
plz = super.plz.overrideAttrs (
old: {
dontUnpack = false;
postPatch = old.postPatch or "" + ''
substituteInPlace ./plz.el \
--replace 'plz-curl-program "curl"' 'plz-curl-program "${pkgs.curl}/bin/curl"'
'';
preInstall = ''
tar -cf "$pname-$version.tar" --transform "s,^,$pname-$version/," * .[!.]*
src="$pname-$version.tar"
'';
}
);
};
elpaPackages = super // overrides;
in elpaPackages // { inherit elpaBuild; });
in generateElpa { }