diff options
Diffstat (limited to 'doc/guix-cookbook.texi')
-rw-r--r-- | doc/guix-cookbook.texi | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi index 3a37602018..cbb0163bd3 100644 --- a/doc/guix-cookbook.texi +++ b/doc/guix-cookbook.texi @@ -1255,6 +1255,7 @@ definition in @samp{$GUIX_CHECKOUT/guix/build/gnu-build-system.scm}: validate-documentation-location delete-info-dir-file patch-dot-desktop-files + make-dynamic-linker-cache install-license-files reset-gzip-timestamps compress-documentation))) @@ -1265,8 +1266,8 @@ Or from the REPL: @lisp (add-to-load-path "/path/to/guix/checkout") ,use (guix build gnu-build-system) -(map first %standard-phases) -@result{} (set-SOURCE-DATE-EPOCH set-paths install-locale unpack bootstrap patch-usr-bin-file patch-source-shebangs configure patch-generated-file-shebangs build check install patch-shebangs strip validate-runpath validate-documentation-location delete-info-dir-file patch-dot-desktop-files install-license-files reset-gzip-timestamps compress-documentation) +(map car %standard-phases) +@result{} (set-SOURCE-DATE-EPOCH set-paths install-locale unpack bootstrap patch-usr-bin-file patch-source-shebangs configure patch-generated-file-shebangs build check install patch-shebangs strip validate-runpath validate-documentation-location delete-info-dir-file patch-dot-desktop-files make-dynamic-linker-cache install-license-files reset-gzip-timestamps compress-documentation) @end lisp If you want to know more about what happens during those phases, consult the @@ -1288,13 +1289,25 @@ working directory." ;; Preserve timestamps (set to the Epoch) on the copied tree so that ;; things work deterministically. (copy-recursively source "." - #:keep-mtime? #true)) + #:keep-mtime? #t) + ;; Make the source checkout files writable, for convenience. + (for-each (lambda (f) + (false-if-exception (make-file-writable f))) + (find-files "."))) (begin - (if (string-suffix? ".zip" source) - (invoke "unzip" source) - (invoke "tar" "xvf" source)) - (chdir (first-subdirectory ".")))) - #true) + (cond + ((string-suffix? ".zip" source) + (invoke "unzip" source)) + ((tarball? source) + (invoke "tar" "xvf" source)) + (else + (let ((name (strip-store-file-name source)) + (command (compressor source))) + (copy-file source name) + (when command + (invoke command "--decompress" name))))) + ;; Attempt to change into child directory. + (and=> (first-subdirectory ".") chdir)))) @end lisp Note the @code{chdir} call: it changes the working directory to where the source was @@ -1330,14 +1343,10 @@ this: (let ((bash-directory (assoc-ref inputs "bash")) (output-directory (assoc-ref outputs "out")) (doc-directory (assoc-ref outputs "doc"))) - ;; ... - #true)) + ;; ... )) @end lisp -The procedure must return @code{#true} on success. It's brittle to rely on the return -value of the last expression used to tweak the phase because there is no -guarantee it would be a @code{#true}. Hence the trailing @code{#true} to ensure the right value -is returned on success. +Its return value is ignored. @subsubsection Code staging |