From b7c7c03eb5e37fc3455e4e17b0898ffc4bca29c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 30 Aug 2015 14:38:10 +0200 Subject: [PATCH] utils: Add 'strip-store-file-name'. * guix/build/utils.scm (strip-store-file-name): New procedure. * guix/build/emacs-build-system.scm (store-directory->name-version): Remove. Update callers to use 'strip-store-file-name'. * gnu/packages/gcc.scm (make-libstdc++-doc)[arguments]: Use 'strip-store-file-name' instead of 'string-drop'. --- gnu/packages/gcc.scm | 6 +----- guix/build/emacs-build-system.scm | 17 +++++------------ guix/build/utils.scm | 7 +++++++ 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 761d3a6998..dcac16d752 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -578,11 +578,7 @@ (define (make-libstdc++-doc gcc) (("@XSL_STYLE_DIR@") (string-append docbook "/xml/xsl/" - (string-drop - docbook - (+ 34 - (string-length - (%store-directory)))))))))) + (strip-store-file-name docbook))))))) (replace 'build (lambda _ ;; XXX: There's also a 'doc-info' target, but it diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm index f18db0aadd..1c48a1ab2e 100644 --- a/guix/build/emacs-build-system.scm +++ b/guix/build/emacs-build-system.scm @@ -83,7 +83,7 @@ (define* (move-doc #:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (elpa-name-ver (store-directory->elpa-name-version out)) (el-dir (string-append out %install-suffix "/" elpa-name-ver)) - (name-ver (store-directory->name-version out)) + (name-ver (strip-store-file-name out)) (info-dir (string-append out "/share/info/" name-ver)) (info-files (find-files el-dir "\\.info$"))) (unless (null? info-files) @@ -116,7 +116,7 @@ (define (emacs-inputs inputs) (filter (match-lambda ((label . directory) (emacs-package? ((compose package-name->name+version - store-directory->name-version) + strip-store-file-name) directory))) (_ #f)) inputs)) @@ -138,25 +138,18 @@ (define (emacs-inputs-el-directories dirs) (define (package-name-version->elpa-name-version name-ver) "Convert the Guix package NAME-VER to the corresponding ELPA name-version format. Essnetially drop the prefix used in Guix." - (let ((name (store-directory->name-version name-ver))) + (let ((name (strip-store-file-name name-ver))) (if (emacs-package? name-ver) - (store-directory->name-version name-ver) + (strip-store-file-name name-ver) name-ver))) (define (store-directory->elpa-name-version store-dir) "Given a store directory STORE-DIR return the part of the basename after the second hyphen. This corresponds to 'name-version' as used in ELPA packages." ((compose package-name-version->elpa-name-version - store-directory->name-version) + strip-store-file-name) store-dir)) -(define (store-directory->name-version store-dir) - "Given a store directory STORE-DIR return the part of the basename -after the first hyphen. This corresponds to 'name-version' of the package." - (let* ((base (basename store-dir))) - (string-drop base - (+ 1 (string-index base #\-))))) - ;; from (guix utils). Should we put it in (guix build utils)? (define (package-name->name+version name) "Given NAME, a package name like \"foo-0.9.1b\", return two values: diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 16406930b5..b0abc69f0e 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -33,6 +33,7 @@ (define-module (guix build utils) alist-delete) #:export (%store-directory store-file-name? + strip-store-file-name parallel-job-count directory-exists? @@ -87,6 +88,12 @@ (define (store-file-name? file) "Return true if FILE is in the store." (string-prefix? (%store-directory) file)) +(define (strip-store-file-name file) + "Strip the '/gnu/store' and hash from FILE, a store file name. The result +is typically a \"PACKAGE-VERSION\" string." + (string-drop file + (+ 34 (string-length (%store-directory))))) + (define parallel-job-count ;; Number of processes to be passed next to GNU Make's `-j' argument. (make-parameter