diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-08-31 17:07:07 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-09-04 17:25:11 +0200 |
commit | ca719424455465fca4b872c371daf2a46de88b33 (patch) | |
tree | ce967f28949e46ddc864bb5d43a380fd7c9e0c0d /build-aux/build-self.scm | |
parent | 7e1d229019c1924a2748e5daec2a619e7efbd7d7 (diff) | |
download | guix-ca719424455465fca4b872c371daf2a46de88b33.tar guix-ca719424455465fca4b872c371daf2a46de88b33.tar.gz |
Switch to Guile-Gcrypt.
This removes (guix hash) and (guix pk-crypto), which now live as part of
Guile-Gcrypt (version 0.1.0.)
* guix/gcrypt.scm, guix/hash.scm, guix/pk-crypto.scm,
tests/hash.scm, tests/pk-crypto.scm: Remove.
* configure.ac: Test for Guile-Gcrypt. Remove LIBGCRYPT and
LIBGCRYPT_LIBDIR assignments.
* m4/guix.m4 (GUIX_ASSERT_LIBGCRYPT_USABLE): Remove.
* README: Add Guile-Gcrypt to the dependencies; move libgcrypt as
"required unless --disable-daemon".
* doc/guix.texi (Requirements): Likewise.
* gnu/packages/bash.scm, guix/derivations.scm, guix/docker.scm,
guix/git.scm, guix/http-client.scm, guix/import/cpan.scm,
guix/import/cran.scm, guix/import/crate.scm, guix/import/elpa.scm,
guix/import/gnu.scm, guix/import/hackage.scm,
guix/import/texlive.scm, guix/import/utils.scm, guix/nar.scm,
guix/pki.scm, guix/scripts/archive.scm,
guix/scripts/authenticate.scm, guix/scripts/download.scm,
guix/scripts/hash.scm, guix/scripts/pack.scm,
guix/scripts/publish.scm, guix/scripts/refresh.scm,
guix/scripts/substitute.scm, guix/store.scm,
guix/store/deduplication.scm, guix/tests.scm, tests/base32.scm,
tests/builders.scm, tests/challenge.scm, tests/cpan.scm,
tests/crate.scm, tests/derivations.scm, tests/gem.scm,
tests/nar.scm, tests/opam.scm, tests/pki.scm,
tests/publish.scm, tests/pypi.scm, tests/store-deduplication.scm,
tests/store.scm, tests/substitute.scm: Adjust imports.
* gnu/system/vm.scm: Likewise.
(guile-sqlite3&co): Rename to...
(gcrypt-sqlite3&co): ... this. Add GUILE-GCRYPT.
(expression->derivation-in-linux-vm)[config]: Remove.
(iso9660-image)[config]: Remove.
(qemu-image)[config]: Remove.
(system-docker-image)[config]: Remove.
* guix/scripts/pack.scm: Adjust imports.
(guile-sqlite3&co): Rename to...
(gcrypt-sqlite3&co): ... this. Add GUILE-GCRYPT.
(self-contained-tarball)[build]: Call 'make-config.scm' without
#:libgcrypt argument.
(squashfs-image)[libgcrypt]: Remove.
[build]: Call 'make-config.scm' without #:libgcrypt.
(docker-image)[config, json]: Remove.
[build]: Add GUILE-GCRYPT to the extensions Remove (guix config) from
the imported modules.
* guix/self.scm (specification->package): Remove "libgcrypt", add
"guile-gcrypt".
(compiled-guix): Remove #:libgcrypt.
[guile-gcrypt]: New variable.
[dependencies]: Add it.
[*core-modules*]: Remove #:libgcrypt from 'make-config.scm' call.
Add #:extensions.
[*config*]: Remove #:libgcrypt from 'make-config.scm' call.
(%dependency-variables): Remove %libgcrypt.
(make-config.scm): Remove #:libgcrypt.
* build-aux/build-self.scm (guile-gcrypt): New variable.
(make-config.scm): Remove #:libgcrypt.
(build-program)[fake-gcrypt-hash]: New variable.
Add (gcrypt hash) to the imported modules. Adjust load path
assignments.
* gnu/packages/package-management.scm (guix)[propagated-inputs]: Add
GUILE-GCRYPT.
[arguments]: In 'wrap-program' phase, add GUILE-GCRYPT to the search
path.
Diffstat (limited to 'build-aux/build-self.scm')
-rw-r--r-- | build-aux/build-self.scm | 83 |
1 files changed, 70 insertions, 13 deletions
diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm index 3ecdc931a5..f472724f18 100644 --- a/build-aux/build-self.scm +++ b/build-aux/build-self.scm @@ -22,6 +22,7 @@ #:use-module (guix ui) #:use-module (guix config) #:use-module (guix modules) + #:use-module (guix build-system gnu) #:use-module (srfi srfi-1) #:use-module (srfi srfi-19) #:use-module (rnrs io ports) @@ -72,7 +73,7 @@ (variables rest ...)))))) (variables %localstatedir %storedir %sysconfdir %system))) -(define* (make-config.scm #:key libgcrypt zlib gzip xz bzip2 +(define* (make-config.scm #:key zlib gzip xz bzip2 (package-name "GNU Guix") (package-version "0") (bug-report-address "bug-guix@gnu.org") @@ -92,7 +93,6 @@ %state-directory %store-database-directory %config-directory - %libgcrypt %libz %gzip %bzip2 @@ -137,9 +137,6 @@ (define %xz #+(and xz (file-append xz "/bin/xz"))) - (define %libgcrypt - #+(and libgcrypt - (file-append libgcrypt "/lib/libgcrypt"))) (define %libz #+(and zlib (file-append zlib "/lib/libz"))))))) @@ -200,6 +197,44 @@ person's version identifier." ;; XXX: Replace with a Git commit id. (date->string (current-date 0) "~Y~m~d.~H")) +(define guile-gcrypt + ;; The host Guix may or may not have 'guile-gcrypt', which was introduced in + ;; August 2018. If it has it, it's at least version 0.1.0, which is good + ;; enough. If it doesn't, specify our own package because the target Guix + ;; requires it. + (match (find-best-packages-by-name "guile-gcrypt" #f) + (() + (package + (name "guile-gcrypt") + (version "0.1.0") + (home-page "https://notabug.org/cwebber/guile-gcrypt") + (source (origin + (method url-fetch) + (uri (string-append home-page "/archive/v" version ".tar.gz")) + (sha256 + (base32 + "1gir7ifknbmbvjlql5j6wzk7bkb5lnmq80q59ngz43hhpclrk5k3")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,(specification->package "pkg-config")) + ("autoconf" ,(specification->package "autoconf")) + ("automake" ,(specification->package "automake")) + ("texinfo" ,(specification->package "texinfo")))) + (inputs + `(("guile" ,(specification->package "guile")) + ("libgcrypt" ,(specification->package "libgcrypt")))) + (synopsis "Cryptography library for Guile using Libgcrypt") + (description + "Guile-Gcrypt provides a Guile 2.x interface to a subset of the +GNU Libgcrypt crytographic library. It provides modules for cryptographic +hash functions, message authentication codes (MAC), public-key cryptography, +strong randomness, and more. It is implemented using the foreign function +interface (FFI) of Guile.") + (license #f))) ;license:gpl3+ + ((package . _) + package))) + (define* (build-program source version #:optional (guile-version (effective-version)) #:key (pull-version 0)) @@ -212,10 +247,21 @@ person's version identifier." (('gnu _ ...) #t) (_ #f))) + (define fake-gcrypt-hash + ;; Fake (gcrypt hash) module; see below. + (scheme-file "hash.scm" + #~(define-module (gcrypt hash) + #:export (sha1 sha256)))) + (with-imported-modules `(((guix config) - => ,(make-config.scm - #:libgcrypt - (specification->package "libgcrypt"))) + => ,(make-config.scm)) + + ;; To avoid relying on 'with-extensions', which was + ;; introduced in 0.15.0, provide a fake (gcrypt + ;; hash) just so that we can build modules, and + ;; adjust %LOAD-PATH later on. + ((gcrypt hash) => ,fake-gcrypt-hash) + ,@(source-module-closure `((guix store) (guix self) (guix derivations) @@ -237,13 +283,24 @@ person's version identifier." (match %load-path ((front _ ...) (unless (string=? front source) ;already done? - (set! %load-path (list source front))))))) - - ;; Only load our own modules or those of Guile. + (set! %load-path + (list source + (string-append #$guile-gcrypt + "/share/guile/site/" + (effective-version)) + front))))))) + + ;; Only load Guile-Gcrypt, our own modules, or those + ;; of Guile. (match %load-compiled-path ((front _ ... sys1 sys2) - (set! %load-compiled-path - (list front sys1 sys2))))) + (unless (string-prefix? #$guile-gcrypt front) + (set! %load-compiled-path + (list (string-append #$guile-gcrypt + "/lib/guile/" + (effective-version) + "/site-ccache") + front sys1 sys2)))))) (use-modules (guix store) (guix self) |