summary refs log tree commit diff
path: root/pkgs/applications/editors/emacs
diff options
context:
space:
mode:
authorNicolas Dudebout <nicolas.dudebout@gmail.com>2016-09-27 15:57:52 -0400
committerNicolas Dudebout <nicolas.dudebout@gmail.com>2016-09-27 15:57:52 -0400
commit7e7d588ca936bca8c535f697d43b1c3b23b7e468 (patch)
tree2c4ce47ba8329e8fc8ee6162963ffc0379c40d18 /pkgs/applications/editors/emacs
parentbb6708b8586e5ecc2ec2a70b19c342843651c5d2 (diff)
downloadnixlib-7e7d588ca936bca8c535f697d43b1c3b23b7e468.tar
nixlib-7e7d588ca936bca8c535f697d43b1c3b23b7e468.tar.gz
nixlib-7e7d588ca936bca8c535f697d43b1c3b23b7e468.tar.bz2
nixlib-7e7d588ca936bca8c535f697d43b1c3b23b7e468.tar.lz
nixlib-7e7d588ca936bca8c535f697d43b1c3b23b7e468.tar.xz
nixlib-7e7d588ca936bca8c535f697d43b1c3b23b7e468.tar.zst
nixlib-7e7d588ca936bca8c535f697d43b1c3b23b7e468.zip
emacs: install the C source from postInstall
Reimplement the C source installation from the derivation instead of
relying on a Makefile patch.
Diffstat (limited to 'pkgs/applications/editors/emacs')
-rw-r--r--pkgs/applications/editors/emacs/default.nix23
-rw-r--r--pkgs/applications/editors/emacs/install-C-src.patch33
-rw-r--r--pkgs/applications/editors/emacs/site-start.el24
3 files changed, 40 insertions, 40 deletions
diff --git a/pkgs/applications/editors/emacs/default.nix b/pkgs/applications/editors/emacs/default.nix
index e10be4ab22d6..08223ef82ef0 100644
--- a/pkgs/applications/editors/emacs/default.nix
+++ b/pkgs/applications/editors/emacs/default.nix
@@ -25,15 +25,16 @@ let
     else "lucid";
 in
 stdenv.mkDerivation rec {
-  name = "emacs-25.1";
+  name = "emacs-${version}${versionModifier}";
+  version = "25.1";
+  versionModifier = "";
 
   src = fetchurl {
     url = "mirror://gnu//emacs/${name}.tar.xz";
     sha256 = "0cwgyiyymnx4xdg99dm2drfxcyhy2jmyf0rkr9fwj9mwwf77kwhr";
   };
 
-  patches = lib.optional stdenv.isDarwin ./at-fdcwd.patch
-    ++ lib.optional withCsrc ./install-C-src.patch;
+  patches = lib.optional stdenv.isDarwin ./at-fdcwd.patch;
 
   nativeBuildInputs = [ pkgconfig ]
     ++ lib.optionals srcRepo [ autoconf automake texinfo ];
@@ -73,9 +74,23 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  installTargets = "tags install";
+
   postInstall = ''
-    mkdir -p $out/share/emacs/site-lisp/
+    mkdir -p $out/share/emacs/site-lisp
     cp ${./site-start.el} $out/share/emacs/site-lisp/site-start.el
+    $out/bin/emacs --batch -f batch-byte-compile $out/share/emacs/site-lisp/site-start.el
+
+    rm -rf $out/var
+    rm -rf $out/share/emacs/${version}/site-lisp
+  '' + lib.optionalString withCsrc ''
+    for srcdir in src lisp lwlib ; do
+      dstdir=$out/share/emacs/${version}/$srcdir
+      mkdir -p $dstdir
+      find $srcdir -name "*.[chm]" -exec cp {} $dstdir \;
+      cp $srcdir/TAGS $dstdir
+      echo '((nil . ((tags-file-name . "TAGS"))))' > $dstdir/.dir-locals.el
+    done
   '' + lib.optionalString stdenv.isDarwin ''
     mkdir -p $out/Applications
     mv nextstep/Emacs.app $out/Applications
diff --git a/pkgs/applications/editors/emacs/install-C-src.patch b/pkgs/applications/editors/emacs/install-C-src.patch
deleted file mode 100644
index eb980d3e0789..000000000000
--- a/pkgs/applications/editors/emacs/install-C-src.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff --git a/Makefile.in b/Makefile.in
-index 7aac403..c21a396 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -563,7 +563,7 @@ set_installuser=
- ## work correctly, and therefore no idea when tar can be replaced.
- ## See also these comments from 2004 about cp -r working fine:
- ## http://lists.gnu.org/archive/html/autoconf-patches/2004-11/msg00005.html
--install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA}
-+install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA} tags
- 	-set ${COPYDESTS} ; \
- 	unset CDPATH; \
- 	$(set_installuser); \
-@@ -617,6 +617,19 @@ install-arch-indep:
- 	  done; \
- 	  ${GZIP_PROG} -9n "../etc/publicsuffix.txt"; \
- 	}
-+	for d in src lwlib ; do \
-+	  srcdir="$(DESTDIR)${datadir}/emacs/${version}/$$d" ; \
-+	  mkdir -p $$srcdir ; \
-+	  find $$d -name "*.[chm]" -exec cp {} $$srcdir \; ; \
-+	done
-+	for d in src lisp lwlib ; do \
-+	  srcdir="$(DESTDIR)${datadir}/emacs/${version}/$$d" ; \
-+	  cp $$d/TAGS $$srcdir ; \
-+	  echo '((nil . ((tags-file-name . "TAGS"))))' > $$srcdir/.dir-locals.el ; \
-+	done
-+	mkdir -p "$(DESTDIR)${datadir}/emacs/${version}/site-lisp"
-+	echo "(setq find-function-C-source-directory \"$(DESTDIR)${datadir}/emacs/${version}/src\")" \
-+         > "$(DESTDIR)${datadir}/emacs/${version}/site-lisp/site-start.el"
- 	-chmod -R a+r "$(DESTDIR)${datadir}/emacs/${version}" ${COPYDESTS}
- 
- ## The above chmods are needed because "umask 022; tar ..." is not
diff --git a/pkgs/applications/editors/emacs/site-start.el b/pkgs/applications/editors/emacs/site-start.el
index 023d6412ed84..b41ca92db086 100644
--- a/pkgs/applications/editors/emacs/site-start.el
+++ b/pkgs/applications/editors/emacs/site-start.el
@@ -1,4 +1,4 @@
-;; NixOS specific load-path
+;;; NixOS specific load-path
 (setq load-path
       (append (reverse (mapcar (lambda (x) (concat x "/share/emacs/site-lisp/"))
                                (split-string (or (getenv "NIX_PROFILES") ""))))
@@ -11,7 +11,25 @@
                                   (split-string (or (getenv "NIX_PROFILES") ""))))
                  woman-manpath)))
 
-;; Make tramp work for remote NixOS machines
-;;; NOTE: You might want to add 
+;;; Make tramp work for remote NixOS machines
 (eval-after-load 'tramp
   '(add-to-list 'tramp-remote-path "/run/current-system/sw/bin"))
+
+;;; C source directory
+;;;
+;;; Computes the location of the C source directory from the path of
+;;; the current file:
+;;; from: /nix/store/<hash>-emacs-<version>/share/emacs/site-lisp/site-start.el
+;;; to:   /nix/store/<hash>-emacs-<version>/share/emacs/<version>/src/
+(let ((emacs
+       (file-name-directory                      ;; .../emacs/
+        (directory-file-name                     ;; .../emacs/site-lisp
+         (file-name-directory load-file-name)))) ;; .../emacs/site-lisp/
+      (version
+       (file-name-as-directory
+        (concat
+         (number-to-string emacs-major-version)
+         "."
+         (number-to-string emacs-minor-version))))
+      (src (file-name-as-directory "src")))
+  (setq find-function-C-source-directory (concat emacs version src)))