Merge pull request #106486 from alyssais/emacsWithPackages

emacsWithPackages: EMACSLOADPATH correctness fixes

Changed files
+50 -4
pkgs
applications
editors
build-support
+11
pkgs/applications/editors/emacs/site-start.el
···
(nix--profile-paths)))))
(setq load-path (append paths load-path)))
+
;;; Remove wrapper site-lisp from EMACSLOADPATH so it's not propagated
+
;;; to any other Emacsen that might be started as subprocesses.
+
(let ((wrapper-site-lisp (getenv "emacsWithPackages_siteLisp"))
+
(env-load-path (getenv "EMACSLOADPATH")))
+
(when wrapper-site-lisp
+
(setenv "emacsWithPackages_siteLisp" nil))
+
(when (and wrapper-site-lisp env-load-path)
+
(let* ((env-list (split-string env-load-path ":"))
+
(new-env-list (delete wrapper-site-lisp env-list)))
+
(setenv "EMACSLOADPATH" (when new-env-list
+
(mapconcat 'identity new-env-list ":"))))))
;;; Make `woman' find the man pages
(defvar woman-manpath)
+12 -4
pkgs/build-support/emacs/wrapper.nix
···
for prog in $emacs/bin/*; do # */
local progname=$(basename "$prog")
rm -f "$out/bin/$progname"
-
makeWrapper "$prog" "$out/bin/$progname" \
-
--suffix EMACSLOADPATH ":" "$deps/share/emacs/site-lisp:"
+
+
substitute ${./wrapper.sh} $out/bin/$progname \
+
--subst-var-by bash ${emacs.stdenv.shell} \
+
--subst-var-by wrapperSiteLisp "$deps/share/emacs/site-lisp" \
+
--subst-var prog
+
chmod +x $out/bin/$progname
done
# Wrap MacOS app
···
$emacs/Applications/Emacs.app/Contents/PkgInfo \
$emacs/Applications/Emacs.app/Contents/Resources \
$out/Applications/Emacs.app/Contents
-
makeWrapper $emacs/Applications/Emacs.app/Contents/MacOS/Emacs $out/Applications/Emacs.app/Contents/MacOS/Emacs \
-
--suffix EMACSLOADPATH ":" "$deps/share/emacs/site-lisp:"
+
+
substitute ${./wrapper.sh} $out/Applications/Emacs.app/Contents/MacOS/Emacs \
+
--subst-var-by bash ${emacs.stdenv.shell} \
+
--subst-var-by wrapperSiteLisp "$emacs/Applications/Emacs.app/Contents/MacOS/Emacs" \
+
--subst-var prog
+
chmod +x $out/bin/$progname
fi
mkdir -p $out/share
+27
pkgs/build-support/emacs/wrapper.sh
···
+
#!@bash@
+
+
IFS=:
+
+
newLoadPath=()
+
added=
+
+
if [[ -n $EMACSLOADPATH ]]
+
then
+
while read -rd: entry
+
do
+
if [[ -z $entry && -z $added ]]
+
then
+
newLoadPath+=(@wrapperSiteLisp@)
+
added=1
+
fi
+
newLoadPath+=("$entry")
+
done <<< "$EMACSLOADPATH:"
+
else
+
newLoadPath+=(@wrapperSiteLisp@)
+
newLoadPath+=("")
+
fi
+
+
export EMACSLOADPATH="${newLoadPath[*]}"
+
export emacsWithPackages_siteLisp=@wrapperSiteLisp@
+
+
exec @prog@ "$@"