summaryrefslogtreecommitdiff
path: root/guix/derivations.scm
Commit message (Collapse)AuthorAge
* scripts: Report what will be substituted.Ludovic Courtès2013-04-17
| | | | | | | | | | | | | | | | * guix/derivations.scm (derivation-input-output-paths): New procedure. (derivation-prerequisites-to-build): New `use-substitutes?' keyword argument. Change two return the list of substitutable paths as a second argument. * guix/ui.scm (show-what-to-build): Turn `dry-run?' into a keyword argument. New `use-substitutes?' keyword argument. Use `fold2' and adjust to use both return values of `derivation-prerequisites-to-build'. Display what will/would be downloaded. * guix/scripts/build.scm (guix-build): Adjust accordingly. * guix/scripts/package.scm (guix-package): Likewise. * tests/derivations.scm ("derivation-prerequisites-to-build and substitutes"): New test.
* derivations: Optimize `build-expression->derivation'.Ludovic Courtès2013-03-16
| | | | | | | | | This reduces the execution time of "guix build -e '(@ (gnu packages emacs) emacs)' -d" by 6%, from 1.15s to 1.08s. * guix/derivations.scm (build-expression->derivation): Write the builder as UTF-8.
* derivations: Optimize `write-derivation'.Ludovic Courtès2013-03-16
| | | | | | | | | | | | This reduces the execution time of "guix build -e '(@ (gnu packages emacs) emacs)' -d" by 25%, from 1.54 s. to 1.15s. * guix/derivations.scm (write-sequence, write-list, write-tuple): New procedures. (write-derivation)[list->string, write-list]: Remove. [write-string-list, write-output, write-input, write-env-var]: New helpers. Rewrite in terms of these new helpers.
* derivations: Add a search path parameter for module derivations.Ludovic Courtès2013-02-20
| | | | | * guix/derivations.scm (imported-modules, compiled-modules): Add a `module-path' parameter. Use it instead of %LOAD-PATH.
* derivations: Memoize `read-derivation'.Ludovic Courtès2013-01-30
| | | | | | | * guix/derivations.scm (read-derivation): Rename to... (%read-derivation): ... this. (read-derivation): New procedure. This reduces the execution of "guix-build gdb" from 2.5s to 1.7s.
* store: Remove the `fixed?' parameter from `add-to-store'.Ludovic Courtès2013-01-30
| | | | | | | | * guix/store.scm (add-to-store): Remove the `fixed?' parameter from the public interface. * gnu/packages/bootstrap.scm, guix-download.in, guix/derivations.scm, guix/packages.scm, tests/derivations.scm: Update all callers accordingly.
* doc: Start documenting derivations.Ludovic Courtès2013-01-16
| | | | | | | * doc/guix.texi (Defining Packages): Add cross-reference to "Derivations". (The Store): Add `build-derivations'. (Derivations): Populate.
* derivations: Fix `derivation-prerequisites-to-build' when outputs are there.Ludovic Courtès2013-01-09
| | | | | | | | | | | Before it would list inputs not built, even if the outputs of the given derivation were already available. * guix/derivations.scm (derivation-prerequisites-to-build): Add `outputs' keyword parameter. [built?, derivation-built?]: New procedures. [loop]: Add `sub-drvs' parameter. Use `derivation-built?' to check if the SUB-DRVS of DRV are built before checking its inputs.
* Update license headers.Ludovic Courtès2013-01-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change all license headers, except guix/build/* and ld-wrapper.scm, with this code: (use-modules (guix build utils) (srfi srfi-1)) (fluid-set! %default-port-encoding "UTF-8") (substitute* (remove (lambda (f) (or (string-contains f ".tar.") (string-contains f ".git/") (string-contains f ".so") (string-suffix? ".o" f) (string-suffix? ".a" f) (string-suffix? ".go" f) (string-suffix? ".pdf" f) (string-suffix? ".png" f) (string-suffix? ".info" f) (equal? (basename f) "guix-daemon") (equal? (basename f) "nix-setuid-helper") (string-contains f "nix-upstream/") (string-contains f "distro/packages/bootstrap/"))) (find-files "." "\\.[a-z]+$")) (("^([[:graph:]]+) This file is part of Guix." _ comment-start) (string-append comment-start " This file is part of GNU Guix.")) (("^([[:graph:]]+) Guix --- Nix package management.*" _ comment-start) (string-append comment-start " GNU Guix --- Functional package management for GNU\n")) (("^([[:graph:]]+) Guix is " _ comment-start) (string-append comment-start " GNU Guix is ")) (("^([[:graph:]]+) along with Guix." _ comment-start) (string-append comment-start " along with GNU Guix.")) (("^([[:graph:]]+) Copyright \\(C\\)" _ comment-start) (string-append comment-start " Copyright ©"))) Change headers using C-style comments manually.
* derivations: Add `derivation-path->output-paths'.Ludovic Courtès2013-01-05
| | | | | * guix/derivations.scm (derivation-path->output-paths): New procedure. * tests/derivations.scm ("multiple-output derivation"): Test it.
* derivations: Distinguish direct store paths from files within a store path.Ludovic Courtès2012-12-10
| | | | | * guix/derivations.scm (derivation)[direct-store-path?]: New procedure. Use it to determine which inputs must be added to the store.
* derivations: Fix erroneous call to `add-to-store' for local files as input.Ludovic Courtès2012-12-04
| | | | | | | * guix/derivations.scm (derivation)[inputs]: Fix typo in call to `add-to-store'. * tests/derivations.scm ("derivation with local file as input"): New test. * tests/packages.scm ("trivial with local file as input"): New test.
* Move base32 code to (guix base32).Ludovic Courtès2012-11-11
| | | | | | | | | | | | | | | | | | | | | | * guix/utils.scm (bytevector-quintet-ref, bytevector-quintet-ref-right, bytevector-quintet-length, bytevector-quintet-fold, bytevector-quintet-fold-right, make-bytevector->base32-string, %nix-base32-chars, %rfc4648-base32-chars, bytevector->base32-string, bytevector->nix-base32-string, bytevector-quintet-set!, bytevector-quintet-set-right!, base32-string-unfold, base32-string-unfold-right, make-base32-string->bytevector, base32-string->bytevector, nix-base32-string->bytevector): Move to... * guix/base32.scm: ... here. New file. * tests/utils.scm (%nix-hash, "bytevector->base32-string", "base32-string->bytevector", "nix-base32-string->bytevector", "sha256 & bytevector->base32-string"): Move to... * tests/base32.scm: ... here. New file * guix-download.in, guix/derivations.scm, guix/packages.scm, guix/snix.scm, tests/builders.scm, tests/derivations.scm: Adjust accordingly. * guix.scm (%public-modules): Add `base32'.
* derivations: build-expression->derivation: Builder only refers to sources.Ludovic Courtès2012-11-09
| | | | | | | | | | * guix/derivations.scm (build-expression->derivation)[source-path]: New procedure. [builder]: Pass only sources as references. This fixes a bug whereby changing a fixed-output drv referred to by a builder would cause the builder's hash to change, thereby leading to a full rebuild. * tests/derivations.scm ("build-expression->derivation with a fixed-output input"): New test.
* derivations: Make sure `build-expression->derivation' & co. pass `system'.Ludovic Courtès2012-10-25
| | | | | | | * guix/derivations.scm (imported-files): Call `build-expression->derivation' with SYSTEM, not (%current-system). (build-expression->derivation): Pass SYSTEM to `imported-modules' and `compiled-modules'.
* derivations: Pass the derivation of guile-for-build to `imported-files' & co.Ludovic Courtès2012-10-25
| | | | | | | | | | | * guix/derivations.scm (%guile-for-build): Initialize to #f. (imported-files, imported-modules, compiled-modules): Add `guile' keyword parameter. Pass it down to `build-expression->derivation'. (build-expression->derivation)[guile-drv]: New variable. Pass it as the #:guile parameter for `imported-modules' and `compiled-modules'. * tests/derivations.scm: Set %GUILE-FOR-BUILD to the derivation of %BOOTSTRAP-GUILE.
* derivations: Compile the #:modules passed to `build-expression->derivation'.Ludovic Courtès2012-10-24
| | | | | | | | | | * guix/derivations.scm (imported-files)[parent-dirs]: Move to... (parent-directories): ... here. New procedure. (compiled-modules): New procedure. (build-expression->derivation): Use it. * tests/derivations.scm ("build-expression->derivation with modules"): New test.
* derivations: Set input port to UTF-8 in `read-derivation'.Ludovic Courtès2012-10-07
| | | | | * guix/derivations.scm (read-derivation): Set DRV-PORT's encoding to UTF-8.
* Optimize `write-derivation' and `derivation-path->output-path'.Ludovic Courtès2012-09-02
| | | | | | * guix/derivations.scm (write-derivation): Explicitly use `simple-format'. (derivation-path->output-path): Memoize.
* Add a `guile-for-build' parameter to `build-expression->derivation'.Ludovic Courtès2012-09-01
| | | | | | | * guix/derivations.scm (%guile-for-build): Use `nixpkgs-derivation*' instead of `nixpkgs-derivation'. (build-expression->derivation): New `guile-for-build' keyword parameter. Use it.
* Add an `env-vars' keyword parameter to `build-expression->derivation'.Ludovic Courtès2012-09-01
| | | | | * guix/derivations.scm (build-expression->derivation): New `env-vars' keyword parameter; default to '(). Use it.
* Unset `LD_LIBRARY_PATH' in `build-expression->derivation'.Ludovic Courtès2012-07-07
| | | | | * guix/derivations.scm (build-expression->derivation)[prolog]: Unset `LD_LIBRARY_PATH'.
* derivation: Coalesce multiple occurrences of the same input.Ludovic Courtès2012-07-02
| | | | | | | | | * guix/derivations.scm (write-derivation)[coalesce-duplicate-inputs]: New procedure. Use it to process INPUTS. * tests/derivations.scm ("user of multiple-output derivation"): New test.
* derivation: Move sorting code to `write-derivation'.Ludovic Courtès2012-07-02
| | | | | | | * guix/derivations.scm (write-derivation): Sorte OUTPUTS, INPUTS, SOURCES, and ENV-VARS alphabetically. (derivation-hash): Leave INPUTS, SOURCES, and OUTPUTS unsorted. (derivation)[env-vars-with-empty-outputs]: Leave ENV-VARS unsorted.
* Fix `derivation-hash' for outputs not sorted alphabetically.Ludovic Courtès2012-07-02
| | | | | | * guix/derivations.scm (derivation-hash): Reorder OUTPUTS. * tests/derivations.scm ("multiple-output derivation, non-alphabetic order"): New test.
* Add `derivation-prerequisites' and `derivation-prerequisites-to-build'.Ludovic Courtès2012-07-01
| | | | | | | | | * guix/derivations.scm (derivation-prerequisites, derivation-prerequisites-to-build): New procedures. * tests/derivations.scm ("build-expression->derivation and derivation-prerequisites", "build-expression->derivation and derivation-prerequisites-to-build"): New tests.
* derivation: Remove duplicate inputs.Ludovic Courtès2012-06-29
| | | | * guix/derivations.scm (derivation): Remove duplicates from INPUT.
* build-expression->derivation: Move module forms at the top-level.Ludovic Courtès2012-06-17
| | | | | | | * guix/derivations.scm (build-expression->derivation)[module-form?]: New procedure. [prologue]: Add any form of EXP that matches MODULE-FORM?. [builder]: Remove any MODULE-FORM? from EXP.
* build-expression->derivation: Have the build fail when EXP returns #f.Ludovic Courtès2012-06-16
| | | | | | | | * guix/derivations.scm (build-expression->derivation)[builder]: Pass the result of EXP to `exit'. * tests/derivations.scm ("build-expression->derivation with expression returning #f"): New test.
* Change `build-expression->derivation' to support sub-derivation inputs.Ludovic Courtès2012-06-13
| | | | | | | | | * guix/derivations.scm (build-expression->derivation): Change to expect INPUTS to have the form (NAME DRV-PATH SUB-DRV) or (NAME DRV-PATH), instead of (NAME . DRV-PATH). Update callers accordingly. * guix/gnu-build-system.scm, tests/builders.scm, tests/derivations.scm: Update accordingly.
* Add supporting tools for the GNU Build System.Ludovic Courtès2012-06-13
| | | | | | | | | | * guix/derivations.scm (build-expression->derivation): Add all of INPUTS as inputs to the final derivation. * guix/build/gnu-build-system.scm, guix/build/utils.scm, guix/gnu-build-system.scm: New files. * tests/builders.scm ("gnu-build"): New test.
* Fix the order of the derivation's sources in `derivation-hash'.Ludovic Courtès2012-06-13
| | | | | * guix/derivations.scm (derivation-hash): Sort SOURCES alphabetically as well.
* Fix `imported-files' for files with a common prefix.Ludovic Courtès2012-06-12
| | | | | | | | * guix/derivations.scm (imported-files)[builder]: For TAIL, check whether it exists before (mkdir TAIL). * tests/derivations.scm ("imported-files"): Add file with a common prefix.
* Augment `build-expression->derivation' with #:modules; add `http-fetch'.Ludovic Courtès2012-06-12
| | | | | | | | | * guix/derivations.scm (imported-modules): New procedure. (build-expression->derivation): New keyword argument `modules'. Use `imported-modules' when MODULES is non-empty, and pass it with `-L' to GUILE. * guix/build/http.scm, guix/http.scm, tests/builders.scm: New files.
* Add `imported-files'.Ludovic Courtès2012-06-11
| | | | | | | | * guix/derivations.scm (imported-files): New procedure. (build-expression->derivation): Correctly handle inputs that are sources and not derivation paths. * tests/derivations.scm ("imported-files"): New test.
* Add multiple-output support to `build-expression->derivation'.Ludovic Courtès2012-06-09
| | | | | | | | | * guix/derivations.scm (build-expression->derivation): Add `outputs' keyword parameter; pass it to `derivation'. Define `%outputs' in the prologue. * tests/derivations.scm ("build-expression->derivation with two outputs"): New test.
* Sort environment variables alphabetically in `derivation'.Ludovic Courtès2012-06-09
| | | | | | | | * guix/derivations.scm (derivation)[env-vars-with-empty-outputs]: Sort the result alphabetically. * tests/derivations.scm ("build derivation with 1 source"): Add environment variables.
* Add support for fixed-output derivations in `build-expression->derivation'.Ludovic Courtès2012-06-09
| | | | | | | | * guix/derivations.scm (build-expression->derivation): Pass HASH and HASH-ALGO to `derivation'. * tests/derivations.scm ("build-expression->derivation for fixed-output derivation"): New test.
* Add support for fixed-output derivations.Ludovic Courtès2012-06-09
| | | | | | | | | | | * guix/derivations.scm (read-derivation)[outputs->alist]: For fixed-outputs, convert HASH with `base16-string->bytevector'. (write-derivation): Likewise, convert HASH-ALGO to a string and HASH to a base16 string. (derivation-hash): Expect HASH to be a bytevector, not a string; convert HASH with `bytevector->base16-string'. * tests/derivations.scm ("fixed-output derivation"): New test.
* Add `build-expression->derivation'.Ludovic Courtès2012-06-08
| | | | | | | | * guix/derivations.scm (%guile-for-build): New parameter. (build-expression->derivation): New procedure. * tests/derivations.scm ("build-expression->derivation without inputs", "build-expression->derivation with one input"): New tests.
* Allow derivations with input derivations.Ludovic Courtès2012-06-07
| | | | | | | | | | | | | | | | * guix/derivations.scm (derivation-path->output-path): New procedure. (derivation-hash): Call `memoize'. In the fixed-output case, convert HASH-ALGO to a string. In the other case, sort inputs in the alphabetical order of their hex hash. For inputs with no sub-drvs, add "out" as the sub-drv. * guix/utils.scm (%nixpkgs-directory): New parameter. (nixpkgs-derivation, memoize): New procedures. * tests/derivations.scm ("build derivation with 1 source"): Remove useless shebang. (%coreutils): New variable. ("build derivation with coreutils"): New test.
* Fix the order of environment variables in `derivation'.Ludovic Courtès2012-06-07
| | | | | | * guix/derivations.scm (derivation)[env-vars-with-empty-outputs]: Prepend new environment variables (as expected by Nix), and add them to E.
* Test the `build-derivations' operation.Ludovic Courtès2012-06-05
| | | | | * guix/derivations.scm (derivation): Return DRV as a second value. * tests/derivations.scm ("build derivation with 1 source"): New test.
* First stab at the `derivation' primitive.Ludovic Courtès2012-06-03
| | | | | | | | | | | | | * guix/store.scm (%store-prefix): New parameter. (store-path?, derivation-path?): New procedures. * guix/derivations.scm (write-derivation): Pass SOURCES through `object->string'. (compressed-hash, store-path, output-path, derivation): New procedures. * tests/derivations.scm (%store): New global variable. ("derivation with no inputs"): New test.
* Move `sha256' to (guix utils).Ludovic Courtès2012-06-03
| | | | | * guix/derivations.scm (sha256): Move to... * guix/utils.scm (sha256): ... here.
* Use libchop for cryptographic hashes and related.Ludovic Courtès2012-06-01
| | | | | | * guix/derivations.scm (sha256): Rewrite using libchop's `bytevector-hash'. (derivation-hash): Add docstring.
* Add unit test for derivation parsing and output.Ludovic Courtès2012-04-19
| | | | | | | * guix/derivations.scm: Export `read-derivation' and `write-derivation'. * srfi/srfi-64.scm, srfi/srfi-64.upstream.scm: New files, from libchop. * tests/derivations.scm, tests/test.drv: New files.
* Split (guix) in (guix store) and (guix derivations).Ludovic Courtès2012-04-18
* guix.scm: Move contents to other files. Just aggregate these. * guix/derivations.scm, guix/store.scm: New files.