gnu: r-fields: Update to 11.4.
[jackhill/guix/guix.git] / gnu / packages / base.scm
index 715c454..c83775d 100644 (file)
@@ -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,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 _
@@ -342,16 +364,14 @@ used to apply commands with arbitrarily long arguments.")
                      (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)))))
+                 ,@(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 package includes all of the basic command-line tools that
@@ -370,34 +390,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 +461,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 +521,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,9 +544,39 @@ included.")
    (license gpl3+)
    (home-page "https://www.gnu.org/software/binutils/")))
 
-(define-public binutils-gold
+;; 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)
+   (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+documentation
     (name "binutils-gold")
     (arguments
      `(#:phases
@@ -486,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
@@ -529,7 +642,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 +684,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 +702,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,157 +936,83 @@ 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.28
+(define-public glibc-2.30
   (package
     (inherit glibc)
-    (version "2.28")
+    (version "2.30")
     (source (origin
               (inherit (package-source glibc))
               (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
               (sha256
                (base32
-                "10iha5ynvdj5m62vgpgqbq4cwvc2yhyl2w9yyyjgfxmdmx8h145i"))
+                "1bxqpg91d02qnaz837a5kamm0f43pr1il4r9pknygywsar713i72"))
               (patches (search-patches "glibc-ldd-x86_64.patch"
-                                       "glibc-2.28-git-fixes.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-hurd-magic-pid.patch"
-                                       "glibc-2.28-supported-locales.patch"))))))
+                                       "glibc-2.29-supported-locales.patch"))))))
 
-(define-public glibc-2.27
+(define-public glibc-2.29
   (package
     (inherit glibc)
-    (version "2.27")
+    (version "2.29")
     (source (origin
               (inherit (package-source glibc))
               (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
               (sha256
                (base32
-                "0wpwq7gsm7sd6ysidv0z575ckqdg13cr2njyfgrbgh4f65adwwji"))
+                "0jzh58728flfh939a8k9pi1zdyalfzlxmwra7k0rzji5gvavivpk"))
               (patches (search-patches "glibc-ldd-x86_64.patch"
-                                       "glibc-2.27-git-fixes.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.27-supported-locales.patch"
-                                       "glibc-CVE-2018-11236.patch"
-                                       "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"))))))
+                                       "glibc-2.29-supported-locales.patch"))))))
 
-(define-public glibc-2.24
+(define-public glibc-2.28
   (package
     (inherit glibc)
-    (version "2.24")
+    (version "2.28")
     (source (origin
               (inherit (package-source glibc))
-              (uri (string-append "mirror://gnu/glibc/glibc-"
-                                  version ".tar.xz"))
+              (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
               (sha256
                (base32
-                "1lxmprg9gm73gvafxd503x70z32phwjzcy74i0adfi6ixzla7m4r"))
+                "10iha5ynvdj5m62vgpgqbq4cwvc2yhyl2w9yyyjgfxmdmx8h145i"))
               (patches (search-patches "glibc-ldd-x86_64.patch"
+                                       "glibc-2.28-git-fixes.patch"
+                                       "glibc-hidden-visibility-ldconfig.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"))))))
+                                       "glibc-allow-kernel-2.6.32.patch"
+                                       "glibc-reinstate-prlimit64-fallback.patch"
+                                       "glibc-hurd-magic-pid.patch"
+                                       "glibc-2.28-supported-locales.patch"))))))
 
-(define-public glibc-2.23
+(define-public glibc-2.27
   (package
     (inherit glibc)
-    (version "2.23")
+    (version "2.27")
     (source (origin
               (inherit (package-source glibc))
-              (uri (string-append "mirror://gnu/glibc/glibc-"
-                                  version ".tar.xz"))
+              (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
               (sha256
                (base32
-                "1s8krs3y2n6pzav7ic59dz41alqalphv7vww4138ag30wh0fpvwl"))
+                "0wpwq7gsm7sd6ysidv0z575ckqdg13cr2njyfgrbgh4f65adwwji"))
               (patches (search-patches "glibc-ldd-x86_64.patch"
+                                       "glibc-2.27-git-fixes.patch"
+                                       "glibc-hidden-visibility-ldconfig.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))))))))
+                                       "glibc-allow-kernel-2.6.32.patch"
+                                       "glibc-reinstate-prlimit64-fallback.patch"
+                                       "glibc-2.27-supported-locales.patch"
+                                       "glibc-CVE-2018-11236.patch"
+                                       "glibc-CVE-2018-11237.patch"))))
+    (properties `((lint-hidden-cve . ("CVE-2017-18269")))))) ; glibc-2.27-git-fixes
 
 (define-public (make-gcc-libc base-gcc libc)
   "Return a GCC that targets LIBC."
@@ -980,21 +1021,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 +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
@@ -1173,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.
@@ -1275,7 +1306,7 @@ and daylight-saving rules.")
   (hidden-package
    (package
      (inherit tzdata)
-     (version "2019b")
+     (version "2019c")
      (source (origin
                (method url-fetch)
                (uri (string-append
@@ -1283,7 +1314,7 @@ and daylight-saving rules.")
                      version ".tar.gz"))
                (sha256
                 (base32
-                 "0r0clnlslwm15m1c61dinf1fi9ffgl6aipng7i7yryfwj0n0kn85"))))
+                 "0z7w1yv37cfk8yhix2cillam091vgp1j4g8fv84261q9mdnq1ivr"))))
      (inputs
       `(("tzcode" ,(origin
                      (method url-fetch)
@@ -1292,7 +1323,7 @@ and daylight-saving rules.")
                            version ".tar.gz"))
                      (sha256
                       (base32
-                       "0vbmswvv3li25s31shyllq5v24449lxnrki9hr043nipjd09sirf")))))))))
+                       "1m3y2rnf1nggxxhxplab5zdd5whvar3ijyrv7lifvm82irkd7szn")))))))))
 
 (define-public libiconv
   (package