emacs: install the C source from postInstall
Reimplement the C source installation from the derivation instead of relying on a Makefile patch.
This commit is contained in:
parent
bb6708b858
commit
7e7d588ca9
@ -25,15 +25,16 @@ let
|
|||||||
else "lucid";
|
else "lucid";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "emacs-25.1";
|
name = "emacs-${version}${versionModifier}";
|
||||||
|
version = "25.1";
|
||||||
|
versionModifier = "";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnu//emacs/${name}.tar.xz";
|
url = "mirror://gnu//emacs/${name}.tar.xz";
|
||||||
sha256 = "0cwgyiyymnx4xdg99dm2drfxcyhy2jmyf0rkr9fwj9mwwf77kwhr";
|
sha256 = "0cwgyiyymnx4xdg99dm2drfxcyhy2jmyf0rkr9fwj9mwwf77kwhr";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = lib.optional stdenv.isDarwin ./at-fdcwd.patch
|
patches = lib.optional stdenv.isDarwin ./at-fdcwd.patch;
|
||||||
++ lib.optional withCsrc ./install-C-src.patch;
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ]
|
nativeBuildInputs = [ pkgconfig ]
|
||||||
++ lib.optionals srcRepo [ autoconf automake texinfo ];
|
++ lib.optionals srcRepo [ autoconf automake texinfo ];
|
||||||
@ -73,9 +74,23 @@ stdenv.mkDerivation rec {
|
|||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
installTargets = "tags install";
|
||||||
|
|
||||||
postInstall = ''
|
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
|
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 ''
|
'' + lib.optionalString stdenv.isDarwin ''
|
||||||
mkdir -p $out/Applications
|
mkdir -p $out/Applications
|
||||||
mv nextstep/Emacs.app $out/Applications
|
mv nextstep/Emacs.app $out/Applications
|
||||||
|
@ -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
|
|
@ -1,4 +1,4 @@
|
|||||||
;; NixOS specific load-path
|
;;; NixOS specific load-path
|
||||||
(setq load-path
|
(setq load-path
|
||||||
(append (reverse (mapcar (lambda (x) (concat x "/share/emacs/site-lisp/"))
|
(append (reverse (mapcar (lambda (x) (concat x "/share/emacs/site-lisp/"))
|
||||||
(split-string (or (getenv "NIX_PROFILES") ""))))
|
(split-string (or (getenv "NIX_PROFILES") ""))))
|
||||||
@ -11,7 +11,25 @@
|
|||||||
(split-string (or (getenv "NIX_PROFILES") ""))))
|
(split-string (or (getenv "NIX_PROFILES") ""))))
|
||||||
woman-manpath)))
|
woman-manpath)))
|
||||||
|
|
||||||
;; Make tramp work for remote NixOS machines
|
;;; Make tramp work for remote NixOS machines
|
||||||
;;; NOTE: You might want to add
|
|
||||||
(eval-after-load 'tramp
|
(eval-after-load 'tramp
|
||||||
'(add-to-list 'tramp-remote-path "/run/current-system/sw/bin"))
|
'(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)))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user