diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-08-30 14:59:31 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-08-30 18:38:08 +0200 |
commit | 8c578a609478f808e4350c0140ca0b15c5bed0f2 (patch) | |
tree | 4cd62152ea80fd9e748b238be217b79e4edc8af3 /guix/build/utils.scm | |
parent | b7c7c03eb5e37fc3455e4e17b0898ffc4bca29c3 (diff) |
utils: Move 'package-name->name+version' to (guix build utils).
* guix/utils.scm (package-name->name+version): Move to...
* guix/build/utils.scm (package-name->name+version): ... here. New
procedure.
* guix/build/emacs-build-system.scm (package-name->name+version):
Remove.
Diffstat (limited to 'guix/build/utils.scm')
-rw-r--r-- | guix/build/utils.scm | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/guix/build/utils.scm b/guix/build/utils.scm index b0abc69f0e..27207423c0 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -21,6 +21,7 @@ (define-module (guix build utils) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-60) #:use-module (ice-9 ftw) #:use-module (ice-9 match) @@ -34,6 +35,7 @@ #:export (%store-directory store-file-name? strip-store-file-name + package-name->name+version parallel-job-count directory-exists? @@ -94,6 +96,27 @@ is typically a \"PACKAGE-VERSION\" string." (string-drop file (+ 34 (string-length (%store-directory))))) +(define (package-name->name+version name) + "Given NAME, a package name like \"foo-0.9.1b\", return two values: +\"foo\" and \"0.9.1b\". When the version part is unavailable, NAME and +#f are returned. The first hyphen followed by a digit is considered to +introduce the version part." + ;; See also `DrvName' in Nix. + + (define number? + (cut char-set-contains? char-set:digit <>)) + + (let loop ((chars (string->list name)) + (prefix '())) + (match chars + (() + (values name #f)) + ((#\- (? number? n) rest ...) + (values (list->string (reverse prefix)) + (list->string (cons n rest)))) + ((head tail ...) + (loop tail (cons head prefix)))))) + (define parallel-job-count ;; Number of processes to be passed next to GNU Make's `-j' argument. (make-parameter |