diff options
Diffstat (limited to 'gnu/packages/base.scm')
-rw-r--r-- | gnu/packages/base.scm | 346 |
1 files changed, 242 insertions, 104 deletions
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 715c4547ad..c66ea5a187 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1,16 +1,16 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> -;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2016, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016, 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> -;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> -;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> @@ -93,14 +93,14 @@ command-line arguments, multiple languages, and so on.") (define-public grep (package (name "grep") - (version "3.3") + (version "3.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/grep/grep-" version ".tar.xz")) (sha256 (base32 - "055mqp6vrd0brkygmygb2673qwz409a7kyp1mzbfy6cn94f58q5r")) + "1yy33kiwrxrwj2nxa4fg15bvmwyghqbs8qwkdvy5phm784f7brjq")) (patches (search-patches "grep-timing-sensitive-test.patch")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) ;some of the tests require it @@ -134,14 +134,14 @@ including, for example, recursive directory searching.") (define-public sed (package (name "sed") - (version "4.7") + (version "4.8") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/sed/sed-" version - ".tar.xz")) + ".tar.gz")) (sha256 (base32 - "0smxcx66vx29djzb542nxcynl7qnzxqa5032ibazi7x2s267d198")))) + "0alqagh0nliymz23kfjg6g9w3cr086k0sfni56gi8fhzqwa3xksk")))) (build-system gnu-build-system) (synopsis "Stream editor") (native-inputs @@ -171,7 +171,22 @@ implementation offers several extensions over the standard utility.") (build-system gnu-build-system) ;; Note: test suite requires ~1GiB of disk space. (arguments - `(#:phases (modify-phases %standard-phases + `(,@(if (hurd-target?) + '(#:make-flags + (list (string-append + "TESTSUITEFLAGS= -k '" + "!sparse" + ",!renamed dirs in incrementals" + ",!--exclude-tag option in incremental pass" + ",!incremental dumps with -C" + ",!incremental dumps of nested directories" + ",!incremental restores with -C" + ",!concatenated incremental archives (renames)" + ",!renamed directory containing subdirectories" + ",!renamed subdirectories" + "'"))) + '()) + #:phases (modify-phases %standard-phases (add-before 'build 'set-shell-file-name (lambda* (#:key inputs #:allow-other-keys) ;; Do not use "/bin/sh" to run programs. @@ -254,40 +269,29 @@ interactive means to merge two files.") (define-public findutils (package (name "findutils") - (version "4.6.0") + (version "4.7.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/findutils/findutils-" - version ".tar.gz")) + version ".tar.xz")) (sha256 (base32 - "178nn4dl7wbcw499czikirnkniwnx36argdnqgz4ik9i6zvwkm6y")) - (patches (search-patches - "findutils-gnulib-libio.patch" - "findutils-localstatedir.patch" - "findutils-makedev.patch" - "findutils-test-xargs.patch")) - (modules '((guix build utils))) - (snippet - '(begin - ;; The gnulib test-lock test is prone to writer starvation - ;; with our glibc@2.25, which prefers readers, so disable it. - ;; The gnulib commit b20e8afb0b2 should fix this once - ;; incorporated here. - (substitute* "tests/Makefile.in" - (("test-lock\\$\\(EXEEXT\\) ") "")) - #t)))) + "16kqz9yz98dasmj70jwf5py7jk558w96w0vgp3zf9xsqk3gzpzn5")) + (patches (search-patches "findutils-localstatedir.patch" + "findutils-test-rwlock-threads.patch")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list ;; Tell 'updatedb' to write to /var. - "--localstatedir=/var" - - ;; Work around cross-compilation failure. See - ;; <http://savannah.gnu.org/bugs/?27299#comment1>. - ,@(if (%current-target-system) - '("gl_cv_func_wcwidth_works=yes") - '())))) + "--localstatedir=/var") + #:phases (modify-phases %standard-phases + (add-before 'check 'adjust-test-shebangs + (lambda _ + (substitute* '("tests/xargs/verbose-quote.sh" + "tests/find/exec-plus-last-file.sh") + (("#!/bin/sh") + (string-append "#!" (which "sh")))) + #t))))) (synopsis "Operating on files matching given criteria") (description "Findutils supplies the basic file directory searching utilities of the @@ -302,23 +306,26 @@ used to apply commands with arbitrarily long arguments.") (define-public coreutils (package (name "coreutils") - (version "8.31") + (version "8.32") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/coreutils/coreutils-" version ".tar.xz")) (sha256 (base32 - "1zg9m79x1i2nifj4kb0waf9x3i5h6ydkypkjnbsb9rnwis8rqypz")))) + "1yjcrh5hw70c0yn8zw55pd6j51dj90anpq8mmg649ps9g3gdhn24")) + (patches (search-patches "coreutils-ls.patch")))) (build-system gnu-build-system) (inputs `(("acl" ,acl) ; TODO: add SELinux ("gmp" ,gmp) ;bignums in 'expr', yay! - ;; Drop the dependency on libcap when cross-compiling since it's - ;; not quite cross-compilable. - ,@(if (%current-target-system) - '() - `(("libcap" ,libcap))))) ;capability support is 'ls', etc. + ;; Do not use libcap when cross-compiling since it's not quite + ;; cross-compilable; and use it only for supported systems. + ,@(if (and (not (%current-target-system)) + (member (%current-system) + (package-supported-systems libcap))) + `(("libcap" ,libcap)) ;capability support in 'ls', etc. + '()))) (native-inputs ;; Perl is needed to run tests in native builds, and to run the bundled ;; copy of help2man. However, don't pass it when cross-compiling since @@ -330,6 +337,23 @@ used to apply commands with arbitrarily long arguments.") (outputs '("out" "debug")) (arguments `(#:parallel-build? #f ; help2man may be called too early + ,@(if (hurd-target?) + '(#:make-flags ; these tests fail deterministically + (list (string-append "XFAIL_TESTS=tests/misc/env-S.pl" + " tests/misc/kill.sh" + " tests/misc/nice.sh" + " tests/misc/shred-passes.sh" + " tests/split/fail.sh" + " tests/split/l-chunk.sh" + " tests/dd/stats.sh" + " test-fdutimensat" + " test-futimens" + " test-linkat" + " test-renameat" + " test-renameatu" + " test-tls" + " test-utimensat"))) + '()) #:phases (modify-phases %standard-phases (add-before 'build 'patch-shell-references (lambda _ @@ -341,16 +365,6 @@ used to apply commands with arbitrarily long arguments.") (("/bin/sh") (which "sh"))) (substitute* (find-files "tests" "\\.sh$") (("#!/bin/sh") (string-append "#!" (which "sh")))) - #t)) - (add-before 'check 'disable-broken-test - (lambda _ - ;; This test hits the 127 character shebang limit in the build - ;; environment due to the way "env -S" splits arguments into - ;; shebangs. Note that "env-S-script.sh" works around this - ;; specific issue, but "env-S.pl" is not adjusted for build - ;; environments with long prefixes (/tmp/guix-build-...). - (substitute* "Makefile" - (("^.*tests/misc/env-S.pl.*$") "")) #t))))) (synopsis "Core GNU utilities (file, text, shell)") (description @@ -370,34 +384,62 @@ standard.") (outputs '("out")) (inputs '()))) +(define-public coreutils-8.30 + ;; XXX: This version is kept just so we can run PRoot tests. + (hidden-package + (package + (inherit coreutils-minimal) + (version "8.30") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/coreutils/coreutils-" + version ".tar.xz")) + (sha256 + (base32 + "0mxhw43d4wpqmvg0l4znk1vm10fy92biyh90lzdnqjcic2lb6cg8")))) + (arguments + (substitute-keyword-arguments (package-arguments coreutils-minimal) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'check 'disable-broken-test + (lambda _ + ;; This test hits the 127 character shebang limit in the build + ;; environment due to the way "env -S" splits arguments into + ;; shebangs. Note that "env-S-script.sh" works around this + ;; specific issue, but "env-S.pl" is not adjusted for build + ;; environments with long prefixes (/tmp/guix-build-...). + (substitute* "Makefile" + (("^.*tests/misc/env-S.pl.*$") "")) + #t))))))))) + (define-public gnu-make (package (name "make") - (version "4.2.1") + (version "4.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/make/make-" version - ".tar.bz2")) + ".tar.gz")) (sha256 (base32 - "12f5zzyq2w56g95nni65hc0g5p7154033y2f3qmjvd016szn5qnn")) - (patches (search-patches "make-impure-dirs.patch" - "make-glibc-compat.patch")))) + "06cfqzpqsvdnsxbysl5p2fgdgxgl9y4p7scpnrfa8z2zgkjdspz0")) + (patches (search-patches "make-impure-dirs.patch")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) ; to detect Guile - (inputs `(("guile" ,guile-2.0))) + (inputs `(("guile" ,guile-3.0))) (outputs '("out" "debug")) (arguments - '(;; Work around faulty glob detection with glibc 2.27. See - ;; <https://lists.nongnu.org/archive/html/bug-make/2017-11/msg00027.html>. - #:configure-flags '("make_cv_sys_gnu_glob=yes") + `(,@(if (hurd-target?) + '(#:configure-flags '("CFLAGS=-D__alloca=alloca" + "ac_cv_func_posix_spawn=no")) + '()) #:phases (modify-phases %standard-phases (add-before 'build 'set-default-shell (lambda* (#:key inputs #:allow-other-keys) ;; Change the default shell from /bin/sh. (let ((bash (assoc-ref inputs "bash"))) - (substitute* "job.c" + (substitute* "src/job.c" (("default_shell =.*$") (format #f "default_shell = \"~a/bin/sh\";\n" bash))) @@ -413,17 +455,42 @@ change. GNU make offers many powerful extensions over the standard utility.") (license gpl3+) (home-page "https://www.gnu.org/software/make/"))) +(define-public gnu-make-4.2 + (package + (inherit gnu-make) + (version "4.2.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/make/make-" version + ".tar.bz2")) + (sha256 + (base32 + "12f5zzyq2w56g95nni65hc0g5p7154033y2f3qmjvd016szn5qnn")))) + (arguments + `(#:configure-flags '("CFLAGS=-D__alloca=alloca") + #:phases + (modify-phases %standard-phases + (add-before 'build 'set-default-shell + (lambda* (#:key inputs #:allow-other-keys) + ;; Change the default shell from /bin/sh. + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "job.c" + (("default_shell =.*$") + (format #f "default_shell = \"~a/bin/sh\";\n" + bash))) + #t)))))))) + (define-public binutils (package (name "binutils") - (version "2.32") + (version "2.34") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/binutils/binutils-" version ".tar.bz2")) (sha256 (base32 - "0b8767nyal1bc4cyzg5h9iis8kpkln1i3wkamig75cifj1fb2f6y")) + "1rin1f5c7wm4n3piky6xilcrpf2s0n3dd5vqq8irrxkcic3i1w49")) (patches (search-patches "binutils-loongson-workaround.patch")))) (build-system gnu-build-system) @@ -448,7 +515,17 @@ change. GNU make offers many powerful extensions over the standard utility.") ;; Make sure 'ar' and 'ranlib' produce archives in a ;; deterministic fashion. - "--enable-deterministic-archives"))) + "--enable-deterministic-archives") + + ;; XXX: binutils 2.34 was mistakenly released without generated manuals: + ;; <https://sourceware.org/bugzilla/show_bug.cgi?id=25491>. To avoid a + ;; circular dependency on texinfo, prevent the build system from creating + ;; the manuals by calling "true" instead of "makeinfo"... + #:make-flags '("MAKEINFO=true"))) + + ;; ...and "hide" this package so that users who install binutils get the + ;; version with documentation defined below. + (properties '((hidden? . #t))) (synopsis "Binary utilities: bfd gas gprof ld") (description @@ -461,6 +538,37 @@ included.") (license gpl3+) (home-page "https://www.gnu.org/software/binutils/"))) +;; Work around a problem with binutils 2.34 whereby manuals are missing from +;; the release tarball. Remove this and the related code above when updating. +(define-public binutils+documentation + (package/inherit + binutils + (native-inputs + `(("texinfo" ,texinfo))) + (arguments + (substitute-keyword-arguments (package-arguments binutils) + ((#:make-flags _ ''()) ''()))) + (properties '()))) + +;; FIXME: ath9k-firmware-htc-binutils.patch do not apply on 2.34 because of a +;; big refactoring of xtensa-modules.c (commit 567607c11fbf7105 upstream). +;; Keep this version around until the patch is updated. +(define-public binutils-2.33 + (package/inherit + binutils + (version "2.33.1") + (source (origin + (inherit (package-source binutils)) + (uri (string-append "mirror://gnu/binutils/binutils-" + version ".tar.bz2")) + (sha256 + (base32 + "1cmd0riv37bqy9mwbg6n3523qgr8b3bbm5kwj19sjrasl4yq9d0c")))) + (arguments + (substitute-keyword-arguments (package-arguments binutils) + ((#:make-flags _ ''()) ''()))) + (properties '()))) + (define-public binutils-gold (package (inherit binutils) @@ -491,7 +599,7 @@ included.") (define* (make-ld-wrapper name #:key (target (const #f)) binutils - (guile (canonical-package guile-2.2)) + (guile (canonical-package guile-3.0)) (bash (canonical-package bash)) (guile-for-build guile)) "Return a package called NAME that contains a wrapper for the 'ld' program @@ -529,7 +637,9 @@ wrapper for the cross-linker for that target, called 'TARGET-ld'." '(string-append bin "/ld"))) (go (string-append ld ".go"))) - (setvbuf (current-output-port) _IOLBF) + (setvbuf (current-output-port) + (cond-expand (guile-2.0 _IOLBF) + (else 'line))) (format #t "building ~s/bin/ld wrapper in ~s~%" (assoc-ref %build-inputs "binutils") out) @@ -569,13 +679,13 @@ the store.") ;; version 2.28, GNU/Hurd used a different glibc branch. (package (name "glibc") - (version "2.29") + (version "2.31") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz")) (sha256 (base32 - "0jzh58728flfh939a8k9pi1zdyalfzlxmwra7k0rzji5gvavivpk")) + "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")) (snippet ;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is ;; required on LFS distros to avoid loading the distro's libc.so @@ -587,14 +697,14 @@ the store.") #t)) (modules '((guix build utils))) (patches (search-patches "glibc-ldd-x86_64.patch" - "glibc-CVE-2019-7309.patch" - "glibc-CVE-2019-9169.patch" - "glibc-2.29-git-updates.patch" "glibc-hidden-visibility-ldconfig.patch" "glibc-versioned-locpath.patch" "glibc-allow-kernel-2.6.32.patch" "glibc-reinstate-prlimit64-fallback.patch" - "glibc-supported-locales.patch")))) + "glibc-supported-locales.patch" + "glibc-hurd-clock_t_centiseconds.patch" + "glibc-hurd-clock_gettime_monotonic.patch" + "glibc-hurd-signal-sa-siginfo.patch")))) (build-system gnu-build-system) ;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc @@ -821,6 +931,44 @@ with the Linux kernel.") ;; Below are old libc versions, which we use mostly to build locale data in ;; the old format (which the new libc cannot cope with.) +(define-public glibc-2.30 + (package + (inherit glibc) + (version "2.30") + (source (origin + (inherit (package-source glibc)) + (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz")) + (sha256 + (base32 + "1bxqpg91d02qnaz837a5kamm0f43pr1il4r9pknygywsar713i72")) + (patches (search-patches "glibc-ldd-x86_64.patch" + "glibc-CVE-2019-19126.patch" + "glibc-hidden-visibility-ldconfig.patch" + "glibc-versioned-locpath.patch" + "glibc-allow-kernel-2.6.32.patch" + "glibc-reinstate-prlimit64-fallback.patch" + "glibc-2.29-supported-locales.patch")))))) + +(define-public glibc-2.29 + (package + (inherit glibc) + (version "2.29") + (source (origin + (inherit (package-source glibc)) + (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz")) + (sha256 + (base32 + "0jzh58728flfh939a8k9pi1zdyalfzlxmwra7k0rzji5gvavivpk")) + (patches (search-patches "glibc-ldd-x86_64.patch" + "glibc-CVE-2019-7309.patch" + "glibc-CVE-2019-9169.patch" + "glibc-2.29-git-updates.patch" + "glibc-hidden-visibility-ldconfig.patch" + "glibc-versioned-locpath.patch" + "glibc-allow-kernel-2.6.32.patch" + "glibc-reinstate-prlimit64-fallback.patch" + "glibc-2.29-supported-locales.patch")))))) + (define-public glibc-2.28 (package (inherit glibc) @@ -980,21 +1128,8 @@ with the Linux kernel.") (package-name libc) "-" (package-version libc))) (arguments - (substitute-keyword-arguments - (ensure-keyword-arguments (package-arguments base-gcc) - '(#:implicit-inputs? #f)) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'configure 'treat-glibc-as-system-header - (lambda _ - (let ((libc (assoc-ref %build-inputs "libc"))) - ;; GCCs build processes requires that the libc - ;; we're building against is on the system header - ;; search path. - (for-each (lambda (var) - (setenv var (string-append libc "/include"))) - '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) - #t))))))) + (ensure-keyword-arguments (package-arguments base-gcc) + '(#:implicit-inputs? #f))) (native-inputs `(,@(package-native-inputs base-gcc) ,@(append (fold alist-delete (%final-inputs) '("libc" "libc:static"))) @@ -1134,18 +1269,12 @@ test environments.") (make-glibc-utf8-locales glibc)) ;; Packages provided to ease use of binaries linked against the previous libc. -(define-public glibc-locales-2.28 - (package (inherit (make-glibc-locales glibc-2.28)) - (name "glibc-locales-2.28"))) -(define-public glibc-utf8-locales-2.28 - (package (inherit (make-glibc-utf8-locales glibc-2.28)) - (name "glibc-utf8-locales-2.28"))) - -;; These should no longer be needed. -(define-public glibc-utf8-locales-2.27 - (deprecated-package "glibc-utf8-locales-2.27" glibc-utf8-locales-2.28)) -(define-public glibc-locales-2.27 - (deprecated-package "glibc-locales-2.27" glibc-locales-2.28)) +(define-public glibc-locales-2.29 + (package (inherit (make-glibc-locales glibc-2.29)) + (name "glibc-locales-2.29"))) +(define-public glibc-utf8-locales-2.29 + (package (inherit (make-glibc-utf8-locales glibc-2.29)) + (name "glibc-utf8-locales-2.29"))) (define-public which (package @@ -1173,6 +1302,15 @@ command.") (outputs '("out")) (propagated-inputs `(("gnumach-headers" ,gnumach-headers) ("hurd-headers" ,hurd-headers))) + (native-inputs + `(("mig" ,(if (%current-target-system) + ;; XXX: When targeting i586-pc-gnu, we need a 32-bit MiG, + ;; hence this hack. + (package + (inherit mig) + (arguments `(#:system "i686-linux"))) + mig)) + ,@(package-native-inputs glibc))) (arguments (substitute-keyword-arguments (package-arguments glibc) ;; We just pass the flags really needed to build the headers. @@ -1275,7 +1413,7 @@ and daylight-saving rules.") (hidden-package (package (inherit tzdata) - (version "2019b") + (version "2019c") (source (origin (method url-fetch) (uri (string-append @@ -1283,7 +1421,7 @@ and daylight-saving rules.") version ".tar.gz")) (sha256 (base32 - "0r0clnlslwm15m1c61dinf1fi9ffgl6aipng7i7yryfwj0n0kn85")))) + "0z7w1yv37cfk8yhix2cillam091vgp1j4g8fv84261q9mdnq1ivr")))) (inputs `(("tzcode" ,(origin (method url-fetch) @@ -1292,7 +1430,7 @@ and daylight-saving rules.") version ".tar.gz")) (sha256 (base32 - "0vbmswvv3li25s31shyllq5v24449lxnrki9hr043nipjd09sirf"))))))))) + "1m3y2rnf1nggxxhxplab5zdd5whvar3ijyrv7lifvm82irkd7szn"))))))))) (define-public libiconv (package |