Unverified Commit fc9502ff authored by Lin Jian's avatar Lin Jian
Browse files

emacsPackages: fix build for elpa packages

parent e48a0365
Loading
Loading
Loading
Loading
+124 −0
Original line number Diff line number Diff line
@@ -4,6 +4,14 @@ self: super:

let
  libExt = pkgs.stdenv.hostPlatform.extensions.sharedLibrary;
  inherit (import ./lib-override-helper.nix pkgs lib)
    addPackageRequires
    addPackageRequiresIfOlder
    ignoreCompilationError
    ignoreCompilationErrorIfOlder
    mkHome
    mkHomeIfOlder
    ;
in
{
  cl-lib = null; # builtin
@@ -54,6 +62,64 @@ in
    }
  );

  # native-compiler-error-empty-byte in old versions
  ada-ref-man = ignoreCompilationErrorIfOlder super.ada-ref-man "2020.1.0.20201129.190419";

  # elisp error in old versions
  ampc = ignoreCompilationErrorIfOlder super.ampc "0.2.0.20240220.181558";

  auctex = mkHome super.auctex;

  auctex-cont-latexmk = mkHome super.auctex-cont-latexmk;

  auctex-label-numbers = mkHome super.auctex-label-numbers;

  # missing optional dependencies https://codeberg.org/rahguzar/consult-hoogle/issues/4
  consult-hoogle = addPackageRequiresIfOlder super.consult-hoogle [ self.consult ] "0.2.2";

  # missing optional dependencies https://github.com/jacksonrayhamilton/context-coloring/issues/10
  context-coloring = addPackageRequires super.context-coloring [ self.js2-mode ];

  cpio-mode = ignoreCompilationError super.cpio-mode; # elisp error

  # fixed in https://git.savannah.gnu.org/cgit/emacs/elpa.git/commit/?h=externals/dbus-codegen&id=cfc46758c6252a602eea3dbc179f8094ea2a1a85
  dbus-codegen = ignoreCompilationErrorIfOlder super.dbus-codegen "0.1.0.20201127.221326"; # elisp error

  ebdb = super.ebdb.overrideAttrs (
    finalAttrs: previousAttrs:
    let
      applyOrgRoamMissingPatch = lib.versionOlder finalAttrs.version "0.8.22.0.20240205.070828";
    in
    {
      dontUnpack = !applyOrgRoamMissingPatch;
      patches =
        if applyOrgRoamMissingPatch then
          previousAttrs.patches or [ ]
          ++ [
            (pkgs.fetchpatch {
              name = "fix-comilation-error-about-missing-org-roam.patch";
              url = "https://github.com/girzel/ebdb/commit/058f30a996eb9074feac8f94db4eb49e85ae08f1.patch";
              hash = "sha256-UI72N3lCgro6bG75sWnbw9truREToQHEzZ1TeQAIMjo=";
            })
          ]
        else
          previousAttrs.patches or null;
      preBuild =
        if applyOrgRoamMissingPatch then
          previousAttrs.preBuild or ""
          + "\n"
          + ''
            pushd ..
            local content_directory=$ename-$version
            src=$PWD/$content_directory.tar
            tar --create --verbose --file=$src $content_directory
            popd
          ''
        else
          previousAttrs.preBuild or null;
    }
  );

  eglot = super.eglot.overrideAttrs (
    finalAttrs: previousAttrs: {
      postInstall =
@@ -99,6 +165,29 @@ in
    };
  });

  notes-mode = (mkHome super.notes-mode).overrideAttrs (old: {
    dontUnpack = false;
    buildInputs = old.buildInputs or [ ] ++ [ pkgs.perl ];
    nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ pkgs.perl ];
    preInstall =
      old.preInstall or ""
      + "\n"
      + ''
        patchShebangs --build mkconfig
        pushd ..
        local content_directory=$ename-$version
        src=$PWD/$content_directory.tar
        tar --create --verbose --file=$src $content_directory
        popd
      '';
    postFixup =
      old.postFixup or ""
      + "\n"
      + ''
        patchShebangs --host --update $out/share/emacs/site-lisp/elpa/$ename-$version/mkconfig
      '';
  });

  plz = super.plz.overrideAttrs (old: {
    dontUnpack = false;
    postPatch =
@@ -117,10 +206,22 @@ in
      '';
  });

  # https://sourceware.org/bugzilla/show_bug.cgi?id=32185
  poke = addPackageRequires super.poke [ self.poke-mode ];

  pq = super.pq.overrideAttrs (old: {
    buildInputs = old.buildInputs or [ ] ++ [ pkgs.postgresql ];
  });

  preview-auto = mkHome super.preview-auto;

  preview-tailor = mkHome super.preview-tailor;

  # native-ice https://github.com/mattiase/relint/issues/15
  relint = ignoreCompilationError super.relint;

  shen-mode = ignoreCompilationErrorIfOlder super.shen-mode "0.1.0.20221221.82050"; # elisp error

  # native compilation for tests/seq-tests.el never ends
  # delete tests/seq-tests.el to workaround this
  seq = super.seq.overrideAttrs (old: {
@@ -136,6 +237,26 @@ in
      '';
  });

  # https://github.com/alphapapa/taxy.el/issues/3
  taxy = super.taxy.overrideAttrs (old: {
    dontUnpack = false;
    postUnpack =
      old.postUnpack or ""
      + "\n"
      + ''
        local content_directory=$ename-$version
        rm --verbose --recursive $content_directory/examples
        src=$PWD/$content_directory.tar
        tar --create --verbose --file=$src $content_directory
      '';
  });

  tex-parens = mkHomeIfOlder super.tex-parens "0.4.0.20240630.70456";

  timerfunctions = ignoreCompilationErrorIfOlder super.timerfunctions "1.4.2.0.20201129.225252";

  wisitoken-grammar-mode = ignoreCompilationError super.wisitoken-grammar-mode; # elisp error

  xeft = super.xeft.overrideAttrs (old: {
    dontUnpack = false;
    buildInputs = old.buildInputs or [ ] ++ [ pkgs.xapian ];
@@ -153,4 +274,7 @@ in
        rm $outd/xapian-lite.cc $outd/emacs-module.h $outd/emacs-module-prelude.h $outd/demo.gif $outd/Makefile
      '';
  });

  # native-ice https://github.com/mattiase/xr/issues/9
  xr = ignoreCompilationError super.xr;
}