Commit Graph

83 Commits

Author SHA1 Message Date
Ludovic Courtès
ebe2f31f19 utils: Add `patch-shebang'.
* guix/build/utils.scm (search-path-as-string->list): New procedure.
  (dump-port, patch-shebang): New procedures.
2012-08-19 17:41:30 +02:00
Ludovic Courtès
3a310cc017 build: Add `--with-libgcrypt-prefix'; capture the path to libgcrypt.
* configure.ac: Add `--with-libgcrypt-prefix'.  Substitute `LIBGCRYPT'.

* Makefile.am (.scm.go): Pass $(LIBGCRYPT).

* guix/utils.scm (%libgcrypt): New variable.
  (sha256): Use it.
2012-08-17 10:41:27 +02:00
Ludovic Courtès
93a0a8b3fd packages: Add all non-derivation paths to the store.
* guix/packages.scm (package-derivation): Add all non-derivation paths
  to the store.
2012-08-16 19:00:49 +02:00
Ludovic Courtès
cf56996046 packages: Allow store paths as inputs.
* guix/packages.scm (package-derivation): Allow non-derivation store
  paths as inputs.
2012-08-16 18:48:03 +02:00
Ludovic Courtès
b86b00567c build: Pass $(NIX_INSTANTIATE) to the build and test environments.
* Makefile.am (.scm.go): Define $NIX_INSTANTIATE.
  (TESTS_ENVIRONMENT): Likewise, and define $NIX_HASH.
* guix/utils.scm (nixpkgs-derivation): Use $NIX_INSTANTIATE when
  defined.

* tests/utils.scm (%nix-hash): New variable.
  ("sha256 & bytevector->nix-base32-string"): Use it.
2012-08-14 18:42:46 +02:00
Ludovic Courtès
ce5d658c5c Add `nixpkgs-derivation*'; use it in the distro.
* guix/utils.scm (nixpkgs-derivation*): New macro.

* distro/base.scm: Use it instead of `nixpkgs-derivation'.
2012-07-11 17:26:43 +02:00
Ludovic Courtès
d44bc84b15 Unset LD_LIBRARY_PATH' in build-expression->derivation'.
* guix/derivations.scm (build-expression->derivation)[prolog]: Unset
  `LD_LIBRARY_PATH'.
2012-07-07 22:38:08 +02:00
Ludovic Courtès
da62d3e5ae build-system/gnu: Add dependency on GNU Findutils.
* guix/build-system/gnu.scm (%standard-inputs): Add "findutils".
2012-07-07 22:08:35 +02:00
Ludovic Courtès
a3d73f59e3 Add `package-transitive-inputs'; use it to honor propagated inputs.
* guix/packages.scm (package-transitive-inputs): New procedure.
  (package-derivation): Use it to compute INPUTS.

* tests/packages.scm (dummy-package): New macro.
  ("package-transitive-inputs"): New test.
2012-07-07 20:14:31 +02:00
Ludovic Courtès
c51e6ea2d8 build-system/gnu: Set $PKG_CONFIG_PATH.
* guix/build/gnu-build-system.scm (set-paths): Add `PKG_CONFIG_PATH'.
2012-07-07 18:40:39 +02:00
Ludovic Courtès
c3c7eb4194 build-system/gnu: Add `tests?' parameter.
* guix/build-system/gnu.scm (gnu-build): Add `tests?' parameter.
  [builder]: Inherit it.
2012-07-07 18:12:20 +02:00
Ludovic Courtès
d9dbab18e2 utils: Have `substitute' restore the file's permission bits.
* guix/build/utils.scm (substitute): Restore FILE's mode before renaming
  TEMPLATE.
