nixpkgs/pkgs/build-support/emacs
Robert Helgesson 3247e75741
emacs: resolve wrapper load-path at build time
Since the included package set is determined at build time we can also
generate the `subdirs.el` file at build time. This improves startup
time somewhat since we don't have to traverse the directory to add to
`load-path`.

For example,

``` sh-session
$ bench './emacs-old -Q --batch --kill' './emacs-new -Q --batch --kill'
benchmarking bench/./emacs-old -Q --batch --kill
time                 72.77 ms   (71.66 ms .. 73.65 ms)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 72.49 ms   (72.06 ms .. 72.92 ms)
std dev              746.5 μs   (582.4 μs .. 1.008 ms)

benchmarking bench/./emacs-new -Q --batch --kill
time                 40.56 ms   (40.24 ms .. 40.86 ms)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 40.30 ms   (40.12 ms .. 40.51 ms)
std dev              401.9 μs   (311.1 μs .. 555.8 μs)
```

The change does not actually affect the content of `load-path`:

``` sh-session
$ diff -s <(./emacs-old --batch --eval '(prin1 load-path)' | sed -E 's!/nix/store/[[:alnum:]]{32}-!!g') \
          <(./emacs-new --batch --eval '(prin1 load-path)' | sed -E 's!/nix/store/[[:alnum:]]{32}-!!g')
Files /dev/fd/63 and /dev/fd/62 are identical
```

So in principle the only observable effect should be the improved
startup time.
2021-11-14 22:31:48 +01:00
..
buffer.nix nix-buffer: make eshell-path-env be inherited 2018-02-15 17:30:59 -06:00
elpa.nix elpa-packages: deprecate phases 2021-08-16 21:34:58 +02:00
elpa2nix.el emacsWithPackages: support installing larger packages 2017-05-29 12:56:09 +01:00
emacs-funcs.sh emacs: add currently compiling package dirs to load-path 2021-02-19 16:46:31 +01:00
generic.nix Add gcc for emacs wrapper so native-comp works 2021-06-23 23:02:11 -05:00
melpa.nix Merge pull request #127980 from matthewbauer/darwin-emacs-native-comp 2021-07-15 20:03:57 -05:00
melpa2nix.el emacs.pkgs.melpaBuild: package-build: 2018-10-05 -> 2021-04-13 2021-07-06 16:07:13 +00:00
mk-wrapper-subdirs.el emacs: resolve wrapper load-path at build time 2021-11-14 22:31:48 +01:00
trivial.nix emacs.pkgs.trivialBuild: add missing stdenv argument 2021-01-26 16:15:03 +01:00
wrapper.nix emacs: resolve wrapper load-path at build time 2021-11-14 22:31:48 +01:00
wrapper.sh emacs: Add comp-eln-load-path infrastructure 2020-12-16 19:45:07 +01:00