build: emacs: Handle sources that are a single elisp file.

* guix/build/emacs-build-system.scm (gnu:unpack)
(store-file->elisp-source-file, unpack): New procedures.
(%standard-phases): Use the new unpack procedure.
This commit is contained in:
David Thompson 2016-05-27 09:58:39 -04:00
parent 62a45cb647
commit 578b96af69
1 changed files with 23 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (guix build emacs-utils) #:use-module (guix build emacs-utils)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (ice-9 rdelim) #:use-module (ice-9 rdelim)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
@ -39,6 +40,27 @@
;; archive signature. ;; archive signature.
(define %install-suffix "/share/emacs/site-lisp/guix.d") (define %install-suffix "/share/emacs/site-lisp/guix.d")
(define gnu:unpack (assoc-ref gnu:%standard-phases 'unpack))
(define (store-file->elisp-source-file file)
"Convert FILE, a store file name for an Emacs Lisp source file, into a file
name that has been stripped of the hash and version number."
(let-values (((name version)
(package-name->name+version
(strip-store-file-name file))))
(string-append name ".el")))
(define* (unpack #:key source #:allow-other-keys)
"Unpack SOURCE into the build directory. SOURCE may be a compressed
archive, a directory, or an Emacs Lisp file."
(if (string-suffix? ".el" source)
(begin
(mkdir "source")
(chdir "source")
(copy-file source (store-file->elisp-source-file source))
#t)
(gnu:unpack #:source source)))
(define* (build #:key outputs inputs #:allow-other-keys) (define* (build #:key outputs inputs #:allow-other-keys)
"Compile .el files." "Compile .el files."
(let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs")) (let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs"))
@ -151,6 +173,7 @@ second hyphen. This corresponds to 'name-version' as used in ELPA packages."
(define %standard-phases (define %standard-phases
(modify-phases gnu:%standard-phases (modify-phases gnu:%standard-phases
(replace 'unpack unpack)
(delete 'configure) (delete 'configure)
(delete 'check) (delete 'check)
(delete 'install) (delete 'install)