diff options
Diffstat (limited to 'gnu/packages/package-management.scm')
-rw-r--r-- | gnu/packages/package-management.scm | 148 |
1 files changed, 107 insertions, 41 deletions
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 1fbc2baf33..3b5c707057 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -11,6 +11,8 @@ ;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de> +;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; ;;; This file is part of GNU Guix. @@ -36,6 +38,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages backup) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages bdw-gc) #:use-module (gnu packages bison) #:use-module (gnu packages boost) @@ -56,6 +59,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) + #:use-module (gnu packages hurd) #:use-module (gnu packages libedit) #:use-module (gnu packages linux) #:use-module (gnu packages lisp) @@ -113,8 +117,8 @@ ;; Note: the 'update-guix-package.scm' script expects this definition to ;; start precisely like this. (let ((version "1.1.0") - (commit "619f9181a363576894a433206008b139255062dd") - (revision 2)) + (commit "52b01cb7007b793c5b21456ac8cdd9f9df5b8b16") + (revision 3)) (package (name "guix") @@ -130,7 +134,7 @@ (commit commit))) (sha256 (base32 - "1lk0h9zgry7m78nv70gxwb57pw1d5yzay477gxsc43v1aa7zg8sp")) + "0rz5vnqvcrccbnrirhrsx3iw4jj75znh3ma9g7szjn313ii3hl1d")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -150,7 +154,8 @@ ;; To avoid problems with the length of shebangs, ;; choose a fixed-width and short directory name ;; for tests. - "ac_cv_guix_test_root=/tmp/guix-tests") + "ac_cv_guix_test_root=/tmp/guix-tests" + ,@(if (hurd-target?) '("--with-courage") '())) #:parallel-tests? #f ;work around <http://bugs.gnu.org/21097> #:modules ((guix build gnu-build-system) @@ -181,10 +186,25 @@ $(prefix)/etc/init.d\n"))) (invoke "sh" "bootstrap"))) + (add-before 'build 'use-host-compressors + (lambda* (#:key inputs target #:allow-other-keys) + (when target + ;; Use host compressors. + (let ((bzip2 (assoc-ref inputs "bzip2")) + (gzip (assoc-ref inputs "gzip")) + (xz (assoc-ref inputs "xz"))) + (substitute* "guix/config.scm" + (("\"[^\"]*/bin/bzip2") + (string-append "\"" bzip2 "/bin/bzip2")) + (("\"[^\"]*/bin/gzip") gzip + (string-append "\"" gzip "/bin/gzip")) + (("\"[^\"]*/bin//xz") + (string-append "\"" xz "/bin/xz"))))) + #t)) (add-before 'check 'copy-bootstrap-guile - (lambda* (#:key system inputs #:allow-other-keys) - ;; Copy the bootstrap guile tarball in the store used - ;; by the test suite. + (lambda* (#:key system target inputs #:allow-other-keys) + ;; Copy the bootstrap guile tarball in the store + ;; used by the test suite. (define (intern file recursive?) ;; Note: don't use 'guix download' here because we ;; need to set the 'recursive?' argument. @@ -208,20 +228,21 @@ $(prefix)/etc/init.d\n"))) (invoke "./test-env" "guile" "-c" (object->string code))) - (intern (assoc-ref inputs "boot-guile") #f) + (unless target + (intern (assoc-ref inputs "boot-guile") #f) - ;; On x86_64 some tests need the i686 Guile. - ,@(if (and (not (%current-target-system)) - (string=? (%current-system) - "x86_64-linux")) - '((intern (assoc-ref inputs "boot-guile/i686") #f)) - '()) + ;; On x86_64 some tests need the i686 Guile. + ,@(if (and (not (%current-target-system)) + (string=? (%current-system) + "x86_64-linux")) + '((intern (assoc-ref inputs "boot-guile/i686") #f)) + '()) - ;; Copy the bootstrap executables. - (for-each (lambda (input) - (intern (assoc-ref inputs input) #t)) - '("bootstrap/bash" "bootstrap/mkdir" - "bootstrap/tar" "bootstrap/xz")) + ;; Copy the bootstrap executables. + (for-each (lambda (input) + (intern (assoc-ref inputs input) #t)) + '("bootstrap/bash" "bootstrap/mkdir" + "bootstrap/tar" "bootstrap/xz"))) #t)) (add-after 'unpack 'disable-failing-tests ;; XXX FIXME: These tests fail within the build container. @@ -244,11 +265,14 @@ $(prefix)/etc/init.d\n"))) (setenv "SHELL" (which "sh")) #t)) (add-after 'install 'wrap-program - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs outputs target + #:allow-other-keys) ;; Make sure the 'guix' command finds GnuTLS, ;; Guile-JSON, and Guile-Git automatically. (let* ((out (assoc-ref outputs "out")) - (guile (assoc-ref inputs "guile")) + (guile ,@(if (%current-target-system) + '((assoc-ref native-inputs "guile")) + '((assoc-ref inputs "guile")))) (gcrypt (assoc-ref inputs "guile-gcrypt")) (json (assoc-ref inputs "guile-json")) (sqlite (assoc-ref inputs "guile-sqlite3")) @@ -284,9 +308,24 @@ $(prefix)/etc/init.d\n"))) `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)) `("GUIX_LOCPATH" ":" suffix (,locpath))) + (when target + ;; XXX Touching wrap-program rebuilds world + (let ((bash (assoc-ref inputs "bash"))) + (substitute* (string-append out "/bin/guix") + (("^#!.*/bash") (string-append "#! " bash "/bin/bash"))))) #t)))))) (native-inputs `(("pkg-config" ,pkg-config) + ;; Guile libraries are needed here for + ;; cross-compilation. + ("guile" ,guile-3.0) + ("gnutls" ,gnutls) + ("guile-gcrypt" ,guile-gcrypt) + ("guile-json" ,guile-json-3) + ("guile-sqlite3" ,guile-sqlite3) + ("guile-ssh" ,guile-ssh) + ("guile-git" ,guile-git) + ;; XXX: Keep the development inputs here even though ;; they're unnecessary, just so that 'guix environment ;; guix' always contains them. @@ -306,7 +345,7 @@ $(prefix)/etc/init.d\n"))) ("sqlite" ,sqlite) ("libgcrypt" ,libgcrypt) - ("guile" ,guile-2.2) + ("guile" ,guile-3.0) ;; Some of the tests use "unshare" when it is available. ("util-linux" ,util-linux) @@ -318,6 +357,10 @@ $(prefix)/etc/init.d\n"))) (string=? (%current-system) "x86_64-linux")) `(("boot-guile/i686" ,(bootstrap-guile-origin "i686-linux"))) '()) + ,@(if (%current-target-system) + `(("bash" ,bash-minimal) + ("xz" ,xz)) + '()) ;; Tests also rely on these bootstrap executables. ("bootstrap/bash" ,(bootstrap-executable "bash" (%current-system))) @@ -327,7 +370,7 @@ $(prefix)/etc/init.d\n"))) ("glibc-utf8-locales" ,glibc-utf8-locales))) (propagated-inputs - `(("gnutls" ,gnutls) + `(("gnutls" ,(if (%current-target-system) gnutls-3.6.13 guile3.0-gnutls)) ("guile-gcrypt" ,guile-gcrypt) ("guile-json" ,guile-json-3) ("guile-sqlite3" ,guile-sqlite3) @@ -359,7 +402,7 @@ the Nix package manager.") (fold alist-delete (package-native-inputs guix) '("po4a" "graphviz" "help2man"))) (inputs - `(("gnutls" ,gnutls) + `(("gnutls" ,guile3.0-gnutls) ("guile-git" ,guile-git) ("guile-json" ,guile-json-3) ("guile-gcrypt" ,guile-gcrypt) @@ -404,20 +447,35 @@ the Nix package manager.") (invoke "make" "install-binPROGRAMS"))) (delete 'wrap-program))))))) -(define-public guile3.0-guix + +(define-public guile2.2-guix (package (inherit guix) - (name "guile3.0-guix") + (name "guile2.2-guix") + (native-inputs + `(("guile" ,guile-2.2) + ("gnutls" ,guile2.2-gnutls) + ("guile-gcrypt" ,guile2.2-gcrypt) + ("guile-json" ,guile2.2-json) + ("guile-sqlite3" ,guile2.2-sqlite3) + ("guile-ssh" ,guile2.2-ssh) + ("guile-git" ,guile2.2-git) + ,@(fold alist-delete (package-native-inputs guix) + '("guile" "gnutls" "guile-gcrypt" "guile-json" + "guile-sqlite3" "guile-ssh" "guile-git")))) (inputs - `(("guile" ,guile-3.0) + `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guix)))) (propagated-inputs - `(("gnutls" ,guile3.0-gnutls) - ("guile-gcrypt" ,guile3.0-gcrypt) - ("guile-json" ,guile3.0-json) - ("guile-sqlite3" ,guile3.0-sqlite3) - ("guile-ssh" ,guile3.0-ssh) - ("guile-git" ,guile3.0-git))))) + `(("gnutls" ,gnutls) + ("guile-gcrypt" ,guile2.2-gcrypt) + ("guile-json" ,guile2.2-json) + ("guile-sqlite3" ,guile2.2-sqlite3) + ("guile-ssh" ,guile2.2-ssh) + ("guile-git" ,guile2.2-git))))) + +(define-public guile3.0-guix + (deprecated-package "guile3.0-guix" guix)) (define-public guix-minimal ;; A version of Guix which is built with the minimal set of dependencies, as @@ -825,12 +883,12 @@ written entirely in Python."))) (inputs `(("guile" ,guile-3.0))) (propagated-inputs - `(("guix" ,guile3.0-guix) - ("guile-commonmark" ,guile3.0-commonmark) - ("guile-gcrypt" ,guile3.0-gcrypt) - ("guile-pfds" ,guile3.0-pfds) - ("guile-syntax-highlight" ,guile3.0-syntax-highlight) - ("guile-wisp" ,guile3.0-wisp))) + `(("guix" ,guix) + ("guile-commonmark" ,guile-commonmark) + ("guile-gcrypt" ,guile-gcrypt) + ("guile-pfds" ,guile-pfds) + ("guile-syntax-highlight" ,guile-syntax-highlight) + ("guile-wisp" ,guile-wisp))) (home-page "https://workflows.guix.info") (synopsis "Workflow management extension for GNU Guix") (description "The @dfn{Guix Workflow Language} (GWL) provides an @@ -855,6 +913,14 @@ environments.") (sha256 (base32 "01z7jjkc7r7lj6637rcgpz40v8xqqyfp6871h94yvcnwm7zy9h1n")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Allow builds with Guile 3.0. + (substitute* "configure.ac" + (("^GUILE_PKG.*") + "GUILE_PKG([3.0 2.2])\n")) + #t)) (file-name (string-append "guix-jupyter-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -913,7 +979,7 @@ environments.") ("python-ipykernel" ,python-ipykernel))) (inputs `(("guix" ,guix) - ("guile" ,guile-2.2))) + ("guile" ,guile-3.0))) (propagated-inputs `(("guile-json" ,guile-json-3) ("guile-simple-zmq" ,guile-simple-zmq) @@ -981,7 +1047,7 @@ Microsoft cabinet (.@dfn{CAB}) files.") ("glib" ,glib) ("libgsf" ,libgsf) ("libxml2" ,libxml2) - ("uuid" ,util-linux))) + ("uuid" ,util-linux "lib"))) (home-page "https://wiki.gnome.org/msitools") (synopsis "Windows Installer file manipulation tool") (description |