[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#50878] [PATCH 2/4] guix: build: Avoid using magic literals in the c
From: |
Attila Lendvai |
Subject: |
[bug#50878] [PATCH 2/4] guix: build: Avoid using magic literals in the code for hash length. |
Date: |
Sun, 3 Oct 2021 14:43:01 +0200 |
* 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.
---
guix/build/graft.scm | 2 +-
guix/build/utils.scm | 11 +++++++++--
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/guix/build/graft.scm b/guix/build/graft.scm
index daac958d4f..281dbaba6f 100644
--- a/guix/build/graft.scm
+++ b/guix/build/graft.scm
@@ -44,7 +44,7 @@
;;;
;;; Code:
-(define-constant hash-length 32)
+(define-constant hash-length %store-hash-string-length)
(define nix-base32-char?
(cute char-set-contains?
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index f3d913aa70..4009c137b8 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -44,6 +44,7 @@
;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26805#16>.
delete)
#:export (%store-directory
+ %store-hash-string-length
store-file-name?
strip-store-file-name
package-name->name+version
@@ -154,15 +155,21 @@
(or (getenv "NIX_STORE")
"/gnu/store"))
+(define-constant %store-hash-string-length 32)
+
(define (store-file-name? file)
"Return true if FILE is in the store."
(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)
"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)))))
+ (string-drop file (store-path-prefix-length)))
(define (package-name->name+version name)
"Given NAME, a package name like \"foo-0.9.1b\", return two values:
--
2.33.0