From 7e7d588ca936bca8c535f697d43b1c3b23b7e468 Mon Sep 17 00:00:00 2001 From: Nicolas Dudebout Date: Tue, 27 Sep 2016 15:57:52 -0400 Subject: emacs: install the C source from postInstall Reimplement the C source installation from the derivation instead of relying on a Makefile patch. --- pkgs/applications/editors/emacs/default.nix | 23 ++++++++++++--- .../applications/editors/emacs/install-C-src.patch | 33 ---------------------- pkgs/applications/editors/emacs/site-start.el | 24 ++++++++++++++-- 3 files changed, 40 insertions(+), 40 deletions(-) delete mode 100644 pkgs/applications/editors/emacs/install-C-src.patch (limited to 'pkgs/applications/editors/emacs') 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/-emacs-/share/emacs/site-lisp/site-start.el +;;; to: /nix/store/-emacs-/share/emacs//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))) -- cgit 1.4.1