Skip to content

Commit

Permalink
emacs: Clear the environment while dumping
Browse files Browse the repository at this point in the history
This reduces the closure size of Emacs from 575 to 279 MiB. Dumping
Emacs had a chance of leaking parts of the environment (such as $PATH)
into the dumped executable. This hopefully fixes it. (It's a bit hard
to tell since the effect is not deterministic.)
  • Loading branch information
edolstra committed Sep 25, 2017
1 parent 8036ee5 commit cf599d3
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
15 changes: 15 additions & 0 deletions pkgs/applications/editors/emacs/clean-env.patch
@@ -0,0 +1,15 @@
Dump temacs in an empty environment to prevent -dev paths from ending
up in the dumped image.

diff -ru -x '*~' emacs-25.3/src/Makefile.in emacs-25.3-new/src/Makefile.in
--- emacs-25.3/src/Makefile.in 2017-04-14 17:02:47.000000000 +0200
+++ emacs-25.3-new/src/Makefile.in 2017-09-25 19:03:02.173861038 +0200
@@ -532,7 +532,7 @@
ifeq ($(CANNOT_DUMP),yes)
ln -f temacs$(EXEEXT) $@
else
- LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
+ env -i LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
ifneq ($(PAXCTL_dumped),)
$(PAXCTL_dumped) $@
endif
6 changes: 5 additions & 1 deletion pkgs/applications/editors/emacs/default.nix
Expand Up @@ -34,7 +34,11 @@ stdenv.mkDerivation rec {
sha256 = "02y00y9q42g1iqgz5qhmsja75hwxd88yrn9zp14lanay0zkwafi5";
};

patches = (lib.optional stdenv.isDarwin ./at-fdcwd.patch);
enableParallelBuilding = true;

patches =
[ ./clean-env.patch ]
++ lib.optional stdenv.isDarwin ./at-fdcwd.patch;

nativeBuildInputs = [ pkgconfig ]
++ lib.optionals srcRepo [ autoconf automake texinfo ]
Expand Down

0 comments on commit cf599d3

Please sign in to comment.