diff options
Diffstat (limited to 'gnu/packages/package-management.scm')
-rw-r--r-- | gnu/packages/package-management.scm | 254 |
1 files changed, 180 insertions, 74 deletions
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 44fcb514b7..3fc6fc404a 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -11,6 +11,9 @@ ;;; 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. ;;; @@ -35,8 +38,10 @@ #: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) #:use-module (gnu packages bootstrap) ;for 'bootstrap-guile-origin' #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -54,10 +59,13 @@ #: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) #:use-module (gnu packages man) #:use-module (gnu packages nettle) + #:use-module (gnu packages networking) #:use-module (gnu packages nss) #:use-module (gnu packages patchutils) #:use-module (gnu packages perl) @@ -110,8 +118,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 "bdc801e1cfa8e436890da5bd755dd7759cb0f748") + (revision 4)) (package (name "guix") @@ -127,7 +135,7 @@ (commit commit))) (sha256 (base32 - "1lk0h9zgry7m78nv70gxwb57pw1d5yzay477gxsc43v1aa7zg8sp")) + "1wf30g45kh4nmcapd4vrcl6m2wjzly7v7dv8z0r584770i2yh836")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -147,7 +155,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) @@ -178,10 +187,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. @@ -205,20 +229,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. @@ -241,11 +266,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")) @@ -281,9 +309,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. @@ -303,7 +346,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) @@ -315,6 +358,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))) @@ -324,7 +371,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) @@ -356,7 +403,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) @@ -401,20 +448,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 @@ -480,18 +542,21 @@ out) and returning a package that uses that as its 'source'." (define-public nix (package (name "nix") - (version "2.0.4") + (version "2.3.4") (source (origin (method url-fetch) (uri (string-append "http://nixos.org/releases/nix/nix-" version "/nix-" version ".tar.xz")) (sha256 (base32 - "0ss9svxlh1pvrdmnqjvjyqjmbqmrdbyfarvbb14i9d4bggzl0r8n")))) + "03fhbb8088sgz3709zd9n9rydavar79w87l9n4q9iimcw06nlqhw")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("curl" ,curl) + (inputs `(("boost" ,boost) + ("brotli" ,brotli) ("bzip2" ,bzip2) + ("curl" ,curl) + ("editline" ,editline) ("libgc" ,libgc) ("libseccomp" ,libseccomp) ("libsodium" ,libsodium) @@ -819,12 +884,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 @@ -849,6 +914,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 @@ -907,7 +980,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) @@ -975,7 +1048,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 @@ -1041,7 +1114,7 @@ the boot loader configuration.") (define-public flatpak (package (name "flatpak") - (version "1.4.3") + (version "1.6.3") (source (origin (method url-fetch) @@ -1049,45 +1122,78 @@ the boot loader configuration.") version "/flatpak-" version ".tar.xz")) (sha256 (base32 - "11bfxmv8pxlb5x0lb2rsl45615fzfvq5r6wldf0l6ab2ngryd7i7")))) + "17s8nqdxd4xdy7ag9bw06adxccha78jmlsa3zpqnl3qh92pg0hji")))) ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to ;; find the TLS backend in glib-networking. (build-system glib-or-gtk-build-system) (arguments - '(#:tests? #f ;; Tests fail due to trying to create files where it can't. - #:configure-flags (list - "--enable-documentation=no" ;; FIXME - "--enable-system-helper=no" - "--localstatedir=/var" - (string-append "--with-system-bubblewrap=" - (assoc-ref %build-inputs "bubblewrap") - "/bin/bwrap")))) - (native-inputs `(("bison" ,bison) - ("gettext" ,gettext-minimal) - ("glib:bin" ,glib "bin") ; for glib-mkenums + gdbus-codegen - ("gobject-introspection" ,gobject-introspection) - ("libcap" ,libcap) - ("pkg-config" ,pkg-config))) + '(#:configure-flags + (list + "--enable-documentation=no" ;; FIXME + "--enable-system-helper=no" + "--localstatedir=/var" + (string-append "--with-system-bubblewrap=" + (assoc-ref %build-inputs "bubblewrap") + "/bin/bwrap") + "--with-system-dbus-proxy") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda* (#:key inputs #:allow-other-keys) + (copy-recursively + (string-append (assoc-ref inputs "glibc-utf8-locales") + "/lib/locale/") "/tmp/locale") + (for-each make-file-writable (find-files "/tmp")) + (substitute* "tests/make-test-runtime.sh" + (("cp `which.*") "echo guix\n") + (("cp -r /usr/lib/locale/C\\.\\*") + (string-append "mkdir ${DIR}/usr/lib/locale/en_US; \ +cp -r /tmp/locale/*/en_US.*"))) + (substitute* "tests/libtest.sh" + (("/bin/kill") (which "kill")) + (("/usr/bin/python3") (which "python3"))) + #t)) + ;; Many tests fail for unknown reasons, so we just run a few basic + ;; tests + (replace 'check + (lambda _ + (setenv "HOME" "/tmp") + (invoke "make" "check" + "TESTS=tests/test-basic.sh tests/test-config.sh testcommon")))))) + (native-inputs + `(("bison" ,bison) + ("dbus" ,dbus) ; for dbus-daemon + ("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin") ; for glib-mkenums + gdbus-codegen + ("glibc-utf8-locales" ,glibc-utf8-locales) + ("gobject-introspection" ,gobject-introspection) + ("libcap" ,libcap) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("socat" ,socat) + ("which" ,which))) (propagated-inputs `(("glib-networking" ,glib-networking) ("gnupg" ,gnupg) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas))) - (inputs `(("appstream-glib" ,appstream-glib) - ("bubblewrap" ,bubblewrap) - ("dconf" ,dconf) - ("fuse" ,fuse) - ("gdk-pixbuf" ,gdk-pixbuf) - ("gpgme" ,gpgme) - ("json-glib" ,json-glib) - ("libarchive" ,libarchive) - ("libostree" ,libostree) - ("libseccomp" ,libseccomp) - ("libsoup" ,libsoup) - ("libxau" ,libxau) - ("libxml2" ,libxml2) - ("util-linux" ,util-linux))) + (inputs + `(("appstream-glib" ,appstream-glib) + ("bubblewrap" ,bubblewrap) + ("dconf" ,dconf) + ("fuse" ,fuse) + ("gdk-pixbuf" ,gdk-pixbuf) + ("gpgme" ,gpgme) + ("json-glib" ,json-glib) + ("libarchive" ,libarchive) + ("libostree" ,libostree) + ("libseccomp" ,libseccomp) + ("libsoup" ,libsoup) + ("libxau" ,libxau) + ("libxml2" ,libxml2) + ("util-linux" ,util-linux) + ("xdg-dbus-proxy" ,xdg-dbus-proxy))) (home-page "https://flatpak.org") (synopsis "System for building, distributing, and running sandboxed desktop applications") |