gnu: r-fields: Update to 11.4.
[jackhill/guix/guix.git] / gnu / packages / base.scm
index 196106f..c83775d 100644 (file)
@@ -14,6 +14,7 @@
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -170,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.
@@ -306,8 +322,8 @@ used to apply commands with arbitrarily long arguments.")
              ;; 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))
-                        (not (member (%current-system)
-                                     (package-supported-systems libcap))))
+                        (member (%current-system)
+                                (package-supported-systems libcap)))
              `(("libcap" ,libcap))  ;capability support in 'ls', etc.
              '())))
    (native-inputs
@@ -321,6 +337,21 @@ 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/pwd-long.sh"
+                                   " tests/split/fail.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 _
@@ -332,13 +363,22 @@ used to apply commands with arbitrarily long arguments.")
                        (("/bin/sh") (which "sh")))
                      (substitute* (find-files "tests" "\\.sh$")
                        (("#!/bin/sh") (string-append "#!" (which "sh"))))
-                     #t)))))
+                     #t))
+                 ,@(if (hurd-target?)
+                       `((add-after 'unpack 'remove-tests
+                           (lambda _
+                             (substitute* "Makefile.in"
+                               ;; this test hangs
+                               (("^ *tests/misc/timeout-group.sh.*") ""))
+                             #t)))
+                       '()))))
    (synopsis "Core GNU utilities (file, text, shell)")
    (description
-    "GNU Coreutils includes all of the basic command-line tools that are
-expected in a POSIX system.  These provide the basic file, shell and text
-manipulation functions of the GNU system.  Most of these tools offer extended
-functionality beyond that which is outlined in the POSIX standard.")
+    "GNU Coreutils package includes all of the basic command-line tools that
+are expected in a POSIX system, excluding shell.  This package is the union of
+the GNU fileutils, sh-utils, and textutils packages.  Most of these tools
+offer extended functionality beyond that which is outlined in the POSIX
+standard.")
    (license gpl3+)
    (home-page "https://www.gnu.org/software/coreutils/")))
 
@@ -350,6 +390,34 @@ functionality beyond that which is outlined in the POSIX 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")
@@ -367,7 +435,11 @@ functionality beyond that which is outlined in the POSIX standard.")
    (inputs `(("guile" ,guile-3.0)))
    (outputs '("out" "debug"))
    (arguments
-    '(#:phases
+    `(,@(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)
@@ -389,6 +461,31 @@ 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")
@@ -463,8 +560,8 @@ included.")
 ;; 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
+  (package
+   (inherit binutils)
    (version "2.33.1")
    (source (origin
              (inherit (package-source binutils))
@@ -479,8 +576,7 @@ included.")
    (properties '())))
 
 (define-public binutils-gold
-  (package
-    (inherit binutils)
+  (package/inherit binutils+documentation
     (name "binutils-gold")
     (arguments
      `(#:phases
@@ -503,12 +599,12 @@ included.")
      (native-inputs
      `(("bc" ,bc)))
      (inputs
-     `(("gcc:lib" ,gcc "lib")))))
+     `(("gcc:lib" ,(canonical-package gcc) "lib")))))
 
 (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
@@ -610,7 +706,10 @@ the store.")
                                      "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
@@ -915,118 +1014,6 @@ with the Linux kernel.")
                                        "glibc-CVE-2018-11237.patch"))))
     (properties `((lint-hidden-cve . ("CVE-2017-18269")))))) ; glibc-2.27-git-fixes
 
-(define-public glibc-2.26
-  (package
-    (inherit glibc)
-    ;; This version number corresponds to the output of `git describe` and the
-    ;; archive can be generated by checking out the commit ID and running:
-    ;;  git archive --prefix=$(git describe)/ HEAD | xz > $(git describe).tar.xz
-    ;; See <https://bugs.gnu.org/29406> for why this was necessary.
-    (version "2.26.105-g0890d5379c")
-    (source (origin
-              (inherit (package-source glibc))
-              (uri (string-append "https://alpha.gnu.org/gnu/guix/mirror/"
-                                  "glibc-" (version-major+minor version) "-"
-                                  (caddr (string-split version #\.)) ".tar.xz"))
-              (sha256
-               (base32
-                "1jck0c1i248sn02rvsfjykk77qncma34bjq89dyy2irwm50d7s3g"))
-              (patches (search-patches "glibc-ldd-x86_64.patch"
-                                       "glibc-versioned-locpath.patch"
-                                       "glibc-allow-kernel-2.6.32.patch"))))))
-
-(define-public glibc-2.25
-  (package
-    (inherit glibc)
-    (version "2.25")
-    (source (origin
-              (inherit (package-source glibc))
-              (uri (string-append "mirror://gnu/glibc/glibc-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "1813dzkgw6v8q8q1m4v96yfis7vjqc9pslqib6j9mrwh6fxxjyq6"))
-              (patches (search-patches "glibc-ldd-x86_64.patch"
-                                       "glibc-versioned-locpath.patch"
-                                       "glibc-vectorized-strcspn-guards.patch"
-                                       "glibc-CVE-2017-1000366-pt1.patch"
-                                       "glibc-CVE-2017-1000366-pt2.patch"
-                                       "glibc-CVE-2017-1000366-pt3.patch"))))))
-
-(define-public glibc-2.24
-  (package
-    (inherit glibc)
-    (version "2.24")
-    (source (origin
-              (inherit (package-source glibc))
-              (uri (string-append "mirror://gnu/glibc/glibc-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "1lxmprg9gm73gvafxd503x70z32phwjzcy74i0adfi6ixzla7m4r"))
-              (patches (search-patches "glibc-ldd-x86_64.patch"
-                                       "glibc-versioned-locpath.patch"
-                                       "glibc-vectorized-strcspn-guards.patch"
-                                       "glibc-CVE-2015-5180.patch"
-                                       "glibc-CVE-2017-1000366-pt1.patch"
-                                       "glibc-CVE-2017-1000366-pt2.patch"
-                                       "glibc-CVE-2017-1000366-pt3.patch"))))))
-
-(define-public glibc-2.23
-  (package
-    (inherit glibc)
-    (version "2.23")
-    (source (origin
-              (inherit (package-source glibc))
-              (uri (string-append "mirror://gnu/glibc/glibc-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "1s8krs3y2n6pzav7ic59dz41alqalphv7vww4138ag30wh0fpvwl"))
-              (patches (search-patches "glibc-ldd-x86_64.patch"
-                                       "glibc-versioned-locpath.patch"
-                                       "glibc-vectorized-strcspn-guards.patch"
-                                       "glibc-CVE-2015-5180.patch"
-                                       "glibc-CVE-2016-3075.patch"
-                                       "glibc-CVE-2016-3706.patch"
-                                       "glibc-CVE-2016-4429.patch"
-                                       "glibc-CVE-2017-1000366-pt1.patch"
-                                       "glibc-CVE-2017-1000366-pt2.patch"
-                                       "glibc-CVE-2017-1000366-pt3.patch"))))))
-
-(define-public glibc-2.22
-  (package
-    (inherit glibc)
-    (version "2.22")
-    (source (origin
-              (inherit (package-source glibc))
-              (uri (string-append "mirror://gnu/glibc/glibc-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "0j49682pm2nh4qbdw35bas82p1pgfnz4d2l7iwfyzvrvj0318wzb"))
-              (patches (search-patches "glibc-ldd-x86_64.patch"
-                                       "glibc-o-largefile.patch"
-                                       "glibc-vectorized-strcspn-guards.patch"
-                                       "glibc-CVE-2015-5180.patch"
-                                       "glibc-CVE-2015-7547.patch"
-                                       "glibc-CVE-2016-3075.patch"
-                                       "glibc-CVE-2016-3706.patch"
-                                       "glibc-CVE-2016-4429.patch"
-                                       "glibc-CVE-2017-1000366-pt1.patch"
-                                       "glibc-CVE-2017-1000366-pt2.patch"
-                                       "glibc-CVE-2017-1000366-pt3.patch"))))
-    (arguments
-      (substitute-keyword-arguments (package-arguments glibc)
-        ((#:phases phases)
-         `(modify-phases ,phases
-            (add-before 'configure 'fix-pwd
-              (lambda _
-                ;; Use `pwd' instead of `/bin/pwd' for glibc-2.22.
-                (substitute* "configure"
-                  (("/bin/pwd") "pwd"))
-                #t))))))))
-
 (define-public (make-gcc-libc base-gcc libc)
   "Return a GCC that targets LIBC."
   (package (inherit base-gcc)
@@ -1175,18 +1162,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
@@ -1214,6 +1195,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.
@@ -1239,7 +1229,7 @@ command.")
 (define-public tzdata
   (package
     (name "tzdata")
-    (version "2019c")
+    (version "2020a")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1247,7 +1237,7 @@ command.")
                    version ".tar.gz"))
              (sha256
               (base32
-               "0z7w1yv37cfk8yhix2cillam091vgp1j4g8fv84261q9mdnq1ivr"))))
+               "18lrp0zh8m931jjlrv8lvjas4ka5dfkzdbwnbw5lwd2dlbn62wal"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
@@ -1297,7 +1287,7 @@ command.")
                                 version ".tar.gz"))
                           (sha256
                            (base32
-                            "1m3y2rnf1nggxxhxplab5zdd5whvar3ijyrv7lifvm82irkd7szn"))))))
+                            "0sfnlqw1p93r7klny69rwr94fh22mz632h52phgzfgg01q9gfakx"))))))
     (home-page "https://www.iana.org/time-zones")
     (synopsis "Database of current and historical time zones")
     (description "The Time Zone Database (often called tz or zoneinfo)
@@ -1314,7 +1304,26 @@ and daylight-saving rules.")
 ;;; package.
 (define-public tzdata-for-tests
   (hidden-package
-   (package/inherit tzdata)))
+   (package
+     (inherit tzdata)
+     (version "2019c")
+     (source (origin
+               (method url-fetch)
+               (uri (string-append
+                     "https://data.iana.org/time-zones/releases/tzdata"
+                     version ".tar.gz"))
+               (sha256
+                (base32
+                 "0z7w1yv37cfk8yhix2cillam091vgp1j4g8fv84261q9mdnq1ivr"))))
+     (inputs
+      `(("tzcode" ,(origin
+                     (method url-fetch)
+                     (uri (string-append
+                           "https://data.iana.org/time-zones/releases/tzcode"
+                           version ".tar.gz"))
+                     (sha256
+                      (base32
+                       "1m3y2rnf1nggxxhxplab5zdd5whvar3ijyrv7lifvm82irkd7szn")))))))))
 
 (define-public libiconv
   (package