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>
This commit is contained in:
		
							parent
							
								
									54c365d645
								
							
						
					
					
						commit
						e4adc665e1
					
				
					 2 changed files with 10 additions and 3 deletions
				
			
		|  | @ -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 a new issue