Hello Alex, Alex Kost <alez...@gmail.com> writes:
> Oleg Pykhalov (2017-09-07 21:49 +0300) wrote: > >> Hello Guix, >> >> Here is a =emacs-checkout= snippet which works for me. Enjoy it if >> somebody need it. >> >> I'm little bit confused about Emacs **version** that is used inside >> =emacs-build-systems= and inputs which use =emacs-minimal=. >> >> If I define a new package with =-checkout= suffix and install it, for >> example =guix package -i emacs@26.0.50-1.f0eb70d= it works fine. >> >> As I notice all packages which uses =emacs-build-system= will use >> original Guix Emacs version package. Am I right? > > Right, by default 'emacs-build-system' uses the current 'emacs-minimal' > package. OK, I made a new emacs-minimal-checkout package based on emacs-checkout. --8<---------------cut here---------------start------------->8--- (define-public emacs-minimal-checkout ;; This is the version that you should use as an input to packages that just ;; need to byte-compile .el files. (package (inherit emacs-checkout) (name "emacs-minimal") (synopsis "The extensible text editor (used only for byte-compilation)") (build-system gnu-build-system) (arguments (substitute-keyword-arguments (package-arguments emacs) ((#:phases phases) `(modify-phases ,phases (delete 'install-site-start))))) (inputs `(("ncurses" ,ncurses))) (native-inputs `(("pkg-config" ,pkg-config))))) --8<---------------cut here---------------end--------------->8--- --8<---------------cut here---------------start------------->8--- (define-public emacs-checkout (let ((commit "6d6dc246f93486fc8370399b6e1af8a17f371e4f") (revision "1")) (package (inherit emacs) (name "emacs") (version (string-append (package-version emacs) "-" revision "." (string-take commit 7))) (source (origin (method git-fetch) (uri (git-reference ;; "git://git.savannah.gnu.org/emacs.git" (url "git://localhost/~natsu/src/emacs") (commit commit))) (file-name (string-append name "-" version "-checkout")) (patches (search-patches "emacs-exec-path.patch" "emacs-source-date-epoch.patch")) (modules '((guix build utils))) (snippet ;; Delete the bundled byte-compiled elisp files and ;; generated autoloads. '(with-directory-excursion "lisp" (for-each delete-file (append (find-files "." "\\.elc$") (find-files "." "loaddefs\\.el$"))) ;; Make sure Tramp looks for binaries in the right places on ;; remote GuixSD machines, where 'getconf PATH' returns ;; something bogus. (substitute* "net/tramp-sh.el" ;; Patch the line after "(defcustom tramp-remote-path". (("\\(tramp-default-remote-path") (format #f "(tramp-default-remote-path ~s ~s ~s ~s " "~/.guix-profile/bin" "~/.guix-profile/sbin" "/run/current-system/profile/bin" "/run/current-system/profile/sbin"))))) (sha256 (base32 "17x0jpyg6wrdh5wn9yf1135gkdcprbcx1hj2wiwla57dh7rihils")))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) ("bash" ,bash-minimal) ("perl" ,perl) ("rc" ,rc) ("python" ,python-2.7) ("chez-scheme" ,chez-scheme) ,@(package-native-inputs emacs))) (arguments (substitute-keyword-arguments `(#:parallel-build? #t #:tests? #f ,@(package-arguments emacs)) ((#:phases phases) `(modify-phases ,phases (add-after 'unpack 'autogen (lambda _ (zero? (system* "sh" "autogen.sh")))) (delete 'reset-gzip-timestamps)))))))) --8<---------------cut here---------------end--------------->8--- >> Then, all Emacs packages will be build by =emacs-minimal= which is >> original Guix Emacs version. > > Yes. Note that this default emacs can be overrided on a package level > by using #:emacs keyword in the arguments. See 'emacs-auctex' package > for example. Ah, this is bad for me. Now I need to redefine all those “#:emacs ,emacs” to “#:emacs ,emacs-checkout” as I guess. Or I need to redefine “emacs” variable instead of inherit it in “emacs-checkout”. >> I found =(setq load-prefer-newer t)= way to avoid loading old compiled >> elisp files, but it's not what I really want. > > This (I mean 'load-prefer-newer') is one of my favourite setting :-) > But it is not clear for me, what do you really want? > >> Thoughts? :-) > > Sorry, but I don't understand what you are asking about :-) I want to have Emacs builded from my local Git repository. And I also want Emacs packages builded with this my Emacs version.