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:
parent
c1629416d8
commit
1929fdba80
|
@ -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.
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue