packages: <origin> no longer has an 'imported-modules' field.

* guix/packages.scm (<origin>)[imported-modules]: Remove.
(patch-and-repack): Remove #:imported-modules.  Use
'with-imported-modules'.  Remove #:modules argument to
'gexp->derivation'.
(origin->derivation): Adjust accordingly.
* doc/guix.texi (origin Reference): Adjust accordingly.
This commit is contained in:
Ludovic Courtès 2016-07-12 22:23:12 +02:00
parent c1629416d8
commit 1929fdba80
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 93 additions and 101 deletions

View File

@ -2697,8 +2697,9 @@ file name explicitly because the default is not very descriptive.
A list of file names containing patches to be applied to the source. A list of file names containing patches to be applied to the source.
@item @code{snippet} (default: @code{#f}) @item @code{snippet} (default: @code{#f})
A quoted piece of code that will be run in the source directory to make A G-expression (@pxref{G-Expressions}) or S-expression that will be run
any modifications, which is sometimes more convenient than a patch. in the source directory. This is a convenient way to modify the source,
sometimes more convenient than a patch.
@item @code{patch-flags} (default: @code{'("-p1")}) @item @code{patch-flags} (default: @code{'("-p1")})
A list of command-line flags that should be passed to the @code{patch} A list of command-line flags that should be passed to the @code{patch}
@ -2713,10 +2714,6 @@ such as GNU@tie{}Patch.
A list of Guile modules that should be loaded during the patching A list of Guile modules that should be loaded during the patching
process and while running the code in the @code{snippet} field. process and while running the code in the @code{snippet} field.
@item @code{imported-modules} (default: @code{'()})
The list of Guile modules to import in the patch derivation, for use by
the @code{snippet}.
@item @code{patch-guile} (default: @code{#f}) @item @code{patch-guile} (default: @code{#f})
The Guile package that should be used in the patching process. When The Guile package that should be used in the patching process. When
this is @code{#f}, a sensible default is used. this is @code{#f}, a sensible default is used.

View File

@ -56,7 +56,6 @@
origin-patch-guile origin-patch-guile
origin-snippet origin-snippet
origin-modules origin-modules
origin-imported-modules
base32 base32
package package
@ -164,8 +163,7 @@
(default #f)) (default #f))
(modules origin-modules ; list of module names (modules origin-modules ; list of module names
(default '())) (default '()))
(imported-modules origin-imported-modules ; list of module names
(default '()))
(patch-guile origin-patch-guile ; package or #f (patch-guile origin-patch-guile ; package or #f
(default #f))) (default #f)))
@ -381,14 +379,13 @@ the build code of derivation."
(snippet #f) (snippet #f)
(flags '("-p1")) (flags '("-p1"))
(modules '()) (modules '())
(imported-modules '())
(guile-for-build (%guile-for-build)) (guile-for-build (%guile-for-build))
(system (%current-system))) (system (%current-system)))
"Unpack SOURCE (a derivation or store path), apply all of PATCHES, and "Unpack SOURCE (a derivation or store path), apply all of PATCHES, and
repack the tarball using the tools listed in INPUTS. When SNIPPET is true, repack the tarball using the tools listed in INPUTS. When SNIPPET is true,
it must be an s-expression that will run from within the directory where it must be an s-expression that will run from within the directory where
SOURCE was unpacked, after all of PATCHES have been applied. MODULES and SOURCE was unpacked, after all of PATCHES have been applied. MODULES
IMPORTED-MODULES specify modules to use/import for use by SNIPPET." specifies modules in scope when evaluating SNIPPET."
(define source-file-name (define source-file-name
;; SOURCE is usually a derivation, but it could be a store file. ;; SOURCE is usually a derivation, but it could be a store file.
(if (derivation? source) (if (derivation? source)
@ -449,107 +446,107 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET."
(patches (sequence %store-monad (patches (sequence %store-monad
(map instantiate-patch patches)))) (map instantiate-patch patches))))
(define build (define build
#~(begin (with-imported-modules '((guix build utils))
(use-modules (ice-9 ftw) #~(begin
(srfi srfi-1) (use-modules (ice-9 ftw)
(guix build utils)) (srfi srfi-1)
(guix build utils))
;; The --sort option was added to GNU tar in version 1.28, released ;; The --sort option was added to GNU tar in version 1.28, released
;; 2014-07-28. During bootstrap we must cope with older versions. ;; 2014-07-28. During bootstrap we must cope with older versions.
(define tar-supports-sort? (define tar-supports-sort?
(zero? (system* (string-append #+tar "/bin/tar") (zero? (system* (string-append #+tar "/bin/tar")
"cf" "/dev/null" "--files-from=/dev/null" "cf" "/dev/null" "--files-from=/dev/null"
"--sort=name"))) "--sort=name")))
(define (apply-patch patch) (define (apply-patch patch)
(format (current-error-port) "applying '~a'...~%" patch) (format (current-error-port) "applying '~a'...~%" patch)
;; Use '--force' so that patches that do not apply perfectly are ;; Use '--force' so that patches that do not apply perfectly are
;; rejected. ;; rejected.
(zero? (system* (string-append #+patch "/bin/patch") (zero? (system* (string-append #+patch "/bin/patch")
"--force" #+@flags "--input" patch))) "--force" #+@flags "--input" patch)))
(define (first-file directory) (define (first-file directory)
;; Return the name of the first file in DIRECTORY. ;; Return the name of the first file in DIRECTORY.
(car (scandir directory (car (scandir directory
(lambda (name) (lambda (name)
(not (member name '("." ".."))))))) (not (member name '("." "..")))))))
;; Encoding/decoding errors shouldn't be silent. ;; Encoding/decoding errors shouldn't be silent.
(fluid-set! %default-port-conversion-strategy 'error) (fluid-set! %default-port-conversion-strategy 'error)
(when #+locales (when #+locales
;; First of all, install a UTF-8 locale so that UTF-8 file names ;; First of all, install a UTF-8 locale so that UTF-8 file names
;; are correctly interpreted. During bootstrap, LOCALES is #f. ;; are correctly interpreted. During bootstrap, LOCALES is #f.
(setenv "LOCPATH" (setenv "LOCPATH"
(string-append #+locales "/lib/locale/" (string-append #+locales "/lib/locale/"
#+(and locales #+(and locales
(package-version locales)))) (package-version locales))))
(setlocale LC_ALL "en_US.utf8")) (setlocale LC_ALL "en_US.utf8"))
(setenv "PATH" (string-append #+xz "/bin" ":" (setenv "PATH" (string-append #+xz "/bin" ":"
#+decomp "/bin")) #+decomp "/bin"))
;; SOURCE may be either a directory or a tarball. ;; SOURCE may be either a directory or a tarball.
(and (if (file-is-directory? #+source) (and (if (file-is-directory? #+source)
(let* ((store (%store-directory)) (let* ((store (%store-directory))
(len (+ 1 (string-length store))) (len (+ 1 (string-length store)))
(base (string-drop #+source len)) (base (string-drop #+source len))
(dash (string-index base #\-)) (dash (string-index base #\-))
(directory (string-drop base (+ 1 dash)))) (directory (string-drop base (+ 1 dash))))
(mkdir directory) (mkdir directory)
(copy-recursively #+source directory) (copy-recursively #+source directory)
#t) #t)
#+(if (string=? decompression-type "unzip") #+(if (string=? decompression-type "unzip")
#~(zero? (system* "unzip" #+source)) #~(zero? (system* "unzip" #+source))
#~(zero? (system* (string-append #+tar "/bin/tar") #~(zero? (system* (string-append #+tar "/bin/tar")
"xvf" #+source)))) "xvf" #+source))))
(let ((directory (first-file "."))) (let ((directory (first-file ".")))
(format (current-error-port) (format (current-error-port)
"source is under '~a'~%" directory) "source is under '~a'~%" directory)
(chdir directory) (chdir directory)
(and (every apply-patch '#+patches) (and (every apply-patch '#+patches)
#+@(if snippet #+@(if snippet
#~((let ((module (make-fresh-user-module))) #~((let ((module (make-fresh-user-module)))
(module-use-interfaces! module (module-use-interfaces!
(map resolve-interface module
'#+modules)) (map resolve-interface '#+modules))
((@ (system base compile) compile) ((@ (system base compile) compile)
'#+snippet '#+snippet
#:to 'value #:to 'value
#:opts %auto-compilation-options #:opts %auto-compilation-options
#:env module))) #:env module)))
#~()) #~())
(begin (chdir "..") #t) (begin (chdir "..") #t)
(unless tar-supports-sort? (unless tar-supports-sort?
(call-with-output-file ".file_list" (call-with-output-file ".file_list"
(lambda (port) (lambda (port)
(for-each (lambda (name) (format port "~a~%" name)) (for-each (lambda (name)
(find-files directory (format port "~a~%" name))
#:directories? #t (find-files directory
#:fail-on-error? #t))))) #:directories? #t
(zero? (apply system* (string-append #+tar "/bin/tar") #:fail-on-error? #t)))))
"cvfa" #$output (zero? (apply system*
;; avoid non-determinism in the archive (string-append #+tar "/bin/tar")
"--mtime=@0" "cvfa" #$output
"--owner=root:0" ;; avoid non-determinism in the archive
"--group=root:0" "--mtime=@0"
(if tar-supports-sort? "--owner=root:0"
`("--sort=name" "--group=root:0"
,directory) (if tar-supports-sort?
'("--no-recursion" `("--sort=name"
"--files-from=.file_list"))))))))) ,directory)
'("--no-recursion"
"--files-from=.file_list"))))))))))
(let ((name (tarxz-name original-file-name)) (let ((name (tarxz-name original-file-name)))
(modules (delete-duplicates (cons '(guix build utils)
imported-modules))))
(gexp->derivation name build (gexp->derivation name build
#:graft? #f #:graft? #f
#:system system #:system system
#:modules modules
#:guile-for-build guile-for-build)))) #:guile-for-build guile-for-build))))
(define (transitive-inputs inputs) (define (transitive-inputs inputs)
@ -1138,8 +1135,7 @@ cross-compilation target triplet."
;; No patches, no snippet: this is a fixed-output derivation. ;; No patches, no snippet: this is a fixed-output derivation.
(method uri 'sha256 sha256 name #:system system)) (method uri 'sha256 sha256 name #:system system))
(($ <origin> uri method sha256 name (= force (patches ...)) snippet (($ <origin> uri method sha256 name (= force (patches ...)) snippet
(flags ...) inputs (modules ...) (imported-modules ...) (flags ...) inputs (modules ...) guile-for-build)
guile-for-build)
;; Patches and/or a snippet. ;; Patches and/or a snippet.
(mlet %store-monad ((source (method uri 'sha256 sha256 name (mlet %store-monad ((source (method uri 'sha256 sha256 name
#:system system)) #:system system))
@ -1153,7 +1149,6 @@ cross-compilation target triplet."
#:flags flags #:flags flags
#:system system #:system system
#:modules modules #:modules modules
#:imported-modules imported-modules
#:guile-for-build guile))))) #:guile-for-build guile)))))
(define-gexp-compiler (origin-compiler (origin origin?) system target) (define-gexp-compiler (origin-compiler (origin origin?) system target)