aboutsummaryrefslogtreecommitdiff
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)
downloadpatches-b7c7c03eb5e37fc3455e4e17b0898ffc4bca29c3.tar
patches-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