2012-07-07 18:11:52 +02:00
Ludovic Courtès
4fa697e932 utils: Change substitute' and substitute*' to work with several regexps.
* guix/build/utils.scm (substitute): Change to accept a `pattern+procs'
  parameter.  Iterate over it.
  (substitute*): Adjust accordingly.

* distro/base.scm (guile-1.8): Adjust accordingly.
2012-07-07 17:12:04 +02:00
Ludovic Courtès
febaa88569 build-system/gnu: Support parallel builds and tests.
* guix/build/gnu-build-system.scm (build): Add `parallel-build?'
  parameter; honor it and $NIX_BUILD_CORES.
  (check): Add `parallel-tests?' parameter; likewise.

* guix/build-system/gnu.scm (gnu-build): Add `parallel-build?' and
  `parallel-tests?' parameters.
  [builder]: Inherit them.
2012-07-07 16:49:23 +02:00
Ludovic Courtès
10c87717bd utils: Introduce `substitute*', for easier sed-like syntax.
* guix/build/utils.scm (let-matches, substitute*): New macros.

* distro/base.scm (guile-1.8): Use `substitute*' instead of
  `substitute'.  Remove the #:modules argument.
2012-07-07 16:25:10 +02:00
Ludovic Courtès
8e6ecb1400 utils: Make sure `substitute' writes all its output.
* guix/build/utils.scm (substitute): Close OUT before renaming it.
2012-07-06 00:51:55 +02:00
Ludovic Courtès
1a7d8e2048 gnu-build-system: Dump the values of environment variables.
* guix/build/gnu-build-system.scm (set-paths): Dump the value of
  environment variables in the `environment-variables' files, similar to
  what Nixpkgs does.
2012-07-06 00:50:07 +02:00
Ludovic Courtès
e67ac6e668 packages: Allow inputs that are local files.
* guix/packages.scm (package-derivation): Add to the store inputs that
  are local files.
2012-07-05 01:20:05 +02:00
Ludovic Courtès
74cd03b1a0 build-system/gnu: Add a `patch' phase.
* guix/build/gnu-build-system.scm (patch): New procedure.
  (%standard-phases): Add `patch'.

* guix/build-system/gnu.scm (gnu-build): Add `patches' and `patch-flags'
  parameters.  Pass them on.
2012-07-05 01:04:20 +02:00
Ludovic Courtès
3e43c64a74 build-system/gnu: Make the builder's module list a parameter.
* guix/build-system/gnu.scm (gnu-build): Add a `modules' keyword
  parameter; use it.
2012-07-05 00:14:40 +02:00
Ludovic Courtès
b0e0d0e99f Add builder-side utilities for phases, stream editing, & co.
* guix/build/utils.scm (with-directory-excursion): New macro.
  (alist-cons-before, alist-cons-after, alist-replace): New procedures.
  (substitute): New procedure.

* tests/build-utils.scm: New file.

* Makefile.am (TESTS): Add `tests/build-utils.scm'.
2012-07-05 00:13:30 +02:00
Ludovic Courtès
c9d01150c0 packages: Add a `self-native-input?' field.
* guix/packages.scm (<package>)[self-native-input?]: New field.
  (package-derivation): Update/fix pattern.
2012-07-05 00:09:17 +02:00
Ludovic Courtès
90c68be883 Rename <package-source> to <origin>; use the `letrec*' behavior in packages.
* guix/packages.scm (<package-source>): Rename to...
  (<origin>): ... this.  Update users.

* distro/base.scm (libsigsegv, gawk, hello): Adjust to renaming; refer
  to VERSION to build the URL.
2012-07-03 23:50:29 +02:00
Ludovic Courtès
8fd5bd2b69 define-record-type*: Add `letrec*' behavior.
* guix/utils.scm (define-record-type*)[make-syntactic-constructor]: Bind
  all the ((FIELD VALUE) ...) in a `letrec*'.  Adjust `field-value'
  accordingly.

* tests/utils.scm ("define-record-type* with letrec* behavior"): New
  test.
