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'.
This commit is contained in:
		
							parent
							
								
									d56f8d5e74
								
							
						
					
					
						commit
						b7c7c03eb5
					
				
					 3 changed files with 13 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue