all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Oleg Pykhalov <go.wigust@gmail.com>
To: Alex Kost <alezost@gmail.com>
Cc: help-guix@gnu.org
Subject: Re: Which Emacs version used to build Emacs packages with emacs-checkout?
Date: Fri, 22 Sep 2017 16:49:19 +0300	[thread overview]
Message-ID: <87vakaetcw.fsf@gmail.com> (raw)
In-Reply-To: <87h8wdc4p4.fsf@gmail.com> (Alex Kost's message of "Fri, 08 Sep 2017 23:31:51 +0300")

Hello Alex,

Alex Kost <alezost@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.

  reply	other threads:[~2017-09-22 13:49 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-07 18:49 Which Emacs version used to build Emacs packages with emacs-checkout? Oleg Pykhalov
2017-09-08 20:31 ` Alex Kost
2017-09-22 13:49   ` Oleg Pykhalov [this message]
2017-09-29 10:57     ` Alex Kost

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87vakaetcw.fsf@gmail.com \
    --to=go.wigust@gmail.com \
    --cc=alezost@gmail.com \
    --cc=help-guix@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.