mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-04 03:03:42 +00:00
d09528373d
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
132 lines
3.5 KiB
Nix
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 { }
|