summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-08-30 14:38:10 +0200
committerLudovic Courtès <ludo@gnu.org>2015-08-30 18:38:08 +0200
commitb7c7c03eb5e37fc3455e4e17b0898ffc4bca29c3 (patch)
treea9c2d06e8cb6a9049f13246b6665c960f48bb13b
parentd56f8d5e749496362d76bbbf364c8eba2260c6e5 (diff)
downloadguix-b7c7c03eb5e37fc3455e4e17b0898ffc4bca29c3.tar.gz
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'.
-rw-r--r--gnu/packages/gcc.scm6
-rw-r--r--guix/build/emacs-build-system.scm17
-rw-r--r--guix/build/utils.scm7
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 @@ using compilers other than 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 @@ store in '.el' files."
   (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 @@ store in '.el' files."
   (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 @@ 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 @@
                alist-delete)
   #:export (%store-directory
             store-file-name?
+            strip-store-file-name
             parallel-job-count
 
             directory-exists?
@@ -87,6 +88,12 @@
   "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