2012-07-03 21:59:56 +02:00
Ludovic Courtès
e4c245f8a5 Add a `base32' macro, for convenience.
* guix/packages.scm (base32): New macro.

* distro/base.scm (libsigsegv, gawk, hello): Use it.
2012-07-02 16:07:26 +02:00
Ludovic Courtès
03671375b6 packages: Allow the `arguments' field to be a procedure.
* guix/packages.scm (package-derivation): When ARGS is a procedure, call
  (ARGS SYSTEM).

* distro/base.scm (gawk)[arguments]: Turn into a procedure, to disable
  tests on Cygwin.
2012-07-02 15:59:30 +02:00
Ludovic Courtès
a1232d0cb8 gnu-build-system: Improve the configure' and check' phases.
* guix/build/gnu-build-system.scm (configure): Print the final list of
  flags.
  (check): Add `tests?' keyword parameter.
2012-07-02 15:56:22 +02:00
Ludovic Courtès
18a8dad70c gnu-build-system: Print the `configure' flags.
* guix/build/gnu-build-system.scm (configure): Print CONFIGURE-FLAGS.
2012-07-02 15:40:34 +02:00
Ludovic Courtès
8ef3401f65 Make `define-record-type*' error messages more informative.
* guix/utils.scm (define-record-type*): In case of missing or extra
  field initializers, raise a descriptive `syntax-error'.
2012-07-02 15:37:30 +02:00
Ludovic Courtès
d66ac374e9 derivation: Coalesce multiple occurrences of the same input.
* 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.
2012-07-02 01:35:39 +02:00
Ludovic Courtès
08005c6579 gnu-build-system: Fix "libdir" and "includedir" for multiple-output drvs.
* guix/build/gnu-build-system.scm (configure): Change `--libdir' and
  `--includedir' to LIBDIR + "/lib" and INCLUDEDIR + "/include",
  respectively.
2012-07-02 01:35:39 +02:00
Ludovic Courtès
e36a717216 Upgrade Nix worker protocol.
We were already relying on the new version in `set-build-options', so
this patch fixes that.

* guix/store.scm (%protocol-version): Increase.
  (open-connection)[reserve-space?]: New argument.  Pass it to the
  server when it's recent enough.
2012-07-02 01:35:39 +02:00
Ludovic Courtès
561eaf7144 derivation: Move sorting code to `write-derivation'.
* 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.
2012-07-02 01:35:39 +02:00
Ludovic Courtès
4b1786aa2c Fix `derivation-hash' for outputs not sorted alphabetically.
* guix/derivations.scm (derivation-hash): Reorder OUTPUTS.
* tests/derivations.scm ("multiple-output derivation, non-alphabetic
  order"): New test.
2012-07-02 01:35:39 +02:00
Ludovic Courtès
062c6927ad Add propagated-inputs' and properties' to <package>.
* guix/packages.scm (<package>)[propagated-inputs, properties]: New
  fields.
  (package-derivation): Update `match' clause.
2012-07-02 01:35:34 +02:00
Ludovic Courtès
9a20830e57 Add derivation-prerequisites' and derivation-prerequisites-to-build'.
* 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.
2012-07-01 00:37:03 +02:00
Ludovic Courtès
31ef99a8a5 Add the `valid-path?' RPC.
* guix/store.scm (valid-path?): New procedure.

* tests/builders.scm ("http-fetch", "gnu-build"): Use it.
* tests/derivations.scm ("add-to-store, flat", "add-to-store,
  recursive", "derivation with no inputs", "build derivation with 1
  source", "build derivation with coreutils",
  "build-expression->derivation with expression returning #f"):
  Likewise.
2012-07-01 00:27:27 +02:00
Ludovic Courtès
e036c31bc6 Add missing `set-build-options' parameters.
* guix/store.scm (set-build-options)[build-cores, use-substitutes?]: New
  keyword parameters.
  [send]: Change to expect a type, and use `write-arg'.
  Send settings for BUILD-CORES and USE-SUBSTITUTES? when the server
  supports it.
2012-07-01 00:09:47 +02:00
Ludovic Courtès
39b9372ca7 Add a libgcrypt-based implementation of `sha256'.
* guix/utils.scm (sha256): Add a libgcrypt-based implementation using
  the FFI.
