guix: build: Avoid using magic literals in the code for hash length.
* guix/build/utils.scm (%store-hash-string-length): New constant. (store-path-prefix-length): Factor out the calculation of the total store prefix length. * guix/build/graft.scm (hash-length): Use it. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>master
parent
54c365d645
commit
e4adc665e1
|
@ -44,7 +44,7 @@
|
||||||
;;;
|
;;;
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(define-constant hash-length 32)
|
(define-constant hash-length %store-hash-string-length)
|
||||||
|
|
||||||
(define nix-base32-char?
|
(define nix-base32-char?
|
||||||
(cute char-set-contains?
|
(cute char-set-contains?
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26805#16>.
|
;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26805#16>.
|
||||||
delete)
|
delete)
|
||||||
#:export (%store-directory
|
#:export (%store-directory
|
||||||
|
%store-hash-string-length
|
||||||
store-file-name?
|
store-file-name?
|
||||||
strip-store-file-name
|
strip-store-file-name
|
||||||
package-name->name+version
|
package-name->name+version
|
||||||
|
@ -198,15 +199,21 @@ compression."
|
||||||
(getenv "NIX_STORE") ;inside builder, set by the daemon
|
(getenv "NIX_STORE") ;inside builder, set by the daemon
|
||||||
"/gnu/store"))
|
"/gnu/store"))
|
||||||
|
|
||||||
|
(define-constant %store-hash-string-length 32)
|
||||||
|
|
||||||
(define (store-file-name? file)
|
(define (store-file-name? file)
|
||||||
"Return true if FILE is in the store."
|
"Return true if FILE is in the store."
|
||||||
(string-prefix? (%store-directory) file))
|
(string-prefix? (%store-directory) file))
|
||||||
|
|
||||||
|
(define (store-path-prefix-length)
|
||||||
|
(+ 2 ; the slash after %store-directory, and the dash after the hash
|
||||||
|
(string-length (%store-directory))
|
||||||
|
%store-hash-string-length))
|
||||||
|
|
||||||
(define (strip-store-file-name file)
|
(define (strip-store-file-name file)
|
||||||
"Strip the '/gnu/store' and hash from FILE, a store file name. The result
|
"Strip the '/gnu/store' and hash from FILE, a store file name. The result
|
||||||
is typically a \"PACKAGE-VERSION\" string."
|
is typically a \"PACKAGE-VERSION\" string."
|
||||||
(string-drop file
|
(string-drop file (store-path-prefix-length)))
|
||||||
(+ 34 (string-length (%store-directory)))))
|
|
||||||
|
|
||||||
(define (package-name->name+version name)
|
(define (package-name->name+version name)
|
||||||
"Given NAME, a package name like \"foo-0.9.1b\", return two values:
|
"Given NAME, a package name like \"foo-0.9.1b\", return two values:
|
||||||
|
|
Reference in New Issue