unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alex Kost <alezost@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] gnu: emacs-pdf-tools: Add missing input.
Date: Tue, 15 Mar 2016 23:15:25 +0300	[thread overview]
Message-ID: <87io0nh50i.fsf@gmail.com> (raw)
In-Reply-To: <87d1qvrf3v.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Tue, 15 Mar 2016 15:27:16 +0100")

[-- Attachment #1: Type: text/plain, Size: 1875 bytes --]

Ludovic Courtès (2016-03-15 17:27 +0300) wrote:

> Alex Kost <alezost@gmail.com> skribis:
>
>> The bottom line of the following text is the question: Is it possible to
>> combine 2 (or more) build systems for building a package?
>
> Sure!

Great!

>> I did a little experiment: I thought maybe it could be possible just to
>> pick some build phases from (guix build emacs-build-system), so I added
>> this module to #:modules and #:imported-modules and added phases like
>> this:
>>
>>   (modify-phases %standard-phases
>>     ;; ...
>>     (add-after 'build 'emacs-build
>>       (@@ (guix build emacs-build-system) build))
>>     (add-after 'install 'emacs-install
>>       (@@ (guix build emacs-build-system) install)))
>>
>> The package was built successfully, but the result was not good, because
>> both gnu-build-system and emacs-build-system import %standard-phases :-)
>
> You mean “export”?

Yes, sometimes I mix up these words :-)

> I think you can always add a renamer upon import, using something like:

Ahahah, thanks!

