packages: Add 'search-auxiliary-file'.

Suggested-by: Ludovic Courtès <ludo@gnu.org> at
<http://lists.gnu.org/archive/html/guix-devel/2016-12/msg01174.html>.

* gnu/packages.scm (%auxiliary-files-path): New variable.
(search-auxiliary-file): New procedure.
This commit is contained in:
Alex Kost 2017-02-17 13:17:03 +03:00
parent 2982889d68
commit 96eaa55ffb
No known key found for this signature in database
GPG key ID: 82460C082A0EE98F

View file

@ -2,7 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -40,8 +40,10 @@ (define-module (gnu packages)
#:use-module (srfi srfi-39) #:use-module (srfi srfi-39)
#:export (search-patch #:export (search-patch
search-patches search-patches
search-auxiliary-file
search-bootstrap-binary search-bootstrap-binary
%patch-path %patch-path
%auxiliary-files-path
%bootstrap-binaries-path %bootstrap-binaries-path
%package-module-path %package-module-path
@ -62,17 +64,27 @@ (define-module (gnu packages)
;;; ;;;
;;; Code: ;;; Code:
;; By default, we store patches and bootstrap binaries alongside Guile ;; By default, we store patches, auxiliary files and bootstrap binaries
;; modules. This is so that these extra files can be found without ;; alongside Guile modules. This is so that these extra files can be
;; requiring a special setup, such as a specific installation directory ;; found without requiring a special setup, such as a specific
;; and an extra environment variable. One advantage of this setup is ;; installation directory and an extra environment variable. One
;; that everything just works in an auto-compilation setting. ;; advantage of this setup is that everything just works in an
;; auto-compilation setting.
(define %bootstrap-binaries-path (define %bootstrap-binaries-path
(make-parameter (make-parameter
(map (cut string-append <> "/gnu/packages/bootstrap") (map (cut string-append <> "/gnu/packages/bootstrap")
%load-path))) %load-path)))
(define %auxiliary-files-path
(make-parameter
(map (cut string-append <> "/gnu/packages/aux-files")
%load-path)))
(define (search-auxiliary-file file-name)
"Search the auxiliary FILE-NAME. Return #f if not found."
(search-path (%auxiliary-files-path) file-name))
(define (search-patch file-name) (define (search-patch file-name)
"Search the patch FILE-NAME. Raise an error if not found." "Search the patch FILE-NAME. Raise an error if not found."
(or (search-path (%patch-path) file-name) (or (search-path (%patch-path) file-name)