[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Which Emacs version used to build Emacs packages with emacs-checkout
From: |
Oleg Pykhalov |
Subject: |
Re: Which Emacs version used to build Emacs packages with emacs-checkout? |
Date: |
Fri, 22 Sep 2017 16:49:19 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) |
Hello Alex,
Alex Kost <address@hidden> 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 address@hidden 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.