about summary refs log tree commit diff
diff options
context:
space:
mode:
authoradisbladis <adisbladis@gmail.com>2021-11-29 16:21:52 -0800
committerGitHub <noreply@github.com>2021-11-29 16:21:52 -0800
commitb14dde0fd9b906dbab9f770a44d4a3c2a6d76c0f (patch)
tree7530cd0532c136a465362efe6e11cd09076d0a62
parent4db84ed126a16e226c5f1a3f13c7bee92fa0a3a4 (diff)
parent3247e757416496ef6a19fb53ffdc4c92c969f39a (diff)
downloadnixlib-b14dde0fd9b906dbab9f770a44d4a3c2a6d76c0f.tar
nixlib-b14dde0fd9b906dbab9f770a44d4a3c2a6d76c0f.tar.gz
nixlib-b14dde0fd9b906dbab9f770a44d4a3c2a6d76c0f.tar.bz2
nixlib-b14dde0fd9b906dbab9f770a44d4a3c2a6d76c0f.tar.lz
nixlib-b14dde0fd9b906dbab9f770a44d4a3c2a6d76c0f.tar.xz
nixlib-b14dde0fd9b906dbab9f770a44d4a3c2a6d76c0f.tar.zst
nixlib-b14dde0fd9b906dbab9f770a44d4a3c2a6d76c0f.zip
Merge pull request #141186 from rycee/emacs-wrapper-static-subdirs
emacs: resolve wrapper load-path at build time
-rw-r--r--pkgs/build-support/emacs/mk-wrapper-subdirs.el6
-rw-r--r--pkgs/build-support/emacs/wrapper.nix9
2 files changed, 13 insertions, 2 deletions
diff --git a/pkgs/build-support/emacs/mk-wrapper-subdirs.el b/pkgs/build-support/emacs/mk-wrapper-subdirs.el
new file mode 100644
index 000000000000..7d30400a5c65
--- /dev/null
+++ b/pkgs/build-support/emacs/mk-wrapper-subdirs.el
@@ -0,0 +1,6 @@
+(defmacro mk-subdirs-expr (path)
+  `(setq load-path
+         (delete-dups (append '(,path)
+                              ',(let ((default-directory path))
+                                  (normal-top-level-add-subdirs-to-load-path))
+                              load-path))))
diff --git a/pkgs/build-support/emacs/wrapper.nix b/pkgs/build-support/emacs/wrapper.nix
index ccbd58485ea8..2aa61d6d2f62 100644
--- a/pkgs/build-support/emacs/wrapper.nix
+++ b/pkgs/build-support/emacs/wrapper.nix
@@ -165,8 +165,13 @@ runCommand
           (add-to-list 'native-comp-eln-load-path "$out/share/emacs/native-lisp/")
         ''}
         EOF
-        # Link subdirs.el from the emacs distribution
-        ln -s $emacs/share/emacs/site-lisp/subdirs.el -T $subdirs
+
+        # Generate a subdirs.el that statically adds all subdirectories to load-path.
+        $emacs/bin/emacs \
+          --batch \
+          --load ${./mk-wrapper-subdirs.el} \
+          --eval "(prin1 (macroexpand-1 '(mk-subdirs-expr \"$out/share/emacs/site-lisp\")))" \
+          > "$subdirs"
 
         # Byte-compiling improves start-up time only slightly, but costs nothing.
         $emacs/bin/emacs --batch -f batch-byte-compile "$siteStart" "$subdirs"