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 [email protected]= it works fine.
As I notice all packages which uses =emacs-build-system= will use
original Guix Emacs version package. Am I right?
Then, all Emacs packages will be build by =emacs-minimal= which is
original Guix Emacs version.
I found =(setq load-prefer-newer t)= way to avoid loading old compiled
elisp files, but it's not what I really want.
Thoughts? :-)
(define-public emacs-checkout
(let ((commit "f0eb70d8935be90f7c03e187c12d9b60e7214cc6")
(revision "1"))
(package
(inherit emacs)
(name "emacs")
(version (string-append "26.0.50" "-" 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 "1s2b9qahcqgp085fadsjys3w60z9dczh0y0jhnsp0axwi27ssmzc"))))
(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))))))))
(define-public geiser-checkout
(let ((commit "9581e61f9d8839281fe42344dd5fe885ea7359ea")
(revision "1"))
(package
(inherit geiser)
(name "geiser")
(version (string-append "0.9" "-" revision "."
(string-take commit 7)))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "git://git.savannah.gnu.org/geiser.git")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32 "0nx86pzncab0b7700m8sc7k3nzml4v9frrq77lljjcjhw71gnvnn"))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("texinfo" ,texinfo)
,@(package-native-inputs geiser)))
(arguments
(substitute-keyword-arguments
`(#:parallel-build? #t
#:tests? #f
,@(package-arguments geiser))
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'autogen
(lambda _
(zero? (system* "sh" "autogen.sh"))))
(delete 'reset-gzip-timestamps))))))))
(define-public emacs-guix-checkout
(package
(inherit emacs-guix)
(version (string-append (package-version emacs-guix) "-checkout"))
(propagated-inputs
`(("geiser" ,geiser-checkout)
("dash" ,emacs-dash)
("bui" ,emacs-bui)
("magit-popup" ,emacs-magit-popup)))))