guix-commits
[Top][All Lists]
Advanced

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

01/03: gnu: Add package-elisp-from-package


From: guix-commits
Subject: 01/03: gnu: Add package-elisp-from-package
Date: Mon, 7 Jan 2019 08:45:45 -0500 (EST)

ambrevar pushed a commit to branch master
in repository guix.

commit 7d5856bd4570a6c5a3cf1daf6273b638e09b6d50
Author: Tim Gesthuizen <address@hidden>
Date:   Fri Jan 4 22:34:36 2019 +0100

    gnu: Add package-elisp-from-package
    
    Add a function to generate package definitions that packages single elisp
    files from other packages.
    
    * gnu/packages/emacs.scm (package-elisp-from-package): New function
---
 gnu/packages/emacs.scm | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index ec67f27..cbfec8f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -35,7 +35,7 @@
 ;;; Copyright © 2018 Sohom Bhattacharjee <address@hidden>
 ;;; Copyright © 2018 Mathieu Lirzin <address@hidden>
 ;;; Copyright © 2018 Pierre Neidhardt <address@hidden>
-;;; Copyright © 2018 Tim Gesthuizen <address@hidden>
+;;; Copyright © 2018, 2019 Tim Gesthuizen <address@hidden>
 ;;; Copyright © 2018 Jack Hill <address@hidden>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <address@hidden>
 ;;; Copyright © 2018 Alex Branham <address@hidden>
@@ -331,6 +331,36 @@ editor (without an X toolkit)" )
              (lambda _
                (invoke "mkdir" "-p" "src/deps")))))))))
 
+(define-public (package-elisp-from-package
+                source-package package-name source-files)
+  "Returns a package definition that packages emacs-lisp files from the
+SOURCE-PACKAGEs source.  The package has the name PACKAGE-NAME and packages
+the files SOURCE-FILES from the source in its root directory."
+  (let ((orig (package-source source-package)))
+    (package
+      (inherit source-package)
+      (name package-name)
+      (build-system emacs-build-system)
+      (source (origin
+                (method (origin-method orig))
+                (uri (origin-uri orig))
+                (sha256 (origin-sha256 orig))
+                (file-name (string-append package-name "-"
+                                          (package-version source-package)))
+                (modules '((guix build utils)
+                           (srfi srfi-1)
+                           (ice-9 ftw)))
+                (snippet
+                 `(let* ((source-files (quote ,source-files))
+                         (basenames (map basename source-files)))
+                    (map copy-file
+                         source-files basenames)
+                    (map delete-file-recursively
+                         (fold delete
+                               (scandir ".")
+                               (append '("." "..") basenames)))
+                    #t)))))))
+
 
 ;;;
 ;;; Emacs hacking.



reply via email to

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