From 0f316e5553561774a795f6ec69949ab70bd93a8f Mon Sep 17 00:00:00 2001 From: Daniel Nagy Date: Tue, 19 Apr 2022 12:10:22 +0200 Subject: [PATCH] emacsWrapper: fix mishandling of empty package list The native compiler of emacs does not handle empty files well. This arose in https://github.com/NixOS/nixpkgs/pull/168954 . --- pkgs/build-support/emacs/wrapper.nix | 7 +++++++ pkgs/build-support/emacs/wrapper.sh | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/emacs/wrapper.nix b/pkgs/build-support/emacs/wrapper.nix index 207908fb606..2bf8eaf2d7a 100644 --- a/pkgs/build-support/emacs/wrapper.nix +++ b/pkgs/build-support/emacs/wrapper.nix @@ -144,6 +144,7 @@ runCommand find $pkg -name "*-autoloads.el" \ -exec echo \(load \"{}\" \'noerror \'nomessage\) \; >> $siteAutoloads done + echo "(provide 'nix-generated-autoload)" >> $siteAutoloads siteStart="$out/share/emacs/site-lisp/site-start.el" siteStartByteCompiled="$siteStart"c @@ -196,12 +197,18 @@ runCommand # Wrap emacs and friends so they find our site-start.el before the original. for prog in $emacs/bin/*; do # */ local progname=$(basename "$prog") + local autoloadExpression="" rm -f "$out/bin/$progname" + if [[ $progname == emacs ]]; then + # progs other than "emacs" do not understand the `-l` switches + autoloadExpression="-l cl-loaddefs -l nix-generated-autoload" + fi substitute ${./wrapper.sh} $out/bin/$progname \ --subst-var-by bash ${emacs.stdenv.shell} \ --subst-var-by wrapperSiteLisp "$deps/share/emacs/site-lisp" \ --subst-var-by wrapperSiteLispNative "$deps/share/emacs/native-lisp:" \ + --subst-var autoloadExpression \ --subst-var prog chmod +x $out/bin/$progname done diff --git a/pkgs/build-support/emacs/wrapper.sh b/pkgs/build-support/emacs/wrapper.sh index 6c5a5aee2a8..16da2a9f649 100644 --- a/pkgs/build-support/emacs/wrapper.sh +++ b/pkgs/build-support/emacs/wrapper.sh @@ -44,4 +44,4 @@ export emacsWithPackages_siteLisp=@wrapperSiteLisp@ export EMACSNATIVELOADPATH="${newNativeLoadPath[*]}" export emacsWithPackages_siteLispNative=@wrapperSiteLispNative@ -exec @prog@ -l cl-loaddefs -l nix-generated-autoload "$@" +exec @prog@ @autoloadExpression@ "$@"