guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/03: build-system: emacs: Install only a subset of files.


From: Arun Isaac
Subject: 01/03: build-system: emacs: Install only a subset of files.
Date: Mon, 22 May 2017 20:45:41 -0400 (EDT)

arunisaac pushed a commit to branch master
in repository guix.

commit d879685176d23c111f4fc665698251b25cdf9124
Author: Arun Isaac <address@hidden>
Date:   Wed Apr 19 12:59:11 2017 +0530

    build-system: emacs: Install only a subset of files.
    
    * guix/build/emacs-build-system.scm (install): Install files matching
      #:include while excluding files matching #:exclude.
    * guix/build-system/emacs.scm (emacs-build): Add keyword arguments #:include
      and #:exclude.
---
 guix/build-system/emacs.scm       |  4 ++++
 guix/build/emacs-build-system.scm | 26 +++++++++++++++++++++-----
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index a798200..9a46ecf 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -83,6 +83,8 @@
                       (phases '(@ (guix build emacs-build-system)
                                   %standard-phases))
                       (outputs '("out"))
+                      (include ''("^[^/]*\\.el$" "^[^/]*\\.info$" 
"^doc/.*\\.info$"))
+                      (exclude ''("^\\.dir-locals\\.el$" "-pkg\\.el$" 
"^[^/]*tests?\\.el$"))
                       (search-paths '())
                       (system (%current-system))
                       (guile #f)
@@ -108,6 +110,8 @@
                     #:tests? ,tests?
                     #:phases ,phases
                     #:outputs %outputs
+                    #:include ,include
+                    #:exclude ,exclude
                     #:search-paths ',(map search-path-specification->sexp
                                           search-paths)
                     #:inputs %build-inputs)))
diff --git a/guix/build/emacs-build-system.scm 
b/guix/build/emacs-build-system.scm
index 3538e9f..50af4be 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -95,14 +95,30 @@ store in '.el' files."
           (substitute-cmd))))
     #t))
 
-(define* (install #:key outputs #:allow-other-keys)
+(define* (install #:key outputs
+                  (include '("^[^/]*\\.el$" "^[^/]*\\.info$" 
"^doc/.*\\.info$"))
+                  (exclude '("^\\.dir-locals\\.el$" "-pkg\\.el$" 
"^[^/]*tests?\\.el$"))
+                  #:allow-other-keys)
   "Install the package contents."
+
+  (define source (getcwd))
+
+  (define (install-file? file stat)
+    (let ((stripped-file (string-trim (string-drop file (string-length 
source)) #\/)))
+      (and (any (cut string-match <> stripped-file) include)
+           (not (any (cut string-match <> stripped-file) exclude)))))
+
   (let* ((out (assoc-ref outputs "out"))
          (elpa-name-ver (store-directory->elpa-name-version out))
-         (src-dir (getcwd))
-         (tgt-dir (string-append out %install-suffix "/" elpa-name-ver)))
-    (copy-recursively src-dir tgt-dir)
-    #t))
+         (target-directory (string-append out %install-suffix "/" 
elpa-name-ver)))
+    (for-each
+     (lambda (file)
+       (let* ((stripped-file (string-drop file (string-length source)))
+              (target-file (string-append target-directory stripped-file)))
+         (format #t "`~a' -> `~a'~%" file target-file)
+         (install-file file (dirname target-file))))
+     (find-files source install-file?)))
+  #t)
 
 (define* (move-doc #:key outputs #:allow-other-keys)
   "Move info files from the ELPA package directory to the info directory."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]