unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: emacs-pdf-tools: Add missing input.
@ 2016-03-11  9:31 Alex Kost
  2016-03-15 14:27 ` Ludovic Courtès
  0 siblings, 1 reply; 4+ messages in thread
From: Alex Kost @ 2016-03-11  9:31 UTC (permalink / raw)
  To: guix-devel

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

The bottom line of the following text is the question: Is it possible to
combine 2 (or more) build systems for building a package?

I've noticed that the latest 'emacs-pdf-tools' depends on 'let-alist'
library (my bad that I didn't notice this during update to 0.70), so I
added it to the propagated-inputs (as we do with emacs dependencies).

However, adding a new input is not enough here, because a directory with
"let-alist.el" is not seen during elisp compilation, so it should be
added explicitly to 'emacs-byte-compile-directory' procedure.

The root problem here is this: pdf-tools package consists of 2 parts:

1. Some C code (placed in "server" subdir) used to make an auxiliary
   binary for working with pdf.  This server part provides a usual GNU
   build system, which is gladly used in our "emacs-pdf-tools" package.

2. Elisp code: to handle this part (to compile and install it) we use
   'install-lisp' phase.

For the elisp side, we actually duplicate (more or less) what is already
done by emacs-build-system.  So it would be a perfect solution for this
package if there was a way to perform a build twice: at first using
emacs-build-system to handle elisp part, and then using gnu-build-system
for the C part.

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 :-)


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

From 5692ba83371fea16a34ff20d1f5d743f05173348 Mon Sep 17 00:00:00 2001
From: Alex Kost <alezost@gmail.com>
Date: Fri, 11 Mar 2016 11:34:20 +0300
Subject: [PATCH] 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'.
[arguments]: Adjust 'install-lisp' phase to compile pdf-tools using
let-alist library.
---
 gnu/packages/emacs.scm | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index c9fbfcf..ecc6817 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1044,18 +1044,24 @@ single buffer.")
                 ("pdf-tools-handle-upgrades" '())))))
          (add-after
           'install 'install-lisp
-          (lambda* (#:key outputs #:allow-other-keys)
+          (lambda* (#:key inputs outputs #:allow-other-keys)
             (let ((target (string-append (assoc-ref outputs "out")
-                                         "/share/emacs/site-lisp/")))
+                                         "/share/emacs/site-lisp/"))
+                  (let-alist (string-append
+                              (assoc-ref inputs "let-alist")
+                              "/share/emacs/site-lisp/guix.d/let-alist-"
+                              ,(package-version let-alist))))
               (for-each (lambda (file)
                           (install-file file target))
                         (find-files "../lisp" "^(pdf|tab).*\\.elc?"))
-              (emacs-byte-compile-directory target)
+              (emacs-byte-compile-directory target (list let-alist))
               (emacs-generate-autoloads "pdf-tools" target)))))))
     (native-inputs `(("autoconf" ,autoconf)
                      ("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


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-03-15 21:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2016-03-15 21:40     ` Ludovic Courtès

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).