Commit Graph

14 Commits

Author SHA1 Message Date
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
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
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
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
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
Ludovic Courtès
9809055707 Add a `%current-system' fluid.
* guix/utils.scm (gnu-triplet->nix-system): New procedure.
  (%current-system): New variable.

* tests/utils.scm ("gnu-triplet->nix-system"): New test.

* tests/derivations.scm (%current-system): Remove.  Update users to
  use (%current-system) instead.
2012-06-11 21:50:17 +02:00
Ludovic Courtès
6d800a80ea Add `base16-string->bytevector'.
* guix/utils.scm (base16-string->bytevector): New procedure.

* tests/utils.scm ("bytevector->base16-string->bytevector"): New test.
2012-06-09 16:34:18 +02:00
Ludovic Courtès
c8369cacce Add base32-string->bytevector' and nix-base32-string->bytevector'.
* guix/utils.scm (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): New
  procedures.

* tests/utils.scm ("base32-string->bytevector",
  "nix-base32-string->bytevector"): New tests.
2012-06-09 15:25:51 +02:00
Ludovic Courtès
de4c3f26cb Allow derivations with input derivations.
* 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.
2012-06-07 23:15:00 +02:00
Ludovic Courtès
38b3122afb Add `bytevector->base16-string'.
* guix/utils.scm (bytevector->base16-string): New procedure.
2012-06-03 23:27:18 +02:00
Ludovic Courtès
f9c7080aa3 Fix `bytevector->nix-base32-string'.
* guix/utils.scm (bytevector-quintet-ref-right,
  bytevector-quintet-fold): New procedures.
  (bytevector-quintet-fold-right): Add `quintet-fold' parameter; use it
  instead of `bytevector-quintet-fold'.
  (bytevector->base32-string): Pass BYTEVECTOR-QUINTET-FOLD as the
  first parameter.
  (bytevector->nix-base32-string): Pass BYTEVECTOR-QUINTET-FOLD-RIGHT as
  the first parameter.

* tests/utils.scm ("sha256 & bytevector->nix-base32-string"): New test.
2012-06-03 22:39:26 +02:00
Ludovic Courtès
d0a92b7531 Move `sha256' to (guix utils).
* guix/derivations.scm (sha256): Move to...
* guix/utils.scm (sha256): ... here.
2012-06-03 20:26:45 +02:00
Ludovic Courtès
e3deeebb27 Add (guix utils), with `bytevector->base32-string'.
* guix/utils.scm, tests/utils.scm: New files.
2012-06-01 23:30:16 +02:00