2012-06-29 22:58:27 +02:00
Ludovic Courtès
64fddd74f0 distro: Add libsigsegv and GNU Awk.
* guix/packages.scm (<package>)[arguments]: Default to '().

* distro/base.scm (libsigsegv, gawk): New packages.
  (hello): Use GAWK instead of (nixpkgs-derivation "gawk").
2012-06-29 00:28:57 +02:00
Ludovic Courtès
d26ad5e45b derivation: Remove duplicate inputs.
* guix/derivations.scm (derivation): Remove duplicates from INPUT.
2012-06-29 00:27:32 +02:00
Ludovic Courtès
5791d3b696 build-system/gnu: Add GNU Awk to the standard inputs.
* guix/build-system/gnu.scm (%standard-inputs): Add GNU Awk.
2012-06-28 23:46:00 +02:00
Ludovic Courtès
45753b6552 packages: Add a `home-page' field.
* guix/packages.scm (<package>)[home-page]: New field.

* distro/base.scm (hello)[home-page]: Initialize.
2012-06-28 23:44:43 +02:00
Ludovic Courtès
35f3c5f5ad Track the source location of packages.
* guix/packages.scm (<location>): New record type.
  (location, source-properties->location): New procedures.
  (<package>)[location]: New field.

* tests/packages.scm ("GNU Hello"): Test `package-location'.
2012-06-28 23:15:24 +02:00
Ludovic Courtès
dba6b34bdd Add a sha256 fallback that uses Coreutils instead of libchop.
* guix/utils.scm (compile-time-value): Move to the top.
  (sha256): Add an implementation that uses Coreutils, for when libchop
  is unavailable.
2012-06-28 22:57:40 +02:00
Ludovic Courtès
900f726734 Introduce `compile-time-value' and use it.
* guix/utils.scm (compile-time-value): New macro.
  (%nixpkgs-directory): Use it.

* guix/build-system/gnu.scm (%standard-inputs): Likewise.
2012-06-28 22:38:09 +02:00
Ludovic Courtès
e3ce5d709f Add a declarative packaging layer.
* Makefile.am (MODULES): Add `guix/packages.scm' and `distro/base.scm'.
  (TESTS): Add `tests/packages.scm'.
  (EXTRA_DIST): New variable.

* guix/packages.scm, distro/base.scm, tests/packages.scm: New files.

* guix/http.scm (http-fetch): Make `name' an optional argument, to match
  the expectations of `package-source-derivation'.
2012-06-28 01:24:34 +02:00
Ludovic Courtès
e1e8874ee8 build-system/gnu: Have configure-flags' and make-flags' evaluated.
* guix/build-system/gnu.scm (gnu-build): Double-quote the default value
  of MAKE-FLAGS and CONFIGURE-FLAGS.  Don't quote them in BUILDER.
2012-06-28 01:18:15 +02:00
Ludovic Courtès
208f7cd155 Abstract build systems.
* Makefile.am (MODULES): Add `guix/build-system.scm' and
  `guix/build-system/gnu.scm'.  Remove `guix/gnu-build-system.scm'.

* guix/build-system.scm: New file.
* guix/gnu-build-system.scm: Rename to...
* guix/build-system/gnu.scm: ... this.
  (gnu-build-system): New variable.

* tests/builders.scm: Adjust `use-module' clauses.
  ("gnu-build-system"): New test.
2012-06-27 23:58:07 +02:00
Ludovic Courtès
72d869634b Add `define-record-type*'.
* guix/utils.scm (define-record-type*): New macro.

* tests/utils.scm ("define-record-type*"): New test.
2012-06-27 23:40:12 +02:00