>   (package
>     ;; …
>     (arguments
>      `(#:imported-modules ((guix build emacs-build-system)
>                            ,%gnu-build-system-modules)
>        #:modules (((guix build emacs-build-system) #:prefix emacs:)
>                   ,%gnu-build-system-modules)
>
>        #:phases (modify-phases %standard-phases   ;from gnu-build-system
>                   (add-before 'build 'emacs-build
>                      (assoc-ref emacs:%standard-phases 'build))
>                   ;; …
>                   ))))
>
> Would it work for you?

Yes, brilliant!  Now I know how to combine phases from different build
systems, thank you!

So I think it's better to use 2 commits here: one to update phases and
another to add let-alist dependency (both patches attached).


[-- Attachment #2: 0001-gnu-emacs-pdf-tools-Use-emacs-build-system-for-elisp.patch --]
[-- Type: text/x-patch, Size: 4330 bytes --]

From b83adf2e1e0d13a5a09026bab40b0e5198e2f295 Mon Sep 17 00:00:00 2001
From: Alex Kost <alezost@gmail.com>
Date: Fri, 11 Mar 2016 11:34:20 +0300
Subject: [PATCH 1/2] gnu: emacs-pdf-tools: Use emacs-build-system for elisp
 side.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/emacs.scm (emacs-pdf-tools)[arguments]: Add phases from
emacs-build-system to build elisp side.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
---
 gnu/packages/emacs.scm | 57 +++++++++++++++++++++++++-------------------------
 1 file changed, 29 insertions(+), 28 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index c9fbfcf..38210e5 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1018,40 +1018,41 @@ single buffer.")
     (arguments
      `(#:tests? #f ; there are no tests
        #:modules ((guix build gnu-build-system)
+                  ((guix build emacs-build-system) #:prefix emacs:)
                   (guix build utils)
                   (guix build emacs-utils))
        #:imported-modules (,@%gnu-build-system-modules
+                           (guix build emacs-build-system)
                            (guix build emacs-utils))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'enter-dir (lambda _ (chdir "server") #t))
-         (add-before
-          'configure 'autogen
-          (lambda _
-            (zero? (system* "bash" "autogen.sh"))))
-         (add-before
-          'build 'patch-variables
-          (lambda* (#:key outputs #:allow-other-keys)
-            (with-directory-excursion "../lisp"
-              ;; Set path to epdfinfo program.
-              (emacs-substitute-variables "pdf-info.el"
-                ("pdf-info-epdfinfo-program"
-                 (string-append (assoc-ref outputs "out")
-                                "/bin/epdfinfo")))
-              ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
-              ;; upgrading" that pdf-tools tries to perform.
-              (emacs-substitute-variables "pdf-tools.el"
-                ("pdf-tools-handle-upgrades" '())))))
-         (add-after
-          'install 'install-lisp
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((target (string-append (assoc-ref outputs "out")
-                                         "/share/emacs/site-lisp/")))
-              (for-each (lambda (file)
-                          (install-file file target))
-                        (find-files "../lisp" "^(pdf|tab).*\\.elc?"))
-              (emacs-byte-compile-directory target)
-              (emacs-generate-autoloads "pdf-tools" target)))))))
+         ;; Build server side using 'gnu-build-system'.
+         (add-after 'unpack 'enter-server-dir
+           (lambda _ (chdir "server") #t))
+         (add-before 'configure 'autogen
+           (lambda _
+             (zero? (system* "bash" "autogen.sh"))))
+
+         ;; Build emacs side using 'emacs-build-system'.
+         (add-after 'compress-documentation 'enter-lisp-dir
+           (lambda _ (chdir "../lisp") #t))
+         (add-after 'enter-lisp-dir 'emacs-patch-variables
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Set path to epdfinfo program.
+             (emacs-substitute-variables "pdf-info.el"
+               ("pdf-info-epdfinfo-program"
+                (string-append (assoc-ref outputs "out")
+                               "/bin/epdfinfo")))
+             ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
+             ;; upgrading" that pdf-tools tries to perform.
+             (emacs-substitute-variables "pdf-tools.el"
+               ("pdf-tools-handle-upgrades" '()))))
+         (add-after 'emacs-patch-variables 'emacs-install
+           (assoc-ref emacs:%standard-phases 'install))
+         (add-after 'emacs-install 'emacs-build
+           (assoc-ref emacs:%standard-phases 'build))
+         (add-after 'emacs-install 'emacs-make-autoloads
+           (assoc-ref emacs:%standard-phases 'make-autoloads)))))
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)
                      ("pkg-config" ,pkg-config)
-- 
2.6.3


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-emacs-pdf-tools-Add-missing-input.patch --]
[-- Type: text/x-patch, Size: 925 bytes --]

From 8d64845aa9109359e32c4d08ec498bfb3b4ac870 Mon Sep 17 00:00:00 2001
From: Alex Kost <alezost@gmail.com>
Date: Tue, 15 Mar 2016 23:02:04 +0300
Subject: [PATCH 2/2] gnu: emacs-pdf-tools: Add missing input.

This is a followup to commit eccd0b57a1f05b3caca28604f4d2c06556e2fe05.

* gnu/packages/emacs.scm (emacs-pdf-tools)[propagated-inputs]: Add
'let-alist'.
---
 gnu/packages/emacs.scm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 38210e5..f53f73b 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1057,6 +1057,8 @@ single buffer.")
                      ("automake" ,automake)
                      ("pkg-config" ,pkg-config)
                      ("emacs" ,emacs-no-x)))
+    (propagated-inputs
+     `(("let-alist" ,let-alist)))
     (inputs `(("poppler" ,poppler)
               ("cairo" ,cairo)
               ("glib" ,glib)
-- 
2.6.3


  reply	other threads:[~2016-03-15 20:15 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-11  9:31 [PATCH] gnu: emacs-pdf-tools: Add missing input Alex Kost
2016-03-15 14:27 ` Ludovic Courtès
2016-03-15 20:15   ` Alex Kost [this message]
2016-03-15 21:40     ` Ludovic Courtès

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

  List information: https://guix.gnu.org/

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

  git send-email \
    --in-reply-to=87io0nh50i.fsf@gmail.com \
    --to=alezost@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=ludo@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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).