summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk16
-rw-r--r--gnu/packages/acl.scm20
-rw-r--r--gnu/packages/admin.scm50
-rw-r--r--gnu/packages/algebra.scm36
-rw-r--r--gnu/packages/attr.scm21
-rw-r--r--gnu/packages/audio.scm41
-rw-r--r--gnu/packages/autotools.scm79
-rw-r--r--gnu/packages/backup.scm6
-rw-r--r--gnu/packages/base.scm187
-rw-r--r--gnu/packages/bash.scm18
-rw-r--r--gnu/packages/bdw-gc.scm12
-rw-r--r--gnu/packages/bioinformatics.scm99
-rw-r--r--gnu/packages/boost.scm50
-rw-r--r--gnu/packages/bootstrap.scm46
-rw-r--r--gnu/packages/cdrom.scm28
-rw-r--r--gnu/packages/check.scm10
-rw-r--r--gnu/packages/chez.scm6
-rw-r--r--gnu/packages/ci.scm5
-rw-r--r--gnu/packages/code.scm3
-rw-r--r--gnu/packages/commencement.scm144
-rw-r--r--gnu/packages/compression.scm109
-rw-r--r--gnu/packages/compton.scm2
-rw-r--r--gnu/packages/cross-base.scm86
-rw-r--r--gnu/packages/crypto.scm24
-rw-r--r--gnu/packages/cups.scm35
-rw-r--r--gnu/packages/curl.scm24
-rw-r--r--gnu/packages/databases.scm32
-rw-r--r--gnu/packages/debug.scm5
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/docbook.scm26
-rw-r--r--gnu/packages/documentation.scm5
-rw-r--r--gnu/packages/elf.scm16
-rw-r--r--gnu/packages/emacs.scm52
-rw-r--r--gnu/packages/emulators.scm15
-rw-r--r--gnu/packages/engineering.scm13
-rw-r--r--gnu/packages/enlightenment.scm8
-rw-r--r--gnu/packages/fonts.scm3
-rw-r--r--gnu/packages/fontutils.scm21
-rw-r--r--gnu/packages/fpga.scm6
-rw-r--r--gnu/packages/freedesktop.scm10
-rw-r--r--gnu/packages/ftp.scm10
-rw-r--r--gnu/packages/game-development.scm7
-rw-r--r--gnu/packages/games.scm87
-rw-r--r--gnu/packages/gawk.scm9
-rw-r--r--gnu/packages/gcc.scm298
-rw-r--r--gnu/packages/geo.scm3
-rw-r--r--gnu/packages/ghostscript.scm12
-rw-r--r--gnu/packages/gl.scm19
-rw-r--r--gnu/packages/glib.scm62
-rw-r--r--gnu/packages/gnome.scm26
-rw-r--r--gnu/packages/gnunet.scm5
-rw-r--r--gnu/packages/gnupg.scm4
-rw-r--r--gnu/packages/gnuzilla.scm12
-rw-r--r--gnu/packages/graphics.scm3
-rw-r--r--gnu/packages/graphviz.scm13
-rw-r--r--gnu/packages/gtk.scm44
-rw-r--r--gnu/packages/guile.scm118
-rw-r--r--gnu/packages/haskell.scm8
-rw-r--r--gnu/packages/image-processing.scm2
-rw-r--r--gnu/packages/image.scm22
-rw-r--r--gnu/packages/indent.scm20
-rw-r--r--gnu/packages/irc.scm3
-rw-r--r--gnu/packages/java.scm27
-rw-r--r--gnu/packages/kerberos.scm8
-rw-r--r--gnu/packages/kodi.scm6
-rw-r--r--gnu/packages/less.scm4
-rw-r--r--gnu/packages/libbsd.scm4
-rw-r--r--gnu/packages/libevent.scm6
-rw-r--r--gnu/packages/libffi.scm39
-rw-r--r--gnu/packages/libreoffice.scm8
-rw-r--r--gnu/packages/libsigsegv.scm4
-rw-r--r--gnu/packages/libunistring.scm6
-rw-r--r--gnu/packages/libusb.scm6
-rw-r--r--gnu/packages/linux.scm205
-rw-r--r--gnu/packages/lisp.scm36
-rw-r--r--gnu/packages/lxde.scm3
-rw-r--r--gnu/packages/m4.scm26
-rw-r--r--gnu/packages/machine-learning.scm3
-rw-r--r--gnu/packages/mail.scm8
-rw-r--r--gnu/packages/make-bootstrap.scm165
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/mate.scm19
-rw-r--r--gnu/packages/maths.scm61
-rw-r--r--gnu/packages/messaging.scm23
-rw-r--r--gnu/packages/microcom.scm6
-rw-r--r--gnu/packages/monitoring.scm8
-rw-r--r--gnu/packages/mp3.scm12
-rw-r--r--gnu/packages/multiprecision.scm9
-rw-r--r--gnu/packages/music.scm61
-rw-r--r--gnu/packages/ncurses.scm57
-rw-r--r--gnu/packages/netpbm.scm3
-rw-r--r--gnu/packages/networking.scm10
-rw-r--r--gnu/packages/node.scm3
-rw-r--r--gnu/packages/nvi.scm3
-rw-r--r--gnu/packages/ocaml.scm30
-rw-r--r--gnu/packages/onc-rpc.scm8
-rw-r--r--gnu/packages/package-management.scm2
-rw-r--r--gnu/packages/patches/binutils-ld-new-dtags.patch16
-rw-r--r--gnu/packages/patches/glib-respect-datadir.patch21
-rw-r--r--gnu/packages/patches/graphite2-ffloat-store.patch34
-rw-r--r--gnu/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch53
-rw-r--r--gnu/packages/patches/lcms-CVE-2016-10165.patch36
-rw-r--r--gnu/packages/patches/libtasn1-CVE-2017-10790.patch63
-rw-r--r--gnu/packages/patches/libtasn1-CVE-2018-6003.patch73
-rw-r--r--gnu/packages/patches/libvorbis-CVE-2017-14632.patch63
-rw-r--r--gnu/packages/patches/libvorbis-CVE-2017-14633.patch43
-rw-r--r--gnu/packages/patches/libxcb-python-3.5-compat.patch64
-rw-r--r--gnu/packages/patches/patch-hurd-path-max.patch15
-rw-r--r--gnu/packages/patches/pcre2-CVE-2017-7186.patch68
-rw-r--r--gnu/packages/patches/pcre2-CVE-2017-8786.patch155
-rw-r--r--gnu/packages/patches/python-3-search-paths.patch13
-rw-r--r--gnu/packages/patches/tar-CVE-2016-6321.patch51
-rw-r--r--gnu/packages/patches/tar-remove-wholesparse-check.patch68
-rw-r--r--gnu/packages/patches/xcb-proto-python3-print.patch75
-rw-r--r--gnu/packages/patches/xcb-proto-python3-whitespace.patch217
-rw-r--r--gnu/packages/pcre.scm7
-rw-r--r--gnu/packages/pdf.scm15
-rw-r--r--gnu/packages/perl.scm10
-rw-r--r--gnu/packages/php.scm3
-rw-r--r--gnu/packages/plotutils.scm19
-rw-r--r--gnu/packages/pretty-print.scm8
-rw-r--r--gnu/packages/profiling.scm6
-rw-r--r--gnu/packages/pulseaudio.scm21
-rw-r--r--gnu/packages/python-crypto.scm3
-rw-r--r--gnu/packages/python.scm85
-rw-r--r--gnu/packages/qt.scm31
-rw-r--r--gnu/packages/ratpoison.scm5
-rw-r--r--gnu/packages/robotics.scm10
-rw-r--r--gnu/packages/sawfish.scm20
-rw-r--r--gnu/packages/scanner.scm8
-rw-r--r--gnu/packages/scheme.scm13
-rw-r--r--gnu/packages/scribus.scm6
-rw-r--r--gnu/packages/sdl.scm14
-rw-r--r--gnu/packages/serialization.scm8
-rw-r--r--gnu/packages/shells.scm9
-rw-r--r--gnu/packages/slang.scm3
-rw-r--r--gnu/packages/smalltalk.scm3
-rw-r--r--gnu/packages/ssh.scm3
-rw-r--r--gnu/packages/statistics.scm6
-rw-r--r--gnu/packages/storage.scm2
-rw-r--r--gnu/packages/sync.scm3
-rw-r--r--gnu/packages/syncthing.scm5
-rw-r--r--gnu/packages/tbb.scm8
-rw-r--r--gnu/packages/tcl.scm5
-rw-r--r--gnu/packages/terminals.scm45
-rw-r--r--gnu/packages/texinfo.scm4
-rw-r--r--gnu/packages/text-editors.scm12
-rw-r--r--gnu/packages/textutils.scm7
-rw-r--r--gnu/packages/tls.scm111
-rw-r--r--gnu/packages/unrtf.scm2
-rw-r--r--gnu/packages/version-control.scm18
-rw-r--r--gnu/packages/video.scm57
-rw-r--r--gnu/packages/vpn.scm3
-rw-r--r--gnu/packages/web.scm54
-rw-r--r--gnu/packages/wget.scm4
-rw-r--r--gnu/packages/wm.scm30
-rw-r--r--gnu/packages/wxwidgets.scm3
-rw-r--r--gnu/packages/xdisorg.scm29
-rw-r--r--gnu/packages/xiph.scm19
-rw-r--r--gnu/packages/xml.scm6
-rw-r--r--gnu/packages/xnee.scm5
-rw-r--r--gnu/packages/xorg.scm433
-rw-r--r--gnu/packages/zile.scm2
-rw-r--r--guix/build/ant-build-system.scm1
-rw-r--r--guix/build/asdf-build-system.scm2
-rw-r--r--guix/build/cargo-build-system.scm1
-rw-r--r--guix/build/cmake-build-system.scm5
-rw-r--r--guix/build/cvs.scm27
-rw-r--r--guix/build/dub-build-system.scm1
-rw-r--r--guix/build/emacs-build-system.scm1
-rw-r--r--guix/build/emacs-utils.scm15
-rw-r--r--guix/build/font-build-system.scm1
-rw-r--r--guix/build/glib-or-gtk-build-system.scm21
-rw-r--r--guix/build/gnu-build-system.scm278
-rw-r--r--guix/build/gnu-dist.scm17
-rw-r--r--guix/build/go-build-system.scm1
-rw-r--r--guix/build/haskell-build-system.scm1
-rw-r--r--guix/build/hg.scm30
-rw-r--r--guix/build/minify-build-system.scm1
-rw-r--r--guix/build/ocaml-build-system.scm1
-rw-r--r--guix/build/perl-build-system.scm17
-rw-r--r--guix/build/python-build-system.scm46
-rw-r--r--guix/build/r-build-system.scm1
-rw-r--r--guix/build/ruby-build-system.scm1
-rw-r--r--guix/build/scons-build-system.scm25
-rw-r--r--guix/build/svn.scm38
-rw-r--r--guix/build/texlive-build-system.scm11
-rw-r--r--guix/build/utils.scm47
-rw-r--r--guix/build/waf-build-system.scm1
-rw-r--r--guix/download.scm8
-rw-r--r--guix/packages.scm134
-rw-r--r--guix/ui.scm18
192 files changed, 2705 insertions, 3400 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 490f07b9de..bc30cbae2a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -574,7 +574,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/bash-completion-directories.patch	\
   %D%/packages/patches/bazaar-CVE-2017-14176.patch		\
   %D%/packages/patches/bcftools-regidx-unsigned-char.patch	\
-  %D%/packages/patches/binutils-ld-new-dtags.patch		\
   %D%/packages/patches/binutils-loongson-workaround.patch	\
   %D%/packages/patches/blast+-fix-makefile.patch		\
   %D%/packages/patches/byobu-writable-status.patch		\
@@ -706,7 +705,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gimp-CVE-2017-17787.patch		\
   %D%/packages/patches/gimp-CVE-2017-17789.patch		\
   %D%/packages/patches/glib-networking-ssl-cert-file.patch	\
-  %D%/packages/patches/glib-respect-datadir.patch		\
   %D%/packages/patches/glib-tests-timer.patch			\
   %D%/packages/patches/glibc-CVE-2015-5180.patch		\
   %D%/packages/patches/glibc-CVE-2015-7547.patch		\
@@ -738,7 +736,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gpm-glibc-2.26.patch			\
   %D%/packages/patches/gpsbabel-minizip.patch     		\
   %D%/packages/patches/gpsbabel-qstring.patch     		\
-  %D%/packages/patches/graphite2-ffloat-store.patch		\
   %D%/packages/patches/grep-timing-sensitive-test.patch		\
   %D%/packages/patches/groff-source-date-epoch.patch		\
   %D%/packages/patches/gsl-test-i686.patch			\
@@ -746,6 +743,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/guile-1.8-cpp-4.5.patch			\
   %D%/packages/patches/guile-2.2-default-utf8.patch		\
   %D%/packages/patches/guile-default-utf8.patch			\
+  %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch	\
   %D%/packages/patches/guile-linux-syscalls.patch		\
   %D%/packages/patches/guile-present-coding.patch		\
   %D%/packages/patches/guile-relocatable.patch			\
@@ -811,7 +809,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/kobodeluxe-midicon-segmentation-fault.patch	\
   %D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch	\
   %D%/packages/patches/laby-make-install.patch			\
-  %D%/packages/patches/lcms-CVE-2016-10165.patch		\
   %D%/packages/patches/ldc-bootstrap-disable-tests.patch	\
   %D%/packages/patches/ldc-1.7.0-disable-phobos-tests.patch	\
   %D%/packages/patches/ledger-fix-uninitialized.patch		\
@@ -862,8 +859,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libssh-hostname-parser-bug.patch		\
   %D%/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch	\
   %D%/packages/patches/libtar-CVE-2013-4420.patch 		\
-  %D%/packages/patches/libtasn1-CVE-2017-10790.patch		\
-  %D%/packages/patches/libtasn1-CVE-2018-6003.patch		\
   %D%/packages/patches/libtheora-config-guess.patch		\
   %D%/packages/patches/libtiff-CVE-2017-9935.patch		\
   %D%/packages/patches/libtiff-CVE-2017-18013.patch		\
@@ -871,10 +866,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libusb-0.1-disable-tests.patch		\
   %D%/packages/patches/libusb-for-axoloti.patch			\
   %D%/packages/patches/libvdpau-va-gl-unbundle.patch		\
-  %D%/packages/patches/libvorbis-CVE-2017-14632.patch		\
-  %D%/packages/patches/libvorbis-CVE-2017-14633.patch		\
   %D%/packages/patches/libvpx-CVE-2016-2818.patch		\
-  %D%/packages/patches/libxcb-python-3.5-compat.patch		\
   %D%/packages/patches/libxslt-generated-ids.patch		\
   %D%/packages/patches/libxt-guix-search-paths.patch		\
   %D%/packages/patches/lierolibre-check-unaligned-access.patch	\
@@ -971,8 +963,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/patchutils-xfail-gendiff-tests.patch	\
   %D%/packages/patches/patch-hurd-path-max.patch		\
   %D%/packages/patches/pcmanfm-CVE-2017-8934.patch		\
-  %D%/packages/patches/pcre2-CVE-2017-7186.patch		\
-  %D%/packages/patches/pcre2-CVE-2017-8786.patch		\
   %D%/packages/patches/perl-file-path-CVE-2017-6512.patch	\
   %D%/packages/patches/perl-autosplit-default-time.patch	\
   %D%/packages/patches/perl-dbd-mysql-CVE-2017-10788.patch	\
@@ -1101,7 +1091,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/t1lib-CVE-2010-2642.patch		\
   %D%/packages/patches/t1lib-CVE-2011-0764.patch		\
   %D%/packages/patches/t1lib-CVE-2011-1552+.patch		\
-  %D%/packages/patches/tar-CVE-2016-6321.patch			\
+  %D%/packages/patches/tar-remove-wholesparse-check.patch	\
   %D%/packages/patches/tar-skip-unreliable-tests.patch		\
   %D%/packages/patches/tclxml-3.2-install.patch			\
   %D%/packages/patches/tcsh-fix-autotest.patch			\
@@ -1171,8 +1161,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/wpa-supplicant-krack-followups.patch	\
   %D%/packages/patches/wxmaxima-do-not-use-old-gnuplot-parameters.patch	\
   %D%/packages/patches/xboing-CVE-2004-0149.patch		\
-  %D%/packages/patches/xcb-proto-python3-print.patch		\
-  %D%/packages/patches/xcb-proto-python3-whitespace.patch	\
   %D%/packages/patches/xdotool-fix-makefile.patch               \
   %D%/packages/patches/xf86-video-ark-remove-mibstore.patch	\
   %D%/packages/patches/xf86-video-ast-remove-mibstore.patch	\
diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm
index 7880e533da..8d5f0117f5 100644
--- a/gnu/packages/acl.scm
+++ b/gnu/packages/acl.scm
@@ -1,8 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,8 +48,20 @@
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "tests"
+       #:modules ((ice-9 ftw)
+                  ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
+         ;; XXX After repacking the sources the timestamps are reset to the
+         ;; epoch, which leads to a failure in gzipping the CHANGES file.
+         (add-after 'unpack 'ensure-no-mtimes-pre-1980
+           (lambda _
+             (let ((early-1980 315619200)) ; 1980-01-02 UTC
+               (ftw "." (lambda (file stat flag)
+                          (unless (<= early-1980 (stat:mtime stat))
+                            (utime file early-1980 early-1980))
+                          #t))
+               #t)))
          (add-after 'build 'patch-exec-bin-sh
            (lambda _
              (substitute* "test/run"
@@ -64,10 +77,11 @@
              ;; this user does not exist within Guix's build environment.
              (for-each (lambda (file)
                          (delete-file (string-append "test/" file)))
-                       '("setfacl-X.test" "cp.test" "misc.test"))))
+                       '("setfacl-X.test" "cp.test" "misc.test"))
+             #t))
          (replace 'install
            (lambda _
-             (zero? (system* "make" "install" "install-lib" "install-dev")))))))
+             (invoke "make" "install" "install-lib" "install-dev"))))))
     (inputs `(("attr" ,attr)))
     (native-inputs
      `(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 8f48e42fec..4755b3d7b7 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -894,13 +894,15 @@ at once based on a Perl regular expression.")
                 "0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Makefile.in"
-                  (("-o \\$\\{LOG_OWN\\} -g \\$\\{LOG_GROUP\\}")
-                   ;; Don't try to chown root.
-                   "")
-                  (("mkdir -p \\$\\(ROTT_STATDIR\\)")
-                   ;; Don't attempt to create /var/lib/rottlog.
-                   "true")))))
+               '(begin
+                  (substitute* "Makefile.in"
+                    (("-o \\$\\{LOG_OWN\\} -g \\$\\{LOG_GROUP\\}")
+                     ;; Don't try to chown root.
+                     "")
+                    (("mkdir -p \\$\\(ROTT_STATDIR\\)")
+                     ;; Don't attempt to create /var/lib/rottlog.
+                     "true"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags (list "ROTT_ETCDIR=/etc/rottlog" ;rc file location
@@ -964,7 +966,9 @@ system administrator.")
                 "00pxp74xkwdcmrjwy55j0k8p684jk1zx3nzdc11v30q8q8kwnmkj"))
               (modules '((guix build utils)))
               (snippet
-               '(delete-file-recursively "lib/zlib"))))
+               '(begin
+                  (delete-file-recursively "lib/zlib")
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1358,9 +1362,11 @@ environment variable is set and output is to tty.")
                (base32
                 "1nwvjmx7kb14ni34c0b8x9a3791pc20gvhj7xaj66d8q4h6n0qf4"))
               (modules '((guix build utils)))
-              (snippet '(substitute* "tests/testsuite"
-                          (("#![[:blank:]]?/bin/sh")
-                           "#!$SHELL")))))
+              (snippet '(begin
+                          (substitute* "tests/testsuite"
+                            (("#![[:blank:]]?/bin/sh")
+                             "#!$SHELL"))
+                          #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -1748,14 +1754,16 @@ done with the @code{auditctl} utility.")
                 "08bga42ipymmbxd7wy4x5sl26c0ir1fm3n9rc6nqmhx69z66wyd8"))
               (modules '((guix build utils)))
               (snippet
-               '(map delete-file-recursively
-                 ;; Remove bundled lua, pcap, and pcre libraries.
-                 ;; FIXME: Remove bundled liblinear once packaged.
-                 '("liblua"
-                   "libpcap"
-                   "libpcre"
-                   ;; Remove pre-compiled binares.
-                   "mswin32")))))
+               '(begin
+                  (for-each delete-file-recursively
+                            ;; Remove bundled lua, pcap, and pcre libraries.
+                            ;; FIXME: Remove bundled liblinear once packaged.
+                            '("liblua"
+                              "libpcap"
+                              "libpcre"
+                              ;; Remove pre-compiled binares.
+                              "mswin32"))
+                  #t))))
     (build-system gnu-build-system)
     (inputs
      `(("openssl" ,openssl)
@@ -2056,7 +2064,9 @@ Kerberos and Heimdal and FAST is supported with recent MIT Kerberos.")
        (snippet
         ;; Remove binaries contained in the tarball which are only for the
         ;; target and can be regenerated anyway.
-        '(delete-file-recursively "bin"))
+        '(begin
+           (delete-file-recursively "bin")
+           #t))
        (file-name (string-append name "-" version ".tar.gz"))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 2aa1777db3..0f3e4229d8 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;;
@@ -519,31 +519,31 @@ a C program.")
     (license license:bsd-3)))
 
 (define-public fftw
-  ;; TODO: Make this 3.3.7 (see below) on the next upgrade cycle.
   (package
     (name "fftw")
-    (version "3.3.5")
+    (version "3.3.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://ftp.fftw.org/pub/fftw/fftw-"
                                  version".tar.gz"))
              (sha256
               (base32
-               "1kwbx92ps0r7s2mqy7lxbxanslxdzj7dp7r7gmdkzv1j8yqf3kwf"))))
+               "0wsms8narnbhfsa8chdflv2j9hzspvflblnqdn7hw8x5xdzrnq1v"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
        '("--enable-shared" "--enable-openmp" "--enable-threads")
-       #:phases (alist-cons-before
-                 'build 'no-native
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'no-native
                  (lambda _
                    ;; By default '-mtune=native' is used.  However, that may
                    ;; cause the use of ISA extensions (SSE2, etc.) that are
                    ;; not necessarily available on the user's machine when
                    ;; that package is built on a different machine.
                    (substitute* (find-files "." "Makefile$")
-                     (("-mtune=native") "")))
-                 %standard-phases)))
+                     (("-mtune=native") ""))
+                   #t)))))
     (native-inputs `(("perl" ,perl)))
     (home-page "http://fftw.org")
     (synopsis "Computing the discrete Fourier transform")
@@ -579,25 +579,12 @@ cosine/ sine transforms or DCT/DST).")
      (string-append (package-description fftw)
                     "  With OpenMPI parallelism support."))))
 
-(define-public fftw-3.3.7
-  ;; TODO: Make this the default 'fftw' on the next upgrade cycle.
-  (package
-    (inherit fftw)
-    (version "3.3.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "ftp://ftp.fftw.org/pub/fftw/fftw-"
-                                  version".tar.gz"))
-              (sha256
-               (base32
-                "0wsms8narnbhfsa8chdflv2j9hzspvflblnqdn7hw8x5xdzrnq1v"))))))
-
 (define-public fftw-avx
   (package
-    (inherit fftw-3.3.7)
+    (inherit fftw)
     (name "fftw-avx")
     (arguments
-     (substitute-keyword-arguments (package-arguments fftw-3.3.7)
+     (substitute-keyword-arguments (package-arguments fftw)
        ((#:configure-flags flags ''())
         ;; Enable AVX & co.  See details at:
         ;; <http://fftw.org/fftw3_doc/Installation-on-Unix.html>.
@@ -743,7 +730,8 @@ Sine Transform} (DST) and @dfn{Discrete Hartley Transform} (DHT).")
                     ;; See
                     ;; https://bitbucket.org/eigen/eigen/commits/ea8c22ce6920e982d15245ee41d0531a46a28e5d
                     ((".*svd_preallocate[^\n]*" &)
-                     (string-append "//" & " // Not supported by BDCSVD")))))))
+                     (string-append "//" & " // Not supported by BDCSVD")))
+                  #t))))
     (build-system cmake-build-system)
     (arguments
      '(;; Turn off debugging symbols to save space.
diff --git a/gnu/packages/attr.scm b/gnu/packages/attr.scm
index fe102d211c..ff0a07aa67 100644
--- a/gnu/packages/attr.scm
+++ b/gnu/packages/attr.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2012, 2013, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,13 +43,14 @@
        (modify-phases %standard-phases
          (add-after 'configure 'patch-makefile-SHELL
            (lambda _
-             (patch-makefile-SHELL "include/buildmacros")))
+             (patch-makefile-SHELL "include/buildmacros")
+             #t))
          (replace 'install
            (lambda _
-             (zero? (system* "make"
-                             "install"
-                             "install-lib"
-                             "install-dev"))))
+             (invoke "make"
+                     "install"
+                     "install-lib"
+                     "install-dev")))
          (replace 'check
            (lambda* (#:key target #:allow-other-keys)
              ;; Use the right shell.
@@ -57,11 +59,14 @@
                 (which "sh")))
 
              ;; When building natively, run the tests.
+             ;;
+             ;; Note that we use system* and unconditionally return #t here
+             ;; to ignore the test result, because the tests will fail when
+             ;; the build is performed on a file system without support for
+             ;; extended attributes, and we wish to allow Guix to be built
+             ;; on such systems.
              (unless target
                (system* "make" "tests" "-C" "test"))
-
-             ;; XXX: Ignore the test result since this is
-             ;; dependent on the underlying file system.
              #t)))))
     (inputs
      ;; Perl is needed to run tests; remove it from cross builds.
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index d8569096ab..82fadfe175 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -209,7 +209,8 @@ streams from live audio.")
                     "libs/ardour/revision.cc"
                   (lambda (port)
                     (format port ,(string-append "#include \"ardour/revision.h\"
-namespace ARDOUR { const char* revision = \"" version "\" ; }")))))
+namespace ARDOUR { const char* revision = \"" version "\" ; }"))
+                    #t)))
               (sha256
                (base32
                 "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"))
@@ -510,7 +511,9 @@ tools (analyzer, mono/stereo tools, crossovers).")
               (modules '((guix build utils)))
               (snippet
                ;; remove prebuilt binaries
-               '(delete-file-recursively "linux_32bit"))))
+               '(begin
+                  (delete-file-recursively "linux_32bit")
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
@@ -1091,7 +1094,7 @@ also play midifiles using a Soundfont.")
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
+         (replace 'bootstrap
            (lambda _
              (substitute* "bootstrap" (("\r\n") "\n"))
              (zero? (system* "sh" "bootstrap")))))))
@@ -2483,12 +2486,6 @@ Tracker 3 S3M and Impulse Tracker IT files.")
        ("automake" ,automake)
        ("libtool" ,libtool)
        ("file" ,file)))
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "sh" "bootstrap")))))))
     (home-page "http://www.surina.net/soundtouch/")
     (synopsis
      "Audio processing library for changing tempo, pitch and playback rate")
@@ -2751,8 +2748,10 @@ result.")
                     version ".tar.bz2"))
               (snippet
                ;; Don't optimize for a specific processor architecture.
-               '(substitute* "libs/Makefile"
-                  (("^CXXFLAGS \\+= -march=native") "")))
+               '(begin
+                  (substitute* "libs/Makefile"
+                    (("^CXXFLAGS \\+= -march=native") ""))
+                  #t))
               (modules '((guix build utils)))
               (sha256
                (base32
@@ -2796,8 +2795,10 @@ engine.")
                     version ".tar.bz2"))
               (snippet
                ;; Don't optimize for a specific processor architecture.
-               '(substitute* '("apps/Makefile" "libs/Makefile")
-                  (("^CXXFLAGS \\+= -march=native") "")))
+               '(begin
+                  (substitute* '("apps/Makefile" "libs/Makefile")
+                    (("^CXXFLAGS \\+= -march=native") ""))
+                  #t))
               (modules '((guix build utils)))
               (sha256
                (base32
@@ -2891,12 +2892,6 @@ point audio data.")
                "01xi3rvdmil9nawsha04iagjylqr1l9v9vlzk99scs8c207l58i4"))))
     (build-system gnu-build-system)
     ;; The source tarball is not bootstrapped.
-    (arguments
-     `(#:phases
-        (modify-phases %standard-phases
-          (add-after 'unpack 'bootstrap
-            (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
-    ;; Bootstrapping tools
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -3109,12 +3104,6 @@ mixers.")
                (base32
                 "1qinf41wl2ihx54zmmhanycihwjkn7dn1cicq6pp4rqbiv79b95x"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -3334,7 +3323,7 @@ representations.")
          (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
+         (replace 'bootstrap
            (lambda* (#:key outputs #:allow-other-keys)
              (setenv "HOME" (getcwd))
              (invoke "sh" "autogen.sh")))
diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index 0f4ecc4ab6..b86c1c835a 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -3,11 +3,12 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
-;;; Copyright © 2015, 2017 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -192,7 +193,8 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
                        (patch-shebang "configure"))
                      (exit (status:exit-val result))))
                 port)))
-           (chmod (string-append bin "/autoconf") #o555)))))
+           (chmod (string-append bin "/autoconf") #o555)
+           #t))))
 
     ;; Do not show it in the UI since it's meant for internal use.
     (properties '((hidden? . #t)))))
@@ -248,14 +250,14 @@ output is indexed in many ways to simplify browsing.")
 (define-public automake
   (package
     (name "automake")
-    (version "1.15.1")
+    (version "1.16.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/automake/automake-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1bzd9g32dfm4rsbw93ld9x7b5nc1y6i4m6zp032qf1i28a8s6sxg"))
+                "08g979ficj18i1w6w5219bgmns7czr03iadf20mk3lrzl8wbn1ax"))
              (patches
               (search-patches "automake-skip-amhello-tests.patch"))))
     (build-system gnu-build-system)
@@ -287,32 +289,33 @@ output is indexed in many ways to simplify browsing.")
                (setenv "CONFIG_SHELL" sh)
                #t)))
 
-           ;; Files like `install-sh', `mdate.sh', etc. must use
-           ;; #!/bin/sh, otherwise users could leak erroneous shebangs
-           ;; in the wild.  See <http://bugs.gnu.org/14201> for an
-           ;; example.
-           (add-after 'install 'unpatch-shebangs
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (dir (string-append out "/share")))
-                 (define (starts-with-shebang? file)
-                   (equal? (call-with-input-file file
-                             (lambda (p)
-                               (list (get-u8 p) (get-u8 p))))
-                           (map char->integer '(#\# #\!))))
+         ;; Files like `install-sh', `mdate.sh', etc. must use
+         ;; #!/bin/sh, otherwise users could leak erroneous shebangs
+         ;; in the wild.  See <http://bugs.gnu.org/14201> for an
+         ;; example.
+         (add-after 'install 'unpatch-shebangs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (dir (string-append out "/share")))
+               (define (starts-with-shebang? file)
+                 (equal? (call-with-input-file file
+                           (lambda (p)
+                             (list (get-u8 p) (get-u8 p))))
+                         (map char->integer '(#\# #\!))))
 
-                 (for-each (lambda (file)
-                             (when (and (starts-with-shebang? file)
-                                        (executable-file? file))
-                               (format #t "restoring shebang on `~a'~%"
-                                       file)
-                               (substitute* file
-                                 (("^#!.*/bin/sh")
-                                  "#!/bin/sh")
-                                 (("^#!.*/bin/env(.*)$" _ args)
-                                  (string-append "#!/usr/bin/env"
-                                                 args)))))
-                           (find-files dir ".*"))))))))
+               (for-each (lambda (file)
+                           (when (and (starts-with-shebang? file)
+                                      (executable-file? file))
+                             (format #t "restoring shebang on `~a'~%"
+                                     file)
+                             (substitute* file
+                               (("^#!.*/bin/sh")
+                                "#!/bin/sh")
+                               (("^#!.*/bin/env(.*)$" _ args)
+                                (string-append "#!/usr/bin/env"
+                                               args)))))
+                         (find-files dir ".*"))
+               #t))))))
     (home-page "https://www.gnu.org/software/automake/")
     (synopsis "Making GNU standards-compliant Makefiles")
     (description
@@ -322,21 +325,6 @@ intuitive format and then Automake works with Autoconf to produce a robust
 Makefile, simplifying the entire process for the developer.")
     (license gpl2+)))                      ; some files are under GPLv3+
 
-(define-public automake-1.16
-  ;; Make this the default on the next rebuild cycle.
-  (package
-    (inherit automake)
-    (version "1.16.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/automake/automake-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "08g979ficj18i1w6w5219bgmns7czr03iadf20mk3lrzl8wbn1ax"))
-              (patches
-               (search-patches "automake-skip-amhello-tests.patch"))))))
-
 (define-public libtool
   (package
     (name "libtool")
@@ -353,6 +341,9 @@ Makefile, simplifying the entire process for the developer.")
     (propagated-inputs `(("m4" ,m4)))
     (native-inputs `(("m4" ,m4)
                      ("perl" ,perl)
+                     ;; XXX: this shouldn't be necessary, but without it test
+                     ;; 102 fails because it cannot find ltdl/libltdl.la.
+                     ("libltdl" ,libltdl)
                      ("help2man" ,help2man) ;because we modify ltmain.sh
                      ("automake" ,automake)      ;some tests rely on 'aclocal'
                      ("autoconf" ,autoconf-wrapper))) ;others on 'autom4te'
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 2fafa2c4a6..628c39a6eb 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -278,9 +278,6 @@ random access nor for in-place modification.")
      `(#:parallel-build? #f             ;race conditions
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (invoke "autoreconf")))
          (add-before 'build 'qualify-inputs
            (lambda* (#:key inputs #:allow-other-keys)
              ;; This script is full of pitfalls.  Fix some that particularly
@@ -468,7 +465,8 @@ detection, and lossless compression.")
            ;; Remove bundled shared libraries.
            (with-directory-excursion "src/borg/algorithms"
              (for-each delete-file-recursively
-                       (list "blake2" "lz4" "zstd")))))))
+                       (list "blake2" "lz4" "zstd")))
+           #t))))
     (build-system python-build-system)
     (arguments
      `(#:modules ((srfi srfi-26) ; for cut
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index e91f7d43ef..c6b21e725d 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -2,16 +2,17 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.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 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
+;;; 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 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -168,16 +169,16 @@ implementation offers several extensions over the standard utility.")
 (define-public tar
   (package
    (name "tar")
-   (version "1.29")
+   (version "1.30")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/tar/tar-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "097hx7sbzp8qirl4m930lw84kn0wmxhmq7v1qpra3mrg0b8cyba0"))
-            (patches (search-patches "tar-CVE-2016-6321.patch"
-                                     "tar-skip-unreliable-tests.patch"))))
+              "1lyjyk8z8hdddsxw0ikchrsfg3i0x3fsh7l63a8jgaz1n7dr5gzi"))
+            (patches (search-patches "tar-skip-unreliable-tests.patch"
+                                     "tar-remove-wholesparse-check.patch"))))
    (build-system gnu-build-system)
    ;; Note: test suite requires ~1GiB of disk space.
    (arguments
@@ -189,7 +190,13 @@ implementation offers several extensions over the standard utility.")
                        (substitute* "src/system.c"
                          (("/bin/sh")
                           (string-append bash "/bin/sh")))
-                       #t))))))
+                       #t))))
+
+      ;; Test #92 "link mismatch" expects "a/z: Not linked to a/y" but gets
+      ;; "a/y: Not linked to a/z" and fails, presumably due to differences in
+      ;; the order in which 'diff' traverses directories.  That leads to a
+      ;; test failure even though conceptually the test passes.  Skip it.
+      #:make-flags '("TESTSUITEFLAGS=-k '!link mismatch'")))
 
    ;; When cross-compiling, the 'set-shell-file-name' phase needs to be able
    ;; to refer to the target Bash.
@@ -211,14 +218,14 @@ standard utility.")
 (define-public patch
   (package
    (name "patch")
-    (version "2.7.5")
+    (version "2.7.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/patch/patch-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "16d2r9kpivaak948mxzc0bai45mqfw73m113wrkmbffnalv1b5gx"))
+                "1zfqy4rdcy279vwn2z1kbv19dcfw25d2aqy9nzvdkq5bjzd0nqdc"))
               (patches (search-patches "patch-hurd-path-max.patch"))))
    (build-system gnu-build-system)
    (native-inputs `(("ed" ,ed)))
@@ -304,14 +311,14 @@ used to apply commands with arbitrarily long arguments.")
 (define-public coreutils
   (package
    (name "coreutils")
-   (version "8.28")
+   (version "8.29")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/coreutils/coreutils-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0r8c1bgm68kl70j1lgd0rv12iykw6143k4m9a56xip9rc2hv25qi"))))
+              "0plm1zs9il6bb5mk881qvbghq4glc8ybbgakk2lfzb0w64fgml4j"))))
    (build-system gnu-build-system)
    (inputs `(("acl"  ,acl)                        ; TODO: add SELinux
              ("gmp"  ,gmp)                        ;bignums in 'expr', yay!
@@ -408,16 +415,15 @@ change.  GNU make offers many powerful extensions over the standard utility.")
 (define-public binutils
   (package
    (name "binutils")
-   (version "2.28.1")
+   (version "2.30")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/binutils/binutils-"
                                 version ".tar.bz2"))
             (sha256
              (base32
-              "1sj234nd05cdgga1r36zalvvdkvpfbr12g5mir2n8i1dwsdrj939"))
-            (patches (search-patches "binutils-ld-new-dtags.patch"
-                                     "binutils-loongson-workaround.patch"))))
+              "028cklfqaab24glva1ks2aqa1zxa6w6xmc8q34zs1sb7h22dxspg"))
+            (patches (search-patches "binutils-loongson-workaround.patch"))))
    (build-system gnu-build-system)
 
    ;; TODO: Add dependency on zlib + those for Gold.
@@ -426,6 +432,12 @@ change.  GNU make offers many powerful extensions over the standard utility.")
                           ;; on GCC when bootstrapping.
                           "LDFLAGS=-static-libgcc"
 
+                          ;; Turn on --enable-new-dtags by default to make the
+                          ;; linker set RUNPATH instead of RPATH on binaries.
+                          ;; This is important because RUNPATH can be overriden
+                          ;; using LD_LIBRARY_PATH at runtime.
+                          "--enable-new-dtags"
+
                           ;; Don't search under /usr/lib & co.
                           "--with-lib-path=/no-ld-lib-path"
 
@@ -538,7 +550,6 @@ store.")
    ;; Note: Always use a dot after the minor version since various places rely
    ;; on "version-major+minor" to determine where locales are found.
    (version "2.26.105-g0890d5379c")
-   (replacement glibc-2.26-patched)
    (source (origin
             (method url-fetch)
             (uri (string-append "https://alpha.gnu.org/gnu/guix/mirror/"
@@ -551,13 +562,15 @@ store.")
              ;; Disable 'ldconfig' and /etc/ld.so.cache.  The latter is
              ;; required on LFS distros to avoid loading the distro's libc.so
              ;; instead of ours.
-             '(substitute* "sysdeps/unix/sysv/linux/configure"
-                (("use_ldconfig=yes")
-                 "use_ldconfig=no")))
+             '(begin
+                (substitute* "sysdeps/unix/sysv/linux/configure"
+                  (("use_ldconfig=yes")
+                   "use_ldconfig=no"))
+                #t))
             (modules '((guix build utils)))
             (patches (search-patches "glibc-ldd-x86_64.patch"
                                      "glibc-versioned-locpath.patch"
-                                     "glibc-o-largefile.patch"))))
+                                     "glibc-allow-kernel-2.6.32.patch"))))
    (build-system gnu-build-system)
 
    ;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
@@ -799,14 +812,13 @@ with the Linux kernel.")
                ;; Force mach/hurd/libpthread subdirs to build first in order to avoid
                ;; linking errors.
                ;; See <https://lists.gnu.org/archive/html/bug-hurd/2016-11/msg00045.html>
-               (let ((-j (list "-j" (number->string (parallel-job-count)))))
-                 (let-syntax ((make (syntax-rules ()
-                                      ((_ target)
-                                       (zero? (apply system* "make" target -j))))))
-                   (and (make "mach/subdir_lib")
-                        (make "hurd/subdir_lib")
-                        (make "libpthread/subdir_lib")
-                        (zero? (apply system* "make" -j)))))))))
+               (let ((flags (list "-j" (number->string (parallel-job-count)))))
+                 (define (make target)
+                   (apply invoke "make" target flags))
+                 (make "mach/subdir_lib")
+                 (make "hurd/subdir_lib")
+                 (make "libpthread/subdir_lib")
+                 (apply invoke "make" flags))))))
         ((#:configure-flags original-configure-flags)
         `(append (list "--host=i586-pc-gnu"
 
@@ -841,14 +853,6 @@ GLIBC/HURD for a Hurd host"
 ;; 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 glibc-2.26-patched
-  (package
-    (inherit glibc)
-    (source (origin
-              (inherit (package-source glibc))
-              (patches (cons (search-patch "glibc-allow-kernel-2.6.32.patch")
-                             (origin-patches (package-source glibc))))))))
-
 (define-public glibc-2.25
   (package
     (inherit glibc)
@@ -862,7 +866,6 @@ GLIBC/HURD for a Hurd host"
                 "1813dzkgw6v8q8q1m4v96yfis7vjqc9pslqib6j9mrwh6fxxjyq6"))
               (patches (search-patches "glibc-ldd-x86_64.patch"
                                        "glibc-versioned-locpath.patch"
-                                       "glibc-o-largefile.patch"
                                        "glibc-vectorized-strcspn-guards.patch"
                                        "glibc-CVE-2017-1000366-pt1.patch"
                                        "glibc-CVE-2017-1000366-pt2.patch"
@@ -881,7 +884,6 @@ GLIBC/HURD for a Hurd host"
                 "1lxmprg9gm73gvafxd503x70z32phwjzcy74i0adfi6ixzla7m4r"))
               (patches (search-patches "glibc-ldd-x86_64.patch"
                                        "glibc-versioned-locpath.patch"
-                                       "glibc-o-largefile.patch"
                                        "glibc-vectorized-strcspn-guards.patch"
                                        "glibc-CVE-2015-5180.patch"
                                        "glibc-CVE-2017-1000366-pt1.patch"
@@ -901,7 +903,6 @@ GLIBC/HURD for a Hurd host"
                 "1s8krs3y2n6pzav7ic59dz41alqalphv7vww4138ag30wh0fpvwl"))
               (patches (search-patches "glibc-ldd-x86_64.patch"
                                        "glibc-versioned-locpath.patch"
-                                       "glibc-o-largefile.patch"
                                        "glibc-vectorized-strcspn-guards.patch"
                                        "glibc-CVE-2015-5180.patch"
                                        "glibc-CVE-2016-3075.patch"
@@ -923,6 +924,7 @@ GLIBC/HURD for a Hurd host"
                (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"
@@ -965,8 +967,8 @@ the 'share/locale' sub-directory of this package.")
           `(modify-phases ,phases
              (replace 'build
                (lambda _
-                 (zero? (system* "make" "localedata/install-locales"
-                                 "-j" (number->string (parallel-job-count))))))
+                 (invoke "make" "localedata/install-locales"
+                         "-j" (number->string (parallel-job-count)))))
              (delete 'install)
              (delete 'move-static-libs)))
          ((#:configure-flags flags)
@@ -987,8 +989,7 @@ the 'share/locale' sub-directory of this package.")
     (arguments
      `(#:modules ((guix build utils))
        #:builder (begin
-                   (use-modules (srfi srfi-1)
-                                (guix build utils))
+                   (use-modules (guix build utils))
 
                    (let* ((libc      (assoc-ref %build-inputs "glibc"))
                           (gzip      (assoc-ref %build-inputs "gzip"))
@@ -999,27 +1000,27 @@ the 'share/locale' sub-directory of this package.")
                      (setenv "PATH" (string-append libc "/bin:" gzip "/bin"))
 
                      (mkdir-p localedir)
-                     (every (lambda (locale)
-                              (define file
-                                ;; Use the "normalized codeset" by
-                                ;; default--e.g., "en_US.utf8".
-                                (string-append localedir "/" locale ".utf8"))
-
-                              (and (zero? (system* "localedef" "--no-archive"
-                                                   "--prefix" localedir
-                                                   "-i" locale
-                                                   "-f" "UTF-8" file))
-                                   (begin
-                                     ;; For backward compatibility with Guix
-                                     ;; <= 0.8.3, add "xx_YY.UTF-8".
-                                     (symlink (string-append locale ".utf8")
-                                              (string-append localedir "/"
-                                                             locale ".UTF-8"))
-                                     #t)))
-
-                            ;; These are the locales commonly used for
-                            ;; tests---e.g., in Guile's i18n tests.
-                            '("de_DE" "el_GR" "en_US" "fr_FR" "tr_TR"))))))
+                     (for-each (lambda (locale)
+                                 (define file
+                                   ;; Use the "normalized codeset" by
+                                   ;; default--e.g., "en_US.utf8".
+                                   (string-append localedir "/" locale ".utf8"))
+
+                                 (invoke "localedef" "--no-archive"
+                                         "--prefix" localedir
+                                         "-i" locale
+                                         "-f" "UTF-8" file)
+
+                                 ;; For backward compatibility with Guix
+                                 ;; <= 0.8.3, add "xx_YY.UTF-8".
+                                 (symlink (string-append locale ".utf8")
+                                          (string-append localedir "/"
+                                                         locale ".UTF-8")))
+
+                               ;; These are the locales commonly used for
+                               ;; tests---e.g., in Guile's i18n tests.
+                               '("de_DE" "el_GR" "en_US" "fr_FR" "tr_TR"))
+                     #t))))
     (inputs `(("glibc" ,glibc)
               ("gzip" ,gzip)))
     (synopsis "Small sample of UTF-8 locales")
@@ -1063,30 +1064,25 @@ command.")
                "--host=i586-pc-gnu"
                "--enable-obsolete-rpc"))
        ((#:phases _)
-        '(alist-replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (and (zero? (system* "make" "install-headers"))
-
-                 ;; Make an empty stubs.h to work around not being able to
-                 ;; produce a valid stubs.h and causing the build to fail. See
-                 ;; <http://lists.gnu.org/archive/html/guix-devel/2014-04/msg00233.html>.
-                 (let ((out (assoc-ref outputs "out")))
-                   (close-port
-                    (open-output-file
-                     (string-append out "/include/gnu/stubs.h"))))))
-
-          ;; Nothing to build.
-          (alist-delete
-           'build
-
-           (alist-cons-before
-            'configure 'pre-configure
-            (lambda _
-              ;; Use the right 'pwd'.
-              (substitute* "configure"
-                (("/bin/pwd") "pwd")))
-            %standard-phases))))))))
+        '(modify-phases %standard-phases
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (invoke "make" "install-headers")
+
+               ;; Make an empty stubs.h to work around not being able to
+               ;; produce a valid stubs.h and causing the build to fail. See
+               ;; <http://lists.gnu.org/archive/html/guix-devel/2014-04/msg00233.html>.
+               (let ((out (assoc-ref outputs "out")))
+                 (close-port
+                  (open-output-file
+                   (string-append out "/include/gnu/stubs.h"))))))
+           (delete 'build)              ; nothing to build
+           (add-before 'configure 'patch-configure-script
+             (lambda _
+               ;; Use the right 'pwd'.
+               (substitute* "configure"
+                 (("/bin/pwd") "pwd"))
+               #t))))))))
 
 (define-public tzdata
   (package
@@ -1125,8 +1121,8 @@ command.")
        (modify-phases %standard-phases
          (replace 'unpack
            (lambda* (#:key source inputs #:allow-other-keys)
-             (and (zero? (system* "tar" "xvf" source))
-                  (zero? (system* "tar" "xvf" (assoc-ref inputs "tzcode"))))))
+             (invoke "tar" "xvf" source)
+             (invoke "tar" "xvf" (assoc-ref inputs "tzcode"))))
          (add-after 'install 'post-install
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Move data in the right place.
@@ -1138,7 +1134,8 @@ command.")
                (copy-recursively (string-append out "/share/zoneinfo-leaps")
                                  (string-append out "/share/zoneinfo/right"))
                (delete-file-recursively
-                (string-append out "/share/zoneinfo-leaps")))))
+                (string-append out "/share/zoneinfo-leaps"))
+               #t)))
          (delete 'configure))))
     (inputs `(("tzcode" ,(origin
                           (method url-fetch)
@@ -1198,9 +1195,11 @@ and daylight-saving rules.")
               (snippet
                ;; Work around "declared gets" error on glibc systems (fixed by
                ;; Gnulib commit 66712c23388e93e5c518ebc8515140fa0c807348.)
-               '(substitute* "srclib/stdio.in.h"
-                  (("^#undef gets") "")
-                  (("^_GL_WARN_ON_USE \\(gets.*") "")))))
+               '(begin
+                  (substitute* "srclib/stdio.in.h"
+                    (("^#undef gets") "")
+                    (("^_GL_WARN_ON_USE \\(gets.*") ""))
+                  #t))))
     (build-system gnu-build-system)
     (synopsis "Character set conversion library")
     (description
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index b98ffe1c12..64f7782f58 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -72,7 +72,14 @@
    (9 "0g1l56kvw61rpw7dqa9fcl9llkl693h73g631hrhxlm030ddssqb")
    (10 "01lfhrkdsdkdz8ypzapr614ras23x7ckjnr60aa5bzkaqprccrc4")
    (11 "038p7mhnq9m65g505hi3827jkf9f35nd1cy00w8mwafpyxp44mnx")
-   (12 "0gh6lbb1rwpk44pvbamm6vzdfi50xnwkqd9v7s8cjwk3pz973hps")))
+   (12 "0gh6lbb1rwpk44pvbamm6vzdfi50xnwkqd9v7s8cjwk3pz973hps")
+   (13 "1djkx0w9v62q78gz3jsvamj1jq53i6hbfrfhhsw86ihwpjnfy98v")
+   (14 "0z5ikcq9zyxw79d0z36r5p0mspnb5piavbv03jmlan1wnknmrxx7")
+   (15 "09n307fi1j257abhm295k6ksmnzw47ka2zhnr0i5lbdnpvn04xnk")
+   (16 "1cgi1y6mifm8hsgv4avj5ih76535js3qba1sqwbfvp7si76927sh")
+   (17 "0w6jpj2giakji1ir83rpkx1y7n7xqppah3j748m6dm38hywr0gvp")
+   (18 "1k58h4wxbsg7r4rwhrvzx5hfbapba2nxjysbhh6qp6ki5ys99i2v")
+   (19 "07n1i5610lbs672x1s8g82qn3qfj06s0ip3z80sri0g8vxp0s5r7")))
 
 (define (download-patches store count)
   "Download COUNT Bash patches into store.  Return a list of
@@ -93,9 +100,7 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
           1))
 
 (define-public bash
-  (let* ((cppflags (string-join '("-DSYS_BASHRC='\"/etc/bashrc\"'"
-                                  "-DSYS_BASH_LOGOUT='\"/etc/bash_logout\"'"
-                                  "-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
+  (let* ((cppflags (string-join '("-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
                                   "-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
                                   "-DNON_INTERACTIVE_LOGIN_SHELLS"
                                   "-DSSH_SOURCE_BASHRC")
@@ -160,7 +165,8 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
               ;; Add a `sh' -> `bash' link.
               (let ((out (assoc-ref outputs "out")))
                 (with-directory-excursion (string-append out "/bin")
-                  (symlink "bash" "sh")))))
+                  (symlink "bash" "sh")
+                  #t))))
 
           (add-after 'install 'move-development-files
             (lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm
index f9fda96bb2..10e8fe848f 100644
--- a/gnu/packages/bdw-gc.scm
+++ b/gnu/packages/bdw-gc.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -30,14 +30,14 @@
 (define-public libgc
   (package
    (name "libgc")
-   (version "7.6.0")
+   (version "7.6.4")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://www.hboehm.info/gc/gc_source/gc-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "143x7g0d0k6250ai6m2x3l4y352mzizi4wbgrmahxscv2aqjhjm1"))))
+              "076dzsqqyxd3nlzs0z277vvhqjp8nv5dqi763s0m90zr6ljiyk5r"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
@@ -91,7 +91,7 @@ C or C++ programs, though that is not its primary goal.")
 (define-public libatomic-ops
   (package
     (name "libatomic-ops")
-    (version "7.4.8")
+    (version "7.6.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -99,13 +99,13 @@ C or C++ programs, though that is not its primary goal.")
                     version "/libatomic_ops-" version ".tar.gz"))
               (sha256
                (base32
-                "0sj3plzpbqgxrqpjq3w2zi3zxxqqps71ncdwk5s1k30i9d9da1f4"))))
+                "1rif2hjscq5mh639nsnjhb90c01gnmy1sbmj6x6hsn1xmpnj95r1"))))
     (build-system gnu-build-system)
     (outputs '("out" "debug"))
     (synopsis "Accessing hardware atomic memory update operations")
     (description
      "This C library provides semi-portable access to hardware-provided atomic
-memory update operations on a number architectures.  These might allow you to
+memory update operations on a number of architectures.  These might allow you to
 write code that does more interesting things in signal handlers, write
 lock-free code, experiment with thread programming paradigms, etc.")
     (home-page "https://github.com/ivmai/libatomic_ops/")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index c1f9e66a53..31ca5b2521 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -296,9 +296,10 @@ BAM files.")
                 "0093hkkvxmbwfaa7905s6185jymynvg42kq6sxv7fili11l5mxwz"))
               (patches (search-patches "bcftools-regidx-unsigned-char.patch"))
               (modules '((guix build utils)))
-              (snippet
-               ;; Delete bundled htslib.
-               '(delete-file-recursively "htslib-1.5"))))
+              (snippet '(begin
+                          ;; Delete bundled htslib.
+                          (delete-file-recursively "htslib-1.5")
+                          #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -1195,10 +1196,12 @@ errors at the end of reads.")
                 "0hwa5r9qbglppb7sz5z79rlmmddr3n51n468jb3wh8rwjgn3yr90"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Makefile"
-                  ;; replace BUILD_HOST and BUILD_TIME for deterministic build
-                  (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
-                  (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\"")))))
+               '(begin
+                  (substitute* "Makefile"
+                    ;; replace BUILD_HOST and BUILD_TIME for deterministic build
+                    (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
+                    (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\""))
+                  #t))))
     (build-system gnu-build-system)
     (inputs
      `(("perl" ,perl)
@@ -1392,10 +1395,12 @@ well as many of the command line options.")
                 "15z2w3bvnc0n4qmb9bd6d8ylc2h2nj883x2w9iixf4x3vki9b22i"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "setup.py"
-                  ;; remove dependency on outdated "distribute" module
-                  (("^from distribute_setup import use_setuptools") "")
-                  (("^use_setuptools\\(\\)") "")))))
+               '(begin
+                  (substitute* "setup.py"
+                    ;; remove dependency on outdated "distribute" module
+                    (("^from distribute_setup import use_setuptools") "")
+                    (("^use_setuptools\\(\\)") ""))
+                  #t))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ;tests fail because test data are not included
@@ -1427,9 +1432,11 @@ multiple sequence alignments.")
                (base32
                 "0dzap2axin9cbbl0d825w294bpn00zagfm1sigamm4v2pm5bj9lp"))
               (modules '((guix build utils)))
-              (snippet
-               ;; Drop bundled htslib. TODO: Also remove samtools and bcftools.
-               '(delete-file-recursively "htslib"))))
+              (snippet '(begin
+                          ;; Drop bundled htslib. TODO: Also remove samtools
+                          ;; and bcftools.
+                          (delete-file-recursively "htslib")
+                          #t))))
     (build-system python-build-system)
     (arguments
      `(#:modules ((ice-9 ftw)
@@ -1801,9 +1808,10 @@ time.")
               ;; for download from Sourceforge, but it has not been merged.
               (patches (search-patches "crossmap-allow-system-pysam.patch"))
               (modules '((guix build utils)))
-              ;; remove bundled copy of pysam
-              (snippet
-               '(delete-file-recursively "lib/pysam"))))
+              (snippet '(begin
+                          ;; remove bundled copy of pysam
+                          (delete-file-recursively "lib/pysam")
+                          #t))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2
@@ -1912,7 +1920,8 @@ files.")
               (snippet
                '(begin
                   ;; Delete bundled libBigWig sources
-                  (delete-file-recursively "libBigWig")))))
+                  (delete-file-recursively "libBigWig")
+                  #t))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -3786,9 +3795,11 @@ sequences).")
                 "08znbvqq5xknfhmpp3wcj574zvi4p7i8zifi67c9qw9a6ikp42fj"))
               (modules '((guix build utils)))
               (snippet
-               ;; Delete bundled kseq.
-               ;; TODO: Also delete bundled murmurhash and open bloom filter.
-               '(delete-file "src/mash/kseq.h"))))
+               '(begin
+                  ;; Delete bundled kseq.
+                  ;; TODO: Also delete bundled murmurhash and open bloom filter.
+                  (delete-file "src/mash/kseq.h")
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; No tests.
@@ -3966,18 +3977,19 @@ assembled metagenomic sequence.")
                (base32
                 "1z3x0vd8ma7pdrnywj7i3kgwl89sdkwrrn62zl7r5calqaq2hyip"))
               (modules '((guix build utils)))
-              (snippet
-               '(substitute* "setup.py"
-                  ;; Use setuptools, or else the executables are not
-                  ;; installed.
-                  (("distutils.core") "setuptools")
-                  ;; use "gcc" instead of "cc" for compilation
-                  (("^defines")
-                   "cc.set_executables(
+              (snippet '(begin
+                          (substitute* "setup.py"
+                            ;; Use setuptools, or else the executables are not
+                            ;; installed.
+                            (("distutils.core") "setuptools")
+                            ;; use "gcc" instead of "cc" for compilation
+                            (("^defines")
+                             "cc.set_executables(
 compiler='gcc',
 compiler_so='gcc',
 linker_exe='gcc',
-linker_so='gcc -shared'); defines")))))
+linker_so='gcc -shared'); defines"))
+                          #t))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2 ; only Python 2 is supported
@@ -4778,7 +4790,8 @@ BAM and Wiggle files in both transcript-coordinate and genomic-coordinate.")
              (("^from distribute_setup import use_setuptools") "")
              (("^use_setuptools\\(\\)") "")
              ;; do not use bundled copy of pysam
-             (("^have_pysam = False") "have_pysam = True"))))))
+             (("^have_pysam = False") "have_pysam = True"))
+           #t))))
     (build-system python-build-system)
     (arguments `(#:python ,python-2))
     (inputs
@@ -4829,9 +4842,9 @@ distribution, coverage uniformity, strand specificity, etc.")
                        "Data2DB"
                        "PCL2Bin")))
            (modify-phases %standard-phases
-             (add-before 'configure 'bootstrap
+             (replace 'bootstrap
                (lambda _
-                 (zero? (system* "bash" "gen_auto"))))
+                 (invoke "bash" "gen_auto")))
              (add-after 'build 'build-additional-tools
                (lambda* (#:key make-flags #:allow-other-keys)
                  (every (lambda (dir)
@@ -5334,9 +5347,10 @@ structures, classes for genomic regions, mapped sequencing reads, etc.")
               (sha256
                (base32 "08r684l50pnxjpvmhzjgqq56yv9rfw90k8vx0nsrnrzk8mf9hsdq"))
               (modules '((guix build utils)))
-              (snippet
-               ;; Remove bundled samtools.
-               '(delete-file-recursively "samtools"))))
+              (snippet '(begin
+                          ;; Remove bundled samtools.
+                          (delete-file-recursively "samtools")
+                          #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ;no "check" target
@@ -10938,13 +10952,6 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
          (sha256
           (base32
            "0g38g8s3npr0gjm9fahlbhiskyfws9l5i0x1ml3rakzj7az5l9c9"))))
-      (arguments
-       (substitute-keyword-arguments (package-arguments htslib)
-         ((#:phases phases)
-          `(modify-phases  ,phases
-             (add-after 'unpack 'bootstrap
-               (lambda _
-                 (zero? (system* "autoreconf" "-vif"))))))))
       (native-inputs
        `(("autoconf" ,autoconf)
          ("automake" ,automake)
@@ -11824,7 +11831,8 @@ bytes of memory space, where n is the length of the string.")
                     (snippet
                      '(begin (delete-file-recursively "include/spdlog")
                              (for-each delete-file '("include/xxhash.h"
-                                                     "src/xxhash.c"))))))
+                                                     "src/xxhash.c"))
+                             #t))))
        ("libdivsufsort" ,libdivsufsort)
        ("libgff" ,libgff)
        ("tbb" ,tbb)
@@ -12549,7 +12557,8 @@ contains
        (snippet
         '(begin
            (for-each delete-file (find-files "jar/lib" "\\.jar$"))
-           (delete-file-recursively "3rdParty")))))
+           (delete-file-recursively "3rdParty")
+           #t))))
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f                      ; test data are not included
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index f4ba82810a..f7e90b4a77 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -6,6 +6,8 @@
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,7 +39,7 @@
 (define-public boost
   (package
     (name "boost")
-    (version "1.64.0")
+    (version "1.66.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -46,7 +48,7 @@
                     ".tar.bz2"))
               (sha256
                (base32
-                "0cikd35xfkpg9nnl76yqqnqxnf3hyfjjww8xjd4akflprsm5rk3v"))))
+                "1aaw48cmimsskzgiclwn0iifp62a5iw9cbqrhfari876af1828ap"))))
     (build-system gnu-build-system)
     (inputs `(("icu4c" ,icu4c)
               ("zlib" ,zlib)))
@@ -73,8 +75,8 @@
                    '()))
        #:phases
        (modify-phases %standard-phases
-         (replace
-             'configure
+         (delete 'bootstrap)
+         (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (substitute* '("libs/config/configure"
@@ -88,21 +90,19 @@
                (setenv "SHELL" (which "sh"))
                (setenv "CONFIG_SHELL" (which "sh"))
 
-               (zero? (system* "./bootstrap.sh"
-                               (string-append "--prefix=" out)
-                               "--with-toolset=gcc")))))
-         (replace
-             'build
-           (lambda* (#:key outputs make-flags #:allow-other-keys)
-             (zero? (apply system* "./b2"
-                           (format #f "-j~a" (parallel-job-count))
-                           make-flags))))
-         (replace
-             'install
-           (lambda* (#:key outputs make-flags #:allow-other-keys)
-             (zero? (apply system* "./b2" "install" make-flags)))))))
+               (invoke "./bootstrap.sh"
+                       (string-append "--prefix=" out)
+                       "--with-toolset=gcc"))))
+         (replace 'build
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "./b2"
+                    (format #f "-j~a" (parallel-job-count))
+                    make-flags)))
+         (replace 'install
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "./b2" "install" make-flags))))))
 
-    (home-page "http://boost.org")
+    (home-page "http://www.boost.org")
     (synopsis "Peer-reviewed portable C++ source libraries")
     (description
      "A collection of libraries intended to be widely useful, and usable
@@ -110,20 +110,6 @@ across a broad spectrum of applications.")
     (license (license:x11-style "http://www.boost.org/LICENSE_1_0.txt"
                                 "Some components have other similar licences."))))
 
-(define-public boost-1.66
-  (package
-    (inherit boost)
-    (version "1.66.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "mirror://sourceforge/boost/boost/" version "/boost_"
-                    (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
-                    ".tar.bz2"))
-              (sha256
-               (base32
-                "1aaw48cmimsskzgiclwn0iifp62a5iw9cbqrhfari876af1828ap"))))))
-
 (define-public mdds
   (package
     (name "mdds")
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index 27f2053c43..f332018f19 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -98,10 +98,10 @@
 (define* (package-from-tarball name source program-to-test description
                                #:key snippet)
   "Return a package that correspond to the extraction of SOURCE.
-PROGRAM-TO-TEST is a program to run after extraction of SOURCE, to
-check whether everything is alright.  If SNIPPET is provided, it is
-evaluated after extracting SOURCE.  SNIPPET should return true if
-successful, or false to signal an error."
+PROGRAM-TO-TEST is a program to run after extraction of SOURCE, to check
+whether everything is alright.  If SNIPPET is provided, it is evaluated after
+extracting SOURCE.  SNIPPET should raise an exception to signal an error; its
+return value is ignored."
   (package
     (name name)
     (version "0")
@@ -118,14 +118,14 @@ successful, or false to signal an error."
 
          (mkdir out)
          (copy-file tarball "binaries.tar.xz")
-         (system* xz "-d" "binaries.tar.xz")
+         (invoke xz "-d" "binaries.tar.xz")
          (let ((builddir (getcwd)))
            (with-directory-excursion out
-             (and (zero? (system* tar "xvf"
-                                  (string-append builddir "/binaries.tar")))
-                  ,@(if snippet (list snippet) '())
-                  (zero? (system* (string-append "bin/" ,program-to-test)
-                                  "--version"))))))))
+             (invoke tar "xvf"
+                     (string-append builddir "/binaries.tar"))
+             ,@(if snippet (list snippet) '())
+             (invoke (string-append "bin/" ,program-to-test)
+                     "--version"))))))
     (inputs
      `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
        ("xz"  ,(search-bootstrap-binary "xz" (%current-system)))
@@ -390,8 +390,7 @@ $out/bin/guile --version~%"
                            (if (not (elf-file? "bin/egrep"))
                              (substitute* '("bin/egrep" "bin/fgrep")
                                (("^exec grep") (string-append (getcwd) "/bin/grep"))))
-                           (chmod "bin" #o555)
-                           #t)))
+                           (chmod "bin" #o555))))
 
 (define %bootstrap-binutils
   (package-from-tarball "binutils-bootstrap"
@@ -446,18 +445,20 @@ $out/bin/guile --version~%"
 
          (mkdir out)
          (copy-file tarball "binaries.tar.xz")
-         (system* xz "-d" "binaries.tar.xz")
+         (invoke xz "-d" "binaries.tar.xz")
          (let ((builddir (getcwd)))
            (with-directory-excursion out
-             (system* tar "xvf"
-                      (string-append builddir
-                                     "/binaries.tar"))
+             (invoke tar "xvf"
+                     (string-append builddir
+                                    "/binaries.tar"))
              (chmod "lib" #o755)
 
              ;; Patch libc.so so it refers to the right path.
              (substitute* "lib/libc.so"
                (("/[^ ]+/lib/(libc|ld)" _ prefix)
-                (string-append out "/lib/" prefix))))))))
+                (string-append out "/lib/" prefix)))
+
+             #t)))))
     (inputs
      `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
        ("xz"  ,(search-bootstrap-binary "xz" (%current-system)))
@@ -518,12 +519,12 @@ $out/bin/guile --version~%"
 
          (mkdir out)
          (copy-file tarball "binaries.tar.xz")
-         (system* xz "-d" "binaries.tar.xz")
+         (invoke xz "-d" "binaries.tar.xz")
          (let ((builddir (getcwd))
                (bindir   (string-append out "/bin")))
            (with-directory-excursion out
-             (system* tar "xvf"
-                      (string-append builddir "/binaries.tar")))
+             (invoke tar "xvf"
+                     (string-append builddir "/binaries.tar")))
 
            (with-directory-excursion bindir
              (chmod "." #o755)
@@ -538,7 +539,8 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
                          out libc libc libc
                          ,(glibc-dynamic-linker))))
 
-             (chmod "gcc" #o555))))))
+             (chmod "gcc" #o555)
+             #t)))))
     (inputs
      `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
        ("xz"  ,(search-bootstrap-binary "xz" (%current-system)))
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 2e51544b05..6d33b917e1 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -188,9 +188,11 @@ files.")
              (patches (search-patches "cdparanoia-fpic.patch"))
              (modules '((guix build utils)))
              (snippet
-              ;; Make libraries respect LDFLAGS.
-              '(substitute* '("paranoia/Makefile.in" "interface/Makefile.in")
-                 (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname")))))
+              '(begin
+                 ;; Make libraries respect LDFLAGS.
+                 (substitute* '("paranoia/Makefile.in" "interface/Makefile.in")
+                   (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname"))
+                 #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; there is no check target
@@ -449,9 +451,11 @@ the data.")
                 "0qrcvn7227qaayjcd5rm7z0k5q89qfy5qkdgwr5pd7ih0va8rmpz"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Makefile"
-                  (("/usr/bin/install")
-                   "install")))))
+               '(begin
+                  (substitute* "Makefile"
+                    (("/usr/bin/install")
+                     "install"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
@@ -479,11 +483,13 @@ from an audio CD.")
                 "0f9bjs0phk23vry7gvh0cll9vl6kmc1y4fwwh762scfdvpbp3774"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Makefile"
-                  (("/usr/bin/install")
-                   "install")
-                  (("^etcdir = .*$")
-                   (string-append "etcdir = $(prefix)/etc\n"))))))
+               '(begin
+                  (substitute* "Makefile"
+                    (("/usr/bin/install")
+                     "install")
+                    (("^etcdir = .*$")
+                     (string-append "etcdir = $(prefix)/etc\n")))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 73d3efd9e1..baebcb9b77 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 ng0 <ng0@infotropique.org>
-;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
@@ -104,9 +104,11 @@ source code editors and IDEs.")
     (build-system gnu-build-system)
     (arguments '(#:phases
                  (modify-phases %standard-phases
-                   (add-before 'configure 'autoconf
-                     (lambda _
-                       (zero? (system* "autoreconf" "-vfi")))))))
+                   ;; XXX: The "bootstrap" phase detects the "bootstrap"
+                   ;; script, but fails to execute it, so we bootstrap
+                   ;; manually.
+                   (replace 'bootstrap
+                     (lambda _ (invoke "autoreconf" "-vfi"))))))
     (native-inputs
      `(("automake" ,automake)
        ("autoconf" ,autoconf)
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index bb7767670d..c8e76b8ab4 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -74,8 +74,10 @@
        (modules '((guix build utils)))
        (snippet
         ;; Fix compilation with glibc >= 2.26, which removed xlocale.h.
-        '(substitute* "c/expeditor.c"
-           (("xlocale\\.h") "locale.h")))))
+        '(begin
+           (substitute* "c/expeditor.c"
+             (("xlocale\\.h") "locale.h"))
+           #t))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index a559a4011d..9e5d42952f 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -147,9 +147,6 @@
                  (string-append "--docdir=" %output
                                 "/doc/hydra-" ,version)))
          #:phases (modify-phases %standard-phases
-                    (add-after
-                     'unpack 'bootstrap
-                     (lambda _ (zero? (system* "autoreconf" "-vfi"))))
                     (add-before
                      'check 'check-setup
                      (lambda _ (setenv "LOGNAME" "test.log")))
@@ -221,8 +218,6 @@ their dependencies.")
                (substitute* "build-aux/git-version-gen"
                  (("#!/bin/sh") (string-append "#!" (which "sh"))))
                #t))
-           (add-after 'patch-/bin/sh 'bootstrap
-             (lambda _ (zero? (system* "sh" "bootstrap"))))
            (add-after 'install 'wrap-program
              (lambda* (#:key inputs outputs #:allow-other-keys)
                ;; Wrap the 'cuirass' command to refer to the right modules.
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 15fdf9d66f..fa5a119819 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -414,7 +414,8 @@ functionality such as HTML output.")
            (let ((files (find-files "." ".*\\.cpp|.*\\.h")))
              (substitute* files
                (("#include ?\"rct/(.*.h)\"" all header)
-                (string-append "#include <rct/" header ">"))))))
+                (string-append "#include <rct/" header ">")))
+             #t)))
        (sha256
         (base32
          "0scjbp1z201q8njvrxqz7lk2m9b6k2rxd5q1shrng6532r7ndif2"))))
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index fe9fbebcc2..92766de6e7 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -90,12 +91,14 @@
              `(modify-phases ,phases
                 (replace 'build
                   (lambda _
-                    (zero? (system* "./build.sh"))))
+                    (invoke "./build.sh")
+                    #t))
                 (replace 'install
                   (lambda* (#:key outputs #:allow-other-keys)
                     (let* ((out (assoc-ref outputs "out"))
                            (bin (string-append out "/bin")))
-                      (install-file "make" bin)))))))))
+                      (install-file "make" bin)
+                      #t))))))))
      (native-inputs '())                          ; no need for 'pkg-config'
      (inputs %bootstrap-inputs))))
 
@@ -183,28 +186,12 @@
                     ,cf)))))
      (inputs %boot0-inputs))))
 
-;; gcc-4.9 was fixed late in the core-update cycle and so this GCC is only
-;; needed to prevent a full world rebuild, and can be replaced with gcc-4.9.
-(define gcc-for-libstdc++
-  (package (inherit gcc-4.9)
-    (version "4.9.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/gcc/gcc-"
-                                  version "/gcc-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"))
-              (patches (search-patches "gcc-arm-bug-71399.patch"
-                                       "gcc-libvtv-runpath.patch"
-                                       "gcc-fix-texi2pod.patch"))))))
-
 (define libstdc++-boot0
   ;; GCC's libcc1 is always built as a shared library (the top-level
   ;; 'Makefile.def' forcefully adds --enable-shared) and thus needs to refer
   ;; to libstdc++.so.  We cannot build libstdc++-5.3 because it relies on
   ;; C++14 features missing in some of our bootstrap compilers.
-  (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-for-libstdc++))))
+  (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-4.9))))
     (package
       (inherit lib)
       (name "libstdc++-boot0")
@@ -262,42 +249,40 @@
                                 "--(with-system-zlib|enable-languages.*)" <>)
                               ,flags)))
             ((#:phases phases)
-             `(alist-cons-after
-               'unpack 'unpack-gmp&co
-               (lambda* (#:key inputs #:allow-other-keys)
-                 (let ((gmp  (assoc-ref %build-inputs "gmp-source"))
-                       (mpfr (assoc-ref %build-inputs "mpfr-source"))
-                       (mpc  (assoc-ref %build-inputs "mpc-source")))
-
-                   ;; To reduce the set of pre-built bootstrap inputs, build
-                   ;; GMP & co. from GCC.
-                   (for-each (lambda (source)
-                               (or (zero? (system* "tar" "xvf" source))
-                                   (error "failed to unpack tarball"
-                                          source)))
-                             (list gmp mpfr mpc))
-
-                   ;; Create symlinks like `gmp' -> `gmp-x.y.z'.
-                   ,@(map (lambda (lib)
-                            ;; Drop trailing letters, as gmp-6.0.0a unpacks
-                            ;; into gmp-6.0.0.
-                            `(symlink ,(string-trim-right
-                                        (package-full-name lib)
-                                        char-set:letter)
-                                      ,(package-name lib)))
-                          (list gmp-6.0 mpfr mpc))))
-               (alist-cons-after
-                'install 'symlink-libgcc_eh
-                (lambda* (#:key outputs #:allow-other-keys)
-                  (let ((out (assoc-ref outputs "lib")))
-                    ;; Glibc wants to link against libgcc_eh, so provide
-                    ;; it.
-                    (with-directory-excursion
-                        (string-append out "/lib/gcc/"
-                                       ,(boot-triplet)
-                                       "/" ,(package-version gcc))
-                      (symlink "libgcc.a" "libgcc_eh.a"))))
-                ,phases))))))
+             `(modify-phases ,phases
+                (add-after 'unpack 'unpack-gmp&co
+                  (lambda* (#:key inputs #:allow-other-keys)
+                    (let ((gmp  (assoc-ref %build-inputs "gmp-source"))
+                          (mpfr (assoc-ref %build-inputs "mpfr-source"))
+                          (mpc  (assoc-ref %build-inputs "mpc-source")))
+
+                      ;; To reduce the set of pre-built bootstrap inputs, build
+                      ;; GMP & co. from GCC.
+                      (for-each (lambda (source)
+                                  (invoke "tar" "xvf" source))
+                                (list gmp mpfr mpc))
+
+                      ;; Create symlinks like `gmp' -> `gmp-x.y.z'.
+                      ,@(map (lambda (lib)
+                               ;; Drop trailing letters, as gmp-6.0.0a unpacks
+                               ;; into gmp-6.0.0.
+                               `(symlink ,(string-trim-right
+                                           (package-full-name lib)
+                                           char-set:letter)
+                                         ,(package-name lib)))
+                             (list gmp-6.0 mpfr mpc))
+                      #t)))
+                (add-after 'install 'symlink-libgcc_eh
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let ((out (assoc-ref outputs "lib")))
+                      ;; Glibc wants to link against libgcc_eh, so provide
+                      ;; it.
+                      (with-directory-excursion
+                          (string-append out "/lib/gcc/"
+                                         ,(boot-triplet)
+                                         "/" ,(package-version gcc))
+                        (symlink "libgcc.a" "libgcc_eh.a"))
+                      #t))))))))
 
      (inputs `(("gmp-source" ,(package-source gmp-6.0))
                ("mpfr-source" ,(package-source mpfr))
@@ -512,29 +497,29 @@ the bootstrap environment."
                             "--enable-obsolete-rpc")
                       ,flags))
             ((#:phases phases)
-             `(alist-cons-before
-               'configure 'pre-configure
-               (lambda* (#:key inputs #:allow-other-keys)
-                 ;; Don't clobber CPATH with the bootstrap libc.
-                 (setenv "NATIVE_CPATH" (getenv "CPATH"))
-                 (unsetenv "CPATH")
-
-                 ;; Tell 'libpthread' where to find 'libihash' on Hurd systems.
-                 ,@(if (hurd-triplet? (%current-system))
-                       `((substitute* "libpthread/Makefile"
-                           (("LDLIBS-pthread.so =.*")
-                            (string-append "LDLIBS-pthread.so = "
-                                           (assoc-ref %build-inputs "kernel-headers")
-                                           "/lib/libihash.a\n"))))
-                       '())
-
-                 ;; 'rpcgen' needs native libc headers to be built.
-                 (substitute* "sunrpc/Makefile"
-                   (("sunrpc-CPPFLAGS =.*" all)
-                    (string-append "CPATH = $(NATIVE_CPATH)\n"
-                                   "export CPATH\n"
-                                   all "\n"))))
-               ,phases)))))
+             `(modify-phases ,phases
+                (add-before 'configure 'pre-configure
+                  (lambda* (#:key inputs #:allow-other-keys)
+                    ;; Don't clobber CPATH with the bootstrap libc.
+                    (setenv "NATIVE_CPATH" (getenv "CPATH"))
+                    (unsetenv "CPATH")
+
+                    ;; Tell 'libpthread' where to find 'libihash' on Hurd systems.
+                    ,@(if (hurd-triplet? (%current-system))
+                          `((substitute* "libpthread/Makefile"
+                              (("LDLIBS-pthread.so =.*")
+                               (string-append "LDLIBS-pthread.so = "
+                                              (assoc-ref %build-inputs "kernel-headers")
+                                              "/lib/libihash.a\n"))))
+                          '())
+
+                    ;; 'rpcgen' needs native libc headers to be built.
+                    (substitute* "sunrpc/Makefile"
+                      (("sunrpc-CPPFLAGS =.*" all)
+                       (string-append "CPATH = $(NATIVE_CPATH)\n"
+                                      "export CPATH\n"
+                                      all "\n")))
+                    #t)))))))
      (propagated-inputs `(("kernel-headers" ,(kernel-headers-boot0))))
      (native-inputs
       `(("texinfo" ,texinfo-boot0)
@@ -652,7 +637,8 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
                   ;; Build only the tools.
                   (add-after 'unpack 'chdir
                              (lambda _
-                               (chdir "gettext-tools")))
+                               (chdir "gettext-tools")
+                               #t))
 
                   ;; Some test programs require pthreads, which we don't have.
                   (add-before 'configure 'no-test-programs
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 26decfaf84..c44882b23c 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
@@ -97,9 +97,8 @@
                ,@(if (%current-target-system)
                      `((setenv "CHOST" ,(%current-target-system)))
                      '())
-               (zero?
-                (system* "./configure"
-                         (string-append "--prefix=" out)))))))))
+               (invoke "./configure"
+                       (string-append "--prefix=" out))))))))
     (home-page "https://zlib.net/")
     (synopsis "Compression library")
     (description
@@ -201,14 +200,14 @@ adding and extracting files to/from a tar archive.")
 (define-public gzip
   (package
    (name "gzip")
-   (version "1.8")
+   (version "1.9")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gzip/gzip-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1lxv3p4iyx7833mlihkn5wfwmz4cys5nybwpz3dfawag8kn6f5zz"))))
+              "16h8g4acy7fgfxcjacr3wijjsnixwsfd2jhz3zwdi2qrzi262l5f"))))
    (build-system gnu-build-system)
    (synopsis "General file (de)compression (using lzw)")
    (arguments
@@ -251,33 +250,31 @@ file; as a result, it is often used in conjunction with \"tar\", resulting in
        (modify-phases %standard-phases
          (replace 'configure
            (lambda* (#:key target #:allow-other-keys)
-             (if ,(%current-target-system)
-                 ;; Cross-compilation: use the cross tools.
-                 (substitute* (find-files "." "Makefile")
-                   (("CC=.*$")
-                    (string-append "CC = " target "-gcc\n"))
-                   (("AR=.*$")
-                    (string-append "AR = " target "-ar\n"))
-                   (("RANLIB=.*$")
-                    (string-append "RANLIB = " target "-ranlib\n"))
-                   (("^all:(.*)test" _ prerequisites)
-                    ;; Remove 'all' -> 'test' dependency.
-                    (string-append "all:" prerequisites "\n")))
-                 #t)))
+             (when ,(%current-target-system)
+               ;; Cross-compilation: use the cross tools.
+               (substitute* (find-files "." "Makefile")
+                 (("CC=.*$")
+                  (string-append "CC = " target "-gcc\n"))
+                 (("AR=.*$")
+                  (string-append "AR = " target "-ar\n"))
+                 (("RANLIB=.*$")
+                  (string-append "RANLIB = " target "-ranlib\n"))
+                 (("^all:(.*)test" _ prerequisites)
+                  ;; Remove 'all' -> 'test' dependency.
+                  (string-append "all:" prerequisites "\n"))))
+             #t))
          (add-before 'build 'build-shared-lib
            (lambda* (#:key inputs #:allow-other-keys)
              (patch-makefile-SHELL "Makefile-libbz2_so")
-             (zero? (system* "make" "-f" "Makefile-libbz2_so"))))
+             (invoke "make" "-f" "Makefile-libbz2_so")))
          (add-after 'install 'install-shared-lib
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out    (assoc-ref outputs "out"))
                     (libdir (string-append out "/lib")))
                (for-each (lambda (file)
-                           (let ((base (basename file)))
-                             (format #t "installing `~a' to `~a'~%"
-                                     base libdir)
-                             (copy-file file
-                                        (string-append libdir "/" base))))
+                           (format #t "installing `~a' to `~a'~%"
+                                   (basename file) libdir)
+                           (install-file file libdir))
                          (find-files "." "^libbz2\\.so")))
              #t))
          (add-after 'install-shared-lib 'patch-scripts
@@ -476,14 +473,14 @@ some compression ratio).")
 (define-public lzip
   (package
     (name "lzip")
-    (version "1.19")
+    (version "1.20")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah/lzip/lzip-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1abbch762gv8rjr579q3qyyk6c80plklbv2mw4x0vg71dgsw9bgz"))))
+               "0319q59kb8g324wnj7xzbr7vvlx5bcs13lr34j0zb3kqlyjq2fy9"))))
     (build-system gnu-build-system)
     (home-page "https://www.nongnu.org/lzip/lzip.html")
     (synopsis "Lossless data compressor based on the LZMA algorithm")
@@ -924,10 +921,11 @@ tarballs.")
                  (base32
                   "1qxxsasvwbbbh6dl3138y9h3fg0q2v7xdk5jjc690bdg7g1wrj6n"))
                 (modules '((guix build utils)))
-                (snippet
-                 ;; This is a recursive submodule that is unnecessary for this
-                 ;; package, so delete it.
-                 '(delete-file-recursively "brotli/terryfy"))))
+                (snippet '(begin
+                            ;; This is a recursive submodule that is
+                            ;; unnecessary for this package, so delete it.
+                            (delete-file-recursively "brotli/terryfy")
+                            #t))))
       (build-system gnu-build-system)
       (native-inputs
        `(("autoconf" ,autoconf)
@@ -986,7 +984,9 @@ respectively, based on the reference implementation from Google.")
        (file-name (string-append name "-" version ".tar.gz"))
        (snippet
         ;; This file isn't freely distributable and has no effect on building.
-        '(delete-file "xdelta3/draft-korn-vcdiff.txt"))))
+        '(begin
+           (delete-file "xdelta3/draft-korn-vcdiff.txt")
+           #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -1454,7 +1454,9 @@ handles the 7z format which features very high compression ratios.")
                 (modules '((guix build utils)))
                 (snippet
                  ;; Remove pre-compiled object.
-                 '(delete-file "gzstream.o"))))
+                 '(begin
+                    (delete-file "gzstream.o")
+                    #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -1491,7 +1493,9 @@ functionality in a C++ iostream.")
        (modules '((guix build utils)))
        (snippet
         ;; Delete irrelevant pre-compiled binaries.
-        '(for-each delete-file (find-files "." "\\.exe$")))))
+        '(begin
+           (for-each delete-file (find-files "." "\\.exe$"))
+           #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1710,14 +1714,11 @@ the actual decompression, the other input and output.")
                       (list "-f" "unix/Makefile"
                             (string-append "prefix=" out)
                             (string-append "MANDIR=" out "/share/man/man1")))
-       #:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (srfi srfi-1))
        #:phases
        (modify-phases %standard-phases
          (replace 'build
            (lambda* (#:key (make-flags '()) #:allow-other-keys)
-             (zero? (apply system* "make" "generic_gcc" make-flags))))
+             (apply invoke "make" "generic_gcc" make-flags)))
          (delete 'configure))))
     (home-page "http://www.info-zip.org/Zip.html")
     (synopsis "Compression and file packing utility")
@@ -1739,7 +1740,6 @@ Compression ratios of 2:1 to 3:1 are common for text files.")
 (define-public unzip
   (package (inherit zip)
     (name "unzip")
-    (replacement unzip/fixed)
     (version "6.0")
     (source
      (origin
@@ -1767,13 +1767,20 @@ Compression ratios of 2:1 to 3:1 are common for text files.")
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (delete 'configure)
+                  (add-after 'unpack 'fortify
+                    (lambda _
+                      ;; Mitigate CVE-2018-1000035, an exploitable buffer overflow.
+                      ;; This environment variable is recommended in 'unix/Makefile'
+                      ;; for passing flags to the C compiler.
+                      (setenv "LOCAL_UNZIP" "-D_FORTIFY_SOURCE=1")
+                      #t))
                   (replace 'build
                     (lambda* (#:key make-flags #:allow-other-keys)
-                      (zero? (apply system* "make"
-                                    `("-j" ,(number->string
-                                             (parallel-job-count))
-                                      ,@make-flags
-                                      "generic_gcc"))))))
+                      (apply invoke "make"
+                             `("-j" ,(number->string
+                                      (parallel-job-count))
+                               ,@make-flags
+                               "generic_gcc")))))
        #:make-flags (list "-f" "unix/Makefile"
                           (string-append "prefix=" %output)
                           (string-append "MANDIR=" %output "/share/man/man1"))))
@@ -1790,20 +1797,6 @@ recreates the stored directory structure by default.")
     (license (license:non-copyleft "file://LICENSE"
                                    "See LICENSE in the distribution."))))
 
-(define unzip/fixed
-  (package/inherit unzip
-    (arguments
-      (substitute-keyword-arguments (package-arguments unzip)
-        ((#:phases phases)
-          `(modify-phases ,phases
-             (add-after 'unpack 'fortify
-               (lambda _
-                 ;; Mitigate CVE-2018-1000035, an exploitable buffer overflow.
-                 ;; This environment variable is recommended in 'unix/Makefile'
-                 ;; for passing flags to the C compiler.
-                 (setenv "LOCAL_UNZIP" "-D_FORTIFY_SOURCE=1")
-                 #t))))))))
-
 (define-public zziplib
   (package
     (name "zziplib")
diff --git a/gnu/packages/compton.scm b/gnu/packages/compton.scm
index 323807091a..dec9a94eba 100644
--- a/gnu/packages/compton.scm
+++ b/gnu/packages/compton.scm
@@ -67,7 +67,7 @@
          ("libdrm" ,libdrm)
          ("pkg-config" ,pkg-config)
          ("python" ,python)
-         ("xproto" ,xproto)))
+         ("xorgproto" ,xorgproto)))
       (arguments
        `(#:make-flags (list
                        "CC=gcc"
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 0f5997951c..bbd779ae4e 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -1,8 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -181,8 +182,10 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
 (define (cross-gcc-snippet target)
   "Return GCC snippet needed for TARGET."
   (cond ((target-mingw? target)
-         '(copy-recursively "libstdc++-v3/config/os/mingw32-w64"
-                            "libstdc++-v3/config/os/newlib"))
+         '(begin
+            (copy-recursively "libstdc++-v3/config/os/mingw32-w64"
+                              "libstdc++-v3/config/os/newlib")
+            #t))
         (else #f)))
 
 (define* (cross-gcc target
@@ -291,8 +294,8 @@ target that libc."
               (setenv "ARCH" ,(system->linux-architecture target))
               (format #t "`ARCH' set to `~a' (cross compiling)~%" (getenv "ARCH"))
 
-              (and (zero? (system* "make" ,(system->defconfig target)))
-                   (zero? (system* "make" "mrproper" "headers_check"))))
+              (invoke "make" ,(system->defconfig target))
+              (invoke "make" "mrproper" "headers_check"))
             ,phases))))
       (native-inputs `(("cross-gcc" ,xgcc)
                        ("cross-binutils" ,xbinutils)
@@ -314,14 +317,14 @@ target that libc."
        `(#:modules ((guix build gnu-build-system)
                     (guix build utils)
                     (srfi srfi-26))
-         #:phases (alist-cons-before
-                   'configure 'set-cross-headers-path
-                   (lambda* (#:key inputs #:allow-other-keys)
-                     (let* ((mach (assoc-ref inputs "cross-gnumach-headers"))
-                            (cpath (string-append mach "/include")))
-                       (for-each (cut setenv <> cpath)
-                                 ',%gcc-cross-include-paths)))
-                   %standard-phases)
+         #:phases (modify-phases %standard-phases
+                    (add-before 'configure 'set-cross-headers-path
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (let* ((mach (assoc-ref inputs "cross-gnumach-headers"))
+                               (cpath (string-append mach "/include")))
+                          (for-each (cut setenv <> cpath)
+                                    ',%gcc-cross-include-paths)
+                          #t))))
          #:configure-flags (list ,(string-append "--target=" target))
          ,@(package-arguments mig)))
 
@@ -352,16 +355,16 @@ target that libc."
                         (srfi srfi-26))
              ,@(package-arguments glibc/hurd-headers))
          ((#:phases phases)
-          `(alist-cons-before
-            'pre-configure 'set-cross-headers-path
-            (lambda* (#:key inputs #:allow-other-keys)
-              (let* ((mach (assoc-ref inputs "gnumach-headers"))
-                     (hurd (assoc-ref inputs "hurd-headers"))
-                     (cpath (string-append mach "/include:"
-                                           hurd "/include")))
-                (for-each (cut setenv <> cpath)
-                          ',%gcc-cross-include-paths)))
-            ,phases))))
+          `(modify-phases ,phases
+             (add-before 'pre-configure 'set-cross-headers-path
+               (lambda* (#:key inputs #:allow-other-keys)
+                 (let* ((mach (assoc-ref inputs "gnumach-headers"))
+                        (hurd (assoc-ref inputs "hurd-headers"))
+                        (cpath (string-append mach "/include:"
+                                              hurd "/include")))
+                   (for-each (cut setenv <> cpath)
+                             ',%gcc-cross-include-paths)
+                   #t)))))))
 
       (propagated-inputs `(("gnumach-headers" ,xgnumach-headers)
                            ("hurd-headers" ,xhurd-headers)))
@@ -382,14 +385,14 @@ target that libc."
                       (srfi srfi-26))
            ,@(package-arguments hurd-minimal))
          ((#:phases phases)
-          `(alist-cons-before
-            'configure 'set-cross-headers-path
-            (lambda* (#:key inputs #:allow-other-keys)
-              (let* ((glibc-headers (assoc-ref inputs "cross-glibc-hurd-headers"))
-                    (cpath (string-append glibc-headers "/include")))
-                (for-each (cut setenv <> cpath)
-                          ',%gcc-cross-include-paths)))
-            ,phases))))
+          `(modify-phases ,phases
+             (add-before 'configure 'set-cross-headers-path
+               (lambda* (#:key inputs #:allow-other-keys)
+                 (let* ((glibc-headers (assoc-ref inputs "cross-glibc-hurd-headers"))
+                        (cpath (string-append glibc-headers "/include")))
+                   (for-each (cut setenv <> cpath)
+                             ',%gcc-cross-include-paths)
+                   #t)))))))
 
       (inputs `(("cross-glibc-hurd-headers" ,xglibc/hurd-headers)))
 
@@ -456,17 +459,16 @@ XBINUTILS and the cross tool chain."
               `(cons ,(string-append "--host=" target)
                    ,flags))
              ((#:phases phases)
-              `(alist-cons-before
-                'configure 'set-cross-kernel-headers-path
-                (lambda* (#:key inputs #:allow-other-keys)
-                  (let* ((kernel (assoc-ref inputs "kernel-headers"))
-                         (cpath (string-append kernel "/include")))
-                    (for-each (cut setenv <> cpath)
-                              ',%gcc-cross-include-paths)
-                    (setenv "CROSS_LIBRARY_PATH"
-                            (string-append kernel "/lib")) ;for Hurd's libihash
-                    #t))
-                ,phases))))
+              `(modify-phases ,phases
+                 (add-before 'configure 'set-cross-kernel-headers-path
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (let* ((kernel (assoc-ref inputs "kernel-headers"))
+                            (cpath (string-append kernel "/include")))
+                       (for-each (cut setenv <> cpath)
+                                 ',%gcc-cross-include-paths)
+                       (setenv "CROSS_LIBRARY_PATH"
+                               (string-append kernel "/lib")) ; for Hurd's libihash
+                       #t)))))))
 
           ;; Shadow the native "kernel-headers" because glibc's recipe expects the
           ;; "kernel-headers" input to point to the right thing.
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 84a3b7876f..99a3b78b05 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -181,7 +181,8 @@ OpenBSD tool of the same name.")
            (substitute* "src/crypto.cpp"
              (("argon2/argon2.h") "argon2.h"))
            (substitute* "configure.ac"
-             (("src/argon2/Makefile") ""))))
+             (("src/argon2/Makefile") ""))
+           #t))
        (sha256
         (base32
          "09yvkmbqbym3b5md4n96qc1s9sf2n8ji404hagih45rmsj49599x"))))
@@ -226,9 +227,11 @@ communication.")
          "1906254dg5hwljh0h4gyrw09ms3b57dlhjfzhfzffv50yzpkl837"))
        (modules '((guix build utils)))
        ;; Remove bundled dependencies in favour of proper inputs.
-       (snippet '(for-each delete-file-recursively
-                           (find-files "internal" "^tinyxml2-[0-9]"
-                                       #:directories? #t)))))
+       (snippet '(begin
+                   (for-each delete-file-recursively
+                             (find-files "internal" "^tinyxml2-[0-9]"
+                                         #:directories? #t))
+                   #t))))
     (build-system cmake-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -270,8 +273,10 @@ the wrong hands.")
          "1dmgjcf7mnwc6h72xkvpaqpzxw8vmlnsmzz0s27pg0giwzm3sp0i"))
        (modules '((guix build utils)))
        ;; Create relative symbolic links instead of absolute ones to /lib/*
-       (snippet '(substitute* "Makefile" (("\\$\\(LNS\\) \\$\\(LIBDIR\\)/")
-                                          "$(LNS) ")))))
+       (snippet '(begin
+                   (substitute* "Makefile" (("\\$\\(LNS\\) \\$\\(LIBDIR\\)/")
+                                            "$(LNS) "))
+                   #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -646,12 +651,7 @@ data on your platform, so the seed itself will be as random as possible.
                ;; fat only checks for Intel optimisations
                '("--enable-fat")
                '())
-           "--disable-native") ; don't optimise at build time.
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'bootstrap
-             (lambda _
-               (invoke "sh" "autogen.sh"))))))
+           "--disable-native")))                 ;don't optimise at build time
       (home-page "https://blake2.net/")
       (synopsis "Library implementing the BLAKE2 family of hash functions")
       (description
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 89c58f864b..741f97adf3 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -50,7 +50,7 @@
 (define-public cups-filters
   (package
     (name "cups-filters")
-    (version "1.17.9")
+    (version "1.20.1")
     (source(origin
               (method url-fetch)
               (uri
@@ -58,7 +58,7 @@
                               "cups-filters-" version ".tar.xz"))
               (sha256
                (base32
-                "0i7mvvnq7ayhxn1ajci8h7l3cijzwr9d50p58h0rbsh9hf63zblq"))
+                "0qix1whz5n4ijnl6d44f1v8nzkpv99wqjyrby8vx6xnpskw5hsxk"))
               (modules '((guix build utils)))
               (snippet
                ;; install backends, banners and filters to cups-filters output
@@ -79,7 +79,8 @@
                   ;; output directory, not CUPS's prefix.
                   (substitute* "configure"
                     (("\\{CUPS_DATADIR\\}/data")
-                     "{prefix}/share/cups/data"))))))
+                     "{prefix}/share/cups/data"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags (list (string-append "PREFIX=" %output))
@@ -197,7 +198,8 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
            (lambda _
              (substitute* "Makedefs.in"
                (("INITDIR.*=.*@INITDIR@") "INITDIR = @prefix@/@INITDIR@")
-               (("/bin/sh") (which "sh")))))
+               (("/bin/sh") (which "sh")))
+             #t))
          ;; Make the compressed manpages writable so that the
          ;; reset-gzip-timestamps phase does not error out.
          (add-before 'reset-gzip-timestamps 'make-manpages-writable
@@ -205,12 +207,14 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
              (let* ((out (assoc-ref outputs "out"))
                     (man (string-append out "/share/man")))
                (for-each (lambda (file) (chmod file #o644))
-                         (find-files man "\\.gz")))))
+                         (find-files man "\\.gz"))
+               #t)))
          (add-before 'build 'patch-tests
            (lambda _
              (substitute* "test/ippserver.c"
                (("#  else /\\* HAVE_AVAHI \\*/")
-                "#elif defined(HAVE_AVAHI)")))))))
+                "#elif defined(HAVE_AVAHI)"))
+             #t)))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
@@ -248,7 +252,8 @@ device-specific programs to convert and print many types of files.")
            (lambda _
              (substitute* "Makedefs.in"
                (("INITDIR.*=.*@INITDIR@") "INITDIR = @prefix@/@INITDIR@")
-               (("/bin/sh") (which "sh")))))
+               (("/bin/sh") (which "sh")))
+             #t))
          (add-before 'check 'patch-tests
            (lambda _
              (let ((filters (assoc-ref %build-inputs "cups-filters"))
@@ -306,7 +311,8 @@ device-specific programs to convert and print many types of files.")
                  (("cupsFileFind\\(\"cat\", \"/bin\"")
                   (string-append "cupsFileFind(\"cat\", \"" catpath "\""))
                  (("cupsFileFind\\(\"cat\", \"/bin:/usr/bin\"")
-                  (string-append "cupsFileFind(\"cat\", \"" catpath "\""))))))
+                  (string-append "cupsFileFind(\"cat\", \"" catpath "\"")))
+               #t)))
          ;; Make the compressed manpages writable so that the
          ;; reset-gzip-timestamps phase does not error out.
          (add-before 'reset-gzip-timestamps 'make-manpages-writable
@@ -314,7 +320,8 @@ device-specific programs to convert and print many types of files.")
              (let* ((out (assoc-ref outputs "out"))
                     (man (string-append out "/share/man")))
                (for-each (lambda (file) (chmod file #o644))
-                         (find-files man "\\.gz")))))
+                         (find-files man "\\.gz"))
+               #t)))
          (add-after 'install 'install-cups-filters-symlinks
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out"))
@@ -360,7 +367,9 @@ device-specific programs to convert and print many types of files.")
                (let ((data "/share/cups/data"))
                  (delete-file-recursively (string-append out data))
                  (symlink (string-append cups-filters data)
-                          (string-append out data)))))))))
+                          (string-append out data)))
+
+               #t))))))
     (inputs
      `(("avahi" ,avahi)
        ("gnutls" ,gnutls)
@@ -381,8 +390,10 @@ device-specific programs to convert and print many types of files.")
               (modules '((guix build utils)))
               (snippet
                ;; Fix type mismatch.
-               '(substitute* "prnt/hpcups/genPCLm.cpp"
-                  (("boolean") "bool")))))
+               '(begin
+                  (substitute* "prnt/hpcups/genPCLm.cpp"
+                    (("boolean") "bool"))
+                  #t))))
     (build-system gnu-build-system)
     (home-page "http://hplipopensource.com/")
     (synopsis "HP Printer Drivers")
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index fbf177d9da..bc35714595 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,20 +42,20 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages ssh)
-  #:use-module (gnu packages tls))
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web))
 
 (define-public curl
   (package
    (name "curl")
-   (version "7.57.0")
-   (replacement curl-7.59.0)
+   (version "7.59.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://curl.haxx.se/download/curl-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0y3qbjjcxhcvm1yawp3spfssjbskv0g6gyzld6ckif5pf8ygvxpm"))))
+              "1z310hrjm2vmbcpkyp81dcmj9rk127zkjyawpy2pah0nz6yslkp4"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "doc"))                             ;1.2 MiB of man3 pages
@@ -64,6 +64,7 @@
              ("libidn" ,libidn)
              ("libssh2" ,libssh2)
              ("openldap" ,openldap)
+             ("nghttp2" ,nghttp2)
              ("zlib" ,zlib)))
    (native-inputs
      `(("perl" ,perl)
@@ -137,19 +138,6 @@ tunneling, and so on.")
                                   "See COPYING in the distribution."))
    (home-page "https://curl.haxx.se/")))
 
-(define-public curl-7.59.0
-  (package
-    (inherit curl)
-    (version "7.59.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://curl.haxx.se/download/curl-"
-                            version ".tar.xz"))
-        (sha256
-         (base32
-          "1z310hrjm2vmbcpkyp81dcmj9rk127zkjyawpy2pah0nz6yslkp4"))))))
-
 (define-public kurly
   (package
     (name "kurly")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index bcf1864775..716c75d7f8 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013, 2017 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org>
@@ -162,14 +162,14 @@ either single machines or networked clusters.")
 (define-public gdbm
   (package
     (name "gdbm")
-    (version "1.13")
+    (version "1.14.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/gdbm/gdbm-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0lx201q20dvc70f8a3c9s7s18z15inlxvbffph97ngvrgnyjq9cx"))))
+                "0pxwz3jlwvglq2mrbxvrjgr8pa0aj73p3v9sxmdlj570zw0gzknd"))))
     (arguments `(#:configure-flags '("--enable-libgdbm-compat")))
     (build-system gnu-build-system)
     (home-page "http://www.gnu.org.ua/software/gdbm")
@@ -438,7 +438,8 @@ applications.")
                                 (string-append "src/third_party/" dir)))
                             '("pcre-8.41" "scons-2.5.0" "snappy-1.1.3"
                               "valgrind-3.11.0" "wiredtiger"
-                              "yaml-cpp-0.5.3" "zlib-1.2.8"))))
+                              "yaml-cpp-0.5.3" "zlib-1.2.8"))
+                  #t))
               (patches
                (list
                 (search-patch "mongodb-support-unknown-linux-distributions.patch")))))
@@ -1006,7 +1007,7 @@ for example from a shell script.")
 (define-public sqlite
   (package
    (name "sqlite")
-   (version "3.21.0")
+   (version "3.22.0")
    (source (origin
             (method url-fetch)
             (uri (let ((numeric-version
@@ -1018,11 +1019,11 @@ for example from a shell script.")
                                             (map (cut string-pad <> 2 #\0)
                                                  other-digits))
                                            6 #\0))))))
-                   (string-append "https://sqlite.org/2017/sqlite-autoconf-"
+                   (string-append "https://sqlite.org/2018/sqlite-autoconf-"
                                   numeric-version ".tar.gz")))
             (sha256
              (base32
-              "1qxvzdjwzw6k0kqjfabj86rnq87xdbwbca7laxxdhnh0fmkm3pfp"))))
+              "04n6hnw2g818d7r92cp2608kd5mhzyysy83k29kbq1mp709an918"))))
    (build-system gnu-build-system)
    (inputs `(("readline" ,readline)))
    (arguments
@@ -1627,12 +1628,7 @@ trees (LSM), for sustained throughput under random insert workloads.")
        #:configure-flags
        (list (string-append "--with-libwiredtiger-prefix="
                             (assoc-ref %build-inputs "wiredtiger")))
-       #:make-flags '("GUILE_AUTO_COMPILE=0")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (invoke "sh" "bootstrap"))))))
+       #:make-flags '("GUILE_AUTO_COMPILE=0")))
     ;; TODO: Remove microkanren.scm when we have a separate package
     ;; for it.
     (native-inputs
@@ -1940,10 +1936,12 @@ etc., and an SQL engine for performing simple SQL queries.")
               (modules '((guix build utils)))
               (snippet
                ;; Delete bundled lmdb source files.
-               '(for-each delete-file (list "lib/lmdb.h"
-                                            "lib/mdb.c"
-                                            "lib/midl.c"
-                                            "lib/midl.h")))))
+               '(begin
+                  (for-each delete-file (list "lib/lmdb.h"
+                                              "lib/mdb.c"
+                                              "lib/midl.c"
+                                              "lib/midl.h"))
+                  #t))))
     (build-system python-build-system)
     (inputs
      `(("lmdb" ,lmdb)))
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 112c656ff8..1f238637a4 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -299,10 +299,7 @@ down the road.")
                             (which "sh"))))))
              (add-before 'configure 'repack-make
                (lambda _
-                 (zero? (system* "tar" "cJf" "./make.tar.xz" ,make-dir))))
-             (add-after 'unpack 'bootstrap
-               (lambda _
-                 (zero? (system* "autoreconf" "-vfi"))))))))
+                 (zero? (system* "tar" "cJf" "./make.tar.xz" ,make-dir))))))))
       (home-page "https://github.com/losalamos/stress-make")
       (synopsis "Expose race conditions in Makefiles")
       (description
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index bd61784ebd..78f3eff423 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -176,7 +176,9 @@ high-volume and high-reliability applications. The name BIND stands for
               (snippet
                ;; Delete bundled libltdl. XXX: This package also bundles
                ;; a modified libevent that cannot currently be removed.
-               '(delete-file-recursively "libltdl"))))
+               '(begin
+                  (delete-file-recursively "libltdl")
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index d56dc49198..3034bc5493 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -236,19 +236,19 @@ by no means limited to these applications.)  This package provides XML DTDs.")
        #:use-setuptools? #f
        #:tests? #f                      ;no 'test' command
        #:phases
-       (alist-cons-after
-        'wrap 'set-path
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out")))
-            ;; dblatex executes helper programs at runtime.
-            (wrap-program (string-append out "/bin/dblatex")
-                          `("PATH" ":" prefix
-                            ,(map (lambda (input)
-                                    (string-append (assoc-ref inputs input)
-                                                   "/bin"))
-                                  '("libxslt" "texlive"
-                                    "imagemagick" "inkscape"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'wrap 'set-path
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; dblatex executes helper programs at runtime.
+               (wrap-program (string-append out "/bin/dblatex")
+                 `("PATH" ":" prefix
+                   ,(map (lambda (input)
+                           (string-append (assoc-ref inputs input)
+                                          "/bin"))
+                         '("libxslt" "texlive"
+                           "imagemagick" "inkscape"))))
+               #t))))))
     (home-page "http://dblatex.sourceforge.net")
     (synopsis "DocBook to LaTeX Publishing")
     (description
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index eebd38243b..cde689c63d 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
@@ -59,9 +59,6 @@
      `(#:tests? #f                     ; no 'check' target
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (invoke "autoconf")))
          ;; Some XML-related binaries are required for asciidoc's proper usage.
          ;; Without these, asciidoc fails when parsing XML documents, either
          ;; reporting a missing "xmllint" binary or, when passed the
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 576f649c2d..0bac25c4e6 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -127,14 +127,14 @@ Executable and Linkable Format (@dfn{ELF}).  This includes @command{ld},
          '()))
     (arguments
      (if (string-prefix? "arm" (or (%current-target-system) (%current-system)))
-         `(#:phases (alist-cons-after
-                     'unpack 'patch/rework-for-arm
-                     (lambda* (#:key inputs #:allow-other-keys)
-                       (let ((patch-file
-                              (assoc-ref inputs "patch/rework-for-arm")))
-                         (zero? (system* "patch" "--force" "-p1"
-                                         "--input" patch-file))))
-                     %standard-phases))
+         `(#:phases (modify-phases %standard-phases
+                      (add-after 'unpack 'patch/rework-for-arm
+                        (lambda* (#:key inputs #:allow-other-keys)
+                          (let ((patch-file
+                                 (assoc-ref inputs "patch/rework-for-arm")))
+                            (invoke "patch" "--force" "-p1"
+                                    "--input" patch-file)
+                            #t)))))
          '()))
 
     (home-page "https://nixos.org/patchelf.html")
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index da366441bd..186c1ae9f5 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -148,7 +148,8 @@
                      (list line
                            "\"~/.guix-profile/include\""
                            "\"/var/guix/profiles/system/profile/include\"")
-                     " ")))))))
+                     " ")))
+                 #t))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:phases
@@ -837,21 +838,23 @@ provides an optional IDE-like error list.")
                 "1b0kalhn81dir26jgsma30i5bbly7d3s1ngqpf01zjjpr7lw5v0h"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Makefile"
-                  (("/usr/bin/install-info")
-                   ;; No need to use 'install-info' since it would create a
-                   ;; useless 'dir' file.
-                   "true")
-                  (("^INFODIR=.*")
-                   ;; Install Info files to $out/share/info, not $out/info.
-                   "INFODIR := $(PREFIX)/share/info\n")
-                  (("/site-lisp/emms")
-                   ;; Install directly in share/emacs/site-lisp, not in a
-                   ;; sub-directory.
-                   "/site-lisp")
-                  (("^all: (.*)\n" _ rest)
-                   ;; Build 'emms-print-metadata'.
-                   (string-append "all: " rest " emms-print-metadata\n"))))))
+               '(begin
+                  (substitute* "Makefile"
+                    (("/usr/bin/install-info")
+                     ;; No need to use 'install-info' since it would create a
+                     ;; useless 'dir' file.
+                     "true")
+                    (("^INFODIR=.*")
+                     ;; Install Info files to $out/share/info, not $out/info.
+                     "INFODIR := $(PREFIX)/share/info\n")
+                    (("/site-lisp/emms")
+                     ;; Install directly in share/emacs/site-lisp, not in a
+                     ;; sub-directory.
+                     "/site-lisp")
+                    (("^all: (.*)\n" _ rest)
+                     ;; Build 'emms-print-metadata'.
+                     (string-append "all: " rest " emms-print-metadata\n")))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -1011,9 +1014,11 @@ within a specified width.  It is useful for displaying long track titles.")
               (modules '((guix build utils)))
               (snippet
                ;; We don't want to build and install the PDF.
-               '(substitute* "doc/Makefile.in"
-                  (("^doc_DATA = .*$")
-                   "doc_DATA =\n")))))
+               '(begin
+                  (substitute* "doc/Makefile.in"
+                    (("^doc_DATA = .*$")
+                     "doc_DATA =\n"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -2614,7 +2619,8 @@ to a key in your preferred mode.")
         '(begin
            (for-each delete-file '("dot-emacs.el" "Makefile"))
            (install-file "6.945-config/mit-scheme-doc.el" ".")
-           (delete-file-recursively "6.945-config")))
+           (delete-file-recursively "6.945-config")
+           #t))
        (file-name (string-append name "-" version ".tar.bz2"))
        (method url-fetch)
        (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/"
@@ -3739,7 +3745,8 @@ programming language.")
                   (substitute* "lisp/Makefile"
                     (("^\tjulia-mode.elc\\\\\n") "")
                     (("^all: \\$\\(ELC\\) ess-custom.el julia-mode.el")
-                     "all: $(ELC) ess-custom.el"))))))
+                     "all: $(ELC) ess-custom.el"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      (let ((base-directory "/share/emacs/site-lisp/guix.d/ess"))
@@ -4985,7 +4992,8 @@ mode-line.")
                   ;; warnings about a missing directory.
                   (substitute* "yasnippet.el"
                     (("^ +'yas-installed-snippets-dir\\)\\)\n")
-                     "))\n"))))))
+                     "))\n"))
+                  #t))))
     (build-system emacs-build-system)
     (home-page "https://github.com/joaotavora/yasnippet")
     (synopsis "Yet another snippet extension for Emacs")
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9d8e7fa1ae..9e65d5f46b 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -410,11 +410,13 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
               (modules '((guix build utils)))
               (snippet
                ;; Make sure we don't use the bundled software.
-               '(for-each
-                 (lambda (subdir)
-                   (let ((lib-subdir (string-append "src/third-party/" subdir)))
-                     (delete-file-recursively lib-subdir)))
-                 '("libpng" "lzma" "sqlite3" "zlib")))))
+               '(begin
+                  (for-each
+                   (lambda (subdir)
+                     (let ((lib-subdir (string-append "src/third-party/" subdir)))
+                       (delete-file-recursively lib-subdir)))
+                   '("libpng" "lzma" "sqlite3" "zlib"))
+                  #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ;no "test" target
@@ -1010,7 +1012,8 @@ towards a working Mupen64Plus for casual users.")
                   ;; Use system zlib.
                   (delete-file-recursively "source/zlib")
                   (substitute* "source/core/NstZlib.cpp"
-                    (("#include \"../zlib/zlib.h\"") "#include <zlib.h>"))))))
+                    (("#include \"../zlib/zlib.h\"") "#include <zlib.h>"))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 4d45aab772..c236d8cd67 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -329,7 +329,9 @@ featuring various improvements and bug fixes.")))
                 "0x37vfp6k0d2z3gnig0hbicvi0jp8v267xjnn3z8jdllpiaa6p3k"))
               (snippet
                ;; Remove a non-free file.
-               '(delete-file "doc/psfig.sty"))
+               '(begin
+                  (delete-file "doc/psfig.sty")
+                  #t))
               (patches (search-patches "fastcap-mulSetup.patch"
                                        "fastcap-mulGlobal.patch"))))
     (build-system gnu-build-system)
@@ -592,7 +594,8 @@ as well as pick-place files.")
                     ;; Use #include <catch.hpp>.
                     (substitute* (find-files "." "\\.[ch]pp$")
                       (("catch/catch\\.hpp")
-                       "catch.hpp"))))))
+                       "catch.hpp"))
+                    #t))))
       (build-system cmake-build-system)
       (arguments
        `(;; Have the RUNPATH of libao.so point to $libdir, where libefsw.so
@@ -1152,7 +1155,8 @@ bindings for Python, Java, OCaml and more.")
                   (substitute* "libr/parse/p/Makefile"
                     (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) "))
                   (substitute* "libr/bin/p/Makefile"
-                    (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) "))))))
+                    (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) "))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f; tests require git and network access
@@ -1257,7 +1261,8 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
                     (("src/ciderlib/input/Makefile") "")
                     (("src/ciderlib/support/Makefile") "")
                     (("src/ciderlib/oned/Makefile") "")
-                    (("src/ciderlib/twod/Makefile") ""))))))
+                    (("src/ciderlib/twod/Makefile") ""))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(;; No tests for libngspice exist.
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index c04493a192..950a74f3c4 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -77,7 +77,6 @@
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("alsa-lib" ,alsa-lib)
-       ("compositeproto" ,compositeproto)
        ("curl" ,curl)
        ("ghostscript" ,ghostscript)
        ("giflib" ,giflib)
@@ -109,12 +108,10 @@
        ("openjpeg" ,openjpeg-1)
        ("poppler" ,poppler)
        ("printproto" ,printproto)
-       ("scrnsaverproto" ,scrnsaverproto)
        ("wayland-protocols" ,wayland-protocols)
-       ("xextproto" ,xextproto)
        ("xinput" ,xinput)
        ("xpr" ,xpr)
-       ("xproto" ,xproto)))
+       ("xorgproto" ,xorgproto)))
     (propagated-inputs
      ;; All these inputs are in package config files in section
      ;; Requires.private.
@@ -203,7 +200,8 @@ removable devices or support for multimedia.")
                                  "data/themes/Makefile.am"
                                  "data/themes/nyanology/Makefile.in"
                                  "data/themes/nyanology/Makefile.am")
-                    (("-fd \\$\\(top_srcdir\\)/data/fonts") ""))))))
+                    (("-fd \\$\\(top_srcdir\\)/data/fonts") ""))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index aa9e466ebb..4463a77d45 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -137,7 +137,8 @@ TrueType (TTF) files.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((conf-dir (string-append (assoc-ref outputs "out")
                                             "/share/fontconfig/conf.avail")))
-               (copy-recursively "fontconfig" conf-dir)))))))
+               (copy-recursively "fontconfig" conf-dir)
+               #t))))))
     (home-page "http://dejavu-fonts.org/")
     (synopsis "Vera font family derivate with additional characters")
     (description "DejaVu provides an expanded version of the Vera font family
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index a5e8c79371..22bdfe7a46 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -54,13 +54,13 @@
   (package
    (name "freetype")
    (version "2.8.1")
-   (replacement freetype/fixed)
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://savannah/freetype/freetype-"
                                 version ".tar.bz2"))
             (sha256 (base32
-                     "0y3xrimgp0k39gwq1vdi7b7wjy0z9fhwmzafisxqfardw015yhz5"))))
+                     "0y3xrimgp0k39gwq1vdi7b7wjy0z9fhwmzafisxqfardw015yhz5"))
+            (patches (search-patches "freetype-CVE-2018-6942.patch"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)))
@@ -79,13 +79,6 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
    (license license:freetype)           ; some files have other licenses
    (home-page "https://www.freetype.org/")))
 
-(define freetype/fixed
-  (package/inherit freetype
-                   (source
-                    (origin
-                      (inherit (package-source freetype))
-                      (patches (search-patches "freetype-CVE-2018-6942.patch"))))))
-
 (define-public ttfautohint
   (package
     (name "ttfautohint")
@@ -378,16 +371,15 @@ applications should be.")
 (define-public graphite2
   (package
    (name "graphite2")
-   (version "1.3.10")
+   (version "1.3.11")
    (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/silnrsi/graphite/releases/"
                            "download/" version "/" name "-" version ".tgz"))
-       (patches (search-patches "graphite2-ffloat-store.patch"))
        (sha256
         (base32
-         "1bm1rl2ww0m8rvmknh8fpajyz9xqv43qs9qrzf7xd5gaz6rf7zch"))))
+         "0z5dcgh8r3678awq6fb8igik7xmar5m6z9xxwpkkhradhk8jxfds"))))
    (build-system cmake-build-system)
    (native-inputs
     `(("python" ,python-2) ; because of "import imap" in tests
@@ -495,11 +487,6 @@ smooth contours with constant curvature at the spline joins.")
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)
                      ("libtool" ,libtool)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _ (zero? (system* "autoreconf" "-vi")))))))
     (synopsis "Unicode names and annotation list")
     (description
      "LibUniNamesList holds www.unicode.org Nameslist.txt data which can be
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 60c5f96a87..0a5568a016 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -131,8 +131,10 @@ For synthesis, the compiler generates netlists in the desired format.")
               (file-name (string-append name "-" version "-checkout.tar.gz"))
               (modules '((guix build utils)))
               (snippet
-                '(substitute* "Makefile"
-                   (("ABCREV = .*") "ABCREV = default\n")))))
+               '(begin
+                  (substitute* "Makefile"
+                    (("ABCREV = .*") "ABCREV = default\n"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 981303545a..1e2ad3b864 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com>
 ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
@@ -233,7 +233,8 @@ the freedesktop.org XDG Base Directory specification.")
                   (substitute* "Makefile.am"
                     ;; Avoid validation against DTD because the DTDs for
                     ;; both doctype 4.2 and 4.5 are needed.
-                    (("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid"))))))
+                    (("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ;FIXME: "make check" in the "po" directory fails.
@@ -431,8 +432,11 @@ Python.")
                (base32
                 "1f3sla6h0bw15fz8pjc67jhwj7pwmfdc7qlj42j5k9v116ycm07d"))))
     (build-system gnu-build-system)
+    ;; XXX These tests fail in the build environment.
     (arguments
-     `(#:parallel-tests? #f))
+     `(#:make-flags '("XFAIL_TESTS=display-test \
+queue-test socket-test protocol-logger-test compositor-introspection-test \
+sanity-test connection-test")))
     (native-inputs
      `(("doxygen" ,doxygen)
        ("graphviz" ,graphviz)
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index 4ad6bcbf1b..22e5c918ee 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -112,7 +112,8 @@ reliability in mind.")
                   ;; This is free software, avoid any confusion.
                   (substitute* (find-files "." "\\.c$")
                     (("a freeware program")
-                     "free software"))))))
+                     "free software"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -156,11 +157,6 @@ FTP browser, as well as non-interactive commands such as 'ncftpput' and
      `(("automake" ,automake)
        ("autoconf" ,autoconf)
        ("gettext" ,gettext-minimal)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
     (home-page "http://weex.sourceforge.net/")
     (synopsis "Non-interactive client for FTP synchronization")
     (description
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 03a70bea49..db13ac0eff 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Tomáš Čech <sleep_walker@suse.cz>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
@@ -958,11 +958,6 @@ painted with a mouse.")
         (base32
          "0w0pamjc3vj0jr718hysrw8x076fq6n9rd6wcb36sn2jd0lqvi98"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _ (zero? (system* "sh" "bootstrap")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index a03e58b0ad..c4e55d3ae1 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014, 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
-;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
@@ -188,11 +188,13 @@ settings to tweak as well.")
               (modules '((guix build utils)))
               (snippet
                ;; Import cmath header for the std::pow function.
-               '(for-each (lambda (file)
-                            (substitute* file
-                              (("#include <math.h>")
-                               "#include <cmath>")))
-                          (find-files "src")))))
+               '(begin
+                  (for-each (lambda (file)
+                              (substitute* file
+                                (("#include <math.h>")
+                                 "#include <cmath>")))
+                            (find-files "src"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
@@ -682,9 +684,11 @@ watch your CPU playing while enjoying a cup of tea!")
               "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
             (modules '((guix build utils)))
             (snippet
-             '(substitute* "src/version.c"
-                           (("__DATE__") "")
-                           (("__TIME__") "")))))
+             '(begin
+                (substitute* "src/version.c"
+                  (("__DATE__") "")
+                  (("__TIME__") ""))
+                #t))))
    (build-system gnu-build-system)
    (arguments
     '(#:configure-flags '("--disable-cpu-opt")
@@ -896,7 +900,9 @@ can be explored and changed freely.")
        (modules '((guix build utils)))
        (snippet
         ;; Unbundle fonts.
-        '(delete-file-recursively "fonts"))))
+        '(begin
+           (delete-file-recursively "fonts")
+           #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags '("CC=gcc")
@@ -952,15 +958,15 @@ that beneath its ruins lay buried an ancient evil.")
         ;; In the future, if someone tries to make a graphical variant of
         ;; this package, they can deal with that mess themselves. :)
         '(begin
-           (for-each
-            (lambda (subdir)
-              (let ((lib-subdir (string-append "lib/" subdir)))
-                (delete-file-recursively lib-subdir)))
-            '("fonts" "icons" "sounds" "tiles"))
+           (for-each (lambda (subdir)
+                       (let ((lib-subdir (string-append "lib/" subdir)))
+                         (delete-file-recursively lib-subdir)))
+                     '("fonts" "icons" "sounds" "tiles"))
            (substitute* "lib/Makefile"
              ;; And don't try to invoke makefiles in the directories we removed
              (("gamedata customize help screens fonts tiles sounds icons user")
-              "gamedata customize help screens user"))))))
+              "gamedata customize help screens user"))
+           #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                                 ;no check target
@@ -1281,11 +1287,13 @@ destroy, the better your score.  The person with the highest score wins.")
                ;; We do not provide `ncurses.h' within an `ncursesw'
                ;; sub-directory, so patch the source accordingly.  See
                ;; <http://bugs.gnu.org/19018>.
-               '(for-each (lambda (file)
-                            (substitute* file
-                              (("ncursesw/ncurses.h")
-                               "ncurses.h")))
-                          (find-files "." "configure$|\\.c$")))))
+               '(begin
+                  (for-each (lambda (file)
+                              (substitute* file
+                                (("ncursesw/ncurses.h")
+                                 "ncurses.h")))
+                            (find-files "." "configure$|\\.c$"))
+                  #t))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)
               ("perl" ,perl)))
@@ -1989,7 +1997,9 @@ world}, @uref{http://evolonline.org, Evol Online} and
              (modules '((guix build utils)))
              (snippet
               ;; The DOS port contains proprietary software.
-              '(delete-file-recursively "os/dos"))))
+              '(begin
+                 (delete-file-recursively "os/dos")
+                 #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f              ; no "check" target
@@ -2839,7 +2849,8 @@ safety of the Chromium vessel.")
            (substitute* "Makefile"
              ;; Do not rely on $(GPERF) being an absolute file name
              (("\\[ -x \\$\\(GPERF\\) \\]")
-              "$(GPERF) --version >/dev/null 2>&1"))))
+              "$(GPERF) --version >/dev/null 2>&1"))
+           #t))
        (patches (search-patches "tuxpaint-stamps-path.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -4050,14 +4061,13 @@ fight against their plot and save his fellow rabbits from slavery.")
        (modules '((guix build utils)))
        (snippet
         #~(begin
-            (for-each
-             (lambda (name)
-               (let* ((dir (string-append "binaries/data/mods/" name))
-                      (file (string-append dir "/" name ".zip"))
-                      (unzip #$(file-append unzip "/bin/unzip")))
-                 (system* unzip "-d" dir file)
-                 (delete-file file)))
-             '("mod" "public"))
+            (for-each (lambda (name)
+                        (let* ((dir (string-append "binaries/data/mods/" name))
+                               (file (string-append dir "/" name ".zip"))
+                               (unzip #$(file-append unzip "/bin/unzip")))
+                          (system* unzip "-d" dir file)
+                          (delete-file file)))
+                      '("mod" "public"))
             #t))))
     (build-system trivial-build-system)
     (native-inputs `(("tar" ,tar)
@@ -4292,10 +4302,12 @@ Crowther & Woods, its original authors, in 1995.  It has been known as
          "0v2qgdfpvdzd1bcbp9v8pfahj1bgczsq2d4xfhh5wg11jgjcwz03"))
        (modules '((guix build utils)))
        (snippet
-        '(substitute* '("src/music.h" "src/tSDL.h")
-           (("#elif defined(__FreeBSD__)" line)
-            (string-append
-             line " || defined(__GNUC__)"))))))
+        '(begin
+           (substitute* '("src/music.h" "src/tSDL.h")
+             (("#elif defined(__FreeBSD__)" line)
+              (string-append
+               line " || defined(__GNUC__)")))
+           #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("unzip" ,unzip)))
@@ -4634,8 +4646,6 @@ elements to achieve a simple goal in the most complex way possible.")
                                (string-append "PIONEER_DATA_DIR="
                                               %output "/share/games/pioneer"))
        #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'bootstrap
-                    (lambda _ (zero? (system* "sh" "bootstrap"))))
                   (add-before 'bootstrap 'fix-lua-check
                     (lambda _
                       (substitute* "configure.ac"
@@ -4779,7 +4789,8 @@ You can save humanity and get programming skills!")
                   (delete-file-recursively "bzip2")
                   (delete-file-recursively "game-music-emu")
                   (delete-file-recursively "jpeg-6b")
-                  (delete-file-recursively "zlib")))))
+                  (delete-file-recursively "zlib")
+                  #t))))
     (arguments
      '(#:tests? #f
        #:configure-flags
diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
index e318993ace..6b1d1af10b 100644
--- a/gnu/packages/gawk.scm
+++ b/gnu/packages/gawk.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,18 +30,16 @@
 (define-public gawk
   (package
    (name "gawk")
-   (version "4.1.4")
+   (version "4.2.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gawk/gawk-" version
                                 ".tar.xz"))
             (sha256
-             (base32 "0rn2mmjxm767zliqzd67j7h2ncjn4j0321c60y9fy3grs3i89qak"))))
+             (base32 "0lam2zf3n7ak4pig8w46lhx9hzx50kj2v2yj1616mm26wy2rf4fi"))))
    (build-system gnu-build-system)
    (arguments
-    `(#:parallel-tests? #f                ; test suite fails in parallel
-
-      #:phases (modify-phases %standard-phases
+    `(#:phases (modify-phases %standard-phases
                  (add-before 'configure 'set-shell-file-name
                    (lambda* (#:key inputs #:allow-other-keys)
                      ;; Refer to the right shell.
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 62b8968823..27f4b04d9a 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -200,131 +201,131 @@ where the OS part is overloaded to denote a specific ABI---into GCC
          #:tests? #f
 
          #:phases
-         (alist-cons-before
-          'configure 'pre-configure
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (let ((libdir ,(libdir))
-                  (libc   (assoc-ref inputs "libc")))
-              (when libc
-                ;; The following is not performed for `--without-headers'
-                ;; cross-compiler builds.
-
-                ;; Join multi-line definitions of GLIBC_DYNAMIC_LINKER* into a
-                ;; single line, to allow the next step to work properly.
-                (for-each
-                 (lambda (x)
-                   (substitute* (find-files "gcc/config"
-                                            "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
-                     (("(#define (GLIBC|GNU_USER)_DYNAMIC_LINKER.*)\\\\\n$" _ line)
-                      line)))
-                 '(1 2 3))
-
-                ;; Fix the dynamic linker's file name.
-                (substitute* (find-files "gcc/config"
-                                         "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
-                  (("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^ \t]*).*$"
-                    _ gnu-user suffix)
-                   (format #f "#define ~a_DYNAMIC_LINKER~a \"~a\"~%"
-                           gnu-user suffix
-                           (string-append libc ,(glibc-dynamic-linker)))))
-
-                ;; Tell where to find libstdc++, libc, and `?crt*.o', except
-                ;; `crt{begin,end}.o', which come with GCC.
-                (substitute* (find-files "gcc/config"
-                                         "^gnu-user.*\\.h$")
-                  (("#define GNU_USER_TARGET_LIB_SPEC (.*)$" _ suffix)
-                   ;; Help libgcc_s.so be found (see also below.)  Always use
-                   ;; '-lgcc_s' so that libgcc_s.so is always found by those
-                   ;; programs that use 'pthread_cancel' (glibc dlopens
-                   ;; libgcc_s.so when pthread_cancel support is needed, but
-                   ;; having it in the application's RUNPATH isn't enough; see
-                   ;; <http://sourceware.org/ml/libc-help/2013-11/msg00023.html>.)
-                   ;;
-                   ;; NOTE: The '-lgcc_s' added below needs to be removed in a
-                   ;; later phase of %gcc-static.  If you change the string
-                   ;; below, make sure to update the relevant code in
-                   ;; %gcc-static package as needed.
-                   (format #f "#define GNU_USER_TARGET_LIB_SPEC \
+         (modify-phases %standard-phases
+           (add-before 'configure 'pre-configure
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((libdir ,(libdir))
+                     (libc   (assoc-ref inputs "libc")))
+                 (when libc
+                       ;; The following is not performed for `--without-headers'
+                       ;; cross-compiler builds.
+
+                       ;; Join multi-line definitions of GLIBC_DYNAMIC_LINKER* into a
+                       ;; single line, to allow the next step to work properly.
+                       (for-each
+                        (lambda (x)
+                          (substitute* (find-files "gcc/config"
+                                                   "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
+                            (("(#define (GLIBC|GNU_USER)_DYNAMIC_LINKER.*)\\\\\n$" _ line)
+                             line)))
+                        '(1 2 3))
+
+                       ;; Fix the dynamic linker's file name.
+                       (substitute* (find-files "gcc/config"
+                                                "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
+                         (("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^ \t]*).*$"
+                           _ gnu-user suffix)
+                          (format #f "#define ~a_DYNAMIC_LINKER~a \"~a\"~%"
+                                  gnu-user suffix
+                                  (string-append libc ,(glibc-dynamic-linker)))))
+
+                       ;; Tell where to find libstdc++, libc, and `?crt*.o', except
+                       ;; `crt{begin,end}.o', which come with GCC.
+                       (substitute* (find-files "gcc/config"
+                                                "^gnu-user.*\\.h$")
+                         (("#define GNU_USER_TARGET_LIB_SPEC (.*)$" _ suffix)
+                          ;; Help libgcc_s.so be found (see also below.)  Always use
+                          ;; '-lgcc_s' so that libgcc_s.so is always found by those
+                          ;; programs that use 'pthread_cancel' (glibc dlopens
+                          ;; libgcc_s.so when pthread_cancel support is needed, but
+                          ;; having it in the application's RUNPATH isn't enough; see
+                          ;; <http://sourceware.org/ml/libc-help/2013-11/msg00023.html>.)
+                          ;;
+                          ;; NOTE: The '-lgcc_s' added below needs to be removed in a
+                          ;; later phase of %gcc-static.  If you change the string
+                          ;; below, make sure to update the relevant code in
+                          ;; %gcc-static package as needed.
+                          (format #f "#define GNU_USER_TARGET_LIB_SPEC \
 \"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
-                           libc libc libdir suffix))
-                  (("#define GNU_USER_TARGET_STARTFILE_SPEC.*$" line)
-                   (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
+                                  libc libc libdir suffix))
+                         (("#define GNU_USER_TARGET_STARTFILE_SPEC.*$" line)
+                          (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
 #define STANDARD_STARTFILE_PREFIX_2 \"\"
 ~a"
-                           libc line)))
-
-              ;; The rs6000 (a.k.a. powerpc) config in GCC does not use
-              ;; GNU_USER_* defines.  Do the above for this case.
-              (substitute*
-                  "gcc/config/rs6000/sysv4.h"
-                (("#define LIB_LINUX_SPEC (.*)$" _ suffix)
-                 (format #f "#define LIB_LINUX_SPEC \
+                                  libc line)))
+
+                       ;; The rs6000 (a.k.a. powerpc) config in GCC does not use
+                       ;; GNU_USER_* defines.  Do the above for this case.
+                       (substitute*
+                           "gcc/config/rs6000/sysv4.h"
+                         (("#define LIB_LINUX_SPEC (.*)$" _ suffix)
+                          (format #f "#define LIB_LINUX_SPEC \
 \"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
-                         libc libc libdir suffix))
-                (("#define	STARTFILE_LINUX_SPEC.*$" line)
-                 (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
+                                  libc libc libdir suffix))
+                         (("#define	STARTFILE_LINUX_SPEC.*$" line)
+                          (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
 #define STANDARD_STARTFILE_PREFIX_2 \"\"
 ~a"
-                         libc line))))
-
-              ;; Don't retain a dependency on the build-time sed.
-              (substitute* "fixincludes/fixincl.x"
-                (("static char const sed_cmd_z\\[\\] =.*;")
-                 "static char const sed_cmd_z[] = \"sed\";"))
-
-              ;; Aarch64 support didn't land in GCC until the 4.8 series.
-              (when (file-exists? "gcc/config/aarch64")
-                ;; Force Aarch64 libdir to be /lib and not /lib64
-                (substitute* "gcc/config/aarch64/t-aarch64-linux"
-                  (("lib64") "lib")))
-
-              (when (file-exists? "libbacktrace")
-                ;; GCC 4.8+ comes with libbacktrace.  By default it builds
-                ;; with -Werror, which fails with a -Wcast-qual error in glibc
-                ;; 2.21's stdlib-bsearch.h.  Remove -Werror.
-                (substitute* "libbacktrace/configure"
-                  (("WARN_FLAGS=(.*)-Werror" _ flags)
-                   (string-append "WARN_FLAGS=" flags)))
-
-                (when (file-exists? "libsanitizer/libbacktrace")
-                  ;; Same in libsanitizer's bundled copy (!) found in 4.9+.
-                  (substitute* "libsanitizer/libbacktrace/Makefile.in"
-                    (("-Werror")
-                     ""))))
-
-              ;; Add a RUNPATH to libstdc++.so so that it finds libgcc_s.
-              ;; See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32354>
-              ;; and <http://bugs.gnu.org/20358>.
-              (substitute* "libstdc++-v3/src/Makefile.in"
-                (("^OPT_LDFLAGS = ")
-                 "OPT_LDFLAGS = -Wl,-rpath=$(libdir) "))
-
-              ;; Move libstdc++*-gdb.py to the "lib" output to avoid a
-              ;; circularity between "out" and "lib".  (Note:
-              ;; --with-python-dir is useless because it imposes $(prefix) as
-              ;; the parent directory.)
-              (substitute* "libstdc++-v3/python/Makefile.in"
-                (("pythondir = .*$")
-                 (string-append "pythondir = " libdir "/share"
-                                "/gcc-$(gcc_version)/python\n")))
-
-              ;; Avoid another circularity between the outputs: this #define
-              ;; ends up in auto-host.h in the "lib" output, referring to
-              ;; "out".  (This variable is used to augment cpp's search path,
-              ;; but there's nothing useful to look for here.)
-              (substitute* "gcc/config.in"
-                (("PREFIX_INCLUDE_DIR")
-                 "PREFIX_INCLUDE_DIR_isnt_necessary_here"))))
-
-          (alist-cons-after
-           'configure 'post-configure
-           (lambda _
-             ;; Don't store configure flags, to avoid retaining references to
-             ;; build-time dependencies---e.g., `--with-ppl=/gnu/store/xxx'.
-             (substitute* "Makefile"
-               (("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
-                "TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))
-           %standard-phases))))
+                                  libc line))))
+
+                 ;; Don't retain a dependency on the build-time sed.
+                 (substitute* "fixincludes/fixincl.x"
+                   (("static char const sed_cmd_z\\[\\] =.*;")
+                    "static char const sed_cmd_z[] = \"sed\";"))
+
+                 ;; Aarch64 support didn't land in GCC until the 4.8 series.
+                 (when (file-exists? "gcc/config/aarch64")
+                       ;; Force Aarch64 libdir to be /lib and not /lib64
+                       (substitute* "gcc/config/aarch64/t-aarch64-linux"
+                         (("lib64") "lib")))
+
+                 (when (file-exists? "libbacktrace")
+                       ;; GCC 4.8+ comes with libbacktrace.  By default it builds
+                       ;; with -Werror, which fails with a -Wcast-qual error in glibc
+                       ;; 2.21's stdlib-bsearch.h.  Remove -Werror.
+                       (substitute* "libbacktrace/configure"
+                         (("WARN_FLAGS=(.*)-Werror" _ flags)
+                          (string-append "WARN_FLAGS=" flags)))
+
+                       (when (file-exists? "libsanitizer/libbacktrace")
+                             ;; Same in libsanitizer's bundled copy (!) found in 4.9+.
+                             (substitute* "libsanitizer/libbacktrace/Makefile.in"
+                               (("-Werror")
+                                ""))))
+
+                 ;; Add a RUNPATH to libstdc++.so so that it finds libgcc_s.
+                 ;; See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32354>
+                 ;; and <http://bugs.gnu.org/20358>.
+                 (substitute* "libstdc++-v3/src/Makefile.in"
+                   (("^OPT_LDFLAGS = ")
+                    "OPT_LDFLAGS = -Wl,-rpath=$(libdir) "))
+
+                 ;; Move libstdc++*-gdb.py to the "lib" output to avoid a
+                 ;; circularity between "out" and "lib".  (Note:
+                 ;; --with-python-dir is useless because it imposes $(prefix) as
+                 ;; the parent directory.)
+                 (substitute* "libstdc++-v3/python/Makefile.in"
+                   (("pythondir = .*$")
+                    (string-append "pythondir = " libdir "/share"
+                                   "/gcc-$(gcc_version)/python\n")))
+
+                 ;; Avoid another circularity between the outputs: this #define
+                 ;; ends up in auto-host.h in the "lib" output, referring to
+                 ;; "out".  (This variable is used to augment cpp's search path,
+                 ;; but there's nothing useful to look for here.)
+                 (substitute* "gcc/config.in"
+                   (("PREFIX_INCLUDE_DIR")
+                    "PREFIX_INCLUDE_DIR_isnt_necessary_here"))
+                 #t)))
+
+           (add-after 'configure 'post-configure
+             (lambda _
+               ;; Don't store configure flags, to avoid retaining references to
+               ;; build-time dependencies---e.g., `--with-ppl=/gnu/store/xxx'.
+               (substitute* "Makefile"
+                 (("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
+                  "TOPLEVEL_CONFIGURE_ARGUMENTS=\n"))
+               #t)))))
 
       (native-search-paths
        ;; Use the language-specific variables rather than 'CPATH' because they
@@ -369,13 +370,15 @@ Go.  It also includes runtime support libraries for these languages.")
               ;; This is required for building with glibc-2.26.
               ;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712
               (snippet
-               '(for-each
-                  (lambda (dir)
-                    (substitute* (string-append "libgcc/config/"
-                                                dir "/linux-unwind.h")
-                      (("struct ucontext") "ucontext_t")))
-                  '("aarch64" "alpha" "bfin" "i386" "m68k"
-                    "pa" "sh" "tilepro" "xtensa")))))
+               '(begin
+                  (for-each
+                   (lambda (dir)
+                     (substitute* (string-append "libgcc/config/"
+                                                 dir "/linux-unwind.h")
+                       (("struct ucontext") "ucontext_t")))
+                   '("aarch64" "alpha" "bfin" "i386" "m68k"
+                     "pa" "sh" "tilepro" "xtensa"))
+                  #t))))
     (supported-systems %supported-systems)
     (inputs
      `(("isl" ,isl-0.11)
@@ -401,13 +404,15 @@ Go.  It also includes runtime support libraries for these languages.")
               ;; This is required for building with glibc-2.26.
               ;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712
               (snippet
-               '(for-each
-                  (lambda (dir)
-                    (substitute* (string-append "libgcc/config/"
-                                                dir "/linux-unwind.h")
-                      (("struct ucontext") "ucontext_t")))
-                  '("aarch64" "alpha" "bfin" "i386" "m68k" "nios2"
-                    "pa" "sh" "tilepro" "xtensa")))))
+               '(begin
+                  (for-each
+                   (lambda (dir)
+                     (substitute* (string-append "libgcc/config/"
+                                                 dir "/linux-unwind.h")
+                       (("struct ucontext") "ucontext_t")))
+                   '("aarch64" "alpha" "bfin" "i386" "m68k" "nios2"
+                     "pa" "sh" "tilepro" "xtensa"))
+                  #t))))
     ;; Override inherited texinfo-5 with latest version.
     (native-inputs `(("perl" ,perl)   ;for manpages
                      ("texinfo" ,texinfo)))))
@@ -439,9 +444,11 @@ Go.  It also includes runtime support libraries for these languages.")
                ;;
                ;;   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67590
                ;;   http://cgit.openembedded.org/openembedded-core/commit/?id=f6e47aa9b12f9ab61530c40e0343f451699d9077
-               '(substitute* "libcc1/configure"
-                  (("\\$gcc_cv_objdump -T")
-                   "$OBJDUMP_FOR_TARGET -T")))))
+               '(begin
+                  (substitute* "libcc1/configure"
+                    (("\\$gcc_cv_objdump -T")
+                     "$OBJDUMP_FOR_TARGET -T"))
+                  #t))))
     (inputs
      `(("isl" ,isl)
        ,@(package-inputs gcc-4.7)))))
@@ -467,13 +474,15 @@ Go.  It also includes runtime support libraries for these languages.")
               ;; This can be removed when gcc-6.5.0 is released.
               ;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712
               (snippet
-               '(for-each
-                  (lambda (dir)
-                    (substitute* (string-append "libgcc/config/"
-                                                dir "/linux-unwind.h")
-                      (("struct ucontext") "ucontext_t")))
-                  '("aarch64" "alpha" "bfin" "i386" "m68k" "nios2"
-                    "pa" "sh" "tilepro" "xtensa")))))
+               '(begin
+                  (for-each
+                   (lambda (dir)
+                     (substitute* (string-append "libgcc/config/"
+                                                 dir "/linux-unwind.h")
+                       (("struct ucontext") "ucontext_t")))
+                   '("aarch64" "alpha" "bfin" "i386" "m68k" "nios2"
+                     "pa" "sh" "tilepro" "xtensa"))
+                  #t))))
     (inputs
      `(("isl" ,isl)
        ,@(package-inputs gcc-4.7)))))
@@ -512,7 +521,8 @@ using compilers other than GCC."
        #:phases (alist-cons-before
                  'configure 'chdir
                  (lambda _
-                   (chdir "libstdc++-v3"))
+                   (chdir "libstdc++-v3")
+                   #t)
                  %standard-phases)
        #:configure-flags `("--disable-libstdcxx-pch"
                            ,(string-append "--with-gxx-include-dir="
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 9c7c071db0..9f31d90619 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -212,7 +212,8 @@ and driving.")
              (("^all-am: .*$")
               "all-am: Makefile $(LTLIBRARIES) $(HEADERS) geo_config.h\n")
              (("^install-data-am: .*$")
-              "install-data-am: install-includeHEADERS"))))))
+              "install-data-am: install-includeHEADERS"))
+           #t))))
     (build-system gnu-build-system)
     (inputs
      `(("libjpeg-turbo" ,libjpeg-turbo)
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index 6d2dd4c008..6bbedffa2c 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,14 +44,13 @@
 (define-public lcms
   (package
    (name "lcms")
-   (version "2.8")
+   (version "2.9")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://sourceforge/lcms/lcms/" version
                                 "/lcms2-" version ".tar.gz"))
-            (patches (search-patches "lcms-CVE-2016-10165.patch"))
             (sha256 (base32
-                     "08pvl289g0mbznzx5l6ibhaldsgx41kwvdn2c974ga9fkli2pl36"))))
+                     "083xisy6z01zhm7p7rgk4bx9d6zlr8l20qkfv1g29ylnhgwzvij8"))))
    (build-system gnu-build-system)
    (inputs `(("libjpeg-8" ,libjpeg-8)
              ("libtiff" ,libtiff)
@@ -155,7 +155,8 @@ printing, and psresize, for adjusting page sizes.")
          '(begin
             (for-each delete-file-recursively '("freetype" "jbig2dec" "jpeg"
                                                 "lcms2" "libpng"
-                                                "tiff" "zlib"))))))
+                                                "tiff" "zlib"))
+            #t))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))                  ;19 MiB of HTML/PS doc + examples
     (arguments
@@ -335,7 +336,8 @@ architecture.")
               (for-each
                 (lambda (file)
                   (copy-file file (string-append dir "/" file)))
-                (find-files "." "pfb|afm"))))))))
+                (find-files "." "pfb|afm"))
+              #t))))))
    (synopsis "Free replacements for the PostScript fonts")
    (description
     "Ghostscript fonts provides fonts and font metrics customarily distributed with
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index f46c4b4d4b..45aeebceea 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -105,7 +105,7 @@ as ASCII text.")
               ("libxi" ,libxi)
               ("libxrandr" ,libxrandr)
               ("libxxf86vm" ,libxxf86vm)
-              ("inputproto" ,inputproto)
+              ("xorgproto" ,xorgproto)
               ("xinput" ,xinput)))
     (propagated-inputs
      ;; Headers from Mesa and GLU are needed.
@@ -240,19 +240,17 @@ also known as DXTn or DXTC) for Mesa.")
                          "mesa-skip-disk-cache-test.patch"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("glproto" ,glproto)
-        ;; The following are in the Requires.private field of gl.pc.
+      `(;; The following are in the Requires.private field of gl.pc.
         ("libdrm" ,libdrm)
         ("libvdpau" ,libvdpau)
         ("libx11" ,libx11)
         ("libxdamage" ,libxdamage)
         ("libxfixes" ,libxfixes)
         ("libxshmfence" ,libxshmfence)
-        ("libxxf86vm" ,libxxf86vm)))
+        ("libxxf86vm" ,libxxf86vm)
+        ("xorgproto" ,xorgproto)))
     (inputs
       `(("expat" ,expat)
-        ("dri2proto" ,dri2proto)
-        ("dri3proto" ,dri3proto)
         ("libelf" ,libelf)    ;required for r600 when using llvm
         ("libva" ,(force libva-without-mesa))
         ("libxml2" ,libxml2)
@@ -264,7 +262,6 @@ also known as DXTn or DXTC) for Mesa.")
             (_
              `()))
         ("makedepend" ,makedepend)
-        ("presentproto" ,presentproto)
         ("wayland" ,wayland)
         ("wayland-protocols" ,wayland-protocols)))
     (native-inputs
@@ -478,9 +475,11 @@ glxgears, glxheads, and glxinfo.")
                 "0r37fg2s1f0jrvwh6c8cz5x6v4wqmhq42qm15cs9qs349q5c6wn5"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "config/Makefile.linux"
-                  (("= cc") "= gcc")
-                  (("/lib64") "/lib")))))
+               '(begin
+                  (substitute* "config/Makefile.linux"
+                    (("= cc") "= gcc")
+                    (("/lib64") "/lib"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 30a22d7d59..ed2004fbbb 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -2,10 +2,10 @@
 ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
@@ -78,7 +78,7 @@
 (define dbus
   (package
     (name "dbus")
-    (version "1.12.2")
+    (version "1.12.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -86,7 +86,7 @@
                     version ".tar.gz"))
               (sha256
                (base32
-                "121xm3cy48vbv6nv522lfkk4zyiqc1g6v4lb3344gc3h2w4vaar7"))
+                "05picaq8j60wlwyi84qvw5liw3nd0cws9va3krnc3pms0wm906v2"))
               (patches (search-patches "dbus-helper-search-path.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -112,10 +112,10 @@
          (replace 'install
                   (lambda _
                     ;; Don't try to create /var and /etc.
-                    (system* "make"
-                             "localstatedir=/tmp/dummy"
-                             "sysconfdir=/tmp/dummy"
-                             "install"))))))
+                    (invoke "make"
+                            "localstatedir=/tmp/dummy"
+                            "sysconfdir=/tmp/dummy"
+                            "install"))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
@@ -148,7 +148,7 @@ shared NFS home directories.")
 (define glib
   (package
    (name "glib")
-   (version "2.54.2")
+   (version "2.56.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/"
@@ -156,9 +156,8 @@ shared NFS home directories.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "0v4ffl172kbqgxrhgxyafhpw36bq3iklb2zjqyl6jcfkmb2yb2dv"))
-            (patches (search-patches "glib-respect-datadir.patch"
-                                     "glib-tests-timer.patch"))))
+              "1iqgi90fmpl3l23jm2iv44qp7hqsxvnv7978s18933bvx4bnxvzc"))
+            (patches (search-patches "glib-tests-timer.patch"))))
    (build-system gnu-build-system)
    (outputs '("out"           ; everything
               "bin"           ; glib-mkenums, gtester, etc.; depends on Python
@@ -184,6 +183,9 @@ shared NFS home directories.")
       (modify-phases %standard-phases
         (add-before 'build 'pre-build
           (lambda* (#:key inputs outputs #:allow-other-keys)
+            ;; For building deterministic pyc files
+            (setenv "DETERMINISTIC_BUILD" "1")
+
             ;; For tests/gdatetime.c.
             (setenv "TZDIR"
                     (string-append (assoc-ref inputs "tzdata")
@@ -197,7 +199,8 @@ shared NFS home directories.")
                            "glib/tests/utils.c"
                            "tests/spawn-test.c")
               (("/bin/sh")
-               (string-append (assoc-ref inputs "bash") "/bin/sh")))))
+               (string-append (assoc-ref inputs "bash") "/bin/sh")))
+            #t))
         (add-before 'check 'disable-failing-tests
           (lambda _
             (let ((disable
@@ -235,6 +238,7 @@ shared NFS home directories.")
                      ("gio/tests/contenttype.c"
                       (;; XXX: requires shared-mime-info.
                        "/contenttype/guess"
+                       "/contenttype/guess_svg_from_data"
                        "/contenttype/subtype"
                        "/contenttype/list"
                        "/contenttype/icon"
@@ -260,7 +264,8 @@ shared NFS home directories.")
                      ("gio/tests/gdbus-unix-addresses.c"
                       (;; Requires /etc/machine-id.
                        "/gdbus/x11-autolaunch")))))
-              (and-map (lambda (x) (apply disable x)) failing-tests)))))
+              (for-each (lambda (x) (apply disable x)) failing-tests)
+              #t))))
 
       ;; Note: `--docdir' and `--htmldir' are not honored, so work around it.
       #:configure-flags (list (string-append "--with-html-dir="
@@ -296,23 +301,29 @@ dynamic loading, and an object system.")
 (define gobject-introspection
   (package
     (name "gobject-introspection")
-    (version "1.54.1")
+    (version "1.56.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/"
                    "gobject-introspection/" (version-major+minor version)
                    "/gobject-introspection-" version ".tar.xz"))
              (sha256
-              (base32 "0zl7pfkzkm07733391b4f3cwjbnvb1nwvpmajf5bajh6bxgfv3dq"))
+              (base32 "1y50pbn5qqbcv2h9rkz96wvv5jls2gma9bkqjq6wapmaszx5jw0d"))
              (modules '((guix build utils)))
              (snippet
-              '(substitute* "tools/g-ir-tool-template.in"
-                 (("#!/usr/bin/env @PYTHON@") "#!@PYTHON@")))
+              '(begin
+                 (substitute* "tools/g-ir-tool-template.in"
+                   (("#!/usr/bin/env @PYTHON@") "#!@PYTHON@"))
+                 #t))
              (patches (search-patches
                        "gobject-introspection-cc.patch"
                        "gobject-introspection-girepository.patch"
                        "gobject-introspection-absolute-shlib-path.patch"))))
     (build-system gnu-build-system)
+    (arguments
+     ;; The build system has at least one race condition involving Gio-2.0.gir
+     ;; which causes intermittent failures, as of 1.56.0.
+     `(#:parallel-build? #f))
     (inputs
      `(("bison" ,bison)
        ("flex" ,flex)
@@ -369,13 +380,14 @@ bindings to call into the C library.")
        ("perl-xml-parser" ,perl-xml-parser)
        ("perl" ,perl)))
     (arguments
-     `(#:phases (alist-cons-after
-                 'unpack 'patch-file-references
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (let ((file (assoc-ref inputs "file")))
-                     (substitute* "intltool-update.in"
-                       (("`file") (string-append "`" file "/bin/file")))))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-file-references
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((file (assoc-ref inputs "file")))
+               (substitute* "intltool-update.in"
+                 (("`file") (string-append "`" file "/bin/file")))
+               #t))))))
     (home-page "https://launchpad.net/intltool/+download")
     (synopsis "Tools to centralise translations of different file formats")
     (description
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 5eea29e0b2..747b6f9315 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2111,7 +2111,7 @@ editors, IDEs, etc.")
     (arguments
       `(#:configure-flags '("CXXFLAGS=-Wformat=0")
         #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'bootstrap
+                   (replace 'bootstrap
                     (lambda _
                       (setenv "NOCONFIGURE" "true")
                       (zero? (system* "sh" "autogen.sh")))))))
@@ -3650,7 +3650,7 @@ for application developers.")
        ("clutter" ,clutter)
        ("clutter-gtk" ,clutter-gtk)
        ("clutter-gst" ,clutter-gst)
-       ("xproto" ,xproto)
+       ("xorgproto" ,xorgproto)
        ("libxxf86vm" ,libxxf86vm)
        ("libxtst" ,libxtst)
        ("libxrandr" ,libxrandr)
@@ -5021,7 +5021,8 @@ users.")
                  (substitute* "src/nm-session-monitor.c"
                    (("systemd") "elogind"))
                  (substitute* "./src/nm-logging.c"
-                   (("systemd") "elogind"))))))
+                   (("systemd") "elogind"))
+                 #t))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc")) ; 8 MiB of gtk-doc HTML
@@ -6019,7 +6020,7 @@ documents and diagrams, playing media, scanning, and much more.")
       (arguments
        '(#:phases
          (modify-phases %standard-phases
-           (add-after 'unpack 'bootstrap
+           (replace 'bootstrap
              (lambda _
                ;; The build system cleverly detects that we're not building from
                ;; a release tarball and turns on -Werror for GCC.
@@ -6352,12 +6353,6 @@ functionality and behavior.")
                (base32
                 "0igxpngnkf1wpsg872a9jg3c9f5z8afm312yfbillz16mk8w39cw"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -6394,10 +6389,7 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.")
              (substitute* '("Makefile.am")
                (("\\$\\(DESTDIR\\)/usr/share")
                 "$(datadir)"))
-             #t))
-         (add-after 'patch-makefile.am 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vif")))))))
+             #t)))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)))
@@ -6446,12 +6438,6 @@ simple and consistent.")
                (base32
                 "1ya1cqvv8q847c0rpcg6apzky87q3h04y8jz5nmi52qk6kg8si0b"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)))
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index f4eacd3023..ac7f8ab85f 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -321,11 +321,6 @@ kinds of basic applications for the foundation of a GNU internet.")
                  (base32
                   "0k6mn28isjlxrnvbnblab3nh2xqx1b7san8k98kc35ap9lq0iz8w"))))
       (build-system gnu-build-system)
-      (arguments
-       '(#:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'bootstrap
-                      (lambda _
-                        (invoke "autoreconf" "-vfi"))))))
       (native-inputs `(("pkg-config" ,pkg-config)
                        ("autoconf" ,autoconf-wrapper)
                        ("automake" ,automake)))
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 2696e332de..cb0651d626 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -92,14 +92,14 @@ Daemon and possibly more in the future.")
 (define-public libgcrypt
   (package
     (name "libgcrypt")
-    (version "1.8.1")
+    (version "1.8.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1cvqd9jk5qshbh48yh3ixw4zyr4n5k50r3475rrh20xfn7w7aa3s"))))
+               "01sca9m8hm6b5v8hmqsfdjhyz013869p1f0fxw9ln52qfnp4q1n8"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error-host" ,libgpg-error)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 87381ba196..627e42c816 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -77,8 +77,10 @@
              (modules '((guix build utils)))
              (snippet
               ;; Fix incompatibility with Perl 5.22+.
-              '(substitute* '("js/src/config/milestone.pl")
-                 (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE")))))
+              '(begin
+                 (substitute* '("js/src/config/milestone.pl")
+                   (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE"))
+                 #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("perl" ,perl)
@@ -136,8 +138,10 @@ in C/C++.")
               (patches (search-patches "mozjs24-aarch64-support.patch"))
               (snippet
                ;; Fix incompatibility with Perl 5.22+.
-               '(substitute* '("js/src/config/milestone.pl")
-                  (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE")))))
+               '(begin
+                  (substitute* '("js/src/config/milestone.pl")
+                    (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE"))
+                  #t))))
     (arguments
       (substitute-keyword-arguments (package-arguments mozjs)
         ((#:phases phases)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index d2f1b3b0b8..58a6f7bc13 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -339,7 +339,8 @@ graphics.")
                   ;; and <https://github.com/openexr/openexr/pull/184>.
                   (substitute* "IlmImf/Makefile.in"
                     (("ImfIO\\.h")
-                     "ImfIO.h ImfStdIO.h"))))
+                     "ImfIO.h ImfStdIO.h"))
+                  #t))
               (patches (search-patches "openexr-missing-samples.patch"))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index 2fefb41c0a..5f236498b8 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -148,11 +148,12 @@ visualization tool suite.")
                "07mqx09jxh8cv9753y2d2jsv7wp8vjmrd7zcfpbrddz3wc9kx705"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'check 'pre-check
-                 (lambda _
-                   (chmod "test/boolean/test.sh" #o777))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             (chmod "test/boolean/test.sh" #o777)
+             #t)))
 
        ;; Some data files used by the test suite are missing.
        ;; See <http://sourceforge.net/p/gts/bugs/41/>.
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index f0f49bbce5..6f9c6dd63d 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
@@ -55,6 +55,7 @@
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages fribidi)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
@@ -132,7 +133,7 @@ tools have full access to view and control running applications.")
     `(("ghostscript" ,ghostscript)
       ("libspectre" ,libspectre)
       ("poppler" ,poppler)
-      ("xextproto" ,xextproto)
+      ("xorgproto" ,xorgproto)
       ("zlib" ,zlib)))
    (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -175,7 +176,7 @@ affine transformation (scale, rotation, shear, etc.).")
 (define-public harfbuzz
   (package
    (name "harfbuzz")
-   (version "1.7.3")
+   (version "1.7.6")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://www.freedesktop.org/software/"
@@ -183,7 +184,7 @@ affine transformation (scale, rotation, shear, etc.).")
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1zh5n3q3mb6y6kr5m7zz1ags9z1vjwai57d6warx8qhzfrwn8lyd"))))
+               "16rf7qwgy1gza74v2ws79zdwwb1lpvgz2abwwm8ws9j82cwysyys"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "bin")) ; 160K, only hb-view depend on cairo
@@ -197,7 +198,8 @@ affine transformation (scale, rotation, shear, etc.).")
    (native-inputs
     `(("gobject-introspection" ,gobject-introspection)
       ("pkg-config" ,pkg-config)
-      ("python" ,python-2))) ; incompatible with Python 3 (print syntax)
+      ("python" ,python-wrapper)
+      ("which" ,which)))
    (arguments
     `(#:configure-flags `("--with-graphite2"
                           "--with-gobject"
@@ -213,7 +215,7 @@ affine transformation (scale, rotation, shear, etc.).")
 (define-public pango
   (package
    (name "pango")
-   (version "1.40.14")
+   (version "1.42.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/pango/"
@@ -221,13 +223,18 @@ affine transformation (scale, rotation, shear, etc.).")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1qqpd8x1pl483ynj3mc5q4n8y2pxqhg2bv19vd94r7mzlzm1pbwh"))))
+              "0illn78nfwpa8y5knh9ir74wa1skc2hi8f3ny19zgpyf7n5dh94r"))))
    (build-system gnu-build-system)
    (propagated-inputs
+    ;; These are all in Requires or Requires.private of the '.pc' files.
     `(("cairo" ,cairo)
+      ("fontconfig" ,fontconfig)
+      ("freetype" ,freetype)
+      ("glib" ,glib)
       ("harfbuzz" ,harfbuzz)))
    (inputs
-    `(("zlib" ,zlib)
+    `(("fribidi" ,fribidi)
+      ("zlib" ,zlib)
 
       ;; Some packages, such as Openbox, expect Pango to be built with the
       ;; optional libxft support.
@@ -839,16 +846,13 @@ exceptions, macros, and a dynamic programming environment.")
                 (patches (search-patches "guile-rsvg-pkgconfig.patch"))
                 (modules '((guix build utils)))
                 (snippet
-                 '(substitute* (find-files "." "Makefile\\.am")
-                    (("/share/guile/site")
-                     "/share/guile/site/@GUILE_EFFECTIVE_VERSION@")))
+                 '(begin
+                    (substitute* (find-files "." "Makefile\\.am")
+                      (("/share/guile/site")
+                       "/share/guile/site/@GUILE_EFFECTIVE_VERSION@"))
+                    #t))
                 (file-name (string-append name "-" version ".tar.gz"))))
       (build-system gnu-build-system)
-      (arguments
-       `(#:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'bootstrap
-                      (lambda _
-                        (zero? (system* "autoreconf" "-vfi")))))))
       (native-inputs `(("pkg-config" ,pkg-config)
                        ("autoconf" ,autoconf)
                        ("automake" ,automake)
@@ -879,9 +883,11 @@ images onto Cairo surfaces.")
               (patches (search-patches "guile-present-coding.patch"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Makefile.in"
-                  (("godir = .*$")
-                   "godir = $(moddir)\n")))))
+               '(begin
+                  (substitute* "Makefile.in"
+                    (("godir = .*$")
+                     "godir = $(moddir)\n"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 33ef822b16..160c4c3ea9 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
@@ -15,7 +15,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 ng0 <ng0@infotropique.org>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -183,23 +183,24 @@ without requiring the source code to be rewritten.")
    (outputs '("out" "debug"))
 
    (arguments
-    `(#:configure-flags '("--disable-static")     ;saves 3MiB
-      #:phases (alist-cons-before
-                'configure 'pre-configure
-                (lambda* (#:key inputs #:allow-other-keys)
-                  ;; Tell (ice-9 popen) the file name of Bash.
-                  (let ((bash (assoc-ref inputs "bash")))
-                    (substitute* "module/ice-9/popen.scm"
-                      ;; If bash is #f allow fallback for user to provide
-                      ;; "bash" in PATH.  This happens when cross-building to
-                      ;; MinGW for which we do not have Bash yet.
-                      (("/bin/sh")
-                       ,@(if (target-mingw?)
-                             '((if bash
-                                   (string-append bash "/bin/bash")
-                                   "bash"))
-                             '((string-append bash "/bin/bash")))))))
-                %standard-phases)))
+    `(#:configure-flags '("--disable-static") ; saves 3 MiB
+      #:phases
+      (modify-phases %standard-phases
+        (add-before 'configure 'pre-configure
+          (lambda* (#:key inputs #:allow-other-keys)
+            ;; Tell (ice-9 popen) the file name of Bash.
+            (let ((bash (assoc-ref inputs "bash")))
+              (substitute* "module/ice-9/popen.scm"
+                ;; If bash is #f allow fallback for user to provide
+                ;; "bash" in PATH.  This happens when cross-building to
+                ;; MinGW for which we do not have Bash yet.
+                (("/bin/sh")
+                 ,@(if (target-mingw?)
+                       '((if bash
+                             (string-append bash "/bin/bash")
+                             "bash"))
+                       '((string-append bash "/bin/bash")))))
+              #t))))))
 
    (native-search-paths
     (list (search-path-specification
@@ -239,8 +240,10 @@ without requiring the source code to be rewritten.")
               ;; Remove the pre-built object files.  Instead, build everything
               ;; from source, at the expense of significantly longer build
               ;; times (almost 3 hours on a 4-core Intel i5).
-              (snippet '(for-each delete-file
-                                  (find-files "prebuilt" "\\.go$")))))
+              (snippet '(begin
+                          (for-each delete-file
+                                    (find-files "prebuilt" "\\.go$"))
+                          #t))))
     (properties '((timeout . 72000)               ;20 hours
                   (max-silent-time . 36000)))     ;10 hours (needed on ARM
                                                   ;  when heavily loaded)
@@ -276,10 +279,9 @@ without requiring the source code to be rewritten.")
   (package
     (inherit guile-2.2)
     (properties '((hidden? . #t)            ;people should install 'guile-2.2'
-                  (timeout . 72000)            ;20 hours
-                  (max-silent-time . 36000)))  ;10 hours (needed on ARM
-                                               ;  when heavily loaded)
-    (replacement #f)))
+                  (timeout . 72000)             ;20 hours
+                  (max-silent-time . 36000))))) ;10 hours (needed on ARM
+                                                ;  when heavily loaded)
 
 (define-public guile-2.2.2
   ;; Keep it so that, when 'guix' runs on 2.2.2, 'guix pull' compiles objects
@@ -524,7 +526,8 @@ program can be installed in one go.")
                                       post)))
                     (substitute* "artanis/artanis.scm"
                       (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+")
-                       ""))))))
+                       ""))
+                    #t))))
       (build-system gnu-build-system)
       ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
       (inputs `(("guile" ,guile-2.2)
@@ -828,7 +831,8 @@ for Guile\".")
                      "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
                   (substitute* '("Makefile.in" "json/Makefile.in")
                     (("moddir =.*/share/guile/site" all)
-                     (string-append all "/@GUILE_EFFECTIVE_VERSION@")))))))
+                     (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs `(("guile" ,guile-2.2)))
     (home-page "https://savannah.nongnu.org/projects/guile-json/")
@@ -1107,6 +1111,15 @@ inspired by the SCSH regular expression system.")
                (base32
                 "1j8wrsw7v9w6qkl47xz0rdikg50v16nn6kbs3lgzcymjzpa7babj"))))
     (build-system trivial-build-system)
+    (inputs
+     `(("guile" ,guile-2.2)
+       ;; patch-and-repack doesn't work for git checkouts,
+       ;; so we must apply the patch manually.
+       ("patch" ,patch)
+       ("patch-file" ,(search-patch
+                       "guile-gdbm-ffi-support-gdbm-1.14.patch"))))
+    (propagated-inputs
+     `(("gdbm" ,gdbm)))
     (arguments
      `(#:modules
        ((guix build utils))
@@ -1139,7 +1152,7 @@ inspired by the SCSH regular expression system.")
                  (string-append module-dir "/gdbm.go"))
                 (compile-file
                  (lambda (in-file out-file)
-                   (system* guild "compile" "-o" out-file in-file))))
+                   (invoke guild "compile" "-o" out-file in-file))))
            ;; Switch directory for compiling and installing
            (chdir source)
 
@@ -1159,12 +1172,16 @@ inspired by the SCSH regular expression system.")
               (format #f "(dynamic-link \"~a/lib/libgdbm.so\")"
                       (assoc-ref %build-inputs "gdbm"))))
 
+           ;; Apply the patch to add support for gdbm-1.14.
+           (let ((patch-command (string-append (assoc-ref %build-inputs "patch")
+                                               "/bin/patch"))
+                 (patch-file (assoc-ref %build-inputs "patch-file")))
+             (with-directory-excursion (dirname gdbm.scm-dest)
+               (format #t "applying '~a'...~%" patch-file)
+               (invoke patch-command "--force" "--input" patch-file)))
+
            ;; compile to the destination
            (compile-file gdbm.scm-dest gdbm.go-dest)))))
-    (inputs
-     `(("guile" ,guile-2.2)))
-    (propagated-inputs
-     `(("gdbm" ,gdbm)))
     (home-page "https://github.com/ijp/guile-gdbm")
     (synopsis "Guile bindings to the GDBM library via Guile's FFI")
     (description
@@ -1201,9 +1218,11 @@ Guile's foreign function interface.")
                 (modules '((guix build utils)))
                 (snippet
                  ;; Upgrade 'Makefile.am' to the current way of doing things.
-                 '(substitute* "Makefile.am"
-                    (("TESTS_ENVIRONMENT")
-                     "TEST_LOG_COMPILER")))))
+                 '(begin
+                    (substitute* "Makefile.am"
+                      (("TESTS_ENVIRONMENT")
+                       "TEST_LOG_COMPILER"))
+                    #t))))
 
       (build-system gnu-build-system)
       (native-inputs
@@ -1338,7 +1357,8 @@ above command-line parameters.")
                                  "redis/Makefile.in"
                                  "redis/commands/Makefile.in")
                     (("moddir =.*/share/guile/site" all)
-                     (string-append all "/@GUILE_EFFECTIVE_VERSION@")))))))
+                     (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("guile" ,guile-2.0)))
@@ -1451,7 +1471,8 @@ users and in some situations.")
                     (("godir = .*$")
                      (string-append
                       "godir = "
-                      "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))))))
+                      "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -1705,7 +1726,8 @@ you send to a FIFO file.")
                      "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
                   (substitute* "Makefile.in"
                     (("/site/2.0")
-                     "/site/@GUILE_EFFECTIVE_VERSION@"))))))
+                     "/site/@GUILE_EFFECTIVE_VERSION@"))
+                  #t))))
     (build-system gnu-build-system)
     (inputs
      `(("guile" ,guile-2.2)))
@@ -1815,12 +1837,7 @@ dictionary and suggesting spelling corrections.")
                 (file-name (string-append name "-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
-       '(#:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'bootstrap
-                      (lambda _
-                        (zero? (system* "sh" "bootstrap")))))
-
-         #:configure-flags
+       '(#:configure-flags
          ;; Add -I to match 'bash.pc' of Bash 4.4.
          (list (string-append "CPPFLAGS=-I"
                               (assoc-ref %build-inputs "bash:include")
@@ -1950,10 +1967,6 @@ is not available for Guile 2.0.")
       (build-system gnu-build-system)
       (arguments
        `(#:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'bootstrap
-                      (lambda _
-                        (zero? (system* "autoreconf" "-vfi"))))
-
                     ;; FIXME: On i686, bytestructures miscalculates the offset
                     ;; of the 'old-file' and 'new-file' fields within the
                     ;; '%diff-delta' structure.
@@ -2002,8 +2015,8 @@ manipulate repositories of the Git version control system.")
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("guile" ,guile-2.2)))
-      (synopsis "General-purpose syntax highlighter for GNU Guile")
-      (description "Guile-syntax-highlight is a general-purpose syntax
+    (synopsis "General-purpose syntax highlighter for GNU Guile")
+    (description "Guile-syntax-highlight is a general-purpose syntax
 highlighting library for GNU Guile.  It can parse code written in various
 programming languages into a simple s-expression that can be converted to
 HTML (via SXML) or any other format for rendering.")
@@ -2022,11 +2035,6 @@ HTML (via SXML) or any other format for rendering.")
                (base32
                 "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _ (zero? (system* "sh" "bootstrap.sh")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index d00bbea7b5..b5f73ba69b 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -282,9 +282,11 @@ top of CLISP.")
                   (mkdir-p libtinfo-dir)
                   (symlink
                    (string-append ncurses-lib "/libncursesw.so."
-                                  ;; Extract "6.0" from "6.0-20170930".
+                                  ;; Extract "6.0" from "6.0-20170930" if a
+                                  ;; dash-separated version tag exists.
                                   ,(let* ((v (package-version ncurses))
-                                          (d (string-index v #\-)))
+                                          (d (or (string-index v #\-)
+                                                 (string-length v))))
                                      (version-major+minor (string-take v d))))
                    (string-append libtinfo-dir "/libtinfo.so.5"))
 
@@ -1822,7 +1824,7 @@ bindings are a direct translation of the C bindings.")
        ("ghc-utf8-string" ,ghc-utf8-string)
        ("libx11" ,libx11)
        ("libxft" ,libxft)
-       ("xproto" ,xproto)))
+       ("xorgproto" ,xorgproto)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (build-system haskell-build-system)
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 6705a726cf..a44bc086d6 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -164,7 +164,7 @@ of external libraries that provide additional functionality.")
        #:tests? #f))                              ;XXX: no "test" target
     (inputs
      `(("libXt" ,libxt)
-       ("xproto" ,xproto)
+       ("xorgproto" ,xorgproto)
        ("libX11" ,libx11)
        ("libxml2" ,libxml2)
        ("mesa" ,mesa)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index e0f6794247..2f9dd8b32a 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -392,7 +392,6 @@ extracting icontainer icon files.")
   (package
    (name "libtiff")
    (version "4.0.9")
-   (replacement libtiff/fixed)
    (source
      (origin
        (method url-fetch)
@@ -400,7 +399,9 @@ extracting icontainer icon files.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "1kfg4q01r4mqn7dj63ifhi6pmqzbf4xax6ni6kkk81ri5kndwyvf"))))
+         "1kfg4q01r4mqn7dj63ifhi6pmqzbf4xax6ni6kkk81ri5kndwyvf"))
+       (patches (search-patches "libtiff-CVE-2017-9935.patch"
+                                "libtiff-CVE-2017-18013.patch"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "doc"))                           ;1.3 MiB of HTML documentation
@@ -422,17 +423,6 @@ collection of tools for doing simple manipulations of TIFF images.")
                                   "See COPYRIGHT in the distribution."))
    (home-page "http://www.simplesystems.org/libtiff/")))
 
-(define libtiff/fixed
-  (package
-    (inherit libtiff)
-    (source
-      (origin
-        (inherit (package-source libtiff))
-        (patches
-          (append (origin-patches (package-source libtiff))
-                  (search-patches "libtiff-CVE-2017-9935.patch"
-                                  "libtiff-CVE-2017-18013.patch")))))))
-
 (define-public leptonica
   (package
     (name "leptonica")
@@ -588,7 +578,8 @@ error-resilience, a Java-viewer for j2k-images, ...")
          (add-after 'unpack 'disable-html-doc-gen
            (lambda _
              (substitute* "doc/Makefile.in"
-               (("^all: allhtml manpages") ""))))
+               (("^all: allhtml manpages") ""))
+             #t))
          (add-after 'install 'install-manpages
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((bin (assoc-ref outputs "bin"))
@@ -601,7 +592,8 @@ error-resilience, a Java-viewer for j2k-images, ...")
                              (copy-file file
                                         (string-append
                                          man1dir "/" base))))
-                         (find-files "doc" "\\.1"))))))))
+                         (find-files "doc" "\\.1"))
+               #t))))))
     (synopsis "Tools and library for working with GIF images")
     (description
      "GIFLIB is a library for reading and writing GIF images.  It is API and
diff --git a/gnu/packages/indent.scm b/gnu/packages/indent.scm
index 4950a26121..3465d63c01 100644
--- a/gnu/packages/indent.scm
+++ b/gnu/packages/indent.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,15 +37,16 @@
                      "0f9655vqdvfwbxvs1gpa7py8k1z71aqh8hp73f65vazwbfz436wa"))))
    (build-system gnu-build-system)
    (arguments
-    `(#:phases (alist-cons-after
-                'unpack 'fix-docdir
-                (lambda _
-                  ;; Although indent uses a modern autoconf in which docdir
-                  ;; defaults to PREFIX/share/doc, the doc/Makefile.am
-                  ;; overrides this to be in PREFIX/doc.  Fix this.
-                  (substitute* "doc/Makefile.in"
-                    (("^docdir = .*$") "docdir = @docdir@\n")))
-                %standard-phases)))
+    `(#:phases
+      (modify-phases %standard-phases
+        (add-after 'unpack 'fix-docdir
+          (lambda _
+            ;; Although indent uses a modern autoconf in which docdir
+            ;; defaults to PREFIX/share/doc, the doc/Makefile.am
+            ;; overrides this to be in PREFIX/doc.  Fix this.
+            (substitute* "doc/Makefile.in"
+              (("^docdir = .*$") "docdir = @docdir@\n"))
+            #t)))))
    (synopsis "Code reformatter")
    (description
     "Indent is a program that makes source code easier to read by
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 22ac3c662a..d13cb35365 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -81,7 +81,8 @@
          '(begin
             (delete-file-recursively "data/scripts")
             (substitute* "data/CMakeLists.txt"
-              (("NOT WIN32") "WIN32"))))))
+              (("NOT WIN32") "WIN32"))
+            #t))))
     (build-system cmake-build-system)
     (arguments
       ;; The three binaries are not mutually exlusive, and are all built
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 5771366f66..f94c384d7d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -694,9 +694,10 @@ the standard javac executable.  The tool runs on JamVM instead of SableVM.")))
                "--disable-gjdoc")
          #:phases
          (modify-phases %standard-phases
-           (add-after 'unpack 'bootstrap
-             (lambda _
-               (zero? (system* "autoreconf" "-vif"))))
+           ;; XXX The bootstrap phase executes autogen.sh, which fails after
+           ;; complaining about the lack of gettext.
+           (replace 'bootstrap
+             (lambda _ (invoke "autoreconf" "-vif")))
            (add-after 'unpack 'remove-unsupported-annotations
              (lambda _
                (substitute* (find-files "java" "\\.java$")
@@ -751,10 +752,12 @@ the standard javac executable.  The tool runs on JamVM instead of SableVM.")))
                 "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Makefile.in"
-                  ;; do not leak information about the build host
-                  (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
-                   "DISTRIBUTION_ID=\"\\\"guix\\\"\"")))))
+               '(begin
+                  (substitute* "Makefile.in"
+                    ;; do not leak information about the build host
+                    (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
+                     "DISTRIBUTION_ID=\"\\\"guix\\\"\""))
+                  #t))))
     (build-system gnu-build-system)
     (outputs '("out"   ; Java Runtime Environment
                "jdk"   ; Java Development Kit
@@ -1095,10 +1098,12 @@ bootstrapping purposes.")
                   "1w331rdqx1dcx2xb0fmjmrkdc71xqn20fxsgw8by4xhiblh88khh"))
                 (modules '((guix build utils)))
                 (snippet
-                 '(substitute* "Makefile.in"
-                    ;; do not leak information about the build host
-                    (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
-                     "DISTRIBUTION_ID=\"\\\"guix\\\"\"")))))
+                 '(begin
+                    (substitute* "Makefile.in"
+                      ;; do not leak information about the build host
+                      (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
+                       "DISTRIBUTION_ID=\"\\\"guix\\\"\""))
+                    #t))))
       (build-system gnu-build-system)
       (outputs '("out"   ; Java Runtime Environment
                  "jdk"   ; Java Development Kit
diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm
index 4ef604d02a..6877f5b873 100644
--- a/gnu/packages/kerberos.scm
+++ b/gnu/packages/kerberos.scm
@@ -147,9 +147,11 @@ secure manner through client-server mutual authentication via tickets.")
                                        "heimdal-CVE-2017-11103.patch"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "configure"
-                  (("User=.*$") "User=Guix\n")
-                  (("Date=.*$") "Date=2017\n")))))
+               '(begin
+                  (substitute* "configure"
+                    (("User=.*$") "User=Guix\n")
+                    (("Date=.*$") "Date=2017\n"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags (list
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index ad66a846d4..6f8571d22a 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -146,8 +146,6 @@ generator library for C++.")
        '(#:tests? #f
          #:phases
          (modify-phases %standard-phases
-           (add-after 'unpack 'bootstrap
-             (lambda _ (zero? (system* "autoreconf" "-vif"))))
            (delete 'configure)
            (delete 'build)
            (replace 'install
@@ -183,8 +181,6 @@ generator library for C++.")
        '(#:tests? #f
          #:phases
          (modify-phases %standard-phases
-           (add-after 'unpack 'bootstrap
-             (lambda _ (zero? (system* "autoreconf" "-vif"))))
            (delete 'configure)
            (delete 'build)
            (replace 'install
@@ -220,8 +216,6 @@ generator library for C++.")
        '(#:tests? #f
          #:phases
          (modify-phases %standard-phases
-           (add-after 'unpack 'bootstrap
-             (lambda _ (zero? (system* "autoreconf" "-vif"))))
            (delete 'configure)
            (delete 'build)
            (replace 'install
diff --git a/gnu/packages/less.scm b/gnu/packages/less.scm
index 0aa4665840..2827951280 100644
--- a/gnu/packages/less.scm
+++ b/gnu/packages/less.scm
@@ -26,7 +26,7 @@
 (define-public less
   (package
     (name "less")
-    (version "487")
+    (version "530")
     (source
      (origin
       (method url-fetch)
@@ -34,7 +34,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "01i7n6jaxwmww3pasy3hg38zc6x7jw0w05mqqvh6caqbrdaq9p7k"))))
+        "1qpj2z38c53qmvqn8jaa0kq26q989cfbfjj4y0s6z17l1amr2gsh"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)))
     (home-page "https://www.gnu.org/software/less/")
diff --git a/gnu/packages/libbsd.scm b/gnu/packages/libbsd.scm
index 3bfa2a3fec..58b0be872c 100644
--- a/gnu/packages/libbsd.scm
+++ b/gnu/packages/libbsd.scm
@@ -25,14 +25,14 @@
 (define-public libbsd
   (package
     (name "libbsd")
-    (version "0.8.3")
+    (version "0.8.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://libbsd.freedesktop.org/releases/"
                                   "libbsd-" version ".tar.xz"))
               (sha256
                (base32
-                "1a1l7afchlvvj2zfi7ajcg26bbkh5i98y2v5h9j5p1px9m7n6jwk"))))
+                "0c9bl49zs0xdddcwj5dh0lay9sxi2m1yi74848g8p87mb87g2j7m"))))
     (build-system gnu-build-system)
     (synopsis "Utility functions from BSD systems")
     (description "This library provides useful functions commonly found on BSD
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index d6b70a4f17..983c8625e4 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -121,14 +121,14 @@ limited support for fork events.")
 (define-public libuv
   (package
     (name "libuv")
-    (version "1.18.0")
+    (version "1.19.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dist.libuv.org/dist/v" version
                                   "/libuv-v" version ".tar.gz"))
               (sha256
                (base32
-                "125bzmzc32m52hd9iv8jvjlc7r3gadxgvp31a2fz2wlil16p7r2l"))))
+                "1msk9ac1z69whww88ibrwjqkd1apdla6l77cm2fwy5kigq0z5g3w"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -136,7 +136,7 @@ limited support for fork events.")
                     (lambda _
                       ;; Fashionable people don't run 'make dist' these days, so
                       ;; we need to do that ourselves.
-                      (zero? (system* "sh" "autogen.sh")))))
+                      (invoke "sh" "autogen.sh"))))
 
        ;; XXX: Some tests want /dev/tty, attempt to make connections, etc.
        #:tests? #f))
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index dd6b2237f9..8515edf925 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -36,29 +36,28 @@
   #:use-module (guix build-system ruby))
 
 (define-public libffi
-  (let ((post-install-phase
-         ;; Keep headers where libffi.pc expects them, but also make them
-         ;; available in $includedir where some users expect them.
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (define out (assoc-ref outputs "out"))
-            (symlink (string-append out "/lib/libffi-3.2.1/include")
-                     (string-append out "/include")))))
-   (package
+  (package
     (name "libffi")
     (version "3.2.1")
     (source (origin
-             (method url-fetch)
-             (uri
-              (string-append "ftp://sourceware.org/pub/libffi/"
-                             name "-" version ".tar.gz"))
-             (sha256
-              (base32
-               "0dya49bnhianl0r65m65xndz6ls2jn1xngyn72gd28ls3n7bnvnh"))
-             (patches (search-patches "libffi-3.2.1-complex-alpha.patch"))))
+              (method url-fetch)
+              (uri
+               (string-append "ftp://sourceware.org/pub/libffi/"
+                              name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0dya49bnhianl0r65m65xndz6ls2jn1xngyn72gd28ls3n7bnvnh"))
+              (patches (search-patches "libffi-3.2.1-complex-alpha.patch"))))
     (build-system gnu-build-system)
-    (arguments `(#:phases (alist-cons-after 'install 'post-install
-                                            ,post-install-phase
-                                            %standard-phases)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (define out (assoc-ref outputs "out"))
+             (symlink (string-append out "/lib/libffi-3.2.1/include")
+                      (string-append out "/include"))
+             #t)))))
     (outputs '("out" "debug"))
     (synopsis "Foreign function call interface library")
     (description
@@ -75,7 +74,7 @@ conversions for values passed between the two languages.")
     (home-page "http://sources.redhat.com/libffi/")
 
     ;; See <https://github.com/atgreen/libffi/blob/master/LICENSE>.
-    (license expat))))
+    (license expat)))
 
 (define-public python-cffi
   (package
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 316602adbc..7a1a1433fd 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
-;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;;
@@ -705,12 +705,6 @@ Zoner Draw version 4 and 5.")
        ("libtool" ,libtool)))
     (inputs
      `(("perl" ,perl)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vfi")))))))
     (native-search-paths (list (search-path-specification
                                 (variable "DICPATH")
                                 (files '("share/hunspell")))))
diff --git a/gnu/packages/libsigsegv.scm b/gnu/packages/libsigsegv.scm
index 2a44819820..7f63bb26c4 100644
--- a/gnu/packages/libsigsegv.scm
+++ b/gnu/packages/libsigsegv.scm
@@ -26,14 +26,14 @@
 (define-public libsigsegv
   (package
    (name "libsigsegv")
-   (version "2.11")
+   (version "2.12")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "mirror://gnu/libsigsegv/libsigsegv-"
                   version ".tar.gz"))
             (sha256
-             (base32 "063swdvq7mbmc1clv0rnh20grwln1zfc2qnm0sa1hivcxyr2wz6x"))))
+             (base32 "1dlhqf4igzpqayms25lkhycjq1ccavisx8cnb3y4zapbkqsszq9s"))))
    (build-system gnu-build-system)
    (home-page "https://www.gnu.org/software/libsigsegv/")
    (synopsis "Library for handling page faults")
diff --git a/gnu/packages/libunistring.scm b/gnu/packages/libunistring.scm
index 1d421fb17d..6a3afd4f05 100644
--- a/gnu/packages/libunistring.scm
+++ b/gnu/packages/libunistring.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
@@ -32,7 +32,7 @@
 (define-public libunistring
   (package
    (name "libunistring")
-   (version "0.9.8")
+   (version "0.9.9")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -40,7 +40,7 @@
                   version ".tar.xz"))
             (sha256
              (base32
-              "101gjj9q39pjlcaixylya6is5i7vlbnxr1w5w6raqvvhab7ki4vv"))
+              "0cx8v6862w7vvacbkcvg49kfx731ckdgaybmzw1zav71zkn97nd4"))
             (modules '((guix build utils)))
             (snippet
              '(begin
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index e5a63803d8..7981a4f5cc 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -331,12 +331,6 @@ devices.")
                (base32
                 "0qdgyj9rgb7n0nk3ghfswrhzzknxqn4ibn3wj8g4r828pw07451w"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vfi")))))))
     (inputs
      `(("libusb" ,libusb)
        ("udev" ,eudev)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 90cf887527..0c16f569da 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
@@ -158,13 +158,13 @@ defconfig.  Return the appropriate make target if applicable, otherwise return
 (define-public linux-libre-headers
   (package
     (name "linux-libre-headers")
-    (version "4.9.59")
+    (version "4.14.26")
     (source (origin
              (method url-fetch)
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "0z8hq8a6ic38xh33idzl0k0yi4isgd7ncl2g1d6mzf9ixw5krhvc"))))
+               "1m2zr17wpasg5riysbaa4g5i492jzr93py2jm088ki818s4a9cm3"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)))
     (arguments
@@ -184,29 +184,29 @@ defconfig.  Return the appropriate make target if applicable, otherwise return
                                     (%current-system)))))
                (setenv "ARCH" arch)
                (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))
-               (and (zero? (system* "make" defconfig))
-                    (zero? (system* "make" "mrproper" "headers_check"))))))
+               (invoke "make" defconfig)
+               (invoke "make" "mrproper" "headers_check"))))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
-               (and (zero? (system* "make"
-                                    (string-append "INSTALL_HDR_PATH=" out)
-                                    "headers_install"))
-                    (begin
-                      (mkdir (string-append out "/include/config"))
-                      (call-with-output-file
-                          (string-append out
-                                         "/include/config/kernel.release")
-                        (lambda (p)
-                          (format p "~a-default~%" ,version)))
-
-                      ;; Remove the '.install' and '..install.cmd' files; the
-                      ;; latter contains store paths, which pulls in bootstrap
-                      ;; binaries in the build environment, and prevents bit
-                      ;; reproducibility for the bootstrap binaries.
-                      (for-each delete-file (find-files out "\\.install"))
-
-                      #t))))))
+               (invoke "make"
+                       (string-append "INSTALL_HDR_PATH=" out)
+                       "headers_install")
+
+               (mkdir (string-append out "/include/config"))
+               (call-with-output-file
+                   (string-append out
+                                  "/include/config/kernel.release")
+                 (lambda (p)
+                   (format p "~a-default~%" ,version)))
+
+               ;; Remove the '.install' and '..install.cmd' files; the
+               ;; latter contains store paths, which pulls in bootstrap
+               ;; binaries in the build environment, and prevents bit
+               ;; reproducibility for the bootstrap binaries.
+               (for-each delete-file (find-files out "\\.install"))
+
+               #t))))
        #:allowed-references ()
        #:tests? #f))
     (home-page "https://www.gnu.org/software/linux-libre/")
@@ -547,8 +547,7 @@ providing the system administrator with some help in common tasks.")
 (define-public util-linux
   (package
     (name "util-linux")
-    (replacement util-linux/fixed)
-    (version "2.31")
+    (version "2.31.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/utils/"
@@ -556,8 +555,9 @@ providing the system administrator with some help in common tasks.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "12nw108xjhm63sh2n5a0qs33vpvbvb6rln96l9j50p7wykf7rgpr"))
-              (patches (search-patches "util-linux-tests.patch"))
+                "04fzrnrr3pvqskvjn9f81y0knh0jvvqx4lmbz5pd4lfdm5pv2l8s"))
+              (patches (search-patches "util-linux-tests.patch"
+                                       "util-linux-CVE-2018-7738.patch"))
               (modules '((guix build utils)))
               (snippet
                ;; We take the 'logger' program from GNU Inetutils and 'kill'
@@ -635,15 +635,6 @@ block devices, UUIDs, TTYs, and many other tools.")
     (license (list license:gpl3+ license:gpl2+ license:gpl2 license:lgpl2.0+
                    license:bsd-4 license:public-domain))))
 
-(define util-linux/fixed
-  (package
-    (inherit util-linux)
-    (source
-      (origin
-        (inherit (package-source util-linux))
-        (patches (append (origin-patches (package-source util-linux))
-                         (search-patches "util-linux-CVE-2018-7738.patch")))))))
-
 (define-public ddate
   (package
     (name "ddate")
@@ -1287,7 +1278,8 @@ inadequately in modern network environments, and both should be deprecated.")
                  ;; think about adding them later.
                  (substitute* '("config.make" "config.h")
                    (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR|SELINUX|AFBLUETOOTH)[ =]1.*$")
-                    "")))))
+                    ""))
+                 #t)))
            (add-after 'install 'remove-redundant-commands
              (lambda* (#:key outputs #:allow-other-keys)
                ;; Remove commands and man pages redundant with Inetutils.
@@ -1339,7 +1331,8 @@ configuration (iptunnel, ipmaddr).")
                               (substitute* "Make.Rules"
                                 (("LDFLAGS := #-g")
                                  (string-append "LDFLAGS := -Wl,-rpath="
-                                                %output "/lib"))))))
+                                                %output "/lib")))
+                              #t)))
                  #:tests? #f                      ; no 'check' target
                  #:make-flags (list "lib=lib"
                                     (string-append "prefix="
@@ -1375,7 +1368,7 @@ Linux-based operating systems.")
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
+         (add-before 'bootstrap 'patch-stuff
            (lambda _
              ;; Fix "field ‘ip6’ has incomplete type" errors.
              (substitute* "libbridge/libbridge.h"
@@ -1388,7 +1381,7 @@ Linux-based operating systems.")
                (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
                 "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
 
-             (zero? (system* "autoreconf" "-vf")))))
+             #t)))
        #:tests? #f))                              ; no 'check' target
 
     (home-page
@@ -1696,16 +1689,19 @@ UnionFS-FUSE additionally supports copy-on-write.")
     (source (origin (inherit (package-source fuse))
               (modules '((guix build utils)))
               (snippet
-               ;; Normally libfuse invokes mount(8) so that /etc/mtab is
-               ;; updated.  Change calls to 'mtab_needs_update' to 0 so that
-               ;; it doesn't do that, allowing us to remove the dependency on
-               ;; util-linux (something that is useful in initrds.)
-               '(substitute* '("lib/mount_util.c"
-                               "util/mount_util.c")
-                  (("mtab_needs_update[[:blank:]]*\\([a-z_]+\\)")
-                   "0")
-                  (("/bin/")
-                   "")))))))
+               '(begin
+                  ;; Normally libfuse invokes mount(8) so that /etc/mtab is
+                  ;; updated.  Change calls to 'mtab_needs_update' to 0 so
+                  ;; that it doesn't do that, allowing us to remove the
+                  ;; dependency on util-linux (something that is useful in
+                  ;; initrds.)
+                  (substitute* '("lib/mount_util.c"
+                                 "util/mount_util.c")
+                    (("mtab_needs_update[[:blank:]]*\\([a-z_]+\\)")
+                     "0")
+                    (("/bin/")
+                     ""))
+                  #t))))))
 
 (define-public unionfs-fuse/static
   (package (inherit unionfs-fuse)
@@ -1714,11 +1710,13 @@ UnionFS-FUSE additionally supports copy-on-write.")
     (source (origin (inherit (package-source unionfs-fuse))
               (modules '((guix build utils)))
               (snippet
-               ;; Add -ldl to the libraries, because libfuse.a needs that.
-               '(substitute* "src/CMakeLists.txt"
-                  (("target_link_libraries(.*)\\)" _ libs)
-                   (string-append "target_link_libraries"
-                                  libs " dl)"))))))
+               '(begin
+                  ;; Add -ldl to the libraries, because libfuse.a needs that.
+                  (substitute* "src/CMakeLists.txt"
+                    (("target_link_libraries(.*)\\)" _ libs)
+                     (string-append "target_link_libraries"
+                                    libs " dl)")))
+                  #t))))
     (arguments
      '(#:tests? #f
        #:configure-flags '("-DCMAKE_EXE_LINKER_FLAGS=-static")
@@ -1880,7 +1878,8 @@ system.")
                   (substitute* '("src/unicode_start" "src/unicode_stop")
                     ;; Assume the Coreutils are in $PATH.
                     (("/usr/bin/tty")
-                     "tty"))))))
+                     "tty"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -1946,7 +1945,7 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.")
 (define-public kmod
   (package
     (name "kmod")
-    (version "24")
+    (version "25")
     (source (origin
               (method url-fetch)
               (uri
@@ -1954,7 +1953,7 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.")
                               "kmod-" version ".tar.xz"))
               (sha256
                (base32
-                "15xkkkzvca9flvkm48gkh8y8f13vlm3sl7nz9ydc7b3jy4fqs2v1"))
+                "1kgixs4m3jvwk7fb3d18n6j77qhgi9qfv4csj35rs5ancr4ycrbi"))
               (patches (search-patches "kmod-module-directory.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -1963,19 +1962,20 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.")
      `(("xz" ,xz)
        ("zlib" ,zlib)))
     (arguments
-     `(#:tests? #f ; FIXME: Investigate test failures
+     `(#:tests? #f                      ; FIXME: Investigate test failures
        #:configure-flags '("--with-xz" "--with-zlib")
-       #:phases (alist-cons-after
-                 'install 'install-modprobe&co
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (bin (string-append out "/bin")))
-                     (for-each (lambda (tool)
-                                 (symlink "kmod"
-                                          (string-append bin "/" tool)))
-                               '("insmod" "rmmod" "lsmod" "modprobe"
-                                 "modinfo" "depmod"))))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-modprobe&co
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (for-each (lambda (tool)
+                           (symlink "kmod"
+                                    (string-append bin "/" tool)))
+                         '("insmod" "rmmod" "lsmod" "modprobe"
+                           "modinfo" "depmod"))
+               #t))))))
     (home-page "https://www.kernel.org/")
     (synopsis "Kernel module tools")
     (description "Kmod is a set of tools to handle common tasks with Linux
@@ -1991,7 +1991,7 @@ from the module-init-tools project.")
   ;; The post-systemd fork, maintained by Gentoo.
   (package
     (name "eudev")
-    (version "3.2.4")
+    (version "3.2.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/gentoo/eudev/archive/v"
@@ -1999,27 +1999,26 @@ from the module-init-tools project.")
               (file-name (string-append name "-" version ".zip"))
               (sha256
                (base32
-                "1r1ag0snarygrj5qqxi2xdq9w6g3sfjd5jx1b0fl7zmqlsz3vvxx"))
+                "0c9l3m3mr1nvrvlcnzh5gjdg9p9k7hh0jk04wh596cbmbass2nhd"))
               (patches (search-patches "eudev-rules-directory.patch"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'bootstrap
+         (add-before 'bootstrap 'patch-file-names
            (lambda* (#:key inputs #:allow-other-keys)
             (substitute* "man/make.sh"
               (("/usr/bin/xsltproc")
                 (string-append (assoc-ref inputs "xsltproc")
                                "/bin/xsltproc")))
-            ;; Manual pages are regenerated here.
-            (zero? (system* "./autogen.sh"))))
+            #t))
          (add-after 'install 'build-hwdb
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Build OUT/etc/udev/hwdb.bin.  This allows 'lsusb' and
              ;; similar tools to display product names.
              (let ((out (assoc-ref outputs "out")))
-               (zero? (system* (string-append out "/bin/udevadm")
-                               "hwdb" "--update"))))))
+               (invoke (string-append out "/bin/udevadm")
+                       "hwdb" "--update")))))
        #:configure-flags (list "--enable-manpages")))
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -2072,7 +2071,8 @@ time.")
                     (("confdir = .*$")
                      "confdir = @sysconfdir@\n")
                     (("DEFAULT_SYS_DIR = @DEFAULT_SYS_DIR@")
-                     "DEFAULT_SYS_DIR = @sysconfdir@"))))
+                     "DEFAULT_SYS_DIR = @sysconfdir@"))
+                  #t))
               (patches (search-patches "lvm2-static-link.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -2256,7 +2256,9 @@ compliance.")
                 "1f9mcp78sdd4sci6v32vxfcl1rfjpv205jisz1p93kkfnaisy7ip"))
 
               ;; We're building 'regulatory.bin' by ourselves.
-              (snippet '(delete-file "regulatory.bin"))))
+              (snippet '(begin
+                          (delete-file "regulatory.bin")
+                          #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -2689,7 +2691,8 @@ also contains the libsysfs library.")
               "includedir = @includedir@"))
            (substitute* "configure"
              (("includedir='(\\$\\{prefix\\}/include)'" all orig)
-              (string-append "includedir='" orig "/sysfs'")))))))
+              (string-append "includedir='" orig "/sysfs'")))
+           #t))))
     (synopsis "System utilities based on Linux sysfs (version 1.x)")))
 
 (define-public cpufrequtils
@@ -3106,7 +3109,7 @@ write access to exFAT devices.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'bootstrap
+                  (replace 'bootstrap
                     (lambda _
                       ;; The tarball was not generated with 'make dist' so we
                       ;; need to bootstrap things ourselves.
@@ -3241,12 +3244,6 @@ from the btrfs-progs package.  It is meant to be used in initrds.")
                (base32
                 "1bir9ladb58ijlcvrjrq1fb1xv5ys50zdjaq0yzliib0apsyrnyl"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -3310,9 +3307,10 @@ feature, and a laptop with an accelerometer.  It has no effect on SSDs.")
               (modules '((guix build utils)))
               ;; Fix erroneous man page location in Makefile leading to
               ;; a compilation failure.
-              (snippet
-               '(substitute* "CMakeLists.txt"
-                  (("thinkfan\\.1") "src/thinkfan.1")))))
+              (snippet '(begin
+                          (substitute* "CMakeLists.txt"
+                            (("thinkfan\\.1") "src/thinkfan.1"))
+                          #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:modules ((guix build cmake-build-system)
@@ -3363,11 +3361,12 @@ from userspace.")
                (base32
                 "1mb228p80hv97pgk3myyvgp975r9mxq56c6bdn1n24kngcfh4niy"))
               (modules '((guix build utils)))
-              (snippet
-               ;; Install under $prefix.
-               '(substitute* '("src/Makefile.in" "ntfsprogs/Makefile.in")
-                  (("/sbin")
-                   "@sbindir@")))))
+              (snippet '(begin
+                          ;; Install under $prefix.
+                          (substitute* '("src/Makefile.in" "ntfsprogs/Makefile.in")
+                            (("/sbin")
+                             "@sbindir@"))
+                          #t))))
     (build-system gnu-build-system)
     (inputs `(("util-linux" ,util-linux)
               ("fuse" ,fuse)))                    ;libuuid
@@ -3466,12 +3465,7 @@ The following service daemons are also provided:
     (build-system gnu-build-system)
     (arguments
      `(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB.
-       #:configure-flags '("--without-nistbeacon")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "sh" "autogen.sh")))))))
+       #:configure-flags '("--without-nistbeacon")))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -3668,9 +3662,12 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
               (file-name (string-append name "-" version ".tar.gz"))
               (modules '((guix build utils)))
               (snippet
-               ;; The snapshots lack a .git directory, breaking ‘git describe’.
-               `(substitute* "Makefile"
-                  (("\"unknown\"") (string-append "\"v" ,version "\""))))))
+               `(begin
+                  ;; The snapshots lack a .git directory,
+                  ;; breaking ‘git describe’.
+                  (substitute* "Makefile"
+                    (("\"unknown\"") (string-append "\"v" ,version "\"")))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 1cda606c20..f7b74b030f 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -189,8 +189,10 @@ interface to the Tk widget system.")
        (modules '((guix build utils)))
        (snippet
         ;; Add ecl-bundle-systems to 'default-system-source-registry'.
-        `(substitute* "contrib/asdf/asdf.lisp"
-           ,@(asdf-substitutions name)))))
+        `(begin
+           (substitute* "contrib/asdf/asdf.lisp"
+             ,@(asdf-substitutions name))
+           #t))))
     (build-system gnu-build-system)
     ;; src/configure uses 'which' to confirm the existence of 'gzip'.
     (native-inputs `(("which" ,which)))
@@ -324,8 +326,10 @@ an interpreter, a compiler, a debugger, and much more.")
        (modules '((guix build utils)))
        (snippet
         ;; Add sbcl-bundle-systems to 'default-system-source-registry'.
-        `(substitute* "contrib/asdf/asdf.lisp"
-           ,@(asdf-substitutions name)))))
+        `(begin
+           (substitute* "contrib/asdf/asdf.lisp"
+             ,@(asdf-substitutions name))
+           #t))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     ;; Bootstrap with CLISP.
@@ -618,10 +622,11 @@ The core is 12 builtin special forms and 33 builtin functions.")
        (snippet
         '(begin
            (substitute* "src/unix.c"
-               (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
-               (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
-             (substitute* "src/main.c"
-               (("\" \\(built \" __DATE__ \"\\)\"") ""))))
+             (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
+             (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
+           (substitute* "src/main.c"
+             (("\" \\(built \" __DATE__ \"\\)\"") ""))
+           #t))
        (sha256
         (base32
          "02pkfn3nqdkm9fm44911dbcz0v3r0l53vygj8xigl6id5g3iwi4k"))))
@@ -920,7 +925,8 @@ ANSI-compliant Common Lisp implementations.")
              (delete-file-recursively "demo")
              (delete-file "test/trapezoid.lisp")
              (substitute* "clx.asd"
-               (("\\(:file \"trapezoid\"\\)") ""))))))
+               (("\\(:file \"trapezoid\"\\)") ""))
+             #t))))
       (build-system asdf-build-system/sbcl)
       (home-page "http://www.cliki.net/portable-clx")
       (synopsis "X11 client library for Common Lisp")
@@ -1048,12 +1054,12 @@ productive, customizable lisp based systems.")
              (rename-file "contrib" "slynk/contrib")
              ;; Move slynk's contents into the base directory for easier
              ;; access
-             (for-each
-              (lambda (file)
-                (unless (string-prefix? "." file)
-                  (rename-file (string-append "slynk/" file)
-                               (string-append "./" (basename file)))))
-              (scandir "slynk"))))))
+             (for-each (lambda (file)
+                         (unless (string-prefix? "." file)
+                           (rename-file (string-append "slynk/" file)
+                                        (string-append "./" (basename file)))))
+                       (scandir "slynk"))
+             #t))))
       (build-system asdf-build-system/sbcl)
       (arguments
        `(#:tests? #f ; No test suite
diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm
index 02dacd3e87..f493720973 100644
--- a/gnu/packages/lxde.scm
+++ b/gnu/packages/lxde.scm
@@ -364,7 +364,8 @@ in LXDE.")
                    (and (string-suffix? ".c" file)
                         (file-exists? (c->vala file))))))
            (for-each delete-file
-                     (find-files "." generated-c-file?))))))
+                     (find-files "." generated-c-file?))
+           #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/m4.scm b/gnu/packages/m4.scm
index 32e7c2ae42..b223ce91d1 100644
--- a/gnu/packages/m4.scm
+++ b/gnu/packages/m4.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,18 +41,19 @@
       ;; proceeds and fails, unsurprisingly.
       #:tests? ,(not (%current-target-system))
 
-      #:phases (alist-cons-before
-                'check 'pre-check
-                (lambda* (#:key inputs #:allow-other-keys)
-                  ;; Fix references to /bin/sh.
-                  (let ((bash (assoc-ref inputs "bash")))
-                    (for-each patch-shebang
-                              (find-files "tests" "\\.sh$"))
-                    (substitute* (find-files "tests"
-                                             "posix_spawn")
-                      (("/bin/sh")
-                       (format #f "~a/bin/sh" bash)))))
-                %standard-phases)))
+      #:phases
+      (modify-phases %standard-phases
+        (add-before 'check 'pre-check
+          (lambda* (#:key inputs #:allow-other-keys)
+            ;; Fix references to /bin/sh.
+            (let ((bash (assoc-ref inputs "bash")))
+              (for-each patch-shebang
+                        (find-files "tests" "\\.sh$"))
+              (substitute* (find-files "tests"
+                                       "posix_spawn")
+                (("/bin/sh")
+                 (format #f "~a/bin/sh" bash)))
+              #t))))))
    (synopsis "Macro processor")
    (description
     "GNU M4 is an implementation of the M4 macro language, which features
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 12384a1031..d9b54d692f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -408,7 +408,8 @@ sample proximities between pairs of cases.")
                            (display line out))
                          (loop (read-line in 'concat) skip-next?)))))))
            (for-each delete-ifdefs (find-files "src/shogun/kernel/"
-                                               "^Kernel\\.(cpp|h)"))))))
+                                               "^Kernel\\.(cpp|h)"))
+           #t))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ;no check target
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 1d52b35929..7557f1365f 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -137,9 +137,11 @@
              (snippet
               ;; For a rebuild of the Flex/Bison byproducts touched by the
               ;; patch above.
-              '(for-each delete-file
-                         '("mh/mh_alias_lex.c"
-                           "libmailutils/cfg/parser.c")))))
+              '(begin
+                 (for-each delete-file
+                           '("mh/mh_alias_lex.c"
+                             "libmailutils/cfg/parser.c"))
+                 #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 99488fb4c4..a57491aeb4 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -1,6 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -143,24 +145,24 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                  (arguments
                   (substitute-keyword-arguments (package-arguments bzip2)
                     ((#:phases phases)
-                     `(alist-cons-before
-                       'build 'dash-static
-                       (lambda _
-                         (substitute* "Makefile"
-                           (("^LDFLAGS[[:blank:]]*=.*$")
-                            "LDFLAGS = -static")))
-                       ,phases))))))
+                     `(modify-phases ,phases
+                        (add-before 'build 'dash-static
+                          (lambda _
+                            (substitute* "Makefile"
+                              (("^LDFLAGS[[:blank:]]*=.*$")
+                               "LDFLAGS = -static"))
+                            #t))))))))
         (xz (package (inherit xz)
               (arguments
                `(#:strip-flags '("--strip-all")
-                 #:phases (alist-cons-before
-                           'configure 'static-executable
-                           (lambda _
-                             ;; Ask Libtool for a static executable.
-                             (substitute* "src/xz/Makefile.in"
-                               (("^xz_LDADD =")
-                                "xz_LDADD = -all-static")))
-                           %standard-phases)))))
+                 #:phases (modify-phases %standard-phases
+                            (add-before 'configure 'static-executable
+                              (lambda _
+                                ;; Ask Libtool for a static executable.
+                                (substitute* "src/xz/Makefile.in"
+                                  (("^xz_LDADD =")
+                                   "xz_LDADD = -all-static"))
+                                #t)))))))
         (gawk (package (inherit gawk)
                 (source (origin (inherit (package-source gawk))
                           (patches (cons (search-patch "gawk-shell.patch")
@@ -175,14 +177,14 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
 
                    ,@(substitute-keyword-arguments (package-arguments gawk)
                        ((#:phases phases)
-                        `(alist-cons-before
-                          'configure 'no-export-dynamic
-                          (lambda _
-                            ;; Since we use `-static', remove
-                            ;; `-export-dynamic'.
-                            (substitute* "configure"
-                              (("-Wl,-export-dynamic") "")))
-                          ,phases)))))
+                        `(modify-phases ,phases
+                           (add-before 'configure 'no-export-dynamic
+                             (lambda _
+                               ;; Since we use `-static', remove
+                               ;; `-export-dynamic'.
+                               (substitute* "configure"
+                                 (("-Wl,-export-dynamic") ""))
+                               #t)))))))
                 (inputs (if (%current-target-system)
                             `(("bash" ,static-bash))
                             '()))))
@@ -306,19 +308,19 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                                   ((#:configure-flags flags _ ...)
                                    flags)))
        #:strip-flags '("--strip-all")
-       #:phases (alist-cons-before
-                 'configure 'all-static
-                 (lambda _
-                   ;; The `-all-static' libtool flag can only be passed
-                   ;; after `configure', since configure tests don't use
-                   ;; libtool, and only for executables built with libtool.
-                   (substitute* '("binutils/Makefile.in"
-                                  "gas/Makefile.in"
-                                  "ld/Makefile.in")
-                     (("^LDFLAGS =(.*)$" line)
-                      (string-append line
-                                     "\nAM_LDFLAGS = -static -all-static\n"))))
-                 %standard-phases)))))
+       #:phases (modify-phases %standard-phases
+                  (add-before 'configure 'all-static
+                    (lambda _
+                      ;; The `-all-static' libtool flag can only be passed
+                      ;; after `configure', since configure tests don't use
+                      ;; libtool, and only for executables built with libtool.
+                      (substitute* '("binutils/Makefile.in"
+                                     "gas/Makefile.in"
+                                     "ld/Makefile.in")
+                        (("^LDFLAGS =(.*)$" line)
+                         (string-append line
+                                        "\nAM_LDFLAGS = -static -all-static\n")))
+                      #t)))))))
 
 (define %binutils-static-stripped
   ;; The subset of Binutils that we need.
@@ -424,18 +426,18 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                       (remove (cut string-match "--(.*plugin|enable-languages)" <>)
                               ,flags)))
             ((#:phases phases)
-             `(alist-cons-after
-               'pre-configure 'remove-lgcc_s
-               (lambda _
-                 ;; Remove the '-lgcc_s' added to GNU_USER_TARGET_LIB_SPEC in
-                 ;; the 'pre-configure phase of our main gcc package, because
-                 ;; that shared library is not present in this static gcc.  See
-                 ;; <https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00008.html>.
-                 (substitute* (cons "gcc/config/rs6000/sysv4.h"
-                                    (find-files "gcc/config"
-                                                "^gnu-user.*\\.h$"))
-                   ((" -lgcc_s}}") "}}")))
-               ,phases)))))
+             `(modify-phases ,phases
+                (add-after 'pre-configure 'remove-lgcc_s
+                  (lambda _
+                    ;; Remove the '-lgcc_s' added to GNU_USER_TARGET_LIB_SPEC in
+                    ;; the 'pre-configure phase of our main gcc package, because
+                    ;; that shared library is not present in this static gcc.  See
+                    ;; <https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00008.html>.
+                    (substitute* (cons "gcc/config/rs6000/sysv4.h"
+                                       (find-files "gcc/config"
+                                                   "^gnu-user.*\\.h$"))
+                      ((" -lgcc_s}}") "}}"))
+                    #t)))))))
      (native-inputs
       (if (%current-target-system)
           `(;; When doing a Canadian cross, we need GMP/MPFR/MPC both
@@ -493,12 +495,14 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                              (string-append includedir "/c++"))
 
            ;; For native builds, check whether the binaries actually work.
-           ,(if (%current-target-system)
-                '#t
-                '(every (lambda (prog)
-                          (zero? (system* (string-append gcc "/bin/" prog)
-                                          "--version")))
-                        '("gcc" "g++" "cpp")))))))
+           ,@(if (%current-target-system)
+                 '()
+                 '((for-each (lambda (prog)
+                               (invoke (string-append gcc "/bin/" prog)
+                                       "--version"))
+                             '("gcc" "g++" "cpp"))))
+
+           #t))))
     (inputs `(("gcc" ,%gcc-static)))))
 
 (define %guile-static
@@ -586,21 +590,22 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
            (mkdir (string-append out "/bin"))
            (copy-file guile1 guile2)
 
-           ;; Does the relocated Guile work?
-           (and ,(if (%current-target-system)
-                     #t
-                     '(zero? (system* guile2 "--version")))
-                (begin
-                  ;; Strip store references.
-                  (remove-store-references guile2)
-
-                  ;; Does the stripped Guile work?  If it aborts, it could be
-                  ;; that it tries to open iconv descriptors and fails because
-                  ;; libc's iconv data isn't available (see
-                  ;; `guile-default-utf8.patch'.)
-                  ,(if (%current-target-system)
-                       #t
-                       '(zero? (system* guile2 "--version")))))))))
+           ;; Verify that the relocated Guile works.
+           ,@(if (%current-target-system)
+                 '()
+                 '((invoke guile2 "--version")))
+
+           ;; Strip store references.
+           (remove-store-references guile2)
+
+           ;; Verify that the stripped Guile works.  If it aborts, it could be
+           ;; that it tries to open iconv descriptors and fails because libc's
+           ;; iconv data isn't available (see `guile-default-utf8.patch'.)
+           ,@(if (%current-target-system)
+                 '()
+                 '((invoke guile2 "--version")))
+
+           #t))))
     (inputs `(("guile" ,%guile-static)))
     (outputs '("out"))
     (synopsis "Minimal statically-linked and relocatable Guile")))
@@ -627,17 +632,17 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
              (mkdir out)
              (set-path-environment-variable "PATH" '("bin") (list tar xz))
              (with-directory-excursion input
-               (zero? (system* "tar" "cJvf"
-                               (string-append out "/"
-                                              ,name "-" ,version
-                                              "-"
-                                              ,(or (%current-target-system)
-                                                   (%current-system))
-                                              ".tar.xz")
-                               "."
-                               ;; avoid non-determinism in the archive
-                               "--sort=name" "--mtime=@0"
-                               "--owner=root:0" "--group=root:0"))))))))))
+               (invoke "tar" "cJvf"
+                       (string-append out "/"
+                                      ,name "-" ,version
+                                      "-"
+                                      ,(or (%current-target-system)
+                                           (%current-system))
+                                      ".tar.xz")
+                       "."
+                       ;; avoid non-determinism in the archive
+                       "--sort=name" "--mtime=@0"
+                       "--owner=root:0" "--group=root:0")))))))))
 
 (define %bootstrap-binaries-tarball
   ;; A tarball with the statically-linked bootstrap binaries.
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 257cabbbb6..644738f717 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -189,7 +189,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
 (define-public help2man
   (package
     (name "help2man")
-    (version "1.47.5")
+    (version "1.47.6")
     (source
      (origin
       (method url-fetch)
@@ -197,7 +197,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
                           version ".tar.xz"))
       (sha256
        (base32
-        "1cb14kp380jzk1yi4i7x9d8qplc8c5mgcbgycgs9ggpx34jhp9kw"))))
+        "0vz4dlrvy4vc6l7w0a7n668pfa0rdm73wr2gar58wqranyah46yr"))))
     (build-system gnu-build-system)
     (arguments `(;; There's no `check' target.
                  #:tests? #f))
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 0281b02daa..abd297acbe 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -923,12 +923,7 @@ icons on the MATE desktop.  It works on local and remote file systems.")
        ("intltool" ,intltool)
        ("yelp-tools" ,yelp-tools)
        ("desktop-file-utils" ,desktop-file-utils)
-       ("kbproto" ,kbproto)
-       ("randrproto" ,randrproto)
-       ("renderproto" ,renderproto)
-       ("scrnsaverproto" ,scrnsaverproto)
-       ("xextpro" ,xextproto)
-       ("xproto" ,xproto)
+       ("xorgproto" ,xorgproto)
        ("xmodmap" ,xmodmap)
        ("gobject-introspection" ,gobject-introspection)))
     (inputs
@@ -1142,7 +1137,7 @@ can be used as backgrounds in the MATE Desktop environment.")
        ("libxtst" ,libxtst)
        ("libx11" ,libx11)
        ("mate-panel" ,mate-panel)
-       ("xproto" ,xproto)))
+       ("xorgproto" ,xorgproto)))
     (home-page "https://mate-desktop.org/")
     (synopsis "Tool for MATE on Netbooks")
     (description
@@ -1194,15 +1189,10 @@ Re-decorates windows on un-maximise.
        ("autoconf" ,autoconf-wrapper)
        ("gettext" ,gettext-minimal)
        ("intltool" ,intltool)
-       ("kbproto" ,kbproto)
        ("mate-common" ,mate-common)
        ("pkg-config" ,pkg-config)
-       ("randrproto" ,randrproto)
-       ("renderproto" ,renderproto)
-       ("scrnsaverproto" ,scrnsaverproto)
        ("which" ,which)
-       ("xextpro" ,xextproto)
-       ("xproto" ,xproto)))
+       ("xorgproto" ,xorgproto)))
     (inputs
      `(("cairo" ,cairo)
        ("dconf" ,dconf)
@@ -1256,8 +1246,7 @@ can be used as backgrounds in the MATE Desktop environment.")
        ("libsm" ,libsm)
        ("pkg-config" ,pkg-config)
        ("scrollkeeper" ,scrollkeeper)
-       ("xextpro" ,xextproto)
-       ("xproto" ,xproto)
+       ("xorgproto" ,xorgproto)
        ("yelp-tools" ,yelp-tools)))
     (inputs
      `(("atk" ,atk)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 51fe119712..beafc22750 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -172,9 +172,11 @@ interactive dialogs to guide them.")
        (modules '((guix build utils)))
        (snippet
         ;; Make sure we don't use the bundled software.
-        '(for-each (lambda (d)
-                     (delete-file-recursively (string-append "libcoda/" d)))
-                   '("zlib" "pcre" "expat")))))
+        '(begin
+           (for-each (lambda (d)
+                       (delete-file-recursively (string-append "libcoda/" d)))
+                     '("zlib" "pcre" "expat"))
+           #t))))
     (native-inputs
      `(("fortran" ,gfortran)
        ("python" ,python)
@@ -822,7 +824,8 @@ extremely large and complex data collections.")
           (for-each delete-file
                     (list "SZip.tar.gz" "ZLib.tar.gz" "JPEG8d.tar.gz"
                           "HDF4.tar.gz" "HDF5.tar.gz"))
-          (delete-file-recursively ,(string-append "hdfjava-" version "/lib"))))))
+          (delete-file-recursively ,(string-append "hdfjava-" version "/lib"))
+          #t))))
    (build-system gnu-build-system)
    (native-inputs
     `(("jdk" ,icedtea "jdk")
@@ -1225,7 +1228,9 @@ online as well as original implementations of various other algorithms.")
               (modules '((guix build utils)))
               (snippet
                ;; Make sure we don't use the bundled software.
-               '(delete-file-recursively "ThirdParty"))))
+               '(begin
+                  (delete-file-recursively "ThirdParty")
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -1449,7 +1454,9 @@ Open CASCADE library.")
       (modules '((guix build utils)))
       (snippet
        ;; Remove non-free METIS code
-       '(delete-file-recursively "contrib/Metis"))))
+       '(begin
+          (delete-file-recursively "contrib/Metis")
+          #t))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("fltk" ,fltk)
@@ -2015,7 +2022,8 @@ void mc64ad_ (int *a, int *b, int *c, int *d, int *e, double *f, int *g,
                    (let ((line (read-line in 'concat)))
                     (unless (regexp-exec rx line)
                       (display line out)
-                      (loop)))))))))))
+                      (loop))))
+                 #t)))))))
     (build-system cmake-build-system)
     (native-inputs
      `(("tcsh" ,tcsh)))
@@ -2073,7 +2081,8 @@ void mc64ad_ (int *a, int *b, int *c, int *d, int *e, double *f, int *g,
            (delete-file "SRC/mc64ad.f.bak")
            (substitute* "SRC/util.c"    ;adjust default algorithm
              (("RowPerm[[:blank:]]*=[[:blank:]]*LargeDiag")
-              "RowPerm = NOROWPERM"))))
+              "RowPerm = NOROWPERM"))
+           #t))
        (patches (search-patches "superlu-dist-scotchmetis.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -2922,7 +2931,9 @@ Fresnel integrals, and similar related functions as well.")
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled metis source
-        '(delete-file-recursively "metis-5.1.0"))))
+        '(begin
+           (delete-file-recursively "metis-5.1.0")
+           #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f  ;no "check" target
@@ -3118,19 +3129,21 @@ specifications.")
         "12pj1idjz31r7c2mb5w03vy1cmvycvbkx9z29s40qdmkp1i7q6i0"))
       (modules '((guix build utils)))
       (snippet
-       '(substitute* (list "lp_solve/ccc" "lpsolve55/ccc")
-          (("^c=cc") "c=gcc")
-          ;; Pretend to be on a 64 bit platform to obtain a common directory
-          ;; name for the build results on all architectures; nothing else
-          ;; seems to depend on it.
-          (("^PLATFORM=.*$") "PLATFORM=ux64\n")
-
-          ;; The check for 'isnan' as it is written fails with
-          ;; "non-floating-point argument in call to function
-          ;; ‘__builtin_isnan’", which leads to the 'NOISNAN' cpp macro
-          ;; definition, which in turn leads to bad things.  Fix the feature
-          ;; test.
-          (("isnan\\(0\\)") "isnan(0.)")))))
+       '(begin
+          (substitute* (list "lp_solve/ccc" "lpsolve55/ccc")
+            (("^c=cc") "c=gcc")
+            ;; Pretend to be on a 64 bit platform to obtain a common directory
+            ;; name for the build results on all architectures; nothing else
+            ;; seems to depend on it.
+            (("^PLATFORM=.*$") "PLATFORM=ux64\n")
+
+            ;; The check for 'isnan' as it is written fails with
+            ;; "non-floating-point argument in call to function
+            ;; ‘__builtin_isnan’", which leads to the 'NOISNAN' cpp macro
+            ;; definition, which in turn leads to bad things.  Fix the feature
+            ;; test.
+            (("isnan\\(0\\)") "isnan(0.)"))
+          #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no check target
@@ -3188,7 +3201,9 @@ revised simplex and the branch-and-bound methods.")
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled sources: UMFPACK, TBB, muParser, and boost
-        '(delete-file-recursively "bundled"))))
+        '(begin
+           (delete-file-recursively "bundled")
+           #t))))
     (build-system cmake-build-system)
     (inputs
      `(("tbb" ,tbb)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 6ce8b258bb..6fe7ff434a 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -217,7 +217,8 @@ identi.ca and status.net).")
                               '("intltool.m4" "libtool.m4" "lt~obsolete.m4"
                                 "ltoptions.m4" "ltsugar.m4" "ltversion.m4")))
                   (delete-file-recursively "build-aux")
-                  (delete-file "po/Makefile.in.in")))))
+                  (delete-file "po/Makefile.in.in")
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs `(("autoconf" ,autoconf)
                      ("autoconf-archive" ,autoconf-archive)
@@ -243,13 +244,13 @@ identi.ca and status.net).")
        #:phases
        (modify-phases %standard-phases
          ;; Release 2.12.4 wasn't properly bootstrapped.  Later ones might be!
-         (add-after 'unpack 'bootstrap
+         (add-before 'boostrap 'copy-intltool-makefile
            (lambda* (#:key inputs #:allow-other-keys)
              ;; This file is still required for autoreconf.
              (copy-file (string-append (assoc-ref inputs "intltool")
                                        "/share/intltool/Makefile.in.in")
                         "po/Makefile.in.in")
-             (zero? (system* "autoreconf" "-fiv")))))))
+             #t)))))
     (synopsis "Graphical IRC Client")
     (description
      "HexChat lets you connect to multiple IRC networks at once.  The main
@@ -1068,7 +1069,9 @@ into existing applications.")
          "1lw6807qrbmvzbrjn1rna1dhir2k70xpcjvyjn45y35hav333a42"))
        ;; psycmp3 currently depends on MP3::List and rxaudio (shareware),
        ;; we can add it back when this is no longer the case.
-       (snippet '(delete-file "contrib/psycmp3"))))
+       (snippet '(begin
+                   (delete-file "contrib/psycmp3")
+                   #t))))
     (build-system perl-build-system)
     (inputs
      `(("perl-curses" ,perl-curses)
@@ -1373,12 +1376,6 @@ is also scriptable and extensible via Guile.")
                (base32
                 "0iaj56fkd5bjvqpvq3324ni895rmbj1akbfqipjydnghfwaym4z6"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'bootstrap
-           (lambda _
-             (zero? (system* "./bootstrap.sh")))))))
     (inputs
      `(("expat" ,expat)
        ("openssl" ,openssl)))
@@ -1408,12 +1405,6 @@ manual SSL certificate verification.")
                (base32
                 "1hzwdax4nsz0fncf5bjfza0cn0lc6xsf38y569ql1gg5hvwr6169"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'bootstrap
-           (lambda _
-             (zero? (system* "./bootstrap.sh")))))))
     (inputs
      `(("expat" ,expat)
        ("openssl" ,openssl)))
diff --git a/gnu/packages/microcom.scm b/gnu/packages/microcom.scm
index dcb864808f..67fd5fe355 100644
--- a/gnu/packages/microcom.scm
+++ b/gnu/packages/microcom.scm
@@ -39,12 +39,6 @@
                (base32
                 "080ci5589bpyy5kcl51csmvpw9zysify189hw6awx69pi3cjnxly"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-i")))))))
     (inputs `(("readline" ,readline)))
     (native-inputs `(("automake" ,automake)
                      ("autoconf" ,autoconf)))
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 31ec88db81..bbfa4957fc 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -55,9 +55,11 @@
               (modules '((guix build utils)))
               (snippet
                ;; Ensure reproducibility.
-               '(substitute* (find-files "cgi" "\\.c$")
-                  (("__DATE__") "\"1970-01-01\"")
-                  (("__TIME__") "\"00:00:00\"")))))
+               '(begin
+                  (substitute* (find-files "cgi" "\\.c$")
+                    (("__DATE__") "\"1970-01-01\"")
+                    (("__TIME__") "\"00:00:00\""))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("unzip" ,unzip)))
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 6dc58e2cc8..5904fef8d3 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -120,7 +120,7 @@ versions of ID3v2.")
               "0yfhqwk0w8q2hyv1jib1008jvzmwlpsxvc8qjllhna6p1hycqj97"))
             (modules '((guix build utils)))
             ;; Don't use bundled zlib
-            (snippet '(delete-file-recursively "zlib"))
+            (snippet '(begin (delete-file-recursively "zlib") #t))
             (patches (search-patches "id3lib-CVE-2007-4460.patch"))))
    (build-system gnu-build-system)
    (inputs `(("zlib" ,zlib)))
@@ -192,10 +192,12 @@ Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
                 "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Makefile"
-                  (("/bin/rm") "rm")
-                  (("/usr/bin/install") "install")
-                  (("man/man1") "share/man/man1")))))
+               '(begin
+                  (substitute* "Makefile"
+                    (("/bin/rm") "rm")
+                    (("/usr/bin/install") "install")
+                    (("man/man1") "share/man/man1"))
+                  #t))))
     (build-system gnu-build-system)
     (outputs '("out" "gui"))                      ;GTK+ interface in "gui"
     (arguments
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index 4bfe0ac563..ee427f84eb 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -91,13 +92,13 @@ algebra.")
 (define-public mpfr
   (package
    (name "mpfr")
-   (version "3.1.6")
+   (version "4.0.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/mpfr/mpfr-" version
                                 ".tar.xz"))
             (sha256 (base32
-                     "0l598h9klpgkz2bp0rxiqb90mkqh9f2f81n5rpy191j00hdaqqks"))))
+                     "0vp1lrc08gcmwdaqck6bpzllkrykvp06vz5gnqpyw0v3h9h4m1v7"))))
    (build-system gnu-build-system)
    (outputs '("out" "debug"))
    (propagated-inputs `(("gmp" ,gmp)))            ; <mpfr.h> refers to <gmp.h>
@@ -112,14 +113,14 @@ correct rounding.")
 (define-public mpc
   (package
    (name "mpc")
-   (version "1.0.3")
+   (version "1.1.0")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "mirror://gnu/mpc/mpc-" version ".tar.gz"))
             (sha256
               (base32
-                "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1"))))
+                "0biwnhjm3rx3hc0rfpvyniky4lpzsvdcwhmcn7f0h4iw2hwcb1b9"))))
    (build-system gnu-build-system)
    (outputs '("out" "debug"))
    (propagated-inputs `(("gmp" ,gmp)              ; <mpc.h> refers to both
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 7818cfcc0b..0899999576 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -203,29 +203,31 @@ score, keyboard, guitar, drum and controller views.")
                    "0cdcj7di7j9jgzc1ihjna1a5df64f9hnmx7b9kh8rlg76hc0l0hi"))
                 (modules '((guix build utils)))
                 (snippet
-                  '(for-each
+                 '(begin
+                    (for-each
                      (lambda (dir)
                        (delete-file-recursively
-                         (string-append "3rdparty/" dir)))
+                        (string-append "3rdparty/" dir)))
                      (list
-                       ;; TODO: The following dependencies are still bundled:
-                       ;; - "qxt": Appears to be unmaintained upstream.
-                       ;; - "qsqlite"
-                       ;; - "qtsingleapplication"
-                       ;; - "qocoa"
-                       ;; - "qtiocompressor"
-                       ;; - "gmock": The tests crash when using our googletest
-                       ;;   package instead of the bundled gmock.
-                       "SPMediaKeyTap"
-                       "fancytabwidget"
-                       "google-breakpad"
-                       "libmygpo-qt"
-                       "libmygpo-qt5"
-                       "libprojectm"
-                       "qtwin"
-                       "sha2" ;; Replaced by openssl.
-                       "taglib"
-                       "tinysvcmdns")))
+                      ;; TODO: The following dependencies are still bundled:
+                      ;; - "qxt": Appears to be unmaintained upstream.
+                      ;; - "qsqlite"
+                      ;; - "qtsingleapplication"
+                      ;; - "qocoa"
+                      ;; - "qtiocompressor"
+                      ;; - "gmock": The tests crash when using our googletest
+                      ;;   package instead of the bundled gmock.
+                      "SPMediaKeyTap"
+                      "fancytabwidget"
+                      "google-breakpad"
+                      "libmygpo-qt"
+                      "libmygpo-qt5"
+                      "libprojectm"
+                      "qtwin"
+                      "sha2" ;; Replaced by openssl.
+                      "taglib"
+                      "tinysvcmdns"))
+                    #t))
                 (patches (search-patches "clementine-use-openssl.patch"
                                          "clementine-remove-crypto++-dependency.patch"))))
       (build-system cmake-build-system)
@@ -2607,7 +2609,8 @@ of tools for manipulating and accessing your music.")
                '(begin
                   (delete-file-recursively "resources/music")
                   (substitute* "CMakeLists.txt"
-                    (("add_subdirectory\\(resources/music\\)") ""))))))
+                    (("add_subdirectory\\(resources/music\\)") ""))
+                  #t))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no check target
@@ -2645,9 +2648,11 @@ for improved Amiga ProTracker 2/3 compatibility.")
               (modules '((guix build utils)))
               (snippet
                ;; Remove use of __DATE__ and __TIME__ for reproducibility.
-               `(substitute* "schism/version.c"
-                  (("Schism Tracker built %s %s.*$")
-                   (string-append "Schism Tracker version " ,version "\");"))))))
+               `(begin
+                  (substitute* "schism/version.c"
+                    (("Schism Tracker built %s %s.*$")
+                     (string-append "Schism Tracker version " ,version "\");")))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -2762,9 +2767,11 @@ available memory.")
               (modules '((guix build utils)))
               (snippet
                ;; Remove use of __DATE__ and __TIME__ for reproducibility.
-               '(substitute* "main.c"
-                  (("printf \\(\"            Built : %s\", __DATE__\\);") "")
-                  (("printf \\(\" %s\", __TIME__\\);") "")))))
+               '(begin
+                  (substitute* "main.c"
+                    (("printf \\(\"            Built : %s\", __DATE__\\);") "")
+                    (("printf \\(\" %s\", __TIME__\\);") ""))
+                  #t))))
     (build-system gnu-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm
index 548261289e..6bc98b15d8 100644
--- a/gnu/packages/ncurses.scm
+++ b/gnu/packages/ncurses.scm
@@ -40,7 +40,7 @@
 (define-public ncurses
   (package
     (name "ncurses")
-    (version "6.0-20170930")
+    (version "6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/ncurses/ncurses-"
@@ -48,7 +48,7 @@
                                   ".tar.gz"))
               (sha256
                (base32
-                "0q3jck7lna77z5r42f13c4xglc7azd19pxfrjrpgp2yf615w4lgm"))))
+                "05qdmbmrrn88ii9f66rkcmcyzp1kb1ymkx7g040lfkd1nkp7w1da"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                ;1 MiB of man pages
@@ -56,7 +56,8 @@
      (let ((patch-makefile-phase
             '(lambda _
                (for-each patch-makefile-SHELL
-                         (find-files "." "Makefile.in"))))
+                         (find-files "." "Makefile.in"))
+               #t))
            (configure-phase
             ;; The 'configure' script does not understand '--docdir', so we must
             ;; override that and use '--mandir' instead.
@@ -64,21 +65,27 @@
                        #:allow-other-keys)
                (let ((out (assoc-ref outputs "out"))
                      (doc (assoc-ref outputs "doc")))
-                 (zero? (apply system* "./configure"
-                               (string-append "SHELL=" (which "sh"))
-                               (string-append "--build=" build)
-                               (string-append "--prefix=" out)
-                               (string-append "--mandir=" doc "/share/man")
-                               (if target
-                                   (cons (string-append "--host=" target)
-                                         configure-flags)
-                                   configure-flags))))))
+                 (apply invoke "./configure"
+                        (string-append "SHELL=" (which "sh"))
+                        (string-append "--build=" build)
+                        (string-append "--prefix=" out)
+                        (string-append "--mandir=" doc "/share/man")
+                        (if target
+                            (cons (string-append "--host=" target)
+                                  configure-flags)
+                            configure-flags))
+                 #t)))
            (apply-rollup-patch-phase
+            ;; Ncurses distributes "stable" patchsets to be applied on top
+            ;; of the release tarball.  These are only available as shell
+            ;; scripts(!) so we decompress and apply them in a phase.
+            ;; See <https://invisible-mirror.net/archives/ncurses/6.1/README>.
             '(lambda* (#:key inputs native-inputs #:allow-other-keys)
                (copy-file (assoc-ref (or native-inputs inputs) "rollup-patch")
                           (string-append (getcwd) "/rollup-patch.sh.bz2"))
-               (and (zero? (system* "bzip2" "-d" "rollup-patch.sh.bz2"))
-                    (zero? (system* "sh" "rollup-patch.sh")))))
+               (invoke "bzip2" "-d" "rollup-patch.sh.bz2")
+               (invoke "sh" "rollup-patch.sh")
+               #t))
            (remove-shebang-phase
             '(lambda _
                ;; To avoid retaining a reference to the bootstrap Bash via the
@@ -149,7 +156,8 @@
                                            (when (file-exists? packagew.pc)
                                              (symlink packagew.pc package.pc))))
                                        '())))
-                             '("curses" "ncurses" "form" "panel" "menu")))))))
+                             '("curses" "ncurses" "form" "panel" "menu")))
+                 #t))))
        `(#:configure-flags
          ,(cons*
            'quasiquote
@@ -174,8 +182,6 @@
               ,@(if (target-mingw?) '("--enable-term-driver") '()))))
          #:tests? #f                  ; no "check" target
          #:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'apply-rollup-patch
-                      ,apply-rollup-patch-phase)
                     (replace 'configure ,configure-phase)
                     (add-after 'install 'post-install
                       ,post-install-phase)
@@ -185,22 +191,7 @@
                       ,remove-shebang-phase)))))
     (self-native-input? #t)           ; for `tic'
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-
-       ;; Ncurses distributes "stable" patchsets to be applied on top
-       ;; of the release tarball.  These are only available as shell
-       ;; scripts(!) so we decompress and apply them in a phase.
-       ;; See <https://invisible-mirror.net/archives/ncurses/6.0/README>.
-       ("rollup-patch"
-        ,(origin
-           (method url-fetch)
-           (uri (string-append
-                 "https://invisible-mirror.net/archives/ncurses/"
-                 (car (string-split version #\-))
-                 "/ncurses-" version "-patch.sh.bz2"))
-           (sha256
-            (base32
-             "08a1pp8wnj1fwpa1pz3fgrmd6xwp21idniswqz8lx3w3z2nb4ydi"))))))
+     `(("pkg-config" ,pkg-config)))
     (native-search-paths
      (list (search-path-specification
             (variable "TERMINFO_DIRS")
diff --git a/gnu/packages/netpbm.scm b/gnu/packages/netpbm.scm
index 2d76d7e067..e5246660a2 100644
--- a/gnu/packages/netpbm.scm
+++ b/gnu/packages/netpbm.scm
@@ -94,7 +94,8 @@
                   (("^DATE=.*")
                    "DATE=\"Thu Jan 01 00:00:00+0000 1970\"\n")
                   (("^USER=.*")
-                   "USER=Guix\n"))))))
+                   "USER=Guix\n"))
+                #t))))
 
    (build-system gnu-build-system)
    (inputs `(("ghostscript" ,ghostscript)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 999f0578d7..fa2ff1057e 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -399,9 +399,11 @@ Ethernet devices.")
                 "045cbsq9ps32j24v8y5hpyqxnqn9mpaf3mgvirlhgpqyb9jsia0c"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Main.h"
-                  (("#include <stdio.h>")
-                   "#include <stdio.h>\n#include <stdlib.h>")))))
+               '(begin
+                  (substitute* "Main.h"
+                    (("#include <stdio.h>")
+                     "#include <stdio.h>\n#include <stdlib.h>"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f                                ; no "check" target
@@ -1570,8 +1572,6 @@ interface and a programmable text output for scripting.")
        (modify-phases %standard-phases
          (add-after 'unpack 'chdir
            (lambda _ (chdir "libnet") #t))
-         (add-after 'chdir 'bootstrap
-           (lambda _ (zero? (system* "autoreconf" "-vif"))))
          (add-before 'build 'build-doc
            (lambda* (#:key make-flags #:allow-other-keys)
              (zero? (apply system* "make" "-C" "doc" "doc"
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index 976d0c048a..8daaf6de89 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -68,7 +68,8 @@
                     (("deps/http_parser/http_parser.gyp") "")
                     (("deps/uv/include/\\*.h") "")
                     (("deps/uv/uv.gyp") "")
-                    (("deps/zlib/zlib.gyp") ""))))))
+                    (("deps/zlib/zlib.gyp") ""))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      ;; TODO: Purge the bundled copies from the source.
diff --git a/gnu/packages/nvi.scm b/gnu/packages/nvi.scm
index 5f829aa6ee..ea02762a9b 100644
--- a/gnu/packages/nvi.scm
+++ b/gnu/packages/nvi.scm
@@ -50,7 +50,8 @@
                conf-wrap)
              (newline conf-wrap)
              (close-output-port conf-wrap)
-             (chmod "configure" #o0755)))))
+             (chmod "configure" #o0755)
+             #t))))
 
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 9346012390..5f67aa62aa 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -100,7 +100,8 @@
                 ;; in OCaml's directory in the store, which is read-only.
                 (substitute* "Makefile"
                   (("--prefix")
-                   "--libdir $(LIBDIR) --prefix")))))))
+                   "--libdir $(LIBDIR) --prefix"))
+                #t)))))
 
 ;; They also require almost the same set of arguments
 (define janestreet-arguments
@@ -781,7 +782,8 @@ libpanel, librsvg and quartz.")
             ;; Without the '-fix' argument, the html file produced does not
             ;; have functioning internal hyperlinks.
             (substitute* "doc/Makefile"
-              (("hevea unison") "hevea -fix unison"))))))
+              (("hevea unison") "hevea -fix unison"))
+            #t))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                  ; 1.9 MiB of documentation
@@ -2196,17 +2198,19 @@ file (POSIX like) and filename.")
                 "1ln7vc7ip6s5xbi20mhnn087xi4a2m5vqawx0703qqnfkzhmslqy"))
             (modules '((guix build utils)))
             (snippet
-             '(substitute* "test/test-main/Test.ml"
-                ;; most of these tests fail because ld cannot find crti.o, but according
-                ;; to the log file, the environment variables {LD_,}LIBRARY_PATH
-                ;; are set correctly whene LD_LIBRARY_PATH is defined beforhand.
-                (("TestBaseCompat.tests;") "")
-                (("TestExamples.tests;") "")
-                (("TestFull.tests;") "")
-                (("TestPluginDevFiles.tests;") "")
-                (("TestPluginInternal.tests;") "")
-                (("TestPluginOCamlbuild.tests;") "")
-                (("TestPluginOMake.tests;") "")))))
+             '(begin
+                (substitute* "test/test-main/Test.ml"
+                  ;; most of these tests fail because ld cannot find crti.o, but according
+                  ;; to the log file, the environment variables {LD_,}LIBRARY_PATH
+                  ;; are set correctly whene LD_LIBRARY_PATH is defined beforhand.
+                  (("TestBaseCompat.tests;") "")
+                  (("TestExamples.tests;") "")
+                  (("TestFull.tests;") "")
+                  (("TestPluginDevFiles.tests;") "")
+                  (("TestPluginInternal.tests;") "")
+                  (("TestPluginOCamlbuild.tests;") "")
+                  (("TestPluginOMake.tests;") ""))
+                #t))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("ocamlify" ,ocamlify)
diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm
index 44400ebe57..64887212d3 100644
--- a/gnu/packages/onc-rpc.scm
+++ b/gnu/packages/onc-rpc.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -113,12 +113,6 @@ universal addresses.")
                (base32
                 "1y6kmxmv1difzvdhx7grqzw0j2v2b74mg4kjb803m8jcgkqqx8m5"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (invoke "sh" "autogen.sh"))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 709cdfd0f7..376c7d4fdb 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -142,7 +142,7 @@
                     (ice-9 rdelim))
 
          #:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'bootstrap
+                    (replace 'bootstrap
                       (lambda _
                         ;; Make sure 'msgmerge' can modify the PO files.
                         (for-each (lambda (po)
diff --git a/gnu/packages/patches/binutils-ld-new-dtags.patch b/gnu/packages/patches/binutils-ld-new-dtags.patch
deleted file mode 100644
index 5f7a03fc38..0000000000
--- a/gnu/packages/patches/binutils-ld-new-dtags.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Turn on --enable-new-dtags by default to make the linker set RUNPATH
-instead of RPATH on binaries.  This is important because RUNPATH can
-be overriden using LD_LIBRARY_PATH at runtime.
-
-Patch from Nixpkgs by Eelco Dolstra <eelco.dolstra@logicblox.com>.
-
---- binutils/ld/ldmain.c
-+++ binutils/ld/ldmain.c
-@@ -296,6 +296,7 @@ main (int argc, char **argv)
-
-   link_info.allow_undefined_version = TRUE;
-   link_info.keep_memory = TRUE;
-+  link_info.new_dtags = TRUE;
-   link_info.combreloc = TRUE;
-   link_info.strip_discarded = TRUE;
-   link_info.callbacks = &link_callbacks;
diff --git a/gnu/packages/patches/glib-respect-datadir.patch b/gnu/packages/patches/glib-respect-datadir.patch
deleted file mode 100644
index 309ce9fc0b..0000000000
--- a/gnu/packages/patches/glib-respect-datadir.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-On Guix, Python modules are in a different output from the executables,
-so searching "../share/glib-2.0" will not work.
-
-This patch restores behaviour prior to this commit:
-<https://git.gnome.org/browse/glib/commit/?id=fe2a9887a8ccb14f2386e01b14834e97a33bc2d7>
-
---- a/gio/gdbus-2.0/codegen/gdbus-codegen.in
-+++ b/gio/gdbus-2.0/codegen/gdbus-codegen.in
-@@ -25,9 +25,12 @@
- 
- srcdir = os.getenv('UNINSTALLED_GLIB_SRCDIR', None)
- filedir = os.path.dirname(__file__)
-+datadir = os.path.join('@datadir@', 'glib-2.0')
- 
- if srcdir is not None:
-     path = os.path.join(srcdir, 'gio', 'gdbus-2.0')
-+elif os.path.exists(os.path.join(datadir, 'codegen')):
-+    path = datadir
- elif os.path.basename(filedir) == 'bin':
-     # Make the prefix containing gdbus-codegen 'relocatable' at runtime by
-     # adding /some/prefix/bin/../share/glib-2.0 to the python path
diff --git a/gnu/packages/patches/graphite2-ffloat-store.patch b/gnu/packages/patches/graphite2-ffloat-store.patch
deleted file mode 100644
index f6ee56973e..0000000000
--- a/gnu/packages/patches/graphite2-ffloat-store.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Fix test failures of awamicmp1 and awamicmp2.
-
-Debian bug report:
-
-https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855814
-
-Patch adapted from upstream source repository:
-
-https://github.com/silnrsi/graphite/commit/f7bbdd87d510d587c872e314d6458160c0069c65
-
-From f7bbdd87d510d587c872e314d6458160c0069c65 Mon Sep 17 00:00:00 2001
-From: Martin Hosken <martin_hosken@sil.org>
-Date: Tue, 14 Feb 2017 17:00:03 +0000
-Subject: [PATCH] try -ffloat-store for fp stability. Remove nested const to
- work around VS bug
-
----
- src/CMakeLists.txt    | 2 +-
- src/inc/locale2lcid.h | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 4f1e7e5..5b61b5c 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -108,7 +108,7 @@ set_target_properties(graphite2 PROPERTIES  PUBLIC_HEADER "${GRAPHITE_HEADERS}"
- 
- if  (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
-     set_target_properties(graphite2 PROPERTIES 
--        COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas -Wendif-labels -Wshadow -Wctor-dtor-privacy -Wnon-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden -fno-stack-protector"
-+        COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas -Wendif-labels -Wshadow -Wctor-dtor-privacy -Wnon-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden -fno-stack-protector -ffloat-store"
-         LINK_FLAGS      "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}" 
-         LINKER_LANGUAGE C)
-     if (CMAKE_COMPILER_IS_GNUCXX)
diff --git a/gnu/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch b/gnu/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch
new file mode 100644
index 0000000000..e6b578bdb7
--- /dev/null
+++ b/gnu/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch
@@ -0,0 +1,53 @@
+From 1da99396dc65993ba34ac0370ca5d6acda6a3322 Mon Sep 17 00:00:00 2001
+From: Mark H Weaver <mhw@netris.org>
+Date: Sun, 18 Mar 2018 07:02:37 -0400
+Subject: [PATCH] Add support for gdbm-1.14.
+
+As of gdbm-1.14, 'gdbm_errno' no longer exists as a binary interface.
+It has been replaced by 'gdbm_errno_location', a function that returns
+int*.  We now use this new interface if it's available.
+---
+ gdbm.scm | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/gdbm.scm b/gdbm.scm
+index b92992f..4d38cc3 100644
+--- a/gdbm.scm
++++ b/gdbm.scm
+@@ -17,6 +17,9 @@
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+ 
++;; Modified by Mark H Weaver <mhw@netris.org> in March 2018 to support
++;; gdbm-1.14 with its new 'gdbm_errno_location' interface.
++
+ (define-module (gdbm)
+   #:use-module (system foreign)
+   #:use-module (rnrs bytevectors)
+@@ -151,10 +154,21 @@
+ 
+ ;;; errors
+ 
+-(define %errno (dynamic-pointer "gdbm_errno" libgdbm))
++(define %list-int
++  (list int))
++
++(define (dereference-int ptr)
++  (apply (lambda (errno) errno)
++         (parse-c-struct ptr %list-int)))
++
++(define %errno-location
++  (or (false-if-exception
++       (let ((func (dynamic-func "gdbm_errno_location" libgdbm)))
++         (pointer->procedure '* func '())))
++      (const (dynamic-pointer "gdbm_errno" libgdbm))))
+ 
+ (define (gdbm-errno)
+-  (pointer-address (dereference-pointer %errno)))
++  (dereference-int (%errno-location)))
+ 
+ (define (gdbm-error)
+   (error (pointer->string (%gdbm-strerror (gdbm-errno)))))
+-- 
+2.16.2
+
diff --git a/gnu/packages/patches/lcms-CVE-2016-10165.patch b/gnu/packages/patches/lcms-CVE-2016-10165.patch
deleted file mode 100644
index fa4d75c9ee..0000000000
--- a/gnu/packages/patches/lcms-CVE-2016-10165.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Fix CVE-2016-10165, an out-of-bounds heap read in Type_MLU_Read():
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10165
-http://seclists.org/oss-sec/2016/q3/288
-https://bugzilla.redhat.com/show_bug.cgi?id=1367357
-https://security-tracker.debian.org/tracker/CVE-2016-10165
-
-Patch copied from upstream source repository:
-
-https://github.com/mm2/Little-CMS/commit/5ca71a7bc18b6897ab21d815d15e218e204581e2
-
-From 5ca71a7bc18b6897ab21d815d15e218e204581e2 Mon Sep 17 00:00:00 2001
-From: Marti <marti.maria@tktbrainpower.com>
-Date: Mon, 15 Aug 2016 23:31:39 +0200
-Subject: [PATCH] Added an extra check to MLU bounds
-
-Thanks to Ibrahim el-sayed for spotting the bug
----
- src/cmstypes.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/cmstypes.c b/src/cmstypes.c
-index cb61860..c7328b9 100644
---- a/src/cmstypes.c
-+++ b/src/cmstypes.c
-@@ -1460,6 +1460,7 @@ void *Type_MLU_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsU
- 
-         // Check for overflow
-         if (Offset < (SizeOfHeader + 8)) goto Error;
-+        if ((Offset + Len) > SizeOfTag + 8) goto Error;
- 
-         // True begin of the string
-         BeginOfThisString = Offset - SizeOfHeader - 8;
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/libtasn1-CVE-2017-10790.patch b/gnu/packages/patches/libtasn1-CVE-2017-10790.patch
deleted file mode 100644
index 6cec0c8030..0000000000
--- a/gnu/packages/patches/libtasn1-CVE-2017-10790.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-Fix CVE-2017-10790:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10790
-
-Patch copied from upstream source repository:
-
-https://git.savannah.nongnu.org/cgit/libtasn1.git/commit/?id=d8d805e1f2e6799bb2dff4871a8598dc83088a39
-
-From d8d805e1f2e6799bb2dff4871a8598dc83088a39 Mon Sep 17 00:00:00 2001
-From: Nikos Mavrogiannopoulos <nmav@redhat.com>
-Date: Thu, 22 Jun 2017 16:31:37 +0200
-Subject: [PATCH] _asn1_check_identifier: safer access to values read
-
-Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
----
- lib/parser_aux.c | 17 ++++++++++++-----
- 1 file changed, 12 insertions(+), 5 deletions(-)
-
-diff --git a/lib/parser_aux.c b/lib/parser_aux.c
-index 976ab38..786ea64 100644
---- a/lib/parser_aux.c
-+++ b/lib/parser_aux.c
-@@ -955,7 +955,7 @@ _asn1_check_identifier (asn1_node node)
- 	  if (p2 == NULL)
- 	    {
- 	      if (p->value)
--		_asn1_strcpy (_asn1_identifierMissing, p->value);
-+		_asn1_str_cpy (_asn1_identifierMissing, sizeof(_asn1_identifierMissing), (char*)p->value);
- 	      else
- 		_asn1_strcpy (_asn1_identifierMissing, "(null)");
- 	      return ASN1_IDENTIFIER_NOT_FOUND;
-@@ -968,9 +968,15 @@ _asn1_check_identifier (asn1_node node)
- 	  if (p2 && (type_field (p2->type) == ASN1_ETYPE_DEFAULT))
- 	    {
- 	      _asn1_str_cpy (name2, sizeof (name2), node->name);
--	      _asn1_str_cat (name2, sizeof (name2), ".");
--	      _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
--	      _asn1_strcpy (_asn1_identifierMissing, p2->value);
-+	      if (p2->value)
-+	        {
-+	          _asn1_str_cat (name2, sizeof (name2), ".");
-+	          _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
-+	          _asn1_str_cpy (_asn1_identifierMissing, sizeof(_asn1_identifierMissing), (char*)p2->value);
-+	        }
-+	      else
-+		_asn1_strcpy (_asn1_identifierMissing, "(null)");
-+
- 	      p2 = asn1_find_node (node, name2);
- 	      if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID) ||
- 		  !(p2->type & CONST_ASSIGN))
-@@ -990,7 +996,8 @@ _asn1_check_identifier (asn1_node node)
- 		  _asn1_str_cpy (name2, sizeof (name2), node->name);
- 		  _asn1_str_cat (name2, sizeof (name2), ".");
- 		  _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
--		  _asn1_strcpy (_asn1_identifierMissing, p2->value);
-+		  _asn1_str_cpy (_asn1_identifierMissing, sizeof(_asn1_identifierMissing), (char*)p2->value);
-+
- 		  p2 = asn1_find_node (node, name2);
- 		  if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID)
- 		      || !(p2->type & CONST_ASSIGN))
--- 
-2.13.3
-
diff --git a/gnu/packages/patches/libtasn1-CVE-2018-6003.patch b/gnu/packages/patches/libtasn1-CVE-2018-6003.patch
deleted file mode 100644
index 3e6140518d..0000000000
--- a/gnu/packages/patches/libtasn1-CVE-2018-6003.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Fix CVE-2018-6003:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6003
-https://lists.gnu.org/archive/html/help-libtasn1/2018-01/msg00000.html
-
-Patch copied from upstream source repository:
-
-https://gitlab.com/gnutls/libtasn1/commit/c593ae84cfcde8fea45787e53950e0ac71e9ca97
-
-From c593ae84cfcde8fea45787e53950e0ac71e9ca97 Mon Sep 17 00:00:00 2001
-From: Nikos Mavrogiannopoulos <nmav@redhat.com>
-Date: Thu, 4 Jan 2018 10:52:05 +0100
-Subject: [PATCH] _asn1_decode_simple_ber: restrict the levels of recursion to 3
-
-On indefinite string decoding, setting a maximum level of recursions
-protects the BER decoder from a stack exhaustion due to large amounts
-of recursion.
-
-Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
----
- lib/decoding.c | 21 +++++++++++++++++++--
- 1 file changed, 19 insertions(+), 2 deletions(-)
-
-diff --git a/lib/decoding.c b/lib/decoding.c
-index 2240b09..0ee35d3 100644
---- a/lib/decoding.c
-+++ b/lib/decoding.c
-@@ -45,6 +45,13 @@
- 
- #define DECODE_FLAG_HAVE_TAG 1
- #define DECODE_FLAG_INDEFINITE (1<<1)
-+/* On indefinite string decoding, allow this maximum levels
-+ * of recursion. Allowing infinite recursion, makes the BER
-+ * decoder susceptible to stack exhaustion due to that recursion.
-+ */
-+#define DECODE_FLAG_LEVEL1 (1<<2)
-+#define DECODE_FLAG_LEVEL2 (1<<3)
-+#define DECODE_FLAG_LEVEL3 (1<<4)
- 
- #define DECR_LEN(l, s) do { \
- 	  l -= s; \
-@@ -2216,7 +2223,8 @@ _asn1_decode_simple_ber (unsigned int etype, const unsigned char *der,
-     }
- 
-   /* indefinite constructed */
--  if (((dflags & DECODE_FLAG_INDEFINITE) || class == ASN1_CLASS_STRUCTURED) && ETYPE_IS_STRING(etype))
-+  if ((((dflags & DECODE_FLAG_INDEFINITE) || class == ASN1_CLASS_STRUCTURED) && ETYPE_IS_STRING(etype)) &&
-+      !(dflags & DECODE_FLAG_LEVEL3))
-     {
-       len_len = 1;
- 
-@@ -2236,8 +2244,17 @@ _asn1_decode_simple_ber (unsigned int etype, const unsigned char *der,
-       do
-         {
-           unsigned tmp_len;
-+          unsigned flags = DECODE_FLAG_HAVE_TAG;
-+
-+          if (dflags & DECODE_FLAG_LEVEL1)
-+                flags |= DECODE_FLAG_LEVEL2;
-+          else if (dflags & DECODE_FLAG_LEVEL2)
-+		flags |= DECODE_FLAG_LEVEL3;
-+	  else
-+		flags |= DECODE_FLAG_LEVEL1;
- 
--          result = asn1_decode_simple_ber(etype, p, der_len, &out, &out_len, &tmp_len);
-+          result = _asn1_decode_simple_ber(etype, p, der_len, &out, &out_len, &tmp_len,
-+                                           flags);
-           if (result != ASN1_SUCCESS)
-             {
-               warn();
---
-libgit2 0.26.0
-
diff --git a/gnu/packages/patches/libvorbis-CVE-2017-14632.patch b/gnu/packages/patches/libvorbis-CVE-2017-14632.patch
deleted file mode 100644
index 99debf2104..0000000000
--- a/gnu/packages/patches/libvorbis-CVE-2017-14632.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-Fix CVE-2017-14632:
-
-https://gitlab.xiph.org/xiph/vorbis/issues/2328
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14632
-
-Patch copied from upstream source repository:
-
-https://gitlab.xiph.org/xiph/vorbis/commit/c1c2831fc7306d5fbd7bc800324efd12b28d327f
-
-From c1c2831fc7306d5fbd7bc800324efd12b28d327f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
-Date: Wed, 15 Nov 2017 18:22:59 +0100
-Subject: [PATCH] CVE-2017-14632: vorbis_analysis_header_out: Don't clear opb
- if not initialized
-
-If the number of channels is not within the allowed range
-we call oggback_writeclear altough it's not initialized yet.
-
-This fixes
-
-    =23371== Invalid free() / delete / delete[] / realloc()
-    ==23371==    at 0x4C2CE1B: free (vg_replace_malloc.c:530)
-    ==23371==    by 0x829CA31: oggpack_writeclear (in /usr/lib/x86_64-linux-gnu/libogg.so.0.8.2)
-    ==23371==    by 0x84B96EE: vorbis_analysis_headerout (info.c:652)
-    ==23371==    by 0x9FBCBCC: ??? (in /usr/lib/x86_64-linux-gnu/sox/libsox_fmt_vorbis.so)
-    ==23371==    by 0x4E524F1: ??? (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
-    ==23371==    by 0x4E52CCA: sox_open_write (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
-    ==23371==    by 0x10D82A: open_output_file (sox.c:1556)
-    ==23371==    by 0x10D82A: process (sox.c:1753)
-    ==23371==    by 0x10D82A: main (sox.c:3012)
-    ==23371==  Address 0x68768c8 is 488 bytes inside a block of size 880 alloc'd
-    ==23371==    at 0x4C2BB1F: malloc (vg_replace_malloc.c:298)
-    ==23371==    by 0x4C2DE9F: realloc (vg_replace_malloc.c:785)
-    ==23371==    by 0x4E545C2: lsx_realloc (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
-    ==23371==    by 0x9FBC9A0: ??? (in /usr/lib/x86_64-linux-gnu/sox/libsox_fmt_vorbis.so)
-    ==23371==    by 0x4E524F1: ??? (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
-    ==23371==    by 0x4E52CCA: sox_open_write (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
-    ==23371==    by 0x10D82A: open_output_file (sox.c:1556)
-    ==23371==    by 0x10D82A: process (sox.c:1753)
-    ==23371==    by 0x10D82A: main (sox.c:3012)
-
-as seen when using the testcase from CVE-2017-11333 with
-008d23b782be09c8d75ba8190b1794abd66c7121 applied. However the error was
-there before.
----
- lib/info.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/lib/info.c b/lib/info.c
-index 7bc4ea4..8d0b2ed 100644
---- a/lib/info.c
-+++ b/lib/info.c
-@@ -589,6 +589,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
-   private_state *b=v->backend_state;
- 
-   if(!b||vi->channels<=0||vi->channels>256){
-+    b = NULL;
-     ret=OV_EFAULT;
-     goto err_out;
-   }
--- 
-2.15.1
-
diff --git a/gnu/packages/patches/libvorbis-CVE-2017-14633.patch b/gnu/packages/patches/libvorbis-CVE-2017-14633.patch
deleted file mode 100644
index ec6bf5265c..0000000000
--- a/gnu/packages/patches/libvorbis-CVE-2017-14633.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Fix CVE-2017-14633:
-
-https://gitlab.xiph.org/xiph/vorbis/issues/2329
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14633
-
-Patch copied from upstream source repository:
-
-https://gitlab.xiph.org/xiph/vorbis/commit/a79ec216cd119069c68b8f3542c6a425a74ab993
-
-From a79ec216cd119069c68b8f3542c6a425a74ab993 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
-Date: Tue, 31 Oct 2017 18:32:46 +0100
-Subject: [PATCH] CVE-2017-14633: Don't allow for more than 256 channels
-
-Otherwise
-
- for(i=0;i<vi->channels;i++){
-      /* the encoder setup assumes that all the modes used by any
-         specific bitrate tweaking use the same floor */
-      int submap=info->chmuxlist[i];
-
-overreads later in mapping0_forward since chmuxlist is a fixed array of
-256 elements max.
----
- lib/info.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/info.c b/lib/info.c
-index fe759ed..7bc4ea4 100644
---- a/lib/info.c
-+++ b/lib/info.c
-@@ -588,7 +588,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
-   oggpack_buffer opb;
-   private_state *b=v->backend_state;
- 
--  if(!b||vi->channels<=0){
-+  if(!b||vi->channels<=0||vi->channels>256){
-     ret=OV_EFAULT;
-     goto err_out;
-   }
--- 
-2.15.1
-
diff --git a/gnu/packages/patches/libxcb-python-3.5-compat.patch b/gnu/packages/patches/libxcb-python-3.5-compat.patch
deleted file mode 100644
index f652498aad..0000000000
--- a/gnu/packages/patches/libxcb-python-3.5-compat.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-Fix compatibility issue with Python 3.5.
-
-Patch copied from upstream source repository:
-
-https://cgit.freedesktop.org/xcb/libxcb/commit/?id=8740a288ca468433141341347aa115b9544891d3
-
-From 8740a288ca468433141341347aa115b9544891d3 Mon Sep 17 00:00:00 2001
-From: Thomas Klausner <wiz@NetBSD.org>
-Date: Thu, 19 May 2016 17:31:18 +0200
-Subject: [PATCH] Fix inconsistent use of tabs vs. space.
-
-Needed for at least python-3.5.x.
-
-Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
-Signed-off-by: Uli Schlachter <psychon@znc.in>
----
- src/c_client.py | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/src/c_client.py b/src/c_client.py
-index 57de3fb..043338d 100644
---- a/src/c_client.py
-+++ b/src/c_client.py
-@@ -1364,7 +1364,7 @@ def _c_serialize(context, self):
-             _c('    unsigned int xcb_align_to = 0;')
-         if self.is_switch:
-             _c('    unsigned int xcb_padding_offset = %d;',
--	       self.get_align_offset() )
-+               self.get_align_offset() )
-         prefix = [('_aux', '->', self)]
-         aux_ptr = 'xcb_out'
- 
-@@ -1390,7 +1390,7 @@ def _c_serialize(context, self):
-         _c('    unsigned int xcb_align_to = 0;')
-         if self.is_switch:
-             _c('    unsigned int xcb_padding_offset = %d;',
--	       self.get_align_offset() )
-+               self.get_align_offset() )
- 
-     elif 'sizeof' == context:
-         param_names = [p[2] for p in params]
-@@ -1930,14 +1930,14 @@ def _c_accessors_list(self, field):
-                     # from the request size and divide that by the member size
-                     return '(((R->length * 4) - sizeof('+ self.c_type + '))/'+'sizeof('+field.type.member.c_wiretype+'))'
-                 else:
--		    # use the accessor to get the start of the list, then
--		    # compute the length of it by subtracting it from
-+                    # use the accessor to get the start of the list, then
-+                    # compute the length of it by subtracting it from
-                     # the adress of the first byte after the end of the
-                     # request
--		    after_end_of_request = '(((char*)R) + R->length * 4)'
--		    start_of_list = '%s(R)' % (field.c_accessor_name)
-+                    after_end_of_request = '(((char*)R) + R->length * 4)'
-+                    start_of_list = '%s(R)' % (field.c_accessor_name)
-                     bytesize_of_list = '%s - (char*)(%s)' % (after_end_of_request, start_of_list)
--		    return '(%s) / sizeof(%s)' % (bytesize_of_list, field.type.member.c_wiretype)
-+                    return '(%s) / sizeof(%s)' % (bytesize_of_list, field.type.member.c_wiretype)
-             else:
-                 raise Exception(
-                     "lengthless lists with varsized members are not supported. Fieldname '%s'"
--- 
-2.11.1
-
diff --git a/gnu/packages/patches/patch-hurd-path-max.patch b/gnu/packages/patches/patch-hurd-path-max.patch
index 81e37930c2..1845a5803b 100644
--- a/gnu/packages/patches/patch-hurd-path-max.patch
+++ b/gnu/packages/patches/patch-hurd-path-max.patch
@@ -13,7 +13,7 @@ Subject: [PATCH] Do not rely on PATH_MAX when reading a symlink target.
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/src/util.c b/src/util.c
-index 82a7e37..c4c0f9d 100644
+index 1cc08ba..67dbd3a 100644
 --- a/src/util.c
 +++ b/src/util.c
 @@ -460,12 +460,12 @@ move_file (char const *from, bool *from_needs_removal,
@@ -31,18 +31,19 @@ index 82a7e37..c4c0f9d 100644
  	    size += i;
  	  if (i != 0 || close (fd) != 0)
  	    read_fatal ();
-@@ -610,9 +610,9 @@ copy_file (char const *from, char const *to, struct stat *tost,
+@@ -610,10 +610,10 @@ copy_file (char const *from, char const *to, struct stat *tost,
  
    if (S_ISLNK (mode))
      {
--      char *buffer = xmalloc (PATH_MAX);
+-      char *buffer = xmalloc (PATH_MAX + 1);
 +      char *buffer = xmalloc (tost->st_size + 1);
+       ssize_t r;
  
--      if (safe_readlink (from, buffer, PATH_MAX) < 0)
-+      if (safe_readlink (from, buffer, tost->st_size) < 0)
+-      if ((r = safe_readlink (from, buffer, PATH_MAX)) < 0)
++      if ((r = safe_readlink (from, buffer, tost->st_size)) < 0)
  	pfatal ("Can't read %s %s", "symbolic link", from);
+       buffer[r] = '\0';
        if (safe_symlink (buffer, to) != 0)
- 	pfatal ("Can't create %s %s", "symbolic link", to);
 -- 
-2.4.2
+2.16.2
 
diff --git a/gnu/packages/patches/pcre2-CVE-2017-7186.patch b/gnu/packages/patches/pcre2-CVE-2017-7186.patch
deleted file mode 100644
index 5c16955aaa..0000000000
--- a/gnu/packages/patches/pcre2-CVE-2017-7186.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-Patch for <https://nvd.nist.gov/vuln/detail?vulnId=CVE-2017-7186>
-taken from <https://vcs.pcre.org/pcre2?view=revision&revision=670>.
-
---- trunk/src/pcre2_internal.h	2016/11/19 12:46:24	600
-+++ trunk/src/pcre2_internal.h	2017/02/24 18:25:32	670
-@@ -1774,10 +1774,17 @@
- /* UCD access macros */
- 
- #define UCD_BLOCK_SIZE 128
--#define GET_UCD(ch) (PRIV(ucd_records) + \
-+#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
-         PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
-         UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
- 
-+#if PCRE2_CODE_UNIT_WIDTH == 32
-+#define GET_UCD(ch) ((ch > MAX_UTF_CODE_POINT)? \
-+  PRIV(dummy_ucd_record) : REAL_GET_UCD(ch))
-+#else
-+#define GET_UCD(ch) REAL_GET_UCD(ch)
-+#endif
-+
- #define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
- #define UCD_SCRIPT(ch)      GET_UCD(ch)->script
- #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
-@@ -1834,6 +1841,9 @@
- #define _pcre2_default_compile_context PCRE2_SUFFIX(_pcre2_default_compile_context_)
- #define _pcre2_default_match_context   PCRE2_SUFFIX(_pcre2_default_match_context_)
- #define _pcre2_default_tables          PCRE2_SUFFIX(_pcre2_default_tables_)
-+#if PCRE2_CODE_UNIT_WIDTH == 32
-+#define _pcre2_dummy_ucd_record        PCRE2_SUFFIX(_pcre2_dummy_ucd_record_)
-+#endif
- #define _pcre2_hspace_list             PCRE2_SUFFIX(_pcre2_hspace_list_)
- #define _pcre2_vspace_list             PCRE2_SUFFIX(_pcre2_vspace_list_)
- #define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
-@@ -1858,6 +1868,9 @@
- extern const uint32_t                  PRIV(vspace_list)[];
- extern const uint32_t                  PRIV(ucd_caseless_sets)[];
- extern const ucd_record                PRIV(ucd_records)[];
-+#if PCRE2_CODE_UNIT_WIDTH == 32
-+extern const ucd_record                PRIV(dummy_ucd_record)[];
-+#endif
- extern const uint8_t                   PRIV(ucd_stage1)[];
- extern const uint16_t                  PRIV(ucd_stage2)[];
- extern const uint32_t                  PRIV(ucp_gbtable)[];
-
---- trunk/src/pcre2_ucd.c	2015/07/17 15:44:51	316
-+++ trunk/src/pcre2_ucd.c	2017/02/24 18:25:32	670
-@@ -41,6 +41,20 @@
- 
- const char *PRIV(unicode_version) = "8.0.0";
- 
-+/* If the 32-bit library is run in non-32-bit mode, character values
-+greater than 0x10ffff may be encountered. For these we set up a
-+special record. */
-+
-+#if PCRE2_CODE_UNIT_WIDTH == 32
-+const ucd_record PRIV(dummy_ucd_record)[] = {{
-+  ucp_Common,    /* script */
-+  ucp_Cn,        /* type unassigned */
-+  ucp_gbOther,   /* grapheme break property */
-+  0,             /* case set */
-+  0,             /* other case */
-+  }};
-+#endif
-+
- /* When recompiling tables with a new Unicode version, please check the
- types in this structure definition from pcre2_internal.h (the actual
- field names will be different):
diff --git a/gnu/packages/patches/pcre2-CVE-2017-8786.patch b/gnu/packages/patches/pcre2-CVE-2017-8786.patch
deleted file mode 100644
index 6071d58f07..0000000000
--- a/gnu/packages/patches/pcre2-CVE-2017-8786.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-Fix CVE-2017-8786:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8786
-https://bugs.exim.org/show_bug.cgi?id=2079
-https://blogs.gentoo.org/ago/2017/04/29/libpcre-heap-based-buffer-overflow-write-in-pcre2test-c/
-
-Patch copied from upstream source repository:
-
-https://vcs.pcre.org/pcre2?view=revision&revision=696
-https://vcs.pcre.org/pcre2?view=revision&revision=697
-
---- trunk/doc/pcre2api.3	2017/03/21 16:48:40	695
-+++ trunk/doc/pcre2api.3	2017/03/21 17:46:21	696
-@@ -1,4 +1,4 @@
--.TH PCRE2API 3 "24 December 2016" "PCRE2 10.23"
-+.TH PCRE2API 3 "21 March 2017" "PCRE2 10.30"
- .SH NAME
- PCRE2 - Perl-compatible regular expressions (revised API)
- .sp
-@@ -2633,8 +2633,8 @@
- A text message for an error code from any PCRE2 function (compile, match, or
- auxiliary) can be obtained by calling \fBpcre2_get_error_message()\fP. The code
- is passed as the first argument, with the remaining two arguments specifying a
--code unit buffer and its length, into which the text message is placed. Note
--that the message is returned in code units of the appropriate width for the
-+code unit buffer and its length in code units, into which the text message is
-+placed. The message is returned in code units of the appropriate width for the
- library that is being used.
- .P
- The returned message is terminated with a trailing zero, and the function
-@@ -3321,6 +3321,6 @@
- .rs
- .sp
- .nf
--Last updated: 23 December 2016
--Copyright (c) 1997-2016 University of Cambridge.
-+Last updated: 21 March 2017
-+Copyright (c) 1997-2017 University of Cambridge.
- .fi
---- trunk/src/pcre2_error.c	2017/03/21 16:48:40	695
-+++ trunk/src/pcre2_error.c	2017/03/21 17:46:21	696
-@@ -271,7 +271,7 @@
- Arguments:
-   enumber       error number
-   buffer        where to put the message (zero terminated)
--  size          size of the buffer
-+  size          size of the buffer in code units
- 
- Returns:        length of message if all is well
-                 negative on error
---- trunk/src/pcre2test.c	2017/03/21 17:46:21	696
-+++ trunk/src/pcre2test.c	2017/03/21 18:36:13	697
-@@ -1017,9 +1017,9 @@
-   if (test_mode == PCRE8_MODE) \
-     r = pcre2_get_error_message_8(a,G(b,8),G(G(b,8),_size)); \
-   else if (test_mode == PCRE16_MODE) \
--    r = pcre2_get_error_message_16(a,G(b,16),G(G(b,16),_size)); \
-+    r = pcre2_get_error_message_16(a,G(b,16),G(G(b,16),_size/2)); \
-   else \
--    r = pcre2_get_error_message_32(a,G(b,32),G(G(b,32),_size))
-+    r = pcre2_get_error_message_32(a,G(b,32),G(G(b,32),_size/4))
- 
- #define PCRE2_GET_OVECTOR_COUNT(a,b) \
-   if (test_mode == PCRE8_MODE) \
-@@ -1399,6 +1399,9 @@
- 
- /* ----- Common macros for two-mode cases ----- */
- 
-+#define BYTEONE (BITONE/8)
-+#define BYTETWO (BITTWO/8)
-+
- #define CASTFLD(t,a,b) \
-   ((test_mode == G(G(PCRE,BITONE),_MODE))? (t)(G(a,BITONE)->b) : \
-     (t)(G(a,BITTWO)->b))
-@@ -1481,9 +1484,9 @@
- 
- #define PCRE2_GET_ERROR_MESSAGE(r,a,b) \
-   if (test_mode == G(G(PCRE,BITONE),_MODE)) \
--    r = G(pcre2_get_error_message_,BITONE)(a,G(b,BITONE),G(G(b,BITONE),_size)); \
-+    r = G(pcre2_get_error_message_,BITONE)(a,G(b,BITONE),G(G(b,BITONE),_size/BYTEONE)); \
-   else \
--    r = G(pcre2_get_error_message_,BITTWO)(a,G(b,BITTWO),G(G(b,BITTWO),_size))
-+    r = G(pcre2_get_error_message_,BITTWO)(a,G(b,BITTWO),G(G(b,BITTWO),_size/BYTETWO))
- 
- #define PCRE2_GET_OVECTOR_COUNT(a,b) \
-   if (test_mode == G(G(PCRE,BITONE),_MODE)) \
-@@ -1904,7 +1907,7 @@
- #define PCRE2_DFA_MATCH(a,b,c,d,e,f,g,h,i,j) \
-   a = pcre2_dfa_match_16(G(b,16),(PCRE2_SPTR16)c,d,e,f,G(g,16),h,i,j)
- #define PCRE2_GET_ERROR_MESSAGE(r,a,b) \
--  r = pcre2_get_error_message_16(a,G(b,16),G(G(b,16),_size))
-+  r = pcre2_get_error_message_16(a,G(b,16),G(G(b,16),_size/2))
- #define PCRE2_GET_OVECTOR_COUNT(a,b) a = pcre2_get_ovector_count_16(G(b,16))
- #define PCRE2_GET_STARTCHAR(a,b) a = pcre2_get_startchar_16(G(b,16))
- #define PCRE2_JIT_COMPILE(r,a,b) r = pcre2_jit_compile_16(G(a,16),b)
-@@ -2000,7 +2003,7 @@
- #define PCRE2_DFA_MATCH(a,b,c,d,e,f,g,h,i,j) \
-   a = pcre2_dfa_match_32(G(b,32),(PCRE2_SPTR32)c,d,e,f,G(g,32),h,i,j)
- #define PCRE2_GET_ERROR_MESSAGE(r,a,b) \
--  r = pcre2_get_error_message_32(a,G(b,32),G(G(b,32),_size))
-+  r = pcre2_get_error_message_32(a,G(b,32),G(G(b,32),_size/4))
- #define PCRE2_GET_OVECTOR_COUNT(a,b) a = pcre2_get_ovector_count_32(G(b,32))
- #define PCRE2_GET_STARTCHAR(a,b) a = pcre2_get_startchar_32(G(b,32))
- #define PCRE2_JIT_COMPILE(r,a,b) r = pcre2_jit_compile_32(G(a,32),b)
---- trunk/src/pcre2test.c	2017/03/21 16:48:40	695
-+++ trunk/src/pcre2test.c	2017/03/21 17:46:21	696
-@@ -2889,7 +2889,7 @@
-   {
-   if (pbuffer32 != NULL) free(pbuffer32);
-   pbuffer32_size = 4*len + 4;
--  if (pbuffer32_size < 256) pbuffer32_size = 256;
-+  if (pbuffer32_size < 512) pbuffer32_size = 512;
-   pbuffer32 = (uint32_t *)malloc(pbuffer32_size);
-   if (pbuffer32 == NULL)
-     {
-@@ -7600,7 +7600,8 @@
-   int errcode;
-   char *endptr;
- 
--/* Ensure the relevant non-8-bit buffer is available. */
-+/* Ensure the relevant non-8-bit buffer is available. Ensure that it is at 
-+least 128 code units, because it is used for retrieving error messages. */
- 
- #ifdef SUPPORT_PCRE2_16
-   if (test_mode == PCRE16_MODE)
-@@ -7620,7 +7621,7 @@
- #ifdef SUPPORT_PCRE2_32
-   if (test_mode == PCRE32_MODE)
-     {
--    pbuffer32_size = 256;
-+    pbuffer32_size = 512;
-     pbuffer32 = (uint32_t *)malloc(pbuffer32_size);
-     if (pbuffer32 == NULL)
-       {
---- trunk/testdata/testinput2	2017/03/21 16:48:40	695
-+++ trunk/testdata/testinput2	2017/03/21 17:46:21	696
-@@ -5017,4 +5017,6 @@
- 
- /(?<!\1((?U)1((?U))))(*F)/never_backslash_c,alt_bsux,anchored,extended
- 
-+/\g{3/
-+
- # End of testinput2 
---- trunk/testdata/testoutput2	2017/03/21 16:48:40	695
-+++ trunk/testdata/testoutput2	2017/03/21 17:46:21	696
-@@ -15570,6 +15570,9 @@
- 
- /(?<!\1((?U)1((?U))))(*F)/never_backslash_c,alt_bsux,anchored,extended
- 
-+/\g{3/
-+Failed: error 157 at offset 2: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number
-+
- # End of testinput2 
- Error -63: PCRE2_ERROR_BADDATA (unknown error number)
- Error -62: bad serialized data
diff --git a/gnu/packages/patches/python-3-search-paths.patch b/gnu/packages/patches/python-3-search-paths.patch
index 7feddb8e30..73e3f4ccf5 100644
--- a/gnu/packages/patches/python-3-search-paths.patch
+++ b/gnu/packages/patches/python-3-search-paths.patch
@@ -3,17 +3,14 @@ looking for headers and libraries.
 
 --- setup.py	2015-10-07 23:32:58.891329173 +0200
 +++ setup.py	2015-10-07 23:46:29.653349924 +0200
-@@ -507,11 +507,8 @@ class PyBuildExt(build_ext):
+@@ -575,8 +575,8 @@
          # if a file is found in one of those directories, it can
          # be assumed that no additional -I,-L directives are needed.
          if not cross_compiling:
--            lib_dirs = self.compiler.library_dirs + [
--                '/lib64', '/usr/lib64',
--                '/lib', '/usr/lib',
--                ]
--            inc_dirs = self.compiler.include_dirs + ['/usr/include']
+-            lib_dirs = self.compiler.library_dirs + system_lib_dirs
+-            inc_dirs = self.compiler.include_dirs + system_include_dirs
 +            lib_dirs = os.getenv('LIBRARY_PATH', '').split(os.pathsep)
 +            inc_dirs = os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
          else:
-             lib_dirs = self.compiler.library_dirs[:]
-             inc_dirs = self.compiler.include_dirs[:]
+             # Add the sysroot paths. 'sysroot' is a compiler option used to
+             # set the logical path of the standard system headers and
diff --git a/gnu/packages/patches/tar-CVE-2016-6321.patch b/gnu/packages/patches/tar-CVE-2016-6321.patch
deleted file mode 100644
index b79be9bc94..0000000000
--- a/gnu/packages/patches/tar-CVE-2016-6321.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Fix CVE-2016-6321:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6321
-https://security-tracker.debian.org/tracker/CVE-2016-6321
-
-Patch adapted from upstream source repository (the changes to 'NEWS'
-don't apply to the Tar 1.29 release tarball).
-
-http://git.savannah.gnu.org/cgit/tar.git/commit/?id=7340f67b9860ea0531c1450e5aa261c50f67165d
-
-From 7340f67b9860ea0531c1450e5aa261c50f67165d Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@Penguin.CS.UCLA.EDU>
-Date: Sat, 29 Oct 2016 21:04:40 -0700
-Subject: [PATCH] When extracting, skip ".." members
-
-* NEWS: Document this.
-* src/extract.c (extract_archive): Skip members whose names
-contain "..".
----
- NEWS          | 8 +++++++-
- src/extract.c | 8 ++++++++
- 2 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/src/extract.c b/src/extract.c
-index f982433..7904148 100644
---- a/src/extract.c
-+++ b/src/extract.c
-@@ -1629,12 +1629,20 @@ extract_archive (void)
- {
-   char typeflag;
-   tar_extractor_t fun;
-+  bool skip_dotdot_name;
- 
-   fatal_exit_hook = extract_finish;
- 
-   set_next_block_after (current_header);
- 
-+  skip_dotdot_name = (!absolute_names_option
-+		      && contains_dot_dot (current_stat_info.orig_file_name));
-+  if (skip_dotdot_name)
-+    ERROR ((0, 0, _("%s: Member name contains '..'"),
-+	    quotearg_colon (current_stat_info.orig_file_name)));
-+
-   if (!current_stat_info.file_name[0]
-+      || skip_dotdot_name
-       || (interactive_option
- 	  && !confirm ("extract", current_stat_info.file_name)))
-     {
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/tar-remove-wholesparse-check.patch b/gnu/packages/patches/tar-remove-wholesparse-check.patch
new file mode 100644
index 0000000000..41f53e86aa
--- /dev/null
+++ b/gnu/packages/patches/tar-remove-wholesparse-check.patch
@@ -0,0 +1,68 @@
+This patch is needed in order to build Guix on a Btrfs file system.
+
+
+From da922703282b0d3b8837a99a9c7fdd32f1d20d49 Mon Sep 17 00:00:00 2001
+From: Mark H Weaver <mhw@netris.org>
+Date: Tue, 9 Jan 2018 20:16:14 -0500
+Subject: [PATCH] Remove nonportable check for files containing only zeroes.
+
+This check benefitted only one unlikely case (large files containing
+only zeroes, on systems that do not support SEEK_HOLE) and was based
+on an assumption about file system behavior that is not mandated by
+POSIX and no longer holds in practice, namely that for sufficiently
+large files, (st_blocks == 0) implies that the file contains only
+zeroes.  Examples of file systems that violate this assumption include
+Linux's /proc file system and Btrfs.
+
+* src/sparse.c (sparse_scan_file_wholesparse): Remove this function.
+(sparse_scan_file_seek): Remove the initial check for files containing
+only zeroes.
+---
+ src/sparse.c | 24 ------------------------
+ 1 file changed, 24 deletions(-)
+
+diff --git a/src/sparse.c b/src/sparse.c
+index d41c0ea..3de6560 100644
+--- a/src/sparse.c
++++ b/src/sparse.c
+@@ -261,26 +261,6 @@ sparse_scan_file_raw (struct tar_sparse_file *file)
+   return tar_sparse_scan (file, scan_end, NULL);
+ }
+ 
+-static bool
+-sparse_scan_file_wholesparse (struct tar_sparse_file *file)
+-{
+-  struct tar_stat_info *st = file->stat_info;
+-  struct sp_array sp = {0, 0};
+-
+-  /* Note that this function is called only for truly sparse files of size >= 1
+-     block size (checked via ST_IS_SPARSE before).  See the thread
+-     http://www.mail-archive.com/bug-tar@gnu.org/msg04209.html for more info */
+-  if (ST_NBLOCKS (st->stat) == 0)
+-    {
+-      st->archive_file_size = 0;
+-      sp.offset = st->stat.st_size;
+-      sparse_add_map (st, &sp);
+-      return true;
+-    }
+-
+-  return false;
+-}
+-
+ #ifdef SEEK_HOLE
+ /* Try to engage SEEK_HOLE/SEEK_DATA feature. */
+ static bool
+@@ -343,10 +323,6 @@ sparse_scan_file_seek (struct tar_sparse_file *file)
+ static bool
+ sparse_scan_file (struct tar_sparse_file *file)
+ {
+-  /* always check for completely sparse files */
+-  if (sparse_scan_file_wholesparse (file))
+-    return true;
+-
+   switch (hole_detection)
+     {
+     case HOLE_DETECTION_DEFAULT:
+-- 
+2.15.1
+
diff --git a/gnu/packages/patches/xcb-proto-python3-print.patch b/gnu/packages/patches/xcb-proto-python3-print.patch
deleted file mode 100644
index 7d5dc9bc27..0000000000
--- a/gnu/packages/patches/xcb-proto-python3-print.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-Patch copied from upstream source repository:
-
-https://cgit.freedesktop.org/xcb/proto/commit/?id=bea5e1c85bdc0950913790364e18228f20395a3d
-
-From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001
-From: Thomas Klausner <wiz@NetBSD.org>
-Date: Thu, 19 May 2016 17:30:05 +0200
-Subject: [PATCH] print() is a function and needs parentheses.
-
-Fixes build with python-3.x.
-
-Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
-Signed-off-by: Uli Schlachter <psychon@znc.in>
----
- xcbgen/xtypes.py | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py
-index c3b5758..b83b119 100644
---- a/xcbgen/xtypes.py
-+++ b/xcbgen/xtypes.py
-@@ -501,7 +501,7 @@ class ComplexType(Type):
-                 int(required_start_align_element.get('align', "4"), 0),
-                 int(required_start_align_element.get('offset', "0"), 0))
-             if verbose_align_log:
--                print "Explicit start-align for %s: %s\n" % (self, self.required_start_align)
-+                print ("Explicit start-align for %s: %s\n" % (self, self.required_start_align))
- 
-     def resolve(self, module):
-         if self.resolved:
-@@ -592,7 +592,7 @@ class ComplexType(Type):
-                 if verbose_align_log:
-                     print ("calc_required_start_align: %s has start-align %s"
-                         % (str(self), str(self.required_start_align)))
--                    print "Details:\n" + str(log)
-+                    print ("Details:\n" + str(log))
-                 if self.required_start_align.offset != 0:
-                     print (("WARNING: %s\n\thas start-align with non-zero offset: %s"
-                         + "\n\tsuggest to add explicit definition with:"
-@@ -619,12 +619,12 @@ class ComplexType(Type):
-             for offset in range(0,align):
-                 align_candidate = Alignment(align, offset)
-                 if verbose_align_log:
--                    print "trying %s for %s" % (str(align_candidate), str(self))
-+                    print ("trying %s for %s" % (str(align_candidate), str(self)))
-                 my_log = AlignmentLog()
-                 if self.is_possible_start_align(align_candidate, callstack, my_log):
-                     log.append(my_log)
-                     if verbose_align_log:
--                        print "found start-align %s for %s" % (str(align_candidate), str(self))
-+                        print ("found start-align %s for %s" % (str(align_candidate), str(self)))
-                     return align_candidate
-                 else:
-                     my_ok_count = my_log.ok_count()
-@@ -641,7 +641,7 @@ class ComplexType(Type):
-         # none of the candidates applies
-         # this type has illegal internal aligns for all possible start_aligns
-         if verbose_align_log:
--            print "didn't find start-align for %s" % str(self)
-+            print ("didn't find start-align for %s" % str(self))
-         log.append(best_log)
-         return None
- 
-@@ -900,7 +900,7 @@ class SwitchType(ComplexType):
-     # aux function for unchecked_get_alignment_after
-     def get_align_for_selected_case_field(self, case_field, start_align, callstack, log):
-         if verbose_align_log:
--            print "get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field))
-+            print ("get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field)))
-         total_align = start_align
-         for field in self.bitcases:
-             my_callstack = callstack[:]
--- 
-2.11.1
-
diff --git a/gnu/packages/patches/xcb-proto-python3-whitespace.patch b/gnu/packages/patches/xcb-proto-python3-whitespace.patch
deleted file mode 100644
index f0509138b2..0000000000
--- a/gnu/packages/patches/xcb-proto-python3-whitespace.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-Fixes compatibility issue with python > 3.5.
-
-Patch copied from upstream source repository:
-
-https://cgit.freedesktop.org/xcb/proto/commit/?id=ea7a3ac6c658164690e0febb55f4467cb9e0bcac
-
-From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001
-From: Thomas Klausner <wiz@NetBSD.org>
-Date: Thu, 19 May 2016 17:30:04 +0200
-Subject: [PATCH] Make whitespace use consistent.
-
-At least python-3.5.x complains about this forcefully.
-
-Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
-Signed-off-by: Uli Schlachter <psychon@znc.in>
----
- xcbgen/align.py | 96 ++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 48 insertions(+), 48 deletions(-)
-
-diff --git a/xcbgen/align.py b/xcbgen/align.py
-index 5e31838..d4c12ee 100644
---- a/xcbgen/align.py
-+++ b/xcbgen/align.py
-@@ -16,12 +16,12 @@ class Alignment(object):
-         return self.align == other.align and self.offset == other.offset
- 
-     def __str__(self):
--	return "(align=%d, offset=%d)" % (self.align, self.offset)
-+        return "(align=%d, offset=%d)" % (self.align, self.offset)
- 
-     @staticmethod
-     def for_primitive_type(size):
--	# compute the required start_alignment based on the size of the type
--	if size % 8 == 0:
-+        # compute the required start_alignment based on the size of the type
-+        if size % 8 == 0:
-             # do 8-byte primitives require 8-byte alignment in X11?
-             return Alignment(8,0)
-         elif size % 4 == 0:
-@@ -33,7 +33,7 @@ class Alignment(object):
- 
- 
-     def align_after_fixed_size(self, size):
--	new_offset = (self.offset + size) % self.align
-+        new_offset = (self.offset + size) % self.align
-         return Alignment(self.align, new_offset)
- 
- 
-@@ -41,7 +41,7 @@ class Alignment(object):
-         '''
-         Assuming the given external_align, checks whether
-         self is fulfilled for all cases.
--	Returns True if yes, False otherwise.
-+        Returns True if yes, False otherwise.
-         '''
-         if self.align == 1 and self.offset == 0:
-             # alignment 1 with offset 0 is always fulfilled
-@@ -55,9 +55,9 @@ class Alignment(object):
-             # the external align guarantees less alignment -> not guaranteed
-             return False
- 
--	if external_align.align % self.align != 0:
-+        if external_align.align % self.align != 0:
-             # the external align cannot be divided by our align
--	    # -> not guaranteed
-+            # -> not guaranteed
-             # (this can only happen if there are alignments that are not
-             # a power of 2, which is highly discouraged. But better be
-             # safe and check for it)
-@@ -72,7 +72,7 @@ class Alignment(object):
- 
-     def combine_with(self, other):
-         # returns the alignment that is guaranteed when
--	# both, self or other, can happen
-+        # both, self or other, can happen
-         new_align = gcd(self.align, other.align)
-         new_offset_candidate1 = self.offset % new_align
-         new_offset_candidate2 = other.offset % new_align
-@@ -83,8 +83,8 @@ class Alignment(object):
-             new_align = gcd(new_align, offset_diff)
-             new_offset_candidate1 = self.offset % new_align
-             new_offset_candidate2 = other.offset % new_align
--	    assert new_offset_candidate1 == new_offset_candidate2
--	    new_offset = new_offset_candidate1
-+            assert new_offset_candidate1 == new_offset_candidate2
-+            new_offset = new_offset_candidate1
-         # return the result
-         return Alignment(new_align, new_offset)
- 
-@@ -92,44 +92,44 @@ class Alignment(object):
- class AlignmentLog(object):
- 
-     def __init__(self):
--	self.ok_list = []
--	self.fail_list = []
--	self.verbosity = 1
-+        self.ok_list = []
-+        self.fail_list = []
-+        self.verbosity = 1
- 
-     def __str__(self):
--	result = ""
-+        result = ""
- 
--	# output the OK-list
--	for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list:
--	    stacksize = len(callstack)
-+        # output the OK-list
-+        for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list:
-+            stacksize = len(callstack)
-             indent = '  ' * stacksize
--	    if self.ok_callstack_is_relevant(callstack):
-+            if self.ok_callstack_is_relevant(callstack):
-                 if field_name is None or field_name == "":
--	            result += ("    %sok: %s:\n\t%sbefore: %s, after: %s\n"
--		        % (indent, str(type_obj), indent, str(align_before), str(align_after)))
--	        else:
--		    result += ("    %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n"
--		        % (indent, str(field_name), str(type_obj),
--		           indent, str(align_before), str(align_after)))
-+                    result += ("    %sok: %s:\n\t%sbefore: %s, after: %s\n"
-+                        % (indent, str(type_obj), indent, str(align_before), str(align_after)))
-+                else:
-+                    result += ("    %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n"
-+                        % (indent, str(field_name), str(type_obj),
-+                           indent, str(align_before), str(align_after)))
-                 if self.verbosity >= 1:
--		    result += self.callstack_to_str(indent, callstack)
-+                    result += self.callstack_to_str(indent, callstack)
- 
--	# output the fail-list
--	for (align_before, field_name, type_obj, callstack, reason) in self.fail_list:
--	    stacksize = len(callstack)
-+        # output the fail-list
-+        for (align_before, field_name, type_obj, callstack, reason) in self.fail_list:
-+            stacksize = len(callstack)
-             indent = '  ' * stacksize
--	    if field_name is None or field_name == "":
--	        result += ("    %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n"
--		    % (indent, str(align_before), indent, str(type_obj), indent, reason))
--	    else:
--		result += ("    %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n"
--		    % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason))
-+            if field_name is None or field_name == "":
-+                result += ("    %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n"
-+                    % (indent, str(align_before), indent, str(type_obj), indent, reason))
-+            else:
-+                result += ("    %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n"
-+                    % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason))
- 
-             if self.verbosity >= 1:
--	        result += self.callstack_to_str(indent, callstack)
-+                result += self.callstack_to_str(indent, callstack)
- 
- 
--	return result
-+        return result
- 
- 
-     def callstack_to_str(self, indent, callstack):
-@@ -137,41 +137,41 @@ class AlignmentLog(object):
-         for stack_elem in callstack:
-             result += "\t  %s%s\n" % (indent, str(stack_elem))
-         result += "\t%s]\n" % indent
--	return result
-+        return result
- 
- 
-     def ok_callstack_is_relevant(self, ok_callstack):
-         # determine whether an ok callstack is relevant for logging
--	if self.verbosity >= 2:
--	    return True
-+        if self.verbosity >= 2:
-+            return True
- 
-         # empty callstacks are always relevant
--	if len(ok_callstack) == 0:
-+        if len(ok_callstack) == 0:
-             return True
- 
--	# check whether the ok_callstack is a subset or equal to a fail_callstack
-+        # check whether the ok_callstack is a subset or equal to a fail_callstack
-         for (align_before, field_name, type_obj, fail_callstack, reason) in self.fail_list:
-             if len(ok_callstack) <= len(fail_callstack):
-                 zipped = zip(ok_callstack, fail_callstack[:len(ok_callstack)])
--		is_subset = all([i == j for i, j in zipped])
--		if is_subset:
-+                is_subset = all([i == j for i, j in zipped])
-+                if is_subset:
-                     return True
- 
-         return False
- 
- 
-     def ok(self, align_before, field_name, type_obj, callstack, align_after):
--	self.ok_list.append((align_before, field_name, type_obj, callstack, align_after))
-+        self.ok_list.append((align_before, field_name, type_obj, callstack, align_after))
- 
-     def fail(self, align_before, field_name, type_obj, callstack, reason):
--	self.fail_list.append((align_before, field_name, type_obj, callstack, reason))
-+        self.fail_list.append((align_before, field_name, type_obj, callstack, reason))
- 
-     def append(self, other):
--	self.ok_list.extend(other.ok_list)
--	self.fail_list.extend(other.fail_list)
-+        self.ok_list.extend(other.ok_list)
-+        self.fail_list.extend(other.fail_list)
- 
-     def ok_count(self):
--	return len(self.ok_list)
-+        return len(self.ok_list)
- 
- 
- 
--- 
-2.11.1
-
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index ee853d5015..5719b7bb45 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -75,7 +76,7 @@ POSIX regular expression API.")
 (define-public pcre2
   (package
     (name "pcre2")
-    (version "10.23")
+    (version "10.31")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/pcre/pcre2/"
@@ -83,9 +84,7 @@ POSIX regular expression API.")
 
               (sha256
                (base32
-                "0vn5g0mkkp99mmzpissa06hpyj6pk9s4mlwbjqrjvw3ihy8rpiyz"))
-              (patches (search-patches "pcre2-CVE-2017-7186.patch"
-                                       "pcre2-CVE-2017-8786.patch"))))
+                "1b389pzw91k1hzydsh4smdsxyppwz4pv74m3nrvy8rda0j3m6zg0"))))
    (build-system gnu-build-system)
    (inputs `(("bzip2" ,bzip2)
              ("readline" ,readline)
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 95f42c6751..2d2c4d756e 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -579,7 +579,7 @@ extracting content or merging files.")
          (base32
           "0b9j0gqbc3jhmx87r6idcsh8lnb30840c3hyx6dk2gdjqqh3hysp"))
         (modules '((guix build utils)))
-        (snippet '(delete-file-recursively "thirdparty"))))
+        (snippet '(begin (delete-file-recursively "thirdparty") #t))))
     (build-system gnu-build-system)
     (inputs
       `(("curl" ,curl)
@@ -631,12 +631,14 @@ line tools for batch rendering @command{pdfdraw}, rewriting files
             (snippet
              ;; Replace shebang with the bi-lingual shell/Perl trick to remove
              ;; dependency on Perl.
-             '(substitute* "qpdf/fix-qdf"
-                (("#!/usr/bin/env perl")
-                 "\
+             '(begin
+                (substitute* "qpdf/fix-qdf"
+                  (("#!/usr/bin/env perl")
+                   "\
 eval '(exit $?0)' && eval 'exec perl -wS \"$0\" ${1+\"$@\"}'
   & eval 'exec perl -wS \"$0\" $argv:q'
-    if 0;\n")))))
+    if 0;\n"))
+                #t))))
    (build-system gnu-build-system)
    (arguments
     `(#:disallowed-references (,perl)
@@ -650,7 +652,8 @@ eval '(exit $?0)' && eval 'exec perl -wS \"$0\" ${1+\"$@\"}'
             (substitute* (append
                           '("qtest/bin/qtest-driver")
                           (find-files "." "\\.test"))
-              (("/usr/bin/env") (which "env"))))))))
+              (("/usr/bin/env") (which "env")))
+            #t)))))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("perl" ,perl)))
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 0bc4697229..11765b8e17 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
-;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 ng0 <ng0@infotropique.org>
@@ -107,7 +107,7 @@
          (replace 'configure
            (lambda* (#:key configure-flags #:allow-other-keys)
              (format #t "Perl configure flags: ~s~%" configure-flags)
-             (zero? (apply system* "./Configure" configure-flags))))
+             (apply invoke "./Configure" configure-flags)))
          (add-before
           'strip 'make-shared-objects-writable
           (lambda* (#:key outputs #:allow-other-keys)
@@ -117,7 +117,8 @@
                    (lib (string-append out "/lib")))
               (for-each (lambda (dso)
                           (chmod dso #o755))
-                        (find-files lib "\\.so$")))))
+                        (find-files lib "\\.so$"))
+              #t)))
 
          (add-after 'install 'remove-extra-references
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -7488,7 +7489,8 @@ TODO: {
     local $TODO = \"/proc/cpuinfo doesn't always report 'model name' or 'machine' ...\";
     $type = &Sys::CPU::cpu_type();
     ok( defined($type), \"CPU Type:  $type\" );
-}~%")))))))
+}~%")))
+                  #t))))
     (build-system perl-build-system)
     (synopsis "Perl extension for getting CPU information")
     (description
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index f3f279a533..58ace823ee 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -86,7 +86,8 @@
                               "pcre/pcrelib"
                               "sqlite3/libsqlite"
                               "xmlrpc/libxmlrpc"
-                              "zip/lib"))))))
+                              "zip/lib"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index 482ae1b862..82b55fbf2f 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -60,9 +60,11 @@
               ;; that, libplot.la ends up containing just "-lXaw" (without
               ;; "-L/path/to/Xaw"), due to the fact that there is no
               ;; libXaw.la, which forces us to propagate libXaw.
-              '(substitute* "configure"
-                 (("-lXaw")
-                  "-lXaw7")))))
+              '(begin
+                 (substitute* "configure"
+                   (("-lXaw")
+                    "-lXaw7"))
+                 #t))))
     (build-system gnu-build-system)
     (inputs `(("libpng" ,libpng)
               ("libx11" ,libx11)
@@ -97,7 +99,8 @@ scientific data.")
                   ;; Use the standard location for modules.
                   (substitute* "Makefile.in"
                     (("godir = .*$")
-                     "godir = $(moddir)\n"))))))
+                     "godir = $(moddir)\n"))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.2)))
@@ -123,9 +126,11 @@ using the Cairo drawing library.")
               (modules '((guix build utils)))
               (snippet
                ;; Install binaries in the right place.
-               '(substitute* "src/Makefile"
-                  (("INSTALLBIN =.*$")
-                   (string-append "INSTALLBIN = $(out)/bin"))))))
+               '(begin
+                  (substitute* "src/Makefile"
+                    (("INSTALLBIN =.*$")
+                     (string-append "INSTALLBIN = $(out)/bin")))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index 6edfba95cc..d1485082e3 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -56,9 +56,11 @@
               (modules '((guix build utils)))
               (snippet
                ;; Remove timestamp from the installed 'README' file.
-               '(substitute* "etc/README.in"
-                  (("@date@")
-                   "1st of some month, sometime after 1970")))
+               '(begin
+                  (substitute* "etc/README.in"
+                    (("@date@")
+                     "1st of some month, sometime after 1970"))
+                  #t))
               (patches (search-patches
                         "a2ps-CVE-2001-1593.patch"
                         "a2ps-CVE-2014-0466.patch"))))
diff --git a/gnu/packages/profiling.scm b/gnu/packages/profiling.scm
index d6f3aede28..b2def45ccf 100644
--- a/gnu/packages/profiling.scm
+++ b/gnu/packages/profiling.scm
@@ -350,8 +350,10 @@ different kinds of performance behavior.")
               (modules '((guix build utils)))
               (snippet
                ;; Remove bundled software.
-               '(for-each delete-file-recursively
-                          '("vendor/opari2" "vendor/cube")))))
+               '(begin
+                  (for-each delete-file-recursively
+                            '("vendor/opari2" "vendor/cube"))
+                  #t))))
     (build-system gnu-build-system)
     (inputs
      `(("mpi" ,mpi)
diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm
index 8a45137a7f..fee3c39043 100644
--- a/gnu/packages/pulseaudio.scm
+++ b/gnu/packages/pulseaudio.scm
@@ -47,7 +47,6 @@
 (define-public libsndfile
   (package
     (name "libsndfile")
-    (replacement libsndfile/fixed)
     (version "1.0.28")
     (source (origin
              (method url-fetch)
@@ -55,7 +54,8 @@
                                  version ".tar.gz"))
              (patches (search-patches "libsndfile-armhf-type-checks.patch"
                                       "libsndfile-CVE-2017-8361-8363-8365.patch"
-                                      "libsndfile-CVE-2017-8362.patch"))
+                                      "libsndfile-CVE-2017-8362.patch"
+                                      "libsndfile-CVE-2017-12562.patch"))
              (sha256
               (base32
                "1afzm7jx34jhqn32clc5xghyjglccam2728yxlx37yj2y0lkkwqz"))))
@@ -81,15 +81,6 @@ SPARC.  Hopefully the design of the library will also make it easy to extend
 for reading and writing new sound file formats.")
     (license l:gpl2+)))
 
-(define libsndfile/fixed
-  (package
-    (inherit libsndfile)
-    (source (origin
-              (inherit (package-source libsndfile))
-              (patches (append
-                         (origin-patches (package-source libsndfile))
-                         (search-patches "libsndfile-CVE-2017-12562.patch")))))))
-
 (define-public libsamplerate
   (package
     (name "libsamplerate")                     ; aka. Secret Rabbit Code (SRC)
@@ -144,9 +135,11 @@ rates.")
              (snippet
               ;; Disable console-kit support by default since it's deprecated
               ;; anyway.
-              '(substitute* "src/daemon/default.pa.in"
-                 (("load-module module-console-kit" all)
-                  (string-append "#" all "\n"))))
+              '(begin
+                 (substitute* "src/daemon/default.pa.in"
+                   (("load-module module-console-kit" all)
+                    (string-append "#" all "\n")))
+                 #t))
              (patches (search-patches
                        "pulseaudio-fix-mult-test.patch"
                        "pulseaudio-longer-test-timeout.patch"))))
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 3fbaf1c3c4..f709ed9e1d 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -563,7 +563,8 @@ PKCS#8, PKCS#12, PKCS#5, X.509 and TSP.")
        (uri (pypi-uri "PyNaCl" version))
        (modules '((guix build utils)))
        ;; Remove bundled libsodium
-       (snippet '(delete-file-recursively "src/libsodium"))
+       (snippet '(begin (delete-file-recursively "src/libsodium")
+                        #t))
        (sha256
         (base32
          "01vjq0pxyw1mxaqy013hzs8nknmvg3kpzlzmh69jxznyipgvria5"))))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 05d3390604..51cc1cf5f0 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -138,7 +138,7 @@
 
 (define-public python-2.7
   (package
-    (name "python")
+    (name "python2")
     (version "2.7.14")
     (source
      (origin
@@ -338,7 +338,8 @@ data types.")
 
 (define-public python-3.6
   (package (inherit python-2)
-    (version "3.6.3")
+    (name "python")
+    (version "3.6.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.python.org/ftp/python/"
@@ -351,7 +352,7 @@ data types.")
               (patch-flags '("-p0"))
               (sha256
                (base32
-                "1nl1raaagr4car787a2hmjv2dw6gqny53xfd6wisbgx4r5kxk9yd"))
+                "1fna7g8jxzl4kd2pqmmqhva5724c5m920x3fsrpsgskaylmr76qm"))
               (snippet
                '(begin
                   (for-each delete-file
@@ -359,8 +360,75 @@ data types.")
                               "Lib/ctypes/test/test_win32.py" ; fails on aarch64
                               "Lib/test/test_fcntl.py")) ; fails on aarch64
                   #t))))
-    (arguments (substitute-keyword-arguments (package-arguments python-2)
-                 ((#:tests? _) #t)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-2)
+       ((#:tests? _) #t)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'patch-timestamp-for-pyc-files
+             (lambda _
+               ;; We set DETERMINISTIC_BUILD to only override the mtime when
+               ;; building with Guix, lest we break auto-compilation in
+               ;; environments.
+               (setenv "DETERMINISTIC_BUILD" "1")
+               (substitute* "Lib/py_compile.py"
+                 (("source_stats\\['mtime'\\]")
+                  "(1 if 'DETERMINISTIC_BUILD' in os.environ else source_stats['mtime'])"))
+
+               ;; Use deterministic hashes for strings, bytes, and datetime
+               ;; objects.
+               (setenv "PYTHONHASHSEED" "0")
+
+               ;; Reset mtime when validating bytecode header.
+               (substitute* "Lib/importlib/_bootstrap_external.py"
+                 (("source_mtime = int\\(source_stats\\['mtime'\\]\\)")
+                  "source_mtime = 1"))
+               #t))
+           ;; These tests fail because of our change to the bytecode
+           ;; validation.  They fail because expected exceptions do not get
+           ;; thrown.  This seems to be no problem.
+           (add-after 'unpack 'disable-broken-bytecode-tests
+             (lambda _
+               (substitute* "Lib/test/test_importlib/source/test_file_loader.py"
+                 (("test_bad_marshal")
+                  "disable_test_bad_marshal")
+                 (("test_no_marshal")
+                  "disable_test_no_marshal")
+                 (("test_non_code_marshal")
+                  "disable_test_non_code_marshal"))
+               #t))
+           ;; Unset DETERMINISTIC_BUILD to allow for tests that check that
+           ;; stale pyc files are rebuilt.
+           (add-before 'check 'allow-non-deterministic-compilation
+             (lambda _ (unsetenv "DETERMINISTIC_BUILD") #t))
+           ;; We need to rebuild all pyc files for three different
+           ;; optimization levels to replace all files that were not built
+           ;; deterministically.
+
+           ;; FIXME: Without this phase we have close to 2000 files that
+           ;; differ across different builds of this package.  With this phase
+           ;; there are about 500 files left that differ.
+           (add-after 'install 'rebuild-bytecode
+             (lambda* (#:key outputs #:allow-other-keys)
+               (setenv "DETERMINISTIC_BUILD" "1")
+               (let ((out (assoc-ref outputs "out")))
+                 (for-each
+                  (lambda (opt)
+                    (format #t "Compiling with optimization level: ~a\n"
+                            (if (null? opt) "none" (car opt)))
+                    (for-each (lambda (file)
+                                (apply invoke
+                                       `(,(string-append out "/bin/python3")
+                                         ,@opt
+                                         "-m" "compileall"
+                                         "-f" ; force rebuild
+                                         ;; Don't build lib2to3, because it's Python 2 code.
+                                         ;; Also don't build obviously broken test code.
+                                         "-x" "(lib2to3|test/bad.*)"
+                                         ,file)))
+                              (find-files out "\\.py$")))
+                  (list '() '("-O") '("-OO")))
+                 #t)))))))
     (native-search-paths
      (list (search-path-specification
             (variable "PYTHONPATH")
@@ -379,7 +447,7 @@ data types.")
 
 (define-public python2-minimal
   (package (inherit python-2)
-    (name "python-minimal")
+    (name "python2-minimal")
     (outputs '("out"))
 
     ;; Keep zlib, which is used by 'pip' (via the 'zipimport' module), which
@@ -1026,7 +1094,7 @@ from the Python interpreter, or as a small part of a larger application.")
        (modify-phases %standard-phases
          (replace 'check
            (lambda _
-             (zero? (system* "py.test" "-v")))))))
+             (invoke "py.test" "-v"))))))
     (native-inputs
      `(("python-py" ,python-py)
        ("python-pytest" ,python-pytest-bootstrap)))
@@ -3187,7 +3255,8 @@ that client code uses to construct the grammar directly in Python code.")
            ;; input since it would create a circular dependency: Extend the
            ;; test for Python 3, where it is already dropped, to Python 2.
            (substitute* "numpydoc/tests/test_plot_directive.py"
-             (("3") "2"))))))
+             (("3") "2"))
+           #t))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-sphinx" ,python-sphinx)))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index d6082bd7a4..b505d8d708 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Quiliro <quiliro@fsfla.org>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
@@ -145,7 +145,8 @@ system, and the core design of Django is reused in Grantlee.")
                         "qtcanvas3d/examples/canvas3d/3rdparty"))
                 ;; Tests depend on this example, which depends on the 3rd party code.
                 (substitute* "qtmultimedia/examples/multimedia/multimedia.pro"
-                  (("spectrum") "#"))))))
+                  (("spectrum") "#"))
+                #t))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("mesa" ,mesa)))
@@ -185,7 +186,7 @@ system, and the core design of Django is reused in Grantlee.")
        ("libxslt" ,libxslt)
        ("libxtst" ,libxtst)
        ("mtdev" ,mtdev)
-       ("mysql" ,mysql)
+       ("mariadb" ,mariadb)
        ("nss" ,nss)
        ("openssl" ,openssl)
        ("postgresql" ,postgresql)
@@ -287,7 +288,8 @@ developers using C++ or QML, a CSS & JavaScript like language.")
              (modules '((guix build utils)))
              (snippet
               ;; Remove webkit module, which is not built.
-              '(delete-file-recursively "src/3rdparty/webkit"))))
+              '(begin (delete-file-recursively "src/3rdparty/webkit")
+                      #t))))
     (inputs `(,@(alist-delete "harfbuzz"
                               (alist-delete "libjpeg" (package-inputs qt)))
               ("libjepg" ,libjpeg-8)
@@ -426,7 +428,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
        ("libxslt" ,libxslt)
        ("libxtst" ,libxtst)
        ("mtdev" ,mtdev)
-       ("mysql" ,mysql)
+       ("mariadb" ,mariadb)
        ("nss" ,nss)
        ("openssl" ,openssl)
        ("pcre2" ,pcre2)
@@ -686,8 +688,8 @@ HostData=lib/qt5
               (base32
                "1nfxvf96wh1smdmcsk4m9f7zg69fgp844f8772qpv6v4m20p1qb9"))
              (modules '((guix build utils)))
-             (snippet
-              '(delete-file-recursively "src/3rdparty"))))
+             (snippet '(begin (delete-file-recursively "src/3rdparty")
+                              #t))))
     (native-inputs `())
     (inputs
      `(("jasper" ,jasper)
@@ -901,7 +903,8 @@ recognition API for devices.")))
                    "examples/multimedia/spectrum/3rdparty")
                  ;; We also prevent the spectrum example from being built.
                  (substitute* "examples/multimedia/multimedia.pro"
-                   (("spectrum") "#"))))))
+                   (("spectrum") "#"))
+                 #t))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:phases phases)
@@ -947,7 +950,8 @@ set of plugins for interacting with pulseaudio and GStreamer.")))
              (modules '((guix build utils)))
              (snippet
                ;; The examples try to build and cause the build to fail
-              '(delete-file-recursively "examples"))))
+              '(begin (delete-file-recursively "examples")
+                      #t))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:phases phases)
@@ -1233,7 +1237,8 @@ coloring, and many more.")))
                "0zwch9vn17f3bpy300jcfxx6cx9qymk5j7khx0x9k1xqid4166c3"))
              (modules '((guix build utils)))
              (snippet
-              '(delete-file-recursively "tools/opengldummy/3rdparty"))))
+              '(begin (delete-file-recursively "tools/opengldummy/3rdparty")
+                      #t))))
     (native-inputs `())
     (inputs
      `(("qtbase" ,qtbase)
@@ -1292,7 +1297,8 @@ and mobile applications targeting TV-like form factors.")))
                  (delete-file-recursively "tests/3rdparty")
                  ;; the scion test refers to the bundled 3rd party test code.
                  (substitute* "tests/auto/auto.pro"
-                   (("scion") "#"))))))
+                   (("scion") "#"))
+                 #t))))
     (inputs
      `(("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)))
@@ -1338,7 +1344,8 @@ purchasing goods and services.")))
                "0agdxgk7knf6zkjdi6316y2k9zq72wcg5zn3cbhw4hzjw81qadgg"))
              (modules '((guix build utils)))
              (snippet
-              '(delete-file-recursively "examples/canvas3d/3rdparty"))))
+              '(begin (delete-file-recursively "examples/canvas3d/3rdparty")
+                      #t))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
       ;; Building the tests depends on the bundled 3rd party javascript files,
diff --git a/gnu/packages/ratpoison.scm b/gnu/packages/ratpoison.scm
index 19321872c5..901d6fc55a 100644
--- a/gnu/packages/ratpoison.scm
+++ b/gnu/packages/ratpoison.scm
@@ -66,8 +66,7 @@
                         (copy-file (assoc-ref inputs rpd)
                                    (string-append dst rpd))))))))
     (inputs
-     `(("inputproto" ,inputproto)
-       ("fontconfig" ,fontconfig)
+     `(("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
        ("libXft" ,libxft)
        ("libXi" ,libxi)
@@ -77,7 +76,7 @@
        ("libXtst" ,libxtst)
        ("libX11" ,libx11)
        ("readline" ,readline)
-       ("xextproto" ,xextproto)))
+       ("xorgproto" ,xorgproto)))
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
diff --git a/gnu/packages/robotics.scm b/gnu/packages/robotics.scm
index 9b30b90da2..389bb5a028 100644
--- a/gnu/packages/robotics.scm
+++ b/gnu/packages/robotics.scm
@@ -91,10 +91,12 @@ hundred times faster than real-time.")
                 (modules '((guix build utils)))
                 (snippet
                  ;; Add missing Qt5::Network.
-                 '(substitute* "targets/playground/CMakeLists.txt"
-                    (("target_link_libraries(.*)\\$\\{EXTRA_LIBS\\}" _ middle)
-                     (string-append "target_link_libraries" middle
-                                    " Qt5::Network ${EXTRA_LIBS}"))))))
+                 '(begin
+                    (substitute* "targets/playground/CMakeLists.txt"
+                      (("target_link_libraries(.*)\\$\\{EXTRA_LIBS\\}" _ middle)
+                       (string-append "target_link_libraries" middle
+                                      " Qt5::Network ${EXTRA_LIBS}")))
+                    #t))))
       (build-system cmake-build-system)
       (arguments
        '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm
index ede725877d..8795d8d9fb 100644
--- a/gnu/packages/sawfish.scm
+++ b/gnu/packages/sawfish.scm
@@ -47,13 +47,6 @@
                (base32
                 "1bmcjl1x1rdh514q9z3hzyjmjmwwwkziipjpjsl301bwmiwrd8a8"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'bootstrap
-                    (lambda _
-                      ;; The 0.92.6 tarball was not produced by 'make dist'
-                      ;; and lacks generated files.  Sadness.
-                      (zero? (system* "autoreconf" "-vfi")))))))
     (native-inputs
      `(("makeinfo"   ,texinfo)
        ("pkg-config" ,pkg-config)
@@ -94,10 +87,12 @@ implementing both small and large scale systems.")
                 "0qslm2isyv22hffdpw0nh7xk8jw8cj3h5y7d40c9h5r833w7j6sz"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "Makefile.in"
-                  (("installdir=\\$\\(repexecdir\\)")
-                   ;; Install libraries for librep to $out/lib/rep.
-                   "installdir=$(libdir)/rep")))))
+               '(begin
+                  (substitute* "Makefile.in"
+                    (("installdir=\\$\\(repexecdir\\)")
+                     ;; Install libraries for librep to $out/lib/rep.
+                     "installdir=$(libdir)/rep"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments '(#:tests? #f)) ; no tests
     (native-inputs
@@ -134,7 +129,8 @@ backend of Sawfish.")
                      "REP_DL_LOAD_PATH=$(REP_DL_LOAD_PATH):"))
                   (substitute* "src/Makefile.in"
                     ;; Install libraries for librep to $out/lib/rep.
-                    (("\\$\\(repexecdir\\)") "$(libdir)/rep"))))))
+                    (("\\$\\(repexecdir\\)") "$(libdir)/rep"))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; no tests
diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm
index f44f037efb..d1dfdd4e27 100644
--- a/gnu/packages/scanner.scm
+++ b/gnu/packages/scanner.scm
@@ -45,9 +45,11 @@
              (snippet
               ;; Generated HTML files and udev rules normally embed a
               ;; timestamp.  Work around that to build things reproducibly.
-              '(substitute* "tools/sane-desc.c"
-                 (("asctime \\(localtime \\(&current_time\\)\\)")
-                  "\"1970-01-01\"")))))
+              '(begin
+                 (substitute* "tools/sane-desc.c"
+                   (("asctime \\(localtime \\(&current_time\\)\\)")
+                    "\"1970-01-01\""))
+                 #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 657ca875d5..39240dfca7 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -212,8 +212,10 @@ features an integrated Emacs-like editor and a large runtime library.")
              ;; Remove bundled libraries.
              (modules '((guix build utils)))
              (snippet
-              '(for-each delete-file-recursively
-                         '("gc" "gmp" "libuv")))))
+              '(begin
+                 (for-each delete-file-recursively
+                           '("gc" "gmp" "libuv"))
+                 #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -609,9 +611,10 @@ threads.")
        (origin
          (method url-fetch/tarbomb)
          (modules '((guix build utils)))
-         (snippet
-          ;; Remove binary code
-          '(delete-file-recursively "scmutils/mit-scheme"))
+         (snippet '(begin
+                     ;; Remove binary code
+                     (delete-file-recursively "scmutils/mit-scheme")
+                     #t))
          (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/6946"
                              "/scmutils-tarballs/" name "-" version
                              "-x86-64-gnu-linux.tar.gz"))
diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm
index 860d346778..6cf382e0bb 100644
--- a/gnu/packages/scribus.scm
+++ b/gnu/packages/scribus.scm
@@ -75,8 +75,10 @@
        (snippet
         ;; Fix typo.  Equivalent to patch at
         ;; https://bugs.scribus.net/view.php?id=14850
-        '(substitute* "cmake/modules/FindLIBPODOFO.cmake"
-           (("find_package\\(OPENSSL\\)") "find_package(OpenSSL)")))))
+        '(begin
+           (substitute* "cmake/modules/FindLIBPODOFO.cmake"
+             (("find_package\\(OPENSSL\\)") "find_package(OpenSSL)"))
+           #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ;no test target
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 30d18aa1c3..f98ea8c048 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -369,9 +369,10 @@ directory.")
                (string-append "http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-"
                               version ".tar.gz"))
               (modules '((guix build utils)))
-              (snippet
-               ;; Remove bundled libraries.
-               '(delete-file-recursively "external"))
+              (snippet '(begin
+                          ;; Remove bundled libraries.
+                          (delete-file-recursively "external")
+                          #t))
               (sha256
                (base32
                 "1fw3kkqi5346ai5if4pxrcbhs5c4vv3a4smgz6fl6kyaxwkmwqaf"))))
@@ -388,9 +389,10 @@ directory.")
               (string-append "https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-"
                              version ".tar.gz"))
              (modules '((guix build utils)))
-             (snippet
-              ;; Remove bundled libraries.
-              '(delete-file-recursively "external"))
+             (snippet (begin
+                        ;; Remove bundled libraries.
+                        '(delete-file-recursively "external")
+                        #t))
              (sha256
               (base32
                "0xljwcpvd2knrjdfag5b257xqayplz55mqlszrqp0kpnphh5xnrl"))))
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index f721165751..57ba682305 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -113,10 +113,10 @@ such as compact binary encodings, XML, or JSON.")
          "cpp-" version "/msgpack-" version ".tar.gz"))
        (snippet
         '(let ((p (open-file "msgpack.pc.in" "a")))
-           (begin
-             (display
-              (string-append "Requires: " "zlib" "\n") p)
-             (close-output-port p))))
+           (display
+            (string-append "Requires: " "zlib" "\n") p)
+           (close-output-port p)
+           #t))
        (sha256
         (base32
          "18hzmyfg3mvnp7ab03nqdzzvqagkl42gygjpi4zv4i7aca2dmwf0"))))
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 685f6d2df4..0bd4cd2fb2 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -103,9 +103,10 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
                 "0nhc3yc5lnnan7zmxqqxm07rdpwjww5ijy45ll2njdc6fnfb2az4"))
               (modules '((guix build utils)))
               ;; Don't try to install /etc/fish/config.fish.
-              (snippet
-               '(substitute* "Makefile.in"
-                  ((".*INSTALL.*sysconfdir.*fish.*") "")))))
+              (snippet '(begin
+                          (substitute* "Makefile.in"
+                            ((".*INSTALL.*sysconfdir.*fish.*") ""))
+                          #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)))
@@ -264,7 +265,7 @@ written by Paul Haahr and Byron Rakitzis.")
               (substitute* "tests/syntax.at"
                 (("; other_script.csh") "; /bin/sh other_script.csh"))
               ;; Now, let's generate the test suite and patch it
-              (system* "make" "tests/testsuite")
+              (invoke "make" "tests/testsuite")
 
               ;; This file is ISO-8859-1 encoded.
               (with-fluids ((%default-port-encoding #f))
diff --git a/gnu/packages/slang.scm b/gnu/packages/slang.scm
index abc00c1a89..f9956d0113 100644
--- a/gnu/packages/slang.scm
+++ b/gnu/packages/slang.scm
@@ -51,7 +51,8 @@
                   (substitute* "src/Makefile.in"
                     (("/bin/ln") "ln"))
                   (substitute* "configure"
-                    (("-ltermcap") ""))))))
+                    (("-ltermcap") ""))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:parallel-tests? #f
diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm
index a0d6c86dff..c0c53a5291 100644
--- a/gnu/packages/smalltalk.scm
+++ b/gnu/packages/smalltalk.scm
@@ -100,7 +100,8 @@ such as ones for networking and GUI programming.")
               "ux_version = \"GNU\";\n"))
            (substitute* "unix/vm/config.cmake"
              (("\\(VM_BUILD_STRING.*")
-              "(VM_BUILD_STRING \\\"Built with GNU Guix\\\")"))))))
+              "(VM_BUILD_STRING \\\"Built with GNU Guix\\\")"))
+           #t))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("dbus" ,dbus)
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index d7b1897051..9e157f29f4 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -479,7 +479,8 @@ basis for almost any application.")
                     (("localhost") "127.0.0.1"))
 
                   (substitute* "src/testsuite/login-auth-test"
-                    (("/bin/cat") "cat"))))))
+                    (("/bin/cat") "cat"))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("m4" ,m4)
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 19a05ea10b..e140f4d043 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016, 2017 Raoul Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -115,7 +115,7 @@ be output in text, PostScript, PDF or HTML.")
 (define-public r-minimal
   (package
     (name "r-minimal")
-    (version "3.4.3")
+    (version "3.4.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cran/src/base/R-"
@@ -123,7 +123,7 @@ be output in text, PostScript, PDF or HTML.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "09pl0w01fr09bsrwd7nz2r5psysj0z93w4chz3hm2havvqqvhg3s"))))
+                "0dq3jsnwsb5j3fhl0wi3p5ycv8avf8s5j1y4ap3d2mkjmcppvsdk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:disallowed-references (,tzdata-for-tests)
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index 54d91c1f3c..93db2189e3 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -317,7 +317,7 @@
        ("python2-testtools" ,python2-testtools)
        ("python2-tox" ,python2-tox)))
     (inputs
-     `(("boost" ,boost-1.66)
+     `(("boost" ,boost)
        ("curl" ,curl)
        ("cryptsetup" ,cryptsetup)
        ("expat" ,expat)
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 3656f5855e..df1b963878 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -58,7 +58,8 @@
            ;; qtsingleapplication have not yet been packaged, but all are
            ;; explicitly used from the 3rdparty folder during build.
            ;; We can also remove the macgoodies folder
-           (delete-file-recursively "src/3rdparty/qtmacgoodies")))))
+           (delete-file-recursively "src/3rdparty/qtmacgoodies")
+           #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 04f258481e..22dc8af7f3 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -39,8 +39,9 @@
                 "0nv5g9ymykl4316l2g3mnac77y2rx9ps4j2kg3pymxlq6qms2dij"))
               (modules '((guix build utils)))
               ;; Delete bundled ("vendored") free software source code.
-              (snippet
-                '(delete-file-recursively "vendor"))))
+              (snippet '(begin
+                          (delete-file-recursively "vendor")
+                          #t))))
     (build-system go-build-system)
     ;; The primary Syncthing executable goes to "out", while the auxiliary
     ;; server programs and utility tools go to "utils".  This reduces the size
diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm
index 6a668801ff..e4399678dc 100644
--- a/gnu/packages/tbb.scm
+++ b/gnu/packages/tbb.scm
@@ -40,9 +40,11 @@
                 "1i3zy87gyzw22fvajm039w6g822qzqn7jbmznc8y8c57qpqnf330"))
               (modules '((guix build utils)))
               (snippet
-               '(substitute* "build/common.inc"
-                  (("export tbb_build_prefix.+$")
-                   "export tbb_build_prefix?=guix\n")))))
+               '(begin
+                  (substitute* "build/common.inc"
+                    (("export tbb_build_prefix.+$")
+                     "export tbb_build_prefix?=guix\n"))
+                  #t))))
     (outputs '("out" "doc"))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index 8988cdc3b1..19b2bbf389 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -100,7 +100,7 @@
     (inputs
      `(;; TODO: Add these optional dependencies.
        ;; ("libX11" ,libX11)
-       ;; ("xproto" ,xproto)
+       ;; ("xorgproto" ,xorgproto)
        ;; ("tk" ,tk)
        ("tcl" ,tcl)))
     (arguments
@@ -150,7 +150,8 @@ X11 GUIs.")
                   (add-before
                    'configure 'pre-configure
                    (lambda _
-                     (chdir "unix")))
+                     (chdir "unix")
+                     #t))
                   (add-after
                    'install 'add-fontconfig-flag
                    (lambda* (#:key inputs outputs #:allow-other-keys)
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 6f3453670c..48c5f1f979 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -238,7 +238,8 @@ compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.")
                      "")
                     ;; Replace the call to 'sd_booted' by the truth value.
                     (("sd_booted\\(\\)")
-                     "1"))))))
+                     "1"))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -461,26 +462,28 @@ embedded kernel situations.")
                                  "cool-retro-term-memory-leak-1.patch"))
                 (modules '((guix build utils)))
                 (snippet
-                 '(for-each (lambda (font)
-                              (delete-file-recursively
-                               (string-append "app/qml/fonts/" font))
-                              (substitute* '("app/qml/resources.qrc")
-                                (((string-append "<file>fonts/" font ".*"))
-                                 "")))
-                            '(;"1971-ibm-3278"     ; BSD 3-clause
-                              "1977-apple2"        ; Non-Free
-                              "1977-commodore-pet" ; Non-Free
-                              "1979-atari-400-800" ; Non-Free
-                              "1982-commodore64"   ; Non-Free
-                              "1985-atari-st"      ; ?
-                              "1985-ibm-pc-vga"    ; Unclear
-                              ;"modern-fixedsys-excelsior" ; Redistributable
-                              ;"modern-hermit"     ; SIL
-                              ;"modern-inconsolata"; SIL
-                              ;"modern-pro-font-win-tweaked" ; X11
-                              ;"modern-proggy-tiny"; X11
-                              ;"modern-terminus"   ; SIL
-                              "modern-monaco"))))) ; Apple non-free
+                 '(begin
+                    (for-each (lambda (font)
+                                (delete-file-recursively
+                                 (string-append "app/qml/fonts/" font))
+                                (substitute* '("app/qml/resources.qrc")
+                                  (((string-append "<file>fonts/" font ".*"))
+                                   "")))
+                              '(;;"1971-ibm-3278"             ; BSD 3-clause
+                                "1977-apple2"                 ; Non-Free
+                                "1977-commodore-pet"          ; Non-Free
+                                "1979-atari-400-800"          ; Non-Free
+                                "1982-commodore64"            ; Non-Free
+                                "1985-atari-st"               ; ?
+                                "1985-ibm-pc-vga"             ; Unclear
+                                ;;"modern-fixedsys-excelsior" ; Redistributable
+                                ;;"modern-hermit"             ; SIL
+                                ;;"modern-inconsolata"        ; SIL
+                                ;;"modern-pro-font-win-tweaked" ; X11
+                                ;;"modern-proggy-tiny"        ; X11
+                                ;;"modern-terminus"           ; SIL
+                                "modern-monaco"))             ; Apple non-free
+                    #t))))
       (build-system gnu-build-system)
       (inputs
        `(("qtbase" ,qtbase)
diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
index 30f593d0ad..bcaf35bf2d 100644
--- a/gnu/packages/texinfo.scm
+++ b/gnu/packages/texinfo.scm
@@ -143,7 +143,9 @@ is on expressing the content semantically, avoiding physical markup commands.")
                ;; timestamp so we don't trigger the rule to update PO files,
                ;; which would require Gettext.
                ;; See <http://bugs.gnu.org/18247>.
-               '(utime "texi2html.pl" 0 0 0 0))))
+               '(begin
+                  (utime "texi2html.pl" 0 0 0 0)
+                  #t))))
     (build-system gnu-build-system)
     (inputs `(("perl" ,perl)))
     (arguments
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index cbf077cea3..efbea450e0 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -214,7 +214,9 @@ compiled, requires few libraries, and starts up quickly. ")
               (modules '((guix build utils)))
 
               ;; Remove pre-built binaries.
-              (snippet '(delete-file-recursively "bin"))))
+              (snippet '(begin
+                          (delete-file-recursively "bin")
+                          #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -248,10 +250,10 @@ Wordstar-, EMACS-, Pico, Nedit or vi-like key bindings.  e3 can be used on
                (base32
                 "0hakfikzsml7z0hja8m8mcahrmfy2piy81bq9nccsjplyfc9clai"))
               (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (substitute* "GNUmakefile"
-                    (("/usr/bin/") ""))))))
+              (snippet '(begin
+                          (substitute* "GNUmakefile"
+                            (("/usr/bin/") ""))
+                          #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 2d8a104d54..11deff4f6d 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -93,10 +93,9 @@ to DOS format and vice versa.")
         (base32
          "0r4yhf7i7zp2nl2apyzz7r3i2in12n385hmr8zcfr18ly0ly530q"))
        (modules '((guix build utils)))
-       (snippet
-        `(begin
-           (delete-file "tests/Recode.c")
-           #t))))
+       (snippet '(begin
+                   (delete-file "tests/Recode.c")
+                   #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("python" ,python-2)
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 299ac85dc9..a33c1a5235 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -1,16 +1,16 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2015, 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -65,8 +65,7 @@
 (define-public libtasn1
   (package
     (name "libtasn1")
-    (version "4.12")
-    (replacement libtasn1/fixed)
+    (version "4.13")
     (source
      (origin
       (method url-fetch)
@@ -74,8 +73,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "0ls7jdq3y5fnrwg0pzhq11m21r8pshac2705bczz6mqjc8pdllv7"))
-      (patches (search-patches "libtasn1-CVE-2017-10790.patch"))))
+        "1jlc1iahj8k3haz28j55nzg7sgni5h41vqy461i1bpbx6668wlky"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)))
     (home-page "https://www.gnu.org/software/libtasn1/")
@@ -87,14 +85,6 @@ networking, allowing for formal validation of data according to some
 specifications.")
     (license license:lgpl2.0+)))
 
-(define libtasn1/fixed
-  (package
-    (inherit libtasn1)
-    (source (origin
-              (inherit (package-source libtasn1))
-              (patches (search-patches "libtasn1-CVE-2017-10790.patch"
-                                       "libtasn1-CVE-2018-6003.patch"))))))
-
 (define-public asn1c
   (package
     (name "asn1c")
@@ -155,7 +145,7 @@ living in the same process.")
 (define-public gnutls
   (package
     (name "gnutls")
-    (version "3.5.13")
+    (version "3.5.18")
     (source (origin
              (method url-fetch)
              (uri
@@ -169,7 +159,7 @@ living in the same process.")
                               "gnutls-skip-pkgconfig-test.patch"))
              (sha256
               (base32
-               "15ihq6p0hnnhs8cnjrkj40dmlcaa1jjg8xg0g2ydbnlqs454ixbr"))))
+               "0d02x28fwkkx7xzn7807nww6idchizzq3plx8sfcyiw7wzclh8mf"))))
     (build-system gnu-build-system)
     (arguments
      `(; Ensure we don't keep a reference to this buggy software.
@@ -307,26 +297,25 @@ required structures.")
          'configure
          (lambda* (#:key outputs #:allow-other-keys)
            (let ((out (assoc-ref outputs "out")))
-             (zero?
-              (system* "./config"
-                       "shared"                   ;build shared libraries
-                       "--libdir=lib"
-
-                       ;; The default for this catch-all directory is
-                       ;; PREFIX/ssl.  Change that to something more
-                       ;; conventional.
-                       (string-append "--openssldir=" out
-                                      "/share/openssl-" ,version)
-
-                       (string-append "--prefix=" out)
-
-                       ;; XXX FIXME: Work around a code generation bug in GCC
-                       ;; 4.9.3 on ARM when compiled with -mfpu=neon.  See:
-                       ;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66917>
-                       ,@(if (and (not (%current-target-system))
-                                  (string-prefix? "armhf" (%current-system)))
-                             '("-mfpu=vfpv3")
-                             '()))))))
+             (invoke "./config"
+                     "shared"                 ;build shared libraries
+                     "--libdir=lib"
+
+                     ;; The default for this catch-all directory is
+                     ;; PREFIX/ssl.  Change that to something more
+                     ;; conventional.
+                     (string-append "--openssldir=" out
+                                    "/share/openssl-" ,version)
+
+                     (string-append "--prefix=" out)
+
+                     ;; XXX FIXME: Work around a code generation bug in GCC
+                     ;; 4.9.3 on ARM when compiled with -mfpu=neon.  See:
+                     ;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66917>
+                     ,@(if (and (not (%current-target-system))
+                                (string-prefix? "armhf" (%current-system)))
+                           '("-mfpu=vfpv3")
+                           '())))))
         (add-after
          'install 'make-libraries-writable
          (lambda* (#:key outputs #:allow-other-keys)
@@ -432,27 +421,26 @@ required structures.")
              (lambda* (#:key outputs #:allow-other-keys)
                (let* ((out (assoc-ref outputs "out"))
                       (lib (string-append out "/lib")))
-                 (zero?
-                  (system* "./config"
-                           "shared"                   ;build shared libraries
-                           "--libdir=lib"
-
-                           ;; The default for this catch-all directory is
-                           ;; PREFIX/ssl.  Change that to something more
-                           ;; conventional.
-                           (string-append "--openssldir=" out
-                                          "/share/openssl-" ,version)
-
-                           (string-append "--prefix=" out)
-                           (string-append "-Wl,-rpath," lib)
-
-                           ;; XXX FIXME: Work around a code generation bug in GCC
-                           ;; 4.9.3 on ARM when compiled with -mfpu=neon.  See:
-                           ;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66917>
-                           ,@(if (and (not (%current-target-system))
-                                      (string-prefix? "armhf" (%current-system)))
-                                 '("-mfpu=vfpv3")
-                                 '()))))))
+                 (invoke "./config"
+                         "shared"       ;build shared libraries
+                         "--libdir=lib"
+
+                         ;; The default for this catch-all directory is
+                         ;; PREFIX/ssl.  Change that to something more
+                         ;; conventional.
+                         (string-append "--openssldir=" out
+                                        "/share/openssl-" ,version)
+
+                         (string-append "--prefix=" out)
+                         (string-append "-Wl,-rpath," lib)
+
+                         ;; XXX FIXME: Work around a code generation bug in GCC
+                         ;; 4.9.3 on ARM when compiled with -mfpu=neon.  See:
+                         ;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66917>
+                         ,@(if (and (not (%current-target-system))
+                                    (string-prefix? "armhf" (%current-system)))
+                               '("-mfpu=vfpv3")
+                               '())))))
 
            ;; XXX: Duplicate this phase to make sure 'version' evaluates
            ;; in the current scope and not the inherited one.
@@ -622,14 +610,14 @@ certificates for free.")
 (define-public perl-net-ssleay
   (package
     (name "perl-net-ssleay")
-    (version "1.82")
+    (version "1.85")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/M/MI/MIKEM/"
                                   "Net-SSLeay-" version ".tar.gz"))
               (sha256
                (base32
-                "1rf78z1macgmp6mwd7c2xq4yfw6wpf28hfwfz1d5wslqr4cwb5aq"))))
+                "1j5h4ycm8538397l204d2d5fkm9595aj174pj7bkpbhwzfwqi0cx"))))
     (build-system perl-build-system)
     (inputs `(("openssl" ,openssl)))
     (arguments
@@ -805,7 +793,8 @@ then ported to the GNU / Linux environment.")
         '(begin
            (substitute* "include/mbedtls/dhm.h"
              (("#define MBEDTLS_DHM_RFC5114_MODP_P")
-              "#define MBEDTLS_DHM_RFC5114_MODP_2048_P"))))))
+              "#define MBEDTLS_DHM_RFC5114_MODP_2048_P"))
+           #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/unrtf.scm b/gnu/packages/unrtf.scm
index 3a15171a57..1d21a81a0e 100644
--- a/gnu/packages/unrtf.scm
+++ b/gnu/packages/unrtf.scm
@@ -61,7 +61,7 @@
                                          #$grep "/bin:" #$sed "/bin:"
                                          #$coreutils "/bin:"
                                          (getenv "PATH")))
-                  (zero? (system* "autoreconf" "-vfi"))))))
+                  (invoke "autoreconf" "-vfi")))))
     (build-system gnu-build-system)
     (home-page "https://www.gnu.org/software/unrtf/")
     (synopsis "Convert Rich Text Format documents to other formats")
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index a3f4a4dd4b..70197744e7 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
@@ -391,7 +391,9 @@ everything from small to very large projects with speed and efficiency.")
               (patches (search-patches "libgit2-0.25.1-mtime-0.patch"))
 
               ;; Remove bundled software.
-              (snippet '(delete-file-recursively "deps"))
+              (snippet '(begin
+                          (delete-file-recursively "deps")
+                          #t))
               (modules '((guix build utils)))))
     (build-system cmake-build-system)
     (outputs '("out" "debug"))
@@ -1539,11 +1541,6 @@ output of the 'git' command.")
                (base32
                 "1ydis4y0amkgfr4y60sn076f1l41ya2kn89kfd9fqf44f9ccgb5r"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'bootstrap
-                    (lambda _
-                      (zero? (system* "autoreconf" "-vfi")))))))
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)))
     (home-page "https://github.com/0-wiz-0/findnewest/releases")
@@ -1615,7 +1612,7 @@ repository\" with git-annex.")
 (define-public fossil
   (package
     (name "fossil")
-    (version "2.4")
+    (version "2.5")
     (source
      (origin
        (method url-fetch)
@@ -1629,7 +1626,7 @@ repository\" with git-annex.")
               "fossil-src-" version ".tar.gz")))
        (sha256
         (base32
-         "0add35lk2ac4qg29d7ygj7pskv8lfln33f3kgf6x3548msv9hd6j"))))
+         "1lxawkhr1ki9fqw8076fxib2b1w673449yzb6vxjshqzh5h77c7r"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("tcl" ,tcl)                     ;for configuration only
@@ -1721,7 +1718,8 @@ be served with a HTTP file server of your choice.")
              (("__TIME__") "\"00:00:00\""))
            (substitute* "src/impossible.h"
              (("__DATE__") "\"\"")
-             (("__TIME__") "\"\""))))))
+             (("__TIME__") "\"\""))
+           #t))))
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags '("-fpkgconfig" "-fcurl" "-flibiconv" "-fthreaded"
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 5a478c5804..fa5cdfdd78 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -206,8 +206,7 @@ old-fashioned output methods with powerful ascii-art renderer.")
                  (modify-phases %standard-phases
                    ;; XXX We need to run ./bootstrap because of the build
                    ;; system fixes above.
-                   (add-after
-                    'unpack 'bootstrap
+                   (replace 'bootstrap
                     (lambda _ (zero? (system* "sh" "bootstrap")))))))
     (home-page "http://liba52.sourceforge.net/")
     (synopsis "ATSC A/52 stream decoder")
@@ -304,15 +303,15 @@ H.264 (MPEG-4 AVC) video streams.")
         (base32
          "0hknnnnx9661igm1r73dc7aqxnnrl5a8yvyvr1nhd9ymn2klwpl5"))
        (modules '((guix build utils)))
-       (snippet
-        '(begin
-           ;; Delete bundled libraries.
-           (for-each delete-file-recursively
-                     '("lib/libebml"
-                       "lib/libmatroska"
-                       "lib/nlohmann-json"
-                       "lib/pugixml"
-                       "lib/utf8-cpp"))))))
+       (snippet '(begin
+                   ;; Delete bundled libraries.
+                   (for-each delete-file-recursively
+                             '("lib/libebml"
+                               "lib/libmatroska"
+                               "lib/nlohmann-json"
+                               "lib/pugixml"
+                               "lib/utf8-cpp"))
+                   #t))))
     (build-system gnu-build-system)
     (inputs
      `(("boost" ,boost)
@@ -388,8 +387,9 @@ and creating Matroska files from other media files (@code{mkvmerge}).")
          (base32
           "1gyd94jkwdii9308m07nymsbxrmrcl81c0j8i10zhslr2mj07w0v"))
         (modules '((guix build utils)))
-        (snippet
-         '(delete-file-recursively "source/compat/getopt"))))
+        (snippet '(begin
+                    (delete-file-recursively "source/compat/getopt")
+                    #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; tests are skipped if cpu-optimized code isn't built
@@ -1795,10 +1795,11 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
                (base32
                 "10m3ry0b2pvqx3bk34qh5dq337nn8pkc2gzfyhsj4nv9abskln47"))
               (modules '((guix build utils)))
-              (snippet
-               ;; As of glibc 2.26, <xlocale.h> no longer is.
-               '(substitute* "src/framework/mlt_property.h"
-                  (("xlocale\\.h") "locale.h")))))
+              (snippet '(begin
+                          ;; As of glibc 2.26, <xlocale.h> no longer is.
+                          (substitute* "src/framework/mlt_property.h"
+                            (("xlocale\\.h") "locale.h"))
+                          #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no tests
@@ -1935,9 +1936,9 @@ and JACK.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("dri2proto" ,dri2proto)
-       ("libx11" ,libx11 "out")
-       ("libxext" ,libxext)))
+     `(("libx11" ,libx11 "out")
+       ("libxext" ,libxext)
+       ("xorgproto" ,xorgproto)))
     (home-page "https://wiki.freedesktop.org/www/Software/VDPAU/")
     (synopsis "Video Decode and Presentation API")
     (description "VDPAU is the Video Decode and Presentation API for UNIX.  It
@@ -1984,7 +1985,8 @@ implementation.")
           "1x2ag1f2fwa4yh1g5spv99w9x1m33hbxlqwyhm205ssq0ra234bx"))
         (patches (search-patches "libvdpau-va-gl-unbundle.patch"))
         (modules '((guix build utils)))
-        (snippet '(delete-file-recursively "3rdparty"))))
+        (snippet '(begin (delete-file-recursively "3rdparty")
+                         #t))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f)) ; Tests require a running X11 server, with VA-API support.
@@ -2251,7 +2253,7 @@ supported players in addition to this package.")
      `(#:tests? #f             ;tests require Ruby and claim to be unsupported
        #:phases
        (modify-phases %standard-phases
-         (add-before 'patch-source-shebangs 'bootstrap-gtk
+         (replace 'bootstrap
            ;; Run bootstrap ahead of time so that shebangs get patched.
            (lambda _
              (setenv "CONFIG_SHELL" (which "sh"))
@@ -2496,10 +2498,11 @@ many codecs and formats supported by libmediainfo.")
                (base32
                 "0f5kxpayqn3yhabqrd2cqlc74i6x2xr01jfkank1lcilxnfyrsnq"))
               (modules '((guix build utils)))
-              (snippet
-               ;; As of glibc 2.26, <xlocale.h> no longer is.
-               '(substitute* "liveMedia/include/Locale.hh"
-                  (("xlocale\\.h") "locale.h")))))
+              (snippet '(begin
+                          ;; As of glibc 2.26, <xlocale.h> no longer is.
+                          (substitute* "liveMedia/include/Locale.hh"
+                            (("xlocale\\.h") "locale.h"))
+                          #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; no tests
@@ -2770,7 +2773,7 @@ It counts more than 100 plugins.")
        ("sqlite" ,sqlite)))
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'bootstrap
+                  (replace 'bootstrap
                     (lambda _
                       (patch-shebang "version.sh")
                       (invoke "autoreconf" "-vfi"))))
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 0fc3197077..442335cb94 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -62,7 +62,8 @@
                   (substitute* "lib/Makefile.in"
                     (("getopt1?\\.(c|h|\\$\\(OBJEXT\\))") ""))
                   (for-each delete-file
-                            '("lib/getopt.h" "lib/getopt.c"))))))
+                            '("lib/getopt.h" "lib/getopt.c"))
+                  #t))))
     (build-system gnu-build-system)
     (home-page "http://software.schmorp.de/pkg/gvpe.html")
     (inputs `(("openssl" ,openssl)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index d04e5310bf..6cfe8fb1e9 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
-;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Raoul Jean Pierre Bonnal <ilpuccio.febo@gmail.com>
@@ -414,12 +414,7 @@ APIs.")
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no tests included
-       #:make-flags (list "CC=gcc")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vif")))))))
+       #:make-flags (list "CC=gcc")))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -544,7 +539,8 @@ data.")
 
                  ;; Don't try to build with -Werror.
                  (substitute* (find-files "." "Makefile\\.in")
-                   (("-Werror") ""))))))
+                   (("-Werror") ""))
+                 #t))))
     (build-system gnu-build-system)
     (arguments '(#:parallel-build? #f
                  #:parallel-tests? #f))
@@ -580,7 +576,8 @@ It aims to conform to RFC 7159.")
 
                  ;; Don't try to build with -Werror.
                  (substitute* (find-files "." "Makefile\\.in")
-                   (("-Werror") ""))))))))
+                   (("-Werror") ""))
+                 #t))))))
 
 (define-public qjson
   (package
@@ -854,7 +851,7 @@ UTS#46.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'bootstrap
+                  (replace 'bootstrap
                     (lambda* (#:key inputs #:allow-other-keys)
                       ;; configure.in and Makefile.am aren't in the root of the
                       ;; source tree.
@@ -2735,16 +2732,18 @@ used by the HTTP protocol (and then some more).")
 (define-public perl-http-message
   (package
     (name "perl-http-message")
-    (version "6.11")
+    (version "6.15")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/E/ET/ETHER/HTTP-Message-"
+                   "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Message-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "06yq6cjx4vzl4if4ykap77xsrrd8aa7ish90k7cqi8g6g83nicz7"))))
+               "11fbvisyvi6bw8z9iq9fm9mraf69qyds09fblhl9gyvg7ccll93v"))))
     (build-system perl-build-system)
+    (native-inputs
+     `(("perl-try-tiny" ,perl-try-tiny)))
     (propagated-inputs
      `(("perl-encode-locale" ,perl-encode-locale)
        ("perl-http-date" ,perl-http-date)
@@ -4033,11 +4032,7 @@ and vice-versa.")
                 "1bgg2kbj311pqdzw2v33za7k66g1rv44kkvvnz2gnpaasi9k0ii8"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; tests require bundling googletest sources
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-          (lambda _ (zero? (system* "sh" "autogen.sh")))))))
+     `(#:tests? #f))         ;tests require bundling googletest sources
     ;; The release tarball lacks the generated files.
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -4845,10 +4840,11 @@ config files---you only have to specify the www root.")
                (base32
                 "1w84y61f3ldg2f28q6qlyr1scn3mcx0bsbq3i5xi5w193wh3xa2q"))
               (modules '((guix build utils)))
-              (snippet
-               '(substitute* "src/error.h"
-                  (("__DATE__") "\"1970-01-01\"")
-                  (("__TIME__") "\"00:00:00\"")))))
+              (snippet '(begin
+                          (substitute* "src/error.h"
+                            (("__DATE__") "\"1970-01-01\"")
+                            (("__TIME__") "\"00:00:00\""))
+                          #t))))
     (build-system gnu-build-system)
     (inputs
      ;; TODO: Add dependency on geoip-tools.
@@ -4878,9 +4874,10 @@ on the fly.")
         (base32
          "0mn5s6p68n32xzadz6ds5i6bp44dyxzkq68r1yljlv470jr84bql"))
        (modules '((guix build utils)))
-       (snippet
-        ;; Remove non-free IETF RFC documentation.
-        '(delete-file-recursively "doc"))))
+       (snippet '(begin
+                   ;; Remove non-free IETF RFC documentation.
+                   (delete-file-recursively "doc")
+                   #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -5014,9 +5011,10 @@ functions of Tidy.")
        (uri (string-append "https://www.hiawatha-webserver.org/files/"
                            "hiawatha-" version ".tar.gz"))
        (modules '((guix build utils)))
-       (snippet
-        ;; We use our packaged mbedtls, so delete the included copy.
-        '(delete-file-recursively "mbedtls"))
+       (snippet '(begin
+                   ;; We use our packaged mbedtls, so delete the included copy.
+                   (delete-file-recursively "mbedtls")
+                   #t))
        (sha256
         (base32
          "0x2zfc8kc6c7rl4gwymwmg13w1c60biv6c6c9fvzpnl59bc9jgin"))))
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 585b8a0342..9331af9a65 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;;
@@ -140,7 +140,7 @@ online pastebin services.")
    (build-system gnu-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
-      (add-after 'unpack 'bootstrap
+      (replace 'bootstrap
         (lambda _
           ;; Make sure all the files are writable so that ./bootstrap
           ;; can proceed.
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 9bd3492413..97d5d577d3 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
-;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@crash.cx>
 ;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
 ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
@@ -355,12 +355,7 @@ prompt.")
          "119xvdm4r6irqk0mar80hx6s8ydw26y35h7712rd7nbg7pb7i053"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ;No tests included.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vfi")))))))
+     `(#:tests? #f))                              ;no tests included
     (inputs
      `(("xcb-util-image" ,xcb-util-image)
        ("xcb-util" ,xcb-util)
@@ -678,16 +673,17 @@ experience.")
                "0kwpbls9h1alxcmvxh5g9qb995fds5b2ngcr44w0ibazkyls2pdc"))
              (modules '((guix build utils)
                         (srfi srfi-19)))
-             (snippet
-              ;; Remove non-reproducible timestamp and use the date of the
-              ;; source file instead.
-              '(substitute* "common/version.c"
-                 (("__DATE__ \" \" __TIME__")
-                  (date->string
-                   (time-utc->date
-                    (make-time time-utc 0
-                               (stat:mtime (stat "awesome.c"))))
-                   "\"~c\""))))
+             (snippet '(begin
+                         ;; Remove non-reproducible timestamp and use the date
+                         ;; of the source file instead.
+                         (substitute* "common/version.c"
+                           (("__DATE__ \" \" __TIME__")
+                            (date->string
+                             (time-utc->date
+                              (make-time time-utc 0
+                                         (stat:mtime (stat "awesome.c"))))
+                             "\"~c\"")))
+                         #t))
              (patches (search-patches "awesome-reproducible-png.patch"))))
     (build-system cmake-build-system)
     (native-inputs `(("asciidoc" ,asciidoc)
diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index ad264a24e8..f1a61329e8 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -184,7 +184,8 @@ and many other languages.")
               ;; setup.py tries to keep its own license the same as wxwidget's
               ;; license (which it expects under $WXWIN/docs).
               (("'preamble.txt', 'licence.txt', 'licendoc.txt', 'lgpl.txt'")
-                ""))))))
+               ""))
+            #t))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 93cc57a176..d8899e8c41 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2013, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2015 Alexander I.Grafov <grafov@gmail.com>
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
@@ -90,11 +90,13 @@
                 "1i3f1agixxbfy4kxikb2b241p7c2lg73cl9wqfvlwz3q6zf5faxv"))
               (modules '((guix build utils)))
               (snippet
-               ;; Do not record a timestamp and file name in gzipped man
-               ;; pages (this is equivalent to 'gzip --no-name'.)
-               '(substitute* "setup.py"
-                  (("gzip\\.open\\(gzfile, 'w', 9\\)")
-                   "gzip.GzipFile('', 'wb', 9, open(gzfile, 'wb'), 0.)")))))
+               '(begin
+                  ;; Do not record a timestamp and file name in gzipped man
+                  ;; pages (this is equivalent to 'gzip --no-name'.)
+                  (substitute* "setup.py"
+                    (("gzip\\.open\\(gzfile, 'w', 9\\)")
+                     "gzip.GzipFile('', 'wb', 9, open(gzfile, 'wb'), 0.)"))
+                  #t))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2     ;incompatible with python 3
@@ -136,12 +138,7 @@ program.")
            "0n7pczk9vv30zf8qfln8ba3hnif9yfdxg0m84djac469wc28hnya"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f     ; There is no test suite
-       #:phases
-       (modify-phases %standard-phases
-         ;; Since version 0.13, bootstrapped releases are no longer available.
-         (add-after 'unpack 'bootstrap
-           (lambda _ (zero? (system* "autoreconf" "-v")))))))
+     '(#:tests? #f))                              ;there is no test suite
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)))
@@ -627,9 +624,7 @@ things less distracting.")
        ("libxi" ,libxi)
        ("libxtst" ,libxtst)))
     (native-inputs
-     `(("inputproto" ,inputproto)
-       ("xextproto" ,xextproto)
-       ("xproto" ,xproto)))
+     `(("xorgproto" ,xorgproto)))
     (synopsis "Tools to automate tasks in X such as detecting on screen images")
     (description
      "Xautomation can control X from the command line for scripts, and
@@ -1279,7 +1274,9 @@ program for X11.  It was designed to be fast, tiny and scriptable in any languag
               (modules '((guix build utils)))
               (snippet
                ;; Drop bundled m4.
-               '(delete-file-recursively "m4"))))
+               '(begin
+                  (delete-file-recursively "m4")
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index 2e922d2a95..d0349274f4 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -80,17 +80,14 @@ periodic timestamps for seeking.")
 (define libvorbis
   (package
    (name "libvorbis")
-   (version "1.3.5")
-   (replacement libvorbis-1.3.6)
+   (version "1.3.6")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://downloads.xiph.org/releases/vorbis/"
                                 "libvorbis-" version ".tar.xz"))
-            (patches (search-patches "libvorbis-CVE-2017-14633.patch"
-                                     "libvorbis-CVE-2017-14632.patch"))
             (sha256
              (base32
-              "1lg1n3a6r41492r7in0fpvzc7909mc5ir9z0gd3qh2pz4yalmyal"))))
+              "05dlzjkdpv46zb837wysxqyn8l636x3dw8v8ymlrwz2fg1dbn05g"))))
    (build-system gnu-build-system)
    (propagated-inputs `(("libogg" ,libogg)))
    (arguments `(#:configure-flags '("LDFLAGS=-lm")
@@ -106,18 +103,6 @@ polyphonic) audio and music at fixed and variable bitrates from 16 to
                                "See COPYING in the distribution."))
    (home-page "https://xiph.org/vorbis/")))
 
-;; For CVE-2018-5146.
-(define-public libvorbis-1.3.6
-  (package/inherit libvorbis
-    (version "1.3.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://downloads.xiph.org/releases/vorbis/"
-                                  "libvorbis-" version ".tar.xz"))
-              (sha256
-               (base32
-                "05dlzjkdpv46zb837wysxqyn8l636x3dw8v8ymlrwz2fg1dbn05g"))))))
-
 (define libtheora
   (package
     (name "libtheora")
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index ab7b9bf986..54e969d6d1 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -105,14 +105,14 @@ hierarchical form with variable field lengths.")
 (define-public libxml2
   (package
     (name "libxml2")
-    (version "2.9.7")
+    (version "2.9.8")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "034hylzspvkm0p4bczqbf8q05a7r2disr8dz725x4bin61ymwg7n"))))
+               "0ci7is75bwqqw2p32vxvrk6ds51ik7qgx73m920rakv5jlayax0b"))))
     (build-system gnu-build-system)
     (home-page "http://www.xmlsoft.org/")
     (synopsis "C parser for XML")
@@ -1233,7 +1233,7 @@ files.  It is designed to be fast and to handle large input files.")
      `(#:phases
        (modify-phases %standard-phases
          ;; Bootstrapping is required in order to fix the test driver script.
-         (add-after 'unpack 'bootstrap
+         (replace 'bootstrap
            (lambda _
              (zero? (system* "bash" "bootstrap")))))))
     (native-inputs
diff --git a/gnu/packages/xnee.scm b/gnu/packages/xnee.scm
index fc5130c0ec..5cd20cbef1 100644
--- a/gnu/packages/xnee.scm
+++ b/gnu/packages/xnee.scm
@@ -40,14 +40,11 @@
     (build-system gnu-build-system)
     (inputs
      `(("gtk+" ,gtk+-2)
-       ("inputproto" ,inputproto)
        ("libx11" ,libx11)
        ("libxext" ,libxext)
        ("libxi" ,libxi)
        ("libxtst" ,libxtst)
-       ("recordproto" ,recordproto)
-       ("xextproto" ,xextproto)
-       ("xproto" ,xproto)))
+       ("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.gnu.org/software/xnee/")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 1e4835b5c0..0dbc36282e 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2015 Cyrill Schenkel <cyrill.schenkel@gmail.com>
@@ -119,7 +119,7 @@
       `(("pkg-config" ,pkg-config)))
     (inputs
       `(("xorg-cf-files" ,xorg-cf-files)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -169,7 +169,7 @@ autotools system.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("xproto" ,xproto)))
+     `(("xorgproto" ,xorgproto)))
     (home-page "https://www.x.org/")
     (synopsis "Symlink directory into tree")
     (description "Create a shadow directory of symbolic links to another
@@ -203,6 +203,27 @@ converts X font from Bitmap Distribution Format to Portable Compiled Format
 which can be read by any architecture.")
     (license license:x11)))
 
+(define-public xorgproto
+  (package
+    (name "xorgproto")
+    (version "2018.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://xorg/individual/proto/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "180mqkp70i44rkmj430pmn9idssvffrgv4y5h19fm698a7h8bs7y"))))
+    (build-system gnu-build-system)
+    (propagated-inputs
+     ;; To get util-macros in (almost?) all package inputs.
+     `(("util-macros" ,util-macros)))
+    (home-page "https://cgit.freedesktop.org/xorg/proto/xorgproto")
+    (synopsis "Xorg protocol headers")
+    (description
+     "This package provides the headers and specification documents defining
+the core protocol and (many) extensions for the X Window System.")
+    (license license:x11)))
 
 (define-public bigreqsproto
   (package
@@ -225,8 +246,8 @@ which can be read by any architecture.")
     (description
      "Big Requests Extension defines a protocol to enable the use of
 requests that exceed 262140 bytes in length.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public compositeproto
   (package
@@ -244,7 +265,7 @@ requests that exceed 262140 bytes in length.")
             "1z0crmf669hirw4s7972mmp8xig80kfndja9h559haqbpvq5k4q4"))))
     (build-system gnu-build-system)
     (inputs
-      `(("fixesproto" ,fixesproto)))
+      `(("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -252,8 +273,8 @@ requests that exceed 262140 bytes in length.")
     (description
      "Composite Extension contains header files and documentation for
 the damage protocol.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public damageproto
   (package
@@ -276,8 +297,8 @@ the damage protocol.")
     (description
      "Damage Extension contains header files and documentation for
 the damage protocol.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public dmxproto
   (package
@@ -301,8 +322,8 @@ the damage protocol.")
      "DMX (Distributed Multihead X) Extension defines a protocol for clients
 to access a front-end proxy X server that controls multiple back-end X
 servers making up a large display.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public dri2proto
   (package
@@ -325,7 +346,8 @@ servers making up a large display.")
      "Direct Rendering Infrastructure 2 Extension defines a protocol to
 securely allow user applications to access the video hardware without
 requiring data to be passed through the X server.")
-    (license license:x11)))
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public dri3proto
   (package
@@ -350,7 +372,8 @@ translate between direct rendered buffers and X pixmaps.  When combined with
 the Present extension, a complete direct rendering solution for OpenGL is
 provided.")
     (license (license:x11-style "file://dri3proto.h"
-                                "See 'dri3proto.h' in the distribution."))))
+                                "See 'dri3proto.h' in the distribution."))
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public %app-defaults-dir "/lib/X11/app-defaults")
 
@@ -425,10 +448,12 @@ Resources file.")
     (modules '((guix build utils)))
     (snippet
      ;; Do not include timestamps in '.pcf.gz' files.
-     '(substitute* "Makefile.in"
-        (("^COMPRESS = (.*)$" _ rest)
-         (string-append "COMPRESS = " (string-trim-right rest)
-                        " --no-name\n"))))))
+     '(begin
+        (substitute* "Makefile.in"
+          (("^COMPRESS = (.*)$" _ rest)
+           (string-append "COMPRESS = " (string-trim-right rest)
+                          " --no-name\n")))
+        #t))))
 
 (define-syntax-rule (xorg-font-origin font version hash)
   "Expand to the 'origin' form for the given Xorg font package."
@@ -888,8 +913,8 @@ For example: '6x10', '9x15bold', etc.")
     (description
      "Fonts Extension contains header files and documentation for
 the fonts protocol.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public glproto
   (package
@@ -912,8 +937,8 @@ the fonts protocol.")
     (description
      "OpenGL Extension defines a protocol for the client to send 3D
 rendering commands to the X server.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public iceauth
   (package
@@ -965,8 +990,8 @@ authentication records.")
     (description
      "Input Extension defines a protocol to provide additional input
 devices management such as graphic tablets.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public kbproto
   (package
@@ -989,8 +1014,8 @@ devices management such as graphic tablets.")
     (description
      "X Keyboard (XKB) Extension defines a protocol to provide a number
 of new capabilities and controls for text keyboards.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 ;; requires applewmproto, which compiles only on macos
 ;; (define-public libapplewm
@@ -1012,10 +1037,9 @@ of new capabilities and controls for text keyboards.")
             "00djlxas38kbsrglcmwmxfbmxjdchlbj95pqwjvdg8jn5rns6zf9"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xextproto" ,xextproto)
+      `(("xorgproto" ,xorgproto)
         ("libxext" ,libxext)
-        ("libx11" ,libx11)
-        ("dmxproto" ,dmxproto)))
+        ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1039,7 +1063,7 @@ of new capabilities and controls for text keyboards.")
                 "032b0nlkdrpbimdld4gqvhqx53rzn8fawvf1ybhzn7lcswgjs6yj"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("xproto" ,xproto)))
+    (inputs `(("xorgproto" ,xorgproto)))
     (home-page "https://www.x.org/")
     (synopsis "Xorg shared memory fences library")
     (description
@@ -1067,7 +1091,7 @@ synchronization between the X server and direct-rendering clients.")
     (build-system gnu-build-system)
     (inputs
       `(("zlib" ,zlib)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1093,8 +1117,7 @@ synchronization between the X server and direct-rendering clients.")
     (build-system gnu-build-system)
     (inputs
       `(("xtrans" ,xtrans)
-        ("xproto" ,xproto)
-        ("fontsproto" ,fontsproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1223,10 +1246,9 @@ hit when running single-threaded.")
             "1p0flwb67xawyv6yhri9w17m1i4lji5qnd0gq8v1vsfb8zw7rw15"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xextproto" ,xextproto)
+      `(("xorgproto" ,xorgproto)
         ("libxext" ,libxext)
-        ("libx11" ,libx11)
-        ("windowswmproto" ,windowswmproto)))
+        ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1256,10 +1278,9 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
     (build-system gnu-build-system)
     (propagated-inputs
      ;; xcomposite.pc refers to all these.
-      `(("xproto" ,xproto)
+      `(("xorgproto" ,xorgproto)
         ("libxfixes" ,libxfixes)
-        ("libx11" ,libx11)
-        ("compositeproto" ,compositeproto)))
+        ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1286,7 +1307,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
     (build-system gnu-build-system)
     (inputs
       `(("libbsd" ,libbsd)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
        `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1317,7 +1338,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
         ("fontconfig" ,fontconfig)))
     (inputs
       `(("libx11" ,libx11)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1371,7 +1392,7 @@ configuration files.")
     (build-system gnu-build-system)
     (inputs
       `(("libxt" ,libxt)
-        ("xproto" ,xproto)
+        ("xorgproto" ,xorgproto)
         ("libxext" ,libxext)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
@@ -1404,7 +1425,7 @@ treat it as part of their software base when porting.")
     (inputs
       `(("gettext" ,gettext-minimal)
         ("libxt" ,libxt)
-        ("xproto" ,xproto)
+        ("xorgproto" ,xorgproto)
         ("libxext" ,libxext)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
@@ -1430,10 +1451,9 @@ treat it as part of their software base when porting.")
             "1m0jr0lbz9ixpp9ihk68349q0i7ry2379lnfzdy4mrl86ijc2xgz"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xproto" ,xproto)
+      `(("xorgproto" ,xorgproto)
         ("libxext" ,libxext)
-        ("libx11" ,libx11)
-        ("resourceproto" ,resourceproto)))
+        ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1461,7 +1481,7 @@ treat it as part of their software base when porting.")
       `(("libxext" ,libxext)
         ("libx11" ,libx11)))
     (propagated-inputs
-      `(("scrnsaverproto" ,scrnsaverproto)))
+      `(("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1486,7 +1506,7 @@ treat it as part of their software base when porting.")
             "0zn7aqj8x0951d8zb2h2andldvwkzbsc4cs7q023g6nzq6vd9v4f"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("xf86dgaproto" ,xf86dgaproto)))
+      `(("xorgproto" ,xorgproto)))
     (inputs
       `(("libx11" ,libx11)
         ("libxext" ,libxext)))
@@ -1546,7 +1566,7 @@ input from UTF-8 into the locale's encoding.")
             "09alw99r6y2bbd1dc786n3jfgv4j520apblyn7cw6jkjydshba7p"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xproto" ,xproto)))
+      `(("xorgproto" ,xorgproto)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
     (synopsis "Xorg makedepend utility")
@@ -1572,7 +1592,7 @@ input from UTF-8 into the locale's encoding.")
     (build-system gnu-build-system)
     (inputs
       `(("zlib" ,zlib)
-        ("xproto" ,xproto)
+        ("xorgproto" ,xorgproto)
         ("freetype" ,freetype)
         ("libfontenc" ,libfontenc)))
     (native-inputs
@@ -1608,7 +1628,8 @@ window contents from a pixmap in a well defined fashion, synchronizing
 with the display refresh and potentially using a more efficient
 mechanism than copying the contents of the source pixmap.")
     (license (license:x11-style "file://presentproto.h"
-                                "See 'presentproto.h' in the distribution."))))
+                                "See 'presentproto.h' in the distribution."))
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public printproto
   (package
@@ -1656,7 +1677,8 @@ network-transparent printing system.")
      "Resize and Rotate Extension defines a protocol for clients to
 dynamically change X screens, so as to resize, rotate and reflect the root
 window of a screen.")
-    (license license:x11)))
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 
 (define-public recordproto
@@ -1680,8 +1702,8 @@ window of a screen.")
     (description
      "Record Extension defines a protocol for the recording and playback
 of user actions in the X Window System.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public renderproto
   (package
@@ -1704,8 +1726,8 @@ of user actions in the X Window System.")
     (description
      "Rendering Extension defines a protcol for a digital image composition
 as the foundation of a new rendering model within the X Window System.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public resourceproto
   (package
@@ -1728,8 +1750,8 @@ as the foundation of a new rendering model within the X Window System.")
     (description
      "Resource Extension defines a protocol that allows a client to
 query the X server about its usage of various resources.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public scrnsaverproto
   (package
@@ -1752,8 +1774,8 @@ query the X server about its usage of various resources.")
     (description
      "Screen Saver Extension defines a protocol to control screensaver
 features and to query screensaver info on specific windows.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public sessreg
   (package
@@ -1771,7 +1793,7 @@ features and to query screensaver info on specific windows.")
             "1qd66mg2bnppqz4xgdjzif2488zl82vx2c26ld3nb8pnyginm9vq"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xproto" ,xproto)))
+      `(("xorgproto" ,xorgproto)))
     (native-inputs
        `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -1849,7 +1871,7 @@ management to participate in an X11R6 session.")
 (define-public util-macros
   (package
     (name "util-macros")
-    (version "1.19.1")
+    (version "1.19.2")
     (source
       (origin
         (method url-fetch)
@@ -1859,25 +1881,26 @@ management to participate in an X11R6 session.")
                ".tar.bz2"))
         (sha256
           (base32
-            "19h6wflpmh7xxqr6lk5z8pds6r9r0dn7ijbvaacymx2q0m05km0q"))))
+            "04p7ydqxgq37jklnfj18b70zsifiz4h50wvrk94i2112mmv37r6p"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (arguments
-     `(#:phases (alist-cons-after
-                 'unpack 'fix-makefile-in
-                 (lambda _
-                   (substitute* "Makefile.in"
-                     ;; Install xorg-macros.pc in PREFIX/lib/pkgconfig,
-                     ;; not PREFIX/share/pkgconfig.
-                     (("\\$\\(datadir\\)/pkgconfig") "$(libdir)/pkgconfig")))
-                 (alist-cons-after
-                  'install 'post-install-cleanup
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out")))
-                      (with-directory-excursion out
-                        (delete-file "share/util-macros/INSTALL")
-                        (rmdir "share/util-macros"))))
-                  %standard-phases))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-makefile-in
+           (lambda _
+             (substitute* "Makefile.in"
+               ;; Install xorg-macros.pc in PREFIX/lib/pkgconfig,
+               ;; not PREFIX/share/pkgconfig.
+               (("\\$\\(datadir\\)/pkgconfig") "$(libdir)/pkgconfig"))
+             #t))
+         (add-after 'install 'post-install-cleanup
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (with-directory-excursion out
+                 (delete-file "share/util-macros/INSTALL")
+                 (rmdir "share/util-macros"))
+               #t))))))
     (home-page "https://www.x.org/wiki/")
     (synopsis "Xorg autoconf macros")
     (description
@@ -1908,8 +1931,8 @@ generate new versions of their configure scripts with autoconf.")
     (description
      "Video Extension provides a protocol for a video output mechanism,
 mainly to rescale video playback in the video controller hardware.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public windowswmproto
   (package
@@ -1934,8 +1957,8 @@ mainly to rescale video playback in the video controller hardware.")
 an X11 server and the Microsoft Windows native window manager.  WindowsWM
 is only intended to be used on Cygwin when running a rootless XWin
 server.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public x11perf
   (package
@@ -2089,7 +2112,7 @@ emulate a TI-30 or an HP-10C.")
 (define-public xcb-proto
   (package
     (name "xcb-proto")
-    (version "1.12")
+    (version "1.13")
     (source
       (origin
         (method url-fetch)
@@ -2099,10 +2122,7 @@ emulate a TI-30 or an HP-10C.")
                ".tar.bz2"))
         (sha256
           (base32
-           "01j91946q8f34l1mbvmmgvyc393sm28ym4lxlacpiav4qsjan8jr"))
-        (patches
-         (search-patches "xcb-proto-python3-whitespace.patch"
-                         "xcb-proto-python3-print.patch"))))
+           "1qdxw9syhbvswiqj5dvj278lrmfhs81apzmvx6205s4vcqg7563v"))))
     (build-system gnu-build-system)
     (native-inputs
       `(("pkg-config" ,pkg-config) ("python" ,python-minimal-wrapper)))
@@ -2142,8 +2162,8 @@ generators in individual language bindings.")
     (description
      "XC-MISC Extension defines a protocol that provides Xlib two ways
 to query the server for available resource IDs.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public xcmsdb
   (package
@@ -2250,7 +2270,7 @@ X server: 'handhelds', 'redglass' and 'whiteglass'.")
             "0ldgrj4w2fa8jng4b3f3biaj0wyn8zvya88pnk70d7k12pcqw8rh"))))
     (build-system gnu-build-system)
     (inputs
-      `(("inputproto" ,inputproto)
+      `(("xorgproto" ,xorgproto)
         ("libx11" ,libx11)
         ("libxxf86vm" ,libxxf86vm)
         ("libxxf86dga" ,libxxf86dga)
@@ -2319,7 +2339,7 @@ DRI (Direct Rendering Infrastructure) drivers.")
     (inputs
       `(("libxrender" ,libxrender)
         ("libxrandr" ,libxrandr)
-        ("xproto" ,xproto)
+        ("xorgproto" ,xorgproto)
         ("libx11" ,libx11)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -2359,8 +2379,8 @@ usage.")
 Extended-Visual-Information, Generic Event Extension, LBX, MIT-SHM,
 MIT-SUNDRY-NONSTANDARD, Multi-Buffering, SECURITY, SHAPE, SYNC, TOG-CUP,
 XC-APPGROUP, XTEST.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public libevdev
   (package
@@ -2666,7 +2686,7 @@ as USB mice.")
             "0yafix56vkqglw243cwb94nv91vbjv12sqh29x1bap0hwd1dclgf"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
-              ("xxf86driproto" ,xf86driproto)
+              ("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (arguments `(#:configure-flags `("--disable-glamor"))) ; TODO: Enable glamor
@@ -2767,11 +2787,7 @@ framebuffer device.")
        `(#:configure-flags
          (list (string-append "--with-xorg-conf-dir="
                               (assoc-ref %outputs "out")
-                              "/share/X11/xorg.conf.d"))
-         #:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'bootstrap
-                      (lambda _
-                        (zero? (system* "autoreconf" "-vfi")))))))
+                              "/share/X11/xorg.conf.d"))))
       (home-page "https://www.x.org/wiki/")
       (synopsis "Adreno video driver for X server")
       (description
@@ -2854,7 +2870,7 @@ compositing.  Both support Xv overlay and dynamic rotation with XRandR.")
           (base32
            "1lkpspvrvrp9s539bhfdjfh4andaqyk63l6zjn8m3km95smk6a45"))))
     (build-system gnu-build-system)
-    (inputs `(("xf86dgaproto" ,xf86dgaproto)
+    (inputs `(("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -2926,11 +2942,7 @@ X server.")
                                     (string-prefix? "x86_64-" system)))
                %supported-systems))
       (arguments
-       '(#:configure-flags '("--with-default-accel=uxa")
-         #:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'bootstrap
-                      (lambda _
-                        (zero? (system* "autoreconf" "-vfi")))))))
+       '(#:configure-flags '("--with-default-accel=uxa")))
       (home-page "https://www.x.org/wiki/")
       (synopsis "Intel video driver for X server")
       (description
@@ -2956,7 +2968,7 @@ It supports a variety of Intel graphics chipsets.")
         (patches (search-patches "xf86-video-mach64-glibc-2.20.patch"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
-              ("xf86driproto" ,xf86driproto)
+              ("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
@@ -2987,7 +2999,7 @@ the same level of support for generic VGA or 8514/A adapters.")
            "08ll52hlar9z446v0wwca5qkj3hxhswwm7vvcgic9xv4cf7csqxn"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
-              ("xf86driproto" ,xf86driproto)
+              ("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3011,7 +3023,7 @@ the same level of support for generic VGA or 8514/A adapters.")
           (base32
             "1whb2kgyqaxdjim27ya404acz50izgmafwnb6y9m89q5n6b97y3j"))))
     (build-system gnu-build-system)
-    (inputs `(("xf86dgaproto" ,xf86dgaproto)
+    (inputs `(("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3118,7 +3130,7 @@ graphics cards.")
               ("libxext" ,libxext)
               ("libxvmc" ,libxvmc)
               ("mesa" ,mesa)
-              ("xf86driproto" ,xf86driproto)
+              ("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -3145,12 +3157,10 @@ UniChrome Pro and Chrome9 integrated graphics processors.")
                 "14jc24znnahhmz4kqalafmllsg8awlz0y6gpgdpk5ih38ph851mi"))))
     (build-system gnu-build-system)
     (inputs
-      `(("fontsproto" ,fontsproto)
-        ("libxfont" ,libxfont2)
+      `(("libxfont" ,libxfont2)
         ("spice-protocol" ,spice-protocol)
-        ("xf86dgaproto" ,xf86dgaproto)
         ("xorg-server" ,xorg-server)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (synopsis "Qxl video driver for X server")
@@ -3176,7 +3186,7 @@ This driver is intended for the spice qxl virtio device.")
            "1pkpka5m4cd6iy0f8iqnmg6xci14nb6887ilvxzn3xrsgx8j3nl4"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
-              ("xf86driproto" ,xf86driproto)
+              ("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3203,7 +3213,7 @@ This driver is intended for ATI Rage 128 based cards.")
            "11pcrsdpdrwk0mrgv83s5nsx8a9i4lhmivnal3fjbrvi3zdw94rc"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
-              ("xf86driproto" ,xf86driproto)
+              ("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3255,8 +3265,7 @@ Xorg X server.")
            "03f1abjjf68y8y1iz768rn95va9d33wmbwfbsqrgl6k0gi0bf9jj"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
-              ("xf86dgaproto" ,xf86dgaproto)
-              ("xf86driproto" ,xf86driproto)
+              ("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
@@ -3332,7 +3341,7 @@ This driver supports SiS chipsets of 300/315/330/340 series.")
            "0hia45z4jc472fxp00803nznizcn4h1ybp63jcsb4lmd9vhqxx2c"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
-              ("xf86driproto" ,xf86driproto)
+              ("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3358,7 +3367,7 @@ This driver supports SiS chipsets of 300/315/330/340 series.")
            "0cb161lvdgi6qnf1sfz722qn38q7kgakcvj7b45ba3i0020828r0"))
         (patches (search-patches "xf86-video-tga-remove-mibstore.patch"))))
     (build-system gnu-build-system)
-    (inputs `(("xf86dgaproto" ,xf86dgaproto)
+    (inputs `(("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3384,7 +3393,7 @@ X server.")
           (base32
            "0gxcar434kx813fxdpb93126lhmkl3ikabaljhcj5qn3fkcijlcy"))))
     (build-system gnu-build-system)
-    (inputs `(("xf86dgaproto" ,xf86dgaproto)
+    (inputs `(("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3478,7 +3487,7 @@ xf86-video-voodoo/patch/?id=9172ae566a0e85313fc80ab62b4455393eefe593")
                    "0rndmxf5b8j3hjnhrwrnzsq5024fli134fj1mprhkcrvax2zq8db"))
                  (file-name "xf86-video-voodoo-pcitag.patch"))))))
     (build-system gnu-build-system)
-    (inputs `(("xf86dgaproto" ,xf86dgaproto)
+    (inputs `(("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3512,8 +3521,8 @@ xf86-video-voodoo/patch/?id=9172ae566a0e85313fc80ab62b4455393eefe593")
     (description
      "XFree86 Bigfont Extension contains header files and documentation
 for the XF86BigFontProto protocol.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public xf86dgaproto
   (package
@@ -3535,8 +3544,8 @@ for the XF86BigFontProto protocol.")
     (description
      "XFree86 Direct Graphic Access Extension defines a protocol for
 direct linear framebuffer access.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public xf86driproto
   (package
@@ -3559,8 +3568,8 @@ direct linear framebuffer access.")
      "XFree86 Direct Rendering Infrastructure Extension defines a
 protocol to allow user applications to access the video hardware without
 requiring data to be passed through the X server.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public xf86vidmodeproto
   (package
@@ -3582,8 +3591,8 @@ requiring data to be passed through the X server.")
     (description
      "XFree86 Video Mode Extension defines a protocol for dynamically
 configuring modelines and gamma.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public xgamma
   (package
@@ -3669,8 +3678,8 @@ This extension provides a common network protocol for querying information
 which may be provided by different underlying screen combination
 technologies in the X server, such as the original Xinerama multiplexer, or
 alternative implementations like XRandR or TwinView.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public xinput
   (package
@@ -3694,7 +3703,7 @@ alternative implementations like XRandR or TwinView.")
         ("libxext" ,libxext)
         ("libxi" ,libxi)
         ("libx11" ,libx11)
-        ("inputproto" ,inputproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
        `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3720,7 +3729,7 @@ alternative implementations like XRandR or TwinView.")
           "0syfc6zscvai824mzihlnrqxhkcr27dzkpy8zndavi83iischsdw"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xproto" ,xproto)
+      `(("xorgproto" ,xorgproto)
         ("libxkbfile" ,libxkbfile)
         ("libx11" ,libx11)))
     (native-inputs
@@ -3799,9 +3808,8 @@ requested commands if they occur.")
     (build-system gnu-build-system)
     (inputs
       `(("libxt" ,libxt)
-        ("xproto" ,xproto)
         ("libxaw" ,libxaw)
-        ("inputproto" ,inputproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -3948,7 +3956,7 @@ running on X server.")
          "0s6kxgv78chkwsqmhw929f4pf91gq63f4yvixxnan1h00cx0pf49"))))
     (build-system gnu-build-system)
     (inputs
-     `(("xproto" ,xproto)
+     `(("xorgproto" ,xorgproto)
        ("libx11" ,libx11)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -4044,7 +4052,7 @@ containing one glyph per cell.")
         (patches (search-patches "xmodmap-asprintf.patch"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xproto" ,xproto)
+      `(("xorgproto" ,xorgproto)
         ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
@@ -4107,7 +4115,7 @@ refers to the included common xorg.css stylesheet.")
             "07qy9lwjvxighcmg6qvjkgagad3wwvidrfx0jz85lgynz3qy0dmr"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xproto" ,xproto)
+      `(("xorgproto" ,xorgproto)
         ("libxmu" ,libxmu)
         ("libx11" ,libx11)))
     (native-inputs
@@ -4136,7 +4144,7 @@ it for output on various types of printers.")
             "06sjgahjiz85v0k0pmv5x05chc591xynl5ah1bqzz1bdr0lgnanj"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xproto" ,xproto)
+      `(("xorgproto" ,xorgproto)
         ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
@@ -4165,7 +4173,7 @@ an X server.")
     (inputs
       `(("libxrender" ,libxrender)
         ("libxrandr" ,libxrandr)
-        ("xproto" ,xproto)
+        ("xorgproto" ,xorgproto)
         ("libx11" ,libx11)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -4252,7 +4260,7 @@ up your screen.")
             "0my987wjvra7l92ry6q44ky383yg3phzxhdbn3lqhapm1ll9bzg4"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xproto" ,xproto)
+      `(("xorgproto" ,xorgproto)
         ("libxmu" ,libxmu)
         ("libxext" ,libxext)
         ("libx11" ,libx11)))
@@ -4368,7 +4376,7 @@ extension.")
     (inputs
       `(("libxt" ,libxt)
         ("libxkbfile" ,libxkbfile)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
        `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4400,7 +4408,7 @@ dump and twice whenthe dump is completed.")
     (build-system gnu-build-system)
     (inputs
       `(("libx11" ,libx11)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
        `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4427,7 +4435,7 @@ Various information is displayed depending on which options are selected.")
             "1a8hdgy40smvblnh3s9f0vkqckl68nmivx7d48zk34m8z18p16cr"))))
     (build-system gnu-build-system)
     (inputs
-      `(("xproto" ,xproto)
+      `(("xorgproto" ,xorgproto)
         ("libx11" ,libx11)))
     (native-inputs
        `(("pkg-config" ,pkg-config)))
@@ -4454,7 +4462,7 @@ formatted dump file, such as produced by xwd.")
             "1c76zcjs39ljil6f6jpx1x17c8fnvwazz7zvl3vbjfcrlmm7rjmv"))))
     (build-system gnu-build-system)
     (inputs
-     `(("xproto" ,xproto)))
+     `(("xorgproto" ,xorgproto)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4481,7 +4489,7 @@ formatted dump file, such as produced by xwd.")
             "1ki4wiq2iivx5g4w5ckzbjbap759kfqd72yg18m3zpbb4hqkybxs"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("xextproto" ,xextproto)))
+      `(("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4490,8 +4498,8 @@ formatted dump file, such as produced by xwd.")
      "Fixes Extension makes changes to many areas of the protocol to resolve
 issues raised by application interaction with core protocol mechanisms that
 cannot be adequately worked around on the client side of the wire.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 (define-public libxdamage
   (package
@@ -4510,9 +4518,8 @@ cannot be adequately worked around on the client side of the wire.")
     (build-system gnu-build-system)
     (propagated-inputs
       ;; These are all in the Requires or Requires.private field of xdamage.pc
-      `(("damageproto" ,damageproto)
-        ("libxfixes" ,libxfixes)
-        ("xproto" ,xproto)
+      `(("libxfixes" ,libxfixes)
+        ("xorgproto" ,xorgproto)
         ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
@@ -4538,7 +4545,7 @@ cannot be adequately worked around on the client side of the wire.")
             "0dbfn5bznnrhqzvkrcmw4c44yvvpwdcsrvzxf4rk27r36b9x865m"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("xextproto" ,xextproto)))
+      `(("xorgproto" ,xorgproto)))
     (inputs
       `(("libxau" ,libxau)
         ("libx11" ,libx11)))
@@ -4567,7 +4574,7 @@ cannot be adequately worked around on the client side of the wire.")
             "1qlqfvzw45gdzk9xirgwlp2qgj0hbsyiqj8yh8zml2bk2ygnjibs"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("xineramaproto" ,xineramaproto)))
+      `(("xorgproto" ,xorgproto)))
     (inputs
       `(("libxext" ,libxext)
         ("libx11" ,libx11)))
@@ -4623,10 +4630,9 @@ cannot be adequately worked around on the client side of the wire.")
             "0j89cnb06g8x79wmmnwzykgkkfdhin9j7hjpvsxwlr3fz1wmjvf0"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("renderproto" ,renderproto)))
+      `(("xorgproto" ,xorgproto)))
     (inputs
-      `(("xproto" ,xproto)
-        ("libx11" ,libx11)))
+      `(("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4650,11 +4656,10 @@ cannot be adequately worked around on the client side of the wire.")
             "012jpyj7xfm653a9jcfqbzxyywdmwb2b5wr1dwylx14f3f54jma6"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("recordproto" ,recordproto)
-        ("libxi" ,libxi)))
+     `(("libxi" ,libxi)
+       ("xorgproto" ,xorgproto)))
     (inputs
-      `(("libx11" ,libx11)
-        ("inputproto" ,inputproto)))
+      `(("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4688,10 +4693,9 @@ protocol and arbitrary X extension protocol.")
             "125hn06bd3d8y97hm2pbf5j55gg4r2hpd3ifad651i4sr7m16v6j"))))
     (build-system gnu-build-system)
     (propagated-inputs
-     `(("videoproto" ,videoproto)))
+     `(("xorgproto" ,xorgproto)))
     (inputs
-      `(("xproto" ,xproto)
-        ("libxext" ,libxext)
+      `(("libxext" ,libxext)
         ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
@@ -4737,7 +4741,6 @@ server core font system.  The current implementation is a simple wrapper
 script around the mkfontscale program.")
     (license license:x11)))
 
-
 (define-public xproto
   (package
     (name "xproto")
@@ -4766,30 +4769,8 @@ the X Window System Core Protocol, Version 11.
 It also includes a number of headers that aren't purely protocol related,
 but are depended upon by many other X Window System packages to provide
 common definitions and porting layer.")
-    (license license:x11)))
-
-(define-public xorgproto
-  (package
-    (name "xorgproto")
-    (version "2018.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://xorg/individual/proto/"
-                                  name "-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "180mqkp70i44rkmj430pmn9idssvffrgv4y5h19fm698a7h8bs7y"))))
-    (build-system gnu-build-system)
-    (propagated-inputs
-     ;; To get util-macros in (almost?) all package inputs.
-     `(("util-macros" ,util-macros)))
-    (home-page "https://cgit.freedesktop.org/xorg/proto/xorgproto")
-    (synopsis "Xorg protocol headers")
-    (description
-     "This package provides the headers and specification documents defining
-the core protocol and (many) extensions for the X Window System.")
-    (license license:x11)))
-
+    (license license:x11)
+    (properties `((superseded . ,xorgproto)))))
 
 ;; packages of height 2 in the propagated-inputs tree
 
@@ -4809,7 +4790,7 @@ the core protocol and (many) extensions for the X Window System.")
             "00p2b6bsg6kcdbb39bv46339qcywxfl4hsrz8asm4hy6q7r34w4g"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("xproto" ,xproto)))
+      `(("xorgproto" ,xorgproto)))
     (inputs
       `(("libbsd" ,libbsd)
         ("xtrans" ,xtrans)))
@@ -4837,7 +4818,7 @@ the core protocol and (many) extensions for the X Window System.")
             "1wm4pv12f36cwzhldpp7vy3lhm3xdcnp4f184xkxsp7b18r7gm7x"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("xproto" ,xproto)))
+      `(("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4863,10 +4844,9 @@ an X Window System display.")
             "1miana3y4hwdqdparsccmygqr3ic3hs5jrqfzp70hvi2zwxd676y"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("fixesproto" ,fixesproto)))
+      `(("xorgproto" ,xorgproto)))
     (inputs
-      `(("xproto" ,xproto)
-        ("libx11" ,libx11)))
+      `(("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4890,10 +4870,9 @@ an X Window System display.")
             "0hiji1bvpl78aj3a3141hkk353aich71wv8l5l2z51scfy878zqs"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("fontsproto" ,fontsproto)
-        ("freetype" ,freetype)
+      `(("freetype" ,freetype)
         ("libfontenc" ,libfontenc)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (inputs
       `(("zlib" ,zlib)
         ("xtrans" ,xtrans)))
@@ -4938,12 +4917,10 @@ new API's in libXft, or the legacy API's in libX11.")
             "0idg1wc01hndvaa820fvfs7phvd1ymf0lldmq6386i7rhkzvirn2"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("inputproto" ,inputproto)
+      `(("xorgproto" ,xorgproto)
         ("libx11" ,libx11)
         ("libxext" ,libxext)
         ("libxfixes" ,libxfixes)))
-    (inputs
-      `(("xproto" ,xproto)))
     (native-inputs
        `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4971,8 +4948,7 @@ new API's in libXft, or the legacy API's in libX11.")
       `(("libx11" ,libx11)
         ("libxext" ,libxext)
         ("libxrender" ,libxrender)
-        ("randrproto" ,randrproto)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
        `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4999,7 +4975,7 @@ new API's in libXft, or the legacy API's in libX11.")
     (propagated-inputs
       `(("libxv" ,libxv)))
     (inputs
-      `(("xproto" ,xproto)
+      `(("xorgproto" ,xorgproto)
         ("libxext" ,libxext)
         ("libx11" ,libx11)))
     (native-inputs
@@ -5026,7 +5002,7 @@ new API's in libXft, or the legacy API's in libX11.")
     (build-system gnu-build-system)
     (propagated-inputs
       `(("libxext" ,libxext)
-        ("xf86vidmodeproto" ,xf86vidmodeproto)))
+        ("xorgproto" ,xorgproto)))
     (inputs
       `(("libx11" ,libx11)))
     (native-inputs
@@ -5044,7 +5020,7 @@ protocol.")
 (define-public libxcb
   (package
     (name "libxcb")
-    (version "1.12")
+    (version "1.13")
     (source
       (origin
         (method url-fetch)
@@ -5052,9 +5028,7 @@ protocol.")
                             name "-" version ".tar.bz2"))
         (sha256
           (base32
-           "0nvv0la91cf8p5qqlb3r5xnmg1jn2wphn4fb5jfbr6byqsvv3psa"))
-        (patches
-         (search-patches "libxcb-python-3.5-compat.patch"))))
+           "1ahxhmdqp4bhb90zmc275rmf5wixqra4bnw9pqnzyl1w3598g30q"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("libpthread-stubs" ,libpthread-stubs)
@@ -5116,31 +5090,13 @@ over Xlib, including:
             (file-name "xorg-server-use-intel-only-on-pre-gen4.diff"))))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("dri2proto" ,dri2proto)
-        ("dri3proto" ,dri3proto)
-        ("fontsproto" ,fontsproto)
-        ("inputproto" ,inputproto)
-        ("kbproto" ,kbproto)
-        ("libpciaccess" ,libpciaccess)
+      `(("libpciaccess" ,libpciaccess)
         ("mesa" ,mesa)
         ("pixman" ,pixman)
-        ("presentproto" ,presentproto)
-        ("randrproto" ,randrproto)
-        ("renderproto" ,renderproto)
-        ("resourceproto" ,resourceproto)
-        ("scrnsaverproto" ,scrnsaverproto)
-        ("videoproto" ,videoproto)
-        ("xextproto" ,xextproto)
-        ("xineramaproto" ,xineramaproto)
-        ("xf86driproto" ,xf86driproto)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (inputs
-      `(("bigreqsproto" ,bigreqsproto)
-        ("compositeproto" ,compositeproto)
-        ("damageproto" ,damageproto)
-        ("udev" ,eudev)
+      `(("udev" ,eudev)
         ("dbus" ,dbus)
-        ("dmxproto" ,dmxproto)
         ("libdmx" ,libdmx)
         ("libepoxy" ,libepoxy)
         ("libgcrypt" ,libgcrypt)
@@ -5155,11 +5111,6 @@ over Xlib, including:
         ("libxshmfence" ,libxshmfence)
         ("libxt" ,libxt)
         ("libxv" ,libxv)
-        ("recordproto" ,recordproto)
-        ("xcmiscproto" ,xcmiscproto)
-        ("xf86bigfontproto" ,xf86bigfontproto)
-        ("xf86dgaproto" ,xf86dgaproto)
-        ("xf86vidmodeproto" ,xf86vidmodeproto)
         ("xkbcomp" ,xkbcomp)
         ("xkeyboard-config" ,xkeyboard-config)
         ("xtrans" ,xtrans)
@@ -5300,12 +5251,10 @@ draggable titlebars and borders.")
                                               (assoc-ref %outputs "doc")
                                               "/share/man"))))
     (propagated-inputs
-      `(("kbproto" ,kbproto)
+      `(("xorgproto" ,xorgproto)
         ("libxcb" ,libxcb)))
     (inputs
-      `(("inputproto" ,inputproto)
-        ("xextproto" ,xextproto)
-        ("xtrans" ,xtrans)))
+      `(("xtrans" ,xtrans)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -5334,7 +5283,7 @@ draggable titlebars and borders.")
       `(("libx11" ,libx11)
         ("libxrender" ,libxrender)
         ("libxfixes" ,libxfixes)
-        ("xproto" ,xproto)))
+        ("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
 ;; TODO: add XCURSOR_PATH=.../share/icons to profile search paths, so
@@ -5408,7 +5357,7 @@ draggable titlebars and borders.")
         ("libxpm" ,libxpm)
         ("libxt" ,libxt)))
     (inputs
-      `(("xproto" ,xproto)))
+      `(("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -5437,7 +5386,7 @@ Intrinsics (Xt) Library.")
      `(("libxt" ,libxt)
        ("libxmu" ,libxmu)
        ("libxext" ,libxext)
-       ("xproto" ,xproto)))
+       ("xorgproto" ,xorgproto)))
     (native-inputs
      `(("bison" ,bison)
        ("pkg-config" ,pkg-config)))
@@ -5660,7 +5609,7 @@ The XCB util-wm module provides the following libraries:
                 "1vw2wlg74ig52naw0cha3pgzcwwk25l834j42cg8m5zmybp3a213"))))
     (build-system gnu-build-system)
     (inputs
-     `(("xproto" ,xproto)
+     `(("xorgproto" ,xorgproto)
        ("libx11" ,libx11)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -5800,7 +5749,7 @@ to answer a question.  Xmessage can also exit after a specified time.")
        ("libX11" ,libx11)
        ("libXext" ,libxext)
        ("libXt" ,libxt)
-       ("xproto" ,xproto)
+       ("xorgproto" ,xorgproto)
        ("libXaw" ,libxaw)))
     (home-page "https://invisible-island.net/xterm/")
     (synopsis "Terminal emulator for the X Window System")
diff --git a/gnu/packages/zile.scm b/gnu/packages/zile.scm
index fd3d168b3d..858117de28 100644
--- a/gnu/packages/zile.scm
+++ b/gnu/packages/zile.scm
@@ -114,7 +114,7 @@ default Emacs configuration, but it carries a much lighter feature set.")
        (substitute-keyword-arguments (package-arguments zile)
          ((#:phases phases)
           `(modify-phases ,phases
-             (add-after 'unpack 'bootstrap
+             (replace 'bootstrap
                (lambda _
                  ;; Make sure all the files are writable so that ./bootstrap
                  ;; can proceed.
diff --git a/guix/build/ant-build-system.scm b/guix/build/ant-build-system.scm
index 6ce813a001..a6da530dab 100644
--- a/guix/build/ant-build-system.scm
+++ b/guix/build/ant-build-system.scm
@@ -228,6 +228,7 @@ repack them.  This is necessary to ensure that archives are reproducible."
 (define %standard-phases
   (modify-phases gnu:%standard-phases
     (replace 'unpack unpack)
+    (delete 'bootstrap)
     (replace 'configure configure)
     (replace 'build build)
     (replace 'check check)
diff --git a/guix/build/asdf-build-system.scm b/guix/build/asdf-build-system.scm
index c5e820a00a..dd6373b33a 100644
--- a/guix/build/asdf-build-system.scm
+++ b/guix/build/asdf-build-system.scm
@@ -220,6 +220,7 @@ valid."
 
 (define %standard-phases/source
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (delete 'configure)
     (delete 'check)
     (delete 'build)
@@ -227,6 +228,7 @@ valid."
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (delete 'configure)
     (delete 'install)
     (replace 'build build)
diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index 139b40321f..f52444f61c 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -172,6 +172,7 @@ SRC-NAME as if it was part of the directory DIR-NAME with name
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (replace 'configure configure)
     (replace 'build build)
     (replace 'check check)
diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm
index c82d9fef87..9b1112f2d6 100644
--- a/guix/build/cmake-build-system.scm
+++ b/guix/build/cmake-build-system.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
@@ -73,7 +73,7 @@
                         '())
                   ,@configure-flags)))
       (format #t "running 'cmake' with arguments ~s~%" args)
-      (zero? (apply system* "cmake" args)))))
+      (apply invoke "cmake" args))))
 
 (define* (check #:key (tests? #t) (parallel-tests? #t) (test-target "test")
                 #:allow-other-keys)
@@ -86,6 +86,7 @@
   ;; Everything is as with the GNU Build System except for the `configure'
   ;; and 'check' phases.
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (replace 'check check)
     (replace 'configure configure)))
 
diff --git a/guix/build/cvs.scm b/guix/build/cvs.scm
index 9976e624b3..7111043747 100644
--- a/guix/build/cvs.scm
+++ b/guix/build/cvs.scm
@@ -55,19 +55,20 @@ Return #t on success, #f otherwise."
   ;; Use "-z0" because enabling compression leads to hangs during checkout on
   ;; certain repositories, such as
   ;; ":pserver:anonymous@cvs.savannah.gnu.org:/sources/gnustandards".
-  (and (zero? (system* cvs-command "-z0"
-                       "-d" cvs-root-directory
-                       "checkout"
-                       (if (string-match "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" revision)
-                           "-D" "-r")
-                       revision
-                       module))
-       ;; Copy rather than rename in case MODULE and DIRECTORY are on
-       ;; different devices.
-       (copy-recursively module directory)
+  (invoke cvs-command "-z0"
+          "-d" cvs-root-directory
+          "checkout"
+          (if (string-match "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" revision)
+              "-D" "-r")
+          revision
+          module)
 
-       (with-directory-excursion directory
-         (for-each delete-file-recursively (find-cvs-directories)))
-       #t))
+  ;; Copy rather than rename in case MODULE and DIRECTORY are on
+  ;; different devices.
+  (copy-recursively module directory)
+
+  (with-directory-excursion directory
+    (for-each delete-file-recursively (find-cvs-directories)))
+  #t)
 
 ;;; cvs.scm ends here
diff --git a/guix/build/dub-build-system.scm b/guix/build/dub-build-system.scm
index ed86635708..9a72e3d544 100644
--- a/guix/build/dub-build-system.scm
+++ b/guix/build/dub-build-system.scm
@@ -121,6 +121,7 @@
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (replace 'configure configure)
     (replace 'build build)
     (replace 'check check)
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index b779847424..7c3b635139 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -262,6 +262,7 @@ second hyphen.  This corresponds to 'name-version' as used in ELPA packages."
   (modify-phases gnu:%standard-phases
     (add-after 'set-paths 'set-emacs-load-path set-emacs-load-path)
     (replace 'unpack unpack)
+    (delete 'bootstrap)
     (delete 'configure)
     ;; Move the build phase after install: the .el files are byte compiled
     ;; directly in the store.
diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm
index 8389ca582f..30aec5b9c6 100644
--- a/guix/build/emacs-utils.scm
+++ b/guix/build/emacs-utils.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -18,6 +18,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (guix build emacs-utils)
+  #:use-module (guix build utils)
   #:export (%emacs
             emacs-batch-eval
             emacs-batch-edit-file
@@ -39,16 +40,14 @@
 
 (define (emacs-batch-eval expr)
   "Run Emacs in batch mode, and execute the elisp code EXPR."
-  (unless (zero? (system* (%emacs) "--quick" "--batch"
-                          (format #f "--eval=~S" expr)))
-    (error "emacs-batch-eval failed!" expr)))
+  (invoke (%emacs) "--quick" "--batch"
+          (format #f "--eval=~S" expr)))
 
 (define (emacs-batch-edit-file file expr)
   "Load FILE in Emacs using batch mode, and execute the elisp code EXPR."
-  (unless (zero? (system* (%emacs) "--quick" "--batch"
-                          (string-append "--visit=" file)
-                          (format #f "--eval=~S" expr)))
-    (error "emacs-batch-edit-file failed!" file expr)))
+  (invoke (%emacs) "--quick" "--batch"
+          (string-append "--visit=" file)
+          (format #f "--eval=~S" expr)))
 
 (define (emacs-generate-autoloads name directory)
   "Generate autoloads for Emacs package NAME placed in DIRECTORY."
diff --git a/guix/build/font-build-system.scm b/guix/build/font-build-system.scm
index f2a646f6f4..6726595fe1 100644
--- a/guix/build/font-build-system.scm
+++ b/guix/build/font-build-system.scm
@@ -59,6 +59,7 @@ archive, or a font file."
 (define %standard-phases
   (modify-phases gnu:%standard-phases
     (replace 'unpack unpack)
+    (delete 'bootstrap)
     (delete 'configure)
     (delete 'check)
     (delete 'build)
diff --git a/guix/build/glib-or-gtk-build-system.scm b/guix/build/glib-or-gtk-build-system.scm
index b6291e735b..ba680fd1a9 100644
--- a/guix/build/glib-or-gtk-build-system.scm
+++ b/guix/build/glib-or-gtk-build-system.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -202,16 +203,16 @@ add a dependency of that output on GLib and GTK+."
 (define* (compile-glib-schemas #:key outputs #:allow-other-keys)
   "Implement phase \"glib-or-gtk-compile-schemas\": compile \"glib\" schemas
 if needed."
-  (every (match-lambda
-          ((output . directory)
-           (let ((schemasdir (string-append directory
-                                            "/share/glib-2.0/schemas")))
-             (if (and (directory-exists? schemasdir)
-                      (not (file-exists?
-                            (string-append schemasdir "/gschemas.compiled"))))
-                 (zero? (system* "glib-compile-schemas" schemasdir))
-                 #t))))
-         outputs))
+  (for-each (match-lambda
+              ((output . directory)
+               (let ((schemasdir (string-append directory
+                                                "/share/glib-2.0/schemas")))
+                 (when (and (directory-exists? schemasdir)
+                            (not (file-exists?
+                                  (string-append schemasdir "/gschemas.compiled"))))
+                   (invoke "glib-compile-schemas" schemasdir)))))
+            outputs)
+  #t)
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index 7b43361f99..8fe6fa8d60 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,6 +27,8 @@
   #:use-module (ice-9 format)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-19)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (srfi srfi-26)
   #:use-module (rnrs io ports)
   #:export (%standard-phases
@@ -152,12 +155,50 @@ working directory."
         ;; Preserve timestamps (set to the Epoch) on the copied tree so that
         ;; things work deterministically.
         (copy-recursively source "."
-                          #:keep-mtime? #t)
-        #t)
-      (and (if (string-suffix? ".zip" source)
-               (zero? (system* "unzip" source))
-               (zero? (system* "tar" "xvf" source)))
-           (chdir (first-subdirectory ".")))))
+                          #:keep-mtime? #t))
+      (begin
+        (if (string-suffix? ".zip" source)
+            (invoke "unzip" source)
+            (invoke "tar" "xvf" source))
+        (chdir (first-subdirectory "."))))
+  #t)
+
+(define %bootstrap-scripts
+  ;; Typical names of Autotools "bootstrap" scripts.
+  '("bootstrap" "bootstrap.sh" "autogen.sh"))
+
+(define* (bootstrap #:key (bootstrap-scripts %bootstrap-scripts)
+                    #:allow-other-keys)
+  "If the code uses Autotools and \"configure\" is missing, run
+\"autoreconf\".  Otherwise do nothing."
+  ;; Note: Run that right after 'unpack' so that the generated files are
+  ;; visible when the 'patch-source-shebangs' phase runs.
+  (if (not (file-exists? "configure"))
+
+      ;; First try one of the BOOTSTRAP-SCRIPTS.  If none exists, and it's
+      ;; clearly an Autoconf-based project, run 'autoreconf'.  Otherwise, do
+      ;; nothing (perhaps the user removed or overrode the 'configure' phase.)
+      (let ((script (find file-exists? bootstrap-scripts)))
+        ;; GNU packages often invoke the 'git-version-gen' script from
+        ;; 'configure.ac' so make sure it has a valid shebang.
+        (false-if-file-not-found
+         (patch-shebang "build-aux/git-version-gen"))
+
+        (if script
+            (let ((script (string-append "./" script)))
+              (format #t "running '~a'~%" script)
+              (if (executable-file? script)
+                  (begin
+                    (patch-shebang script)
+                    (invoke script))
+                  (invoke "sh" script)))
+            (if (or (file-exists? "configure.ac")
+                    (file-exists? "configure.in"))
+                (invoke "autoreconf" "-vif")
+                (format #t "no 'configure.ac' or anything like that, \
+doing nothing~%"))))
+      (format #t "GNU build system bootstrapping not needed~%"))
+  #t)
 
 ;; See <http://bugs.gnu.org/17840>.
 (define* (patch-usr-bin-file #:key native-inputs inputs
@@ -184,7 +225,8 @@ $CONFIG_SHELL, but some don't, such as `mkinstalldirs' or Automake's
                         (lambda (file stat)
                           ;; Filter out symlinks.
                           (eq? 'regular (stat:type stat)))
-                        #:stat lstat)))
+                        #:stat lstat))
+  #t)
 
 (define (patch-generated-file-shebangs . rest)
   "Patch shebangs in generated files, including `SHELL' variables in
@@ -199,7 +241,9 @@ makefiles."
                         #:stat lstat))
 
   ;; Patch `SHELL' in generated makefiles.
-  (for-each patch-makefile-SHELL (find-files "." "^(GNU)?[mM]akefile$")))
+  (for-each patch-makefile-SHELL (find-files "." "^(GNU)?[mM]akefile$"))
+
+  #t)
 
 (define* (configure #:key build target native-inputs inputs outputs
                     (configure-flags '()) out-of-source?
@@ -279,33 +323,32 @@ makefiles."
     ;; Call `configure' with a relative path.  Otherwise, GCC's build system
     ;; (for instance) records absolute source file names, which typically
     ;; contain the hash part of the `.drv' file, leading to a reference leak.
-    (zero? (apply system* bash
-                  (string-append srcdir "/configure")
-                  flags))))
+    (apply invoke bash
+           (string-append srcdir "/configure")
+           flags)))
 
 (define* (build #:key (make-flags '()) (parallel-build? #t)
                 #:allow-other-keys)
-  (zero? (apply system* "make"
-                `(,@(if parallel-build?
-                        `("-j" ,(number->string (parallel-job-count)))
-                        '())
-                  ,@make-flags))))
+  (apply invoke "make"
+         `(,@(if parallel-build?
+                 `("-j" ,(number->string (parallel-job-count)))
+                 '())
+           ,@make-flags)))
 
 (define* (check #:key target (make-flags '()) (tests? (not target))
                 (test-target "check") (parallel-tests? #t)
                 #:allow-other-keys)
   (if tests?
-      (zero? (apply system* "make" test-target
-                    `(,@(if parallel-tests?
-                            `("-j" ,(number->string (parallel-job-count)))
-                            '())
-                      ,@make-flags)))
-      (begin
-        (format #t "test suite not run~%")
-        #t)))
+      (apply invoke "make" test-target
+             `(,@(if parallel-tests?
+                     `("-j" ,(number->string (parallel-job-count)))
+                     '())
+               ,@make-flags))
+      (format #t "test suite not run~%"))
+  #t)
 
 (define* (install #:key (make-flags '()) #:allow-other-keys)
-  (zero? (apply system* "make" "install" make-flags)))
+  (apply invoke "make" "install" make-flags))
 
 (define* (patch-shebangs #:key inputs outputs (patch-shebangs? #t)
                          #:allow-other-keys)
@@ -371,10 +414,8 @@ makefiles."
     (let ((debug (debug-file file)))
       (mkdir-p (dirname debug))
       (copy-file file debug)
-      (and (zero? (system* strip-command "--only-keep-debug" debug))
-           (begin
-             (chmod debug #o400)
-             #t))))
+      (invoke strip-command "--only-keep-debug" debug)
+      (chmod debug #o400)))
 
   (define (add-debug-link file)
     ;; Add a debug link in FILE (info "(binutils) strip").
@@ -384,10 +425,10 @@ makefiles."
     ;; `bfd_fill_in_gnu_debuglink_section' function.)  No reference to
     ;; DEBUG-OUTPUT is kept because bfd keeps only the basename of the debug
     ;; file.
-    (zero? (system* objcopy-command "--enable-deterministic-archives"
-                    (string-append "--add-gnu-debuglink="
-                                   (debug-file file))
-                    file)))
+    (invoke objcopy-command "--enable-deterministic-archives"
+            (string-append "--add-gnu-debuglink="
+                           (debug-file file))
+            file))
 
   (define (strip-dir dir)
     (format #t "stripping binaries in ~s with ~s and flags ~s~%"
@@ -397,17 +438,29 @@ makefiles."
               debug-output objcopy-command))
 
     (for-each (lambda (file)
-                (and (or (elf-file? file) (ar-file? file))
-                     (or (not debug-output)
-                         (make-debug-file file))
-
-                     ;; Ensure the file is writable.
-                     (begin (make-file-writable file) #t)
-
-                     (zero? (apply system* strip-command
-                                   (append strip-flags (list file))))
-                     (or (not debug-output)
-                         (add-debug-link file))))
+                (when (or (elf-file? file) (ar-file? file))
+                  ;; If an error occurs while processing a file, issue a
+                  ;; warning and continue to the next file.
+                  (guard (c ((invoke-error? c)
+                             (format (current-error-port)
+                                     "warning: ~a: program ~s exited\
+~@[ with non-zero exit status ~a~]\
+~@[ terminated by signal ~a~]~%"
+                                     file
+                                     (invoke-error-program c)
+                                     (invoke-error-exit-status c)
+                                     (invoke-error-term-signal c))))
+                    (when debug-output
+                      (make-debug-file file))
+
+                    ;; Ensure the file is writable.
+                    (make-file-writable file)
+
+                    (apply invoke strip-command
+                           (append strip-flags (list file)))
+
+                    (when debug-output
+                      (add-debug-link file)))))
               (find-files dir
                           (lambda (file stat)
                             ;; Ignore symlinks such as:
@@ -415,15 +468,17 @@ makefiles."
                             (eq? 'regular (stat:type stat)))
                           #:stat lstat)))
 
-  (or (not strip-binaries?)
-      (every strip-dir
-             (append-map (match-lambda
-                          ((_ . dir)
-                           (filter-map (lambda (d)
-                                         (let ((sub (string-append dir "/" d)))
-                                           (and (directory-exists? sub) sub)))
-                                       strip-directories)))
-                         outputs))))
+  (when strip-binaries?
+    (for-each
+     strip-dir
+     (append-map (match-lambda
+                   ((_ . dir)
+                    (filter-map (lambda (d)
+                                  (let ((sub (string-append dir "/" d)))
+                                    (and (directory-exists? sub) sub)))
+                                strip-directories)))
+                 outputs)))
+  #t)
 
 (define* (validate-runpath #:key
                            (validate-runpath? #t)
@@ -466,10 +521,11 @@ phase after stripping."
                                  (filter-map (sub-directory output)
                                              elf-directories)))
                               outputs)))
-        (every* validate dirs))
-      (begin
-        (format (current-error-port) "skipping RUNPATH validation~%")
-        #t)))
+        (unless (every* validate dirs)
+          (error "RUNPATH validation failed")))
+      (format (current-error-port) "skipping RUNPATH validation~%"))
+
+  #t)
 
 (define* (validate-documentation-location #:key outputs
                                           #:allow-other-keys)
@@ -549,47 +605,45 @@ DOCUMENTATION-COMPRESSOR-FLAGS."
               (apply throw args))))))
 
   (define (maybe-compress-directory directory regexp)
-    (or (not (directory-exists? directory))
-        (match (find-files directory regexp)
-          (()                                     ;nothing to compress
-           #t)
-          ((files ...)                            ;one or more files
-           (format #t
-                   "compressing documentation in '~a' with ~s and flags ~s~%"
-                   directory documentation-compressor
-                   documentation-compressor-flags)
-           (call-with-values
-               (lambda ()
-                 (partition symbolic-link? files))
-             (lambda (symlinks regular-files)
-               ;; Compress the non-symlink files, and adjust symlinks to refer
-               ;; to the compressed files.  Leave files that have hard links
-               ;; unchanged ('gzip' would refuse to compress them anyway.)
-               ;; Also, do not retarget symbolic links pointing to other
-               ;; symbolic links, since these are not compressed.
-               (and (every retarget-symlink
-                           (filter (lambda (symlink)
-                                     (and (not (points-to-symlink? symlink))
-                                          (string-match regexp symlink)))
-                                   symlinks))
-                    (zero?
-                     (apply system* documentation-compressor
-                            (append documentation-compressor-flags
-                                    (remove has-links? regular-files)))))))))))
+    (when (directory-exists? directory)
+      (match (find-files directory regexp)
+        (()                                     ;nothing to compress
+         #t)
+        ((files ...)                            ;one or more files
+         (format #t
+                 "compressing documentation in '~a' with ~s and flags ~s~%"
+                 directory documentation-compressor
+                 documentation-compressor-flags)
+         (call-with-values
+             (lambda ()
+               (partition symbolic-link? files))
+           (lambda (symlinks regular-files)
+             ;; Compress the non-symlink files, and adjust symlinks to refer
+             ;; to the compressed files.  Leave files that have hard links
+             ;; unchanged ('gzip' would refuse to compress them anyway.)
+             ;; Also, do not retarget symbolic links pointing to other
+             ;; symbolic links, since these are not compressed.
+             (for-each retarget-symlink
+                       (filter (lambda (symlink)
+                                 (and (not (points-to-symlink? symlink))
+                                      (string-match regexp symlink)))
+                               symlinks))
+             (apply invoke documentation-compressor
+                    (append documentation-compressor-flags
+                            (remove has-links? regular-files)))))))))
 
   (define (maybe-compress output)
-    (and (maybe-compress-directory (string-append output "/share/man")
-                                   "\\.[0-9]+$")
-         (maybe-compress-directory (string-append output "/share/info")
-                                   "\\.info(-[0-9]+)?$")))
+    (maybe-compress-directory (string-append output "/share/man")
+                              "\\.[0-9]+$")
+    (maybe-compress-directory (string-append output "/share/info")
+                              "\\.info(-[0-9]+)?$"))
 
   (if compress-documentation?
       (match outputs
         (((names . directories) ...)
-         (every maybe-compress directories)))
-      (begin
-        (format #t "not compressing documentation~%")
-        #t)))
+         (for-each maybe-compress directories)))
+      (format #t "not compressing documentation~%"))
+  #t)
 
 (define* (delete-info-dir-file #:key outputs #:allow-other-keys)
   "Delete any 'share/info/dir' file from OUTPUTS."
@@ -672,6 +726,7 @@ which cannot be found~%"
   (let-syntax ((phases (syntax-rules ()
                          ((_ p ...) `((p . ,p) ...)))))
     (phases set-SOURCE-DATE-EPOCH set-paths install-locale unpack
+            bootstrap
             patch-usr-bin-file
             patch-source-shebangs configure patch-generated-file-shebangs
             build check install
@@ -704,17 +759,26 @@ in order.  Return #t if all the PHASES succeeded, #f otherwise."
 
   ;; The trick is to #:allow-other-keys everywhere, so that each procedure in
   ;; PHASES can pick the keyword arguments it's interested in.
-  (every (match-lambda
-          ((name . proc)
-           (let ((start (current-time time-monotonic)))
-             (format #t "starting phase `~a'~%" name)
-             (let ((result (apply proc args))
-                   (end    (current-time time-monotonic)))
-               (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f seconds~%"
-                       name result
-                       (elapsed-time end start))
-
-               ;; Dump the environment variables as a shell script, for handy debugging.
-               (system "export > $NIX_BUILD_TOP/environment-variables")
-               result))))
-         phases))
+  (for-each (match-lambda
+              ((name . proc)
+               (let ((start (current-time time-monotonic)))
+                 (format #t "starting phase `~a'~%" name)
+                 (let ((result (apply proc args))
+                       (end    (current-time time-monotonic)))
+                   (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f seconds~%"
+                           name result
+                           (elapsed-time end start))
+
+                   ;; Issue a warning unless the result is #t.
+                   (unless (eqv? result #t)
+                     (format (current-error-port) "\
+## WARNING: phase `~a' returned `~s'.  Return values other than #t
+## are deprecated.  Please migrate this package so that its phase
+## procedures report errors by raising an exception, and otherwise
+## always return #t.~%"
+                             name result))
+
+                   ;; Dump the environment variables as a shell script, for handy debugging.
+                   (system "export > $NIX_BUILD_TOP/environment-variables")
+                   result))))
+            phases))
diff --git a/guix/build/gnu-dist.scm b/guix/build/gnu-dist.scm
index ad69c6cf16..bf1c63cb85 100644
--- a/guix/build/gnu-dist.scm
+++ b/guix/build/gnu-dist.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,24 +42,22 @@
                                     (begin
                                       (format #t "bootstrapping with `~a'...~%"
                                               file)
-                                      (zero?
-                                       (system* (string-append "./" file))))
+                                      (invoke (string-append "./" file)))
                                     (try-files files ...
                                                (else fallback ...)))))))
     (try-files "bootstrap" "bootstrap.sh" "autogen" "autogen.sh"
                (else
                 (format #t "bootstrapping with `autoreconf'...~%")
-                (zero? (system* "autoreconf" "-vfi"))))))
+                (invoke "autoreconf" "-vfi")))))
 
 (define* (build #:key build-before-dist? make-flags (dist-target "distcheck")
                 #:allow-other-keys
                 #:rest args)
-  (and (or (not build-before-dist?)
-           (let ((build (assq-ref %standard-phases 'build)))
-             (apply build args)))
-       (begin
-         (format #t "building target `~a'~%" dist-target)
-         (zero? (apply system* "make" dist-target make-flags)))))
+  (when build-before-dist?
+    (let ((build (assq-ref %standard-phases 'build)))
+      (apply build args)))
+  (format #t "building target `~a'~%" dist-target)
+  (apply invoke "make" dist-target make-flags))
 
 (define* (install-dist #:key outputs #:allow-other-keys)
   (let* ((out      (assoc-ref outputs "out"))
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 3114067aa9..7c833a616f 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -261,6 +261,7 @@ files in OUTPUTS."
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (delete 'configure)
     (delete 'patch-generated-file-shebangs)
     (replace 'unpack unpack)
diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm
index 3afc37e16d..268d59c1be 100644
--- a/guix/build/haskell-build-system.scm
+++ b/guix/build/haskell-build-system.scm
@@ -266,6 +266,7 @@ given Haskell package."
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (add-before 'configure 'setup-compiler setup-compiler)
     (add-before 'install 'haddock haddock)
     (add-after 'install 'register register)
diff --git a/guix/build/hg.scm b/guix/build/hg.scm
index ae4574de57..ea51eb670b 100644
--- a/guix/build/hg.scm
+++ b/guix/build/hg.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,19 +34,20 @@
   "Fetch CHANGESET from URL into DIRECTORY.  CHANGESET must be a valid
 Mercurial changeset identifier.  Return #t on success, #f otherwise."
 
-  (and (zero? (system* hg-command
-                       "clone" url
-                       "--rev" changeset
-                       ;; Disable TLS certificate verification.  The hash of
-                       ;; the checkout is known in advance anyway.
-                       "--insecure"
-                       directory))
-       (with-directory-excursion directory
-         (begin
-           ;; The contents of '.hg' vary as a function of the current
-           ;; status of the Mercurial repo.  Since we want a fixed
-           ;; output, this directory needs to be taken out.
-           (delete-file-recursively ".hg")
-           #t))))
+  (invoke hg-command
+          "clone" url
+          "--rev" changeset
+          ;; Disable TLS certificate verification.  The hash of
+          ;; the checkout is known in advance anyway.
+          "--insecure"
+          directory)
+
+  ;; The contents of '.hg' vary as a function of the current
+  ;; status of the Mercurial repo.  Since we want a fixed
+  ;; output, this directory needs to be taken out.
+  (with-directory-excursion directory
+    (delete-file-recursively ".hg"))
+
+  #t)
 
 ;;; hg.scm ends here
diff --git a/guix/build/minify-build-system.scm b/guix/build/minify-build-system.scm
index 3580deda07..563def88e9 100644
--- a/guix/build/minify-build-system.scm
+++ b/guix/build/minify-build-system.scm
@@ -60,6 +60,7 @@
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (delete 'configure)
     (replace 'build build)
     (delete 'check)
diff --git a/guix/build/ocaml-build-system.scm b/guix/build/ocaml-build-system.scm
index f77251ca09..d10431d8ef 100644
--- a/guix/build/ocaml-build-system.scm
+++ b/guix/build/ocaml-build-system.scm
@@ -103,6 +103,7 @@
   ;; Everything is as with the GNU Build System except for the `configure'
   ;; , `build', `check' and `install' phases.
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (add-before 'configure 'ocaml-findlib-environment
                 ocaml-findlib-environment)
     (add-before 'install 'prepare-install prepare-install)
diff --git a/guix/build/perl-build-system.scm b/guix/build/perl-build-system.scm
index b2024e4406..c5f5baa3a9 100644
--- a/guix/build/perl-build-system.scm
+++ b/guix/build/perl-build-system.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -49,7 +50,7 @@
                    "INSTALLDIRS=site" "NO_PERLLOCAL=1" ,@make-maker-flags))
                 (else (error "no Build.PL or Makefile.PL found")))))
     (format #t "running `perl' with arguments ~s~%" args)
-    (zero? (apply system* "perl" args))))
+    (apply invoke "perl" args)))
 
 (define-syntax-rule (define-w/gnu-fallback* (name args ...) body ...)
   (define* (name args ... #:rest rest)
@@ -58,24 +59,24 @@
         (apply (assoc-ref gnu:%standard-phases 'name) rest))))
 
 (define-w/gnu-fallback* (build)
-  (zero? (system* "./Build")))
+  (invoke "./Build"))
 
 (define-w/gnu-fallback* (check #:key target
                                (tests? (not target)) (test-flags '())
                                #:allow-other-keys)
   (if tests?
-      (zero? (apply system* "./Build" "test" test-flags))
-      (begin
-        (format #t "test suite not run~%")
-        #t)))
+      (apply invoke "./Build" "test" test-flags)
+      (format #t "test suite not run~%"))
+  #t)
 
 (define-w/gnu-fallback* (install)
-  (zero? (system* "./Build" "install")))
+  (invoke "./Build" "install"))
 
 (define %standard-phases
   ;; Everything is as with the GNU Build System except for the `configure',
   ;; `build', `check', and `install' phases.
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (replace 'install install)
     (replace 'check check)
     (replace 'build build)
diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm
index dd07986b94..376ea81f1a 100644
--- a/guix/build/python-build-system.scm
+++ b/guix/build/python-build-system.scm
@@ -1,9 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -120,14 +121,15 @@
          (format #t "running \"python setup.py\" with command ~s and parameters ~s~%"
                 command params)
          (if use-setuptools?
-             (zero? (apply system* "python" "-c" setuptools-shim
-                           command params))
-             (zero? (apply system* "python" "./setup.py" command params))))
+             (apply invoke "python" "-c" setuptools-shim
+                    command params)
+             (apply invoke "python" "./setup.py" command params)))
       (error "no setup.py found")))
 
 (define* (build #:key use-setuptools? #:allow-other-keys)
   "Build a given Python package."
-  (call-setuppy "build" '() use-setuptools?))
+  (call-setuppy "build" '() use-setuptools?)
+  #t)
 
 (define* (check #:key tests? test-target use-setuptools? #:allow-other-keys)
   "Run the test suite of a given Python package."
@@ -137,15 +139,12 @@
       ;; (given with `package_dir`). This will by copied to the output, too,
       ;; so we need to remove.
       (let ((before (find-files "build" "\\.egg-info$" #:directories? #t)))
-        (if (call-setuppy test-target '() use-setuptools?)
-            (let* ((after (find-files "build" "\\.egg-info$" #:directories? #t))
-                   (inter (lset-difference eqv? after before)))
-              (for-each delete-file-recursively inter)
-              #t)
-            #f))
-      (begin
-        (format #t "test suite not run~%")
-        #t)))
+        (call-setuppy test-target '() use-setuptools?)
+        (let* ((after (find-files "build" "\\.egg-info$" #:directories? #t))
+               (inter (lset-difference string=? after before)))
+          (for-each delete-file-recursively inter)))
+      (format #t "test suite not run~%"))
+  #t)
 
 (define (get-python-version python)
   (let* ((version     (last (string-split python #\-)))
@@ -182,7 +181,8 @@ when running checks after installing the package."
                                     "--root=/")
                              '())
                          configure-flags)))
-    (call-setuppy "install" params use-setuptools?)))
+    (call-setuppy "install" params use-setuptools?)
+    #t))
 
 (define* (wrap #:key inputs outputs #:allow-other-keys)
   (define (list-of-files dir)
@@ -211,7 +211,8 @@ when running checks after installing the package."
                 (let ((files (list-of-files dir)))
                   (for-each (cut wrap-program <> var)
                             files)))
-              bindirs)))
+              bindirs)
+    #t))
 
 (define* (rename-pth-file #:key name inputs outputs #:allow-other-keys)
   "Rename easy-install.pth to NAME.pth to avoid conflicts between packages
@@ -243,10 +244,21 @@ installed with setuptools."
                #t))
     #t))
 
+(define* (enable-bytecode-determinism #:rest _)
+  "Improve determinism of pyc files."
+  ;; Set DETERMINISTIC_BUILD to override the embedded mtime in pyc files.
+  (setenv "DETERMINISTIC_BUILD" "1")
+  ;; Use deterministic hashes for strings, bytes, and datetime objects.
+  (setenv "PYTHONHASHSEED" "0")
+  #t)
+
 (define %standard-phases
   ;; 'configure' phase is not needed.
   (modify-phases gnu:%standard-phases
     (add-after 'unpack 'ensure-no-mtimes-pre-1980 ensure-no-mtimes-pre-1980)
+    (add-after 'ensure-no-mtimes-pre-1980 'enable-bytecode-determinism
+      enable-bytecode-determinism)
+    (delete 'bootstrap)
     (delete 'configure)
     (replace 'install install)
     (replace 'check check)
diff --git a/guix/build/r-build-system.scm b/guix/build/r-build-system.scm
index 24aa73d4f2..5e18939d22 100644
--- a/guix/build/r-build-system.scm
+++ b/guix/build/r-build-system.scm
@@ -99,6 +99,7 @@
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (delete 'configure)
     (delete 'build)
     (delete 'check) ; tests must be run after installation
diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index 09ae2390a5..abef6937bc 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -308,6 +308,7 @@ extended with definitions for VARS."
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (delete 'configure)
     (replace 'unpack unpack)
     (add-before 'build 'extract-gemspec extract-gemspec)
diff --git a/guix/build/scons-build-system.scm b/guix/build/scons-build-system.scm
index a8760968d8..eb013f03b6 100644
--- a/guix/build/scons-build-system.scm
+++ b/guix/build/scons-build-system.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,27 +32,27 @@
 (define* (build #:key outputs (scons-flags '()) (parallel-build? #t) #:allow-other-keys)
   (let ((out (assoc-ref outputs "out")))
     (mkdir-p out)
-    (zero? (apply system* "scons"
-                  (append (if parallel-build?
-                              (list "-j" (number->string
-                                          (parallel-job-count)))
-                              (list))
-                          scons-flags)))))
+    (apply invoke "scons"
+           (append (if parallel-build?
+                       (list "-j" (number->string
+                                   (parallel-job-count)))
+                       (list))
+                   scons-flags))))
 
 (define* (check #:key tests? test-target (scons-flags '()) #:allow-other-keys)
   "Run the test suite of a given SCons application."
-  (cond (tests?
-         (zero? (apply system* "scons" test-target scons-flags)))
-        (else
-         (format #t "test suite not run~%")
-         #t)))
+  (if tests?
+      (apply invoke "scons" test-target scons-flags)
+      (format #t "test suite not run~%"))
+  #t)
 
 (define* (install #:key outputs (scons-flags '()) #:allow-other-keys)
   "Install a given SCons application."
-  (zero? (apply system* "scons" "install" scons-flags)))
+  (apply invoke "scons" "install" scons-flags))
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (delete 'configure)
     (replace 'build build)
     (replace 'check check)
diff --git a/guix/build/svn.scm b/guix/build/svn.scm
index 31c30edaf5..252d1d4ee5 100644
--- a/guix/build/svn.scm
+++ b/guix/build/svn.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
+;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,23 +35,24 @@
                     (password #f))
   "Fetch REVISION from URL into DIRECTORY.  REVISION must be an integer, and a
 valid Subversion revision.  Return #t on success, #f otherwise."
-  (and (zero? (apply system* svn-command
-                     "checkout" "--non-interactive"
-                     ;; Trust the server certificate.  This is OK as we
-                     ;; verify the checksum later.  This can be removed when
-                     ;; ca-certificates package is added.
-                     "--trust-server-cert" "-r" (number->string revision)
-                     `(,@(if (and user-name password)
-                             (list (string-append "--username=" user-name)
-                                   (string-append "--password=" password))
-                             '())
-                       ,url ,directory)))
-       (with-directory-excursion directory
-         (begin
-           ;; The contents of '.svn' vary as a function of the current status
-           ;; of the repo.  Since we want a fixed output, this directory needs
-           ;; to be taken out.
-           (delete-file-recursively ".svn")
-           #t))))
+  (apply invoke svn-command
+         "checkout" "--non-interactive"
+         ;; Trust the server certificate.  This is OK as we
+         ;; verify the checksum later.  This can be removed when
+         ;; ca-certificates package is added.
+         "--trust-server-cert" "-r" (number->string revision)
+         `(,@(if (and user-name password)
+                 (list (string-append "--username=" user-name)
+                       (string-append "--password=" password))
+                 '())
+           ,url ,directory))
+
+  ;; The contents of '.svn' vary as a function of the current status
+  ;; of the repo.  Since we want a fixed output, this directory needs
+  ;; to be taken out.
+  (with-directory-excursion directory
+    (delete-file-recursively ".svn"))
+
+  #t)
 
 ;;; svn.scm ends here
diff --git a/guix/build/texlive-build-system.scm b/guix/build/texlive-build-system.scm
index f6b9b96b87..1c393ecd9d 100644
--- a/guix/build/texlive-build-system.scm
+++ b/guix/build/texlive-build-system.scm
@@ -34,11 +34,11 @@
 ;; Code:
 
 (define (compile-with-latex format file)
-  (zero? (system* format
-                  "-interaction=batchmode"
-                  "-output-directory=build"
-                  (string-append "&" format)
-                  file)))
+  (invoke format
+          "-interaction=batchmode"
+          "-output-directory=build"
+          (string-append "&" format)
+          file))
 
 (define* (configure #:key inputs #:allow-other-keys)
   (let* ((out       (string-append (getcwd) "/.texlive-union"))
@@ -81,6 +81,7 @@
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (replace 'configure configure)
     (replace 'build build)
     (delete 'check)
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index d7ed3d5177..c58a1afd1c 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -1,8 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +23,8 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (srfi srfi-60)
   #:use-module (ice-9 ftw)
   #:use-module (ice-9 match)
@@ -61,6 +63,7 @@
             delete-file-recursively
             file-name-predicate
             find-files
+            false-if-file-not-found
 
             search-path-as-list
             set-path-environment-variable
@@ -85,7 +88,14 @@
             fold-port-matches
             remove-store-references
             wrap-program
+
             invoke
+            invoke-error?
+            invoke-error-program
+            invoke-error-arguments
+            invoke-error-exit-status
+            invoke-error-term-signal
+            invoke-error-stop-signal
 
             locale-category->string))
 
@@ -396,6 +406,15 @@ also be included.  If FAIL-ON-ERROR? is true, raise an exception upon error."
                             stat)
           string<?)))
 
+(define-syntax-rule (false-if-file-not-found exp)
+  "Evaluate EXP but return #f if it raises to 'system-error with ENOENT."
+  (catch 'system-error
+    (lambda () exp)
+    (lambda args
+      (if (= ENOENT (system-error-errno args))
+          #f
+          (apply throw args)))))
+
 
 ;;;
 ;;; Search paths.
@@ -581,13 +600,25 @@ Where every <*-phase-name> is an expression evaluating to a symbol, and
     ((_ phases (add-after old-phase-name new-phase-name new-phase))
      (alist-cons-after old-phase-name new-phase-name new-phase phases))))
 
+(define-condition-type &invoke-error &error
+  invoke-error?
+  (program      invoke-error-program)
+  (arguments    invoke-error-arguments)
+  (exit-status  invoke-error-exit-status)
+  (term-signal  invoke-error-term-signal)
+  (stop-signal  invoke-error-stop-signal))
+
 (define (invoke program . args)
-  "Invoke PROGRAM with the given ARGS.  Raise an error if the exit
-code is non-zero; otherwise return #t."
-  (let ((status (apply system* program args)))
-    (unless (zero? status)
-      (error (format #f "program ~s exited with non-zero code" program)
-             status))
+  "Invoke PROGRAM with the given ARGS.  Raise an exception
+if the exit code is non-zero; otherwise return #t."
+  (let ((code (apply system* program args)))
+    (unless (zero? code)
+      (raise (condition (&invoke-error
+                         (program program)
+                         (arguments args)
+                         (exit-status (status:exit-val code))
+                         (term-signal (status:term-sig code))
+                         (stop-signal (status:stop-sig code))))))
     #t))
 
 
diff --git a/guix/build/waf-build-system.scm b/guix/build/waf-build-system.scm
index 85f0abcfd6..f0364e867d 100644
--- a/guix/build/waf-build-system.scm
+++ b/guix/build/waf-build-system.scm
@@ -70,6 +70,7 @@
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
     (replace 'configure configure)
     (replace 'build build)
     (replace 'check check)
diff --git a/guix/download.scm b/guix/download.scm
index 5044534bf5..a91d924af8 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -514,8 +514,8 @@ own.  This helper makes it easier to deal with \"tar bombs\"."
                           (mkdir #$output)
                           (setenv "PATH" (string-append #$gzip "/bin"))
                           (chdir #$output)
-                          (zero? (system* (string-append #$tar "/bin/tar")
-                                          "xf" #$drv)))
+                          (invoke (string-append #$tar "/bin/tar")
+                                  "xf" #$drv))
                       #:local-build? #t)))
 
 (define* (url-fetch/zipbomb url hash-algo hash
@@ -543,8 +543,8 @@ own.  This helper makes it easier to deal with \"zip bombs\"."
                       #~(begin
                           (mkdir #$output)
                           (chdir #$output)
-                          (zero? (system* (string-append #$unzip "/bin/unzip")
-                                          #$drv)))
+                          (invoke (string-append #$unzip "/bin/unzip")
+                                  #$drv))
                       #:local-build? #t)))
 
 (define* (download-to-store store url #:optional (name (basename url))
diff --git a/guix/packages.scm b/guix/packages.scm
index b5c0b60440..ab4b6278d6 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
@@ -519,9 +519,9 @@ specifies modules in scope when evaluating SNIPPET."
               ;; Use '--force' so that patches that do not apply perfectly are
               ;; rejected.  Use '--no-backup-if-mismatch' to prevent making
               ;; "*.orig" file if a patch is applied with offset.
-              (zero? (system* (string-append #+patch "/bin/patch")
-                              "--force" "--no-backup-if-mismatch"
-                              #+@flags "--input" patch)))
+              (invoke (string-append #+patch "/bin/patch")
+                      "--force" "--no-backup-if-mismatch"
+                      #+@flags "--input" patch))
 
             (define (first-file directory)
               ;; Return the name of the first file in DIRECTORY.
@@ -546,64 +546,74 @@ specifies modules in scope when evaluating SNIPPET."
                                           #+decomp "/bin"))
 
             ;; SOURCE may be either a directory or a tarball.
-            (and (if (file-is-directory? #+source)
-                     (let* ((store     (%store-directory))
-                            (len       (+ 1 (string-length store)))
-                            (base      (string-drop #+source len))
-                            (dash      (string-index base #\-))
-                            (directory (string-drop base (+ 1 dash))))
-                       (mkdir directory)
-                       (copy-recursively #+source directory)
-                       #t)
-                     #+(if (string=? decompression-type "unzip")
-                           #~(zero? (system* "unzip" #+source))
-                           #~(zero? (system* (string-append #+tar "/bin/tar")
-                                             "xvf" #+source))))
-                 (let ((directory (first-file ".")))
-                   (format (current-error-port)
-                           "source is under '~a'~%" directory)
-                   (chdir directory)
-
-                   (and (every apply-patch '#+patches)
-                        #+@(if snippet
-                               #~((let ((module (make-fresh-user-module)))
-                                    (module-use-interfaces!
-                                     module
-                                     (map resolve-interface '#+modules))
-                                    ((@ (system base compile) compile)
-                                     '#+snippet
-                                     #:to 'value
-                                     #:opts %auto-compilation-options
-                                     #:env module)))
-                               #~())
-
-                        (begin (chdir "..") #t)
-
-                        (unless tar-supports-sort?
-                          (call-with-output-file ".file_list"
-                            (lambda (port)
-                              (for-each (lambda (name)
-                                          (format port "~a~%" name))
-                                        (find-files directory
-                                                    #:directories? #t
-                                                    #:fail-on-error? #t)))))
-                        (zero? (apply system*
-                                      (string-append #+tar "/bin/tar")
-                                      "cvf" #$output
-                                      ;; The bootstrap xz does not support
-                                      ;; threaded compression (introduced in
-                                      ;; 5.2.0), but it ignores the extra flag.
-                                      (string-append "--use-compress-program="
-                                                     #+xz "/bin/xz --threads=0")
-                                      ;; avoid non-determinism in the archive
-                                      "--mtime=@0"
-                                      "--owner=root:0"
-                                      "--group=root:0"
-                                      (if tar-supports-sort?
-                                          `("--sort=name"
-                                            ,directory)
-                                          '("--no-recursion"
-                                            "--files-from=.file_list"))))))))))
+            (if (file-is-directory? #+source)
+                (let* ((store     (%store-directory))
+                       (len       (+ 1 (string-length store)))
+                       (base      (string-drop #+source len))
+                       (dash      (string-index base #\-))
+                       (directory (string-drop base (+ 1 dash))))
+                  (mkdir directory)
+                  (copy-recursively #+source directory))
+                #+(if (string=? decompression-type "unzip")
+                      #~(invoke "unzip" #+source)
+                      #~(invoke (string-append #+tar "/bin/tar")
+                                "xvf" #+source)))
+
+            (let ((directory (first-file ".")))
+              (format (current-error-port)
+                      "source is under '~a'~%" directory)
+              (chdir directory)
+
+              (for-each apply-patch '#+patches)
+
+              (let ((result #+(if snippet
+                                  #~(let ((module (make-fresh-user-module)))
+                                      (module-use-interfaces!
+                                       module
+                                       (map resolve-interface '#+modules))
+                                      ((@ (system base compile) compile)
+                                       '#+snippet
+                                       #:to 'value
+                                       #:opts %auto-compilation-options
+                                       #:env module))
+                                  #~#t)))
+                ;; Issue a warning unless the result is #t.
+                (unless (eqv? result #t)
+                  (format (current-error-port) "\
+## WARNING: the snippet returned `~s'.  Return values other than #t
+## are deprecated.  Please migrate this package so that its snippet
+## reports errors by raising an exception, and otherwise returns #t.~%"
+                          result))
+                (unless result
+                  (error "snippet returned false")))
+
+              (chdir "..")
+
+              (unless tar-supports-sort?
+                (call-with-output-file ".file_list"
+                  (lambda (port)
+                    (for-each (lambda (name)
+                                (format port "~a~%" name))
+                              (find-files directory
+                                          #:directories? #t
+                                          #:fail-on-error? #t)))))
+              (apply invoke
+                     (string-append #+tar "/bin/tar")
+                     "cvf" #$output
+                     ;; The bootstrap xz does not support
+                     ;; threaded compression (introduced in
+                     ;; 5.2.0), but it ignores the extra flag.
+                     (string-append "--use-compress-program="
+                                    #+xz "/bin/xz --threads=0")
+                     ;; avoid non-determinism in the archive
+                     "--mtime=@0"
+                     "--owner=root:0"
+                     "--group=root:0"
+                     (if tar-supports-sort?
+                         `("--sort=name"
+                           ,directory)
+                         '("--no-recursion"
+                           "--files-from=.file_list")))))))
 
     (let ((name (tarxz-name original-file-name)))
       (gexp->derivation name build
diff --git a/guix/ui.scm b/guix/ui.scm
index cb49a15c4d..c6d0704cfa 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2013, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
@@ -41,6 +41,12 @@
   #:use-module ((guix licenses) #:select (license? license-name))
   #:use-module ((guix build syscalls)
                 #:select (free-disk-space terminal-columns))
+  #:use-module ((guix build utils)
+                #:select (invoke-error? invoke-error-program
+                                        invoke-error-arguments
+                                        invoke-error-exit-status
+                                        invoke-error-term-signal
+                                        invoke-error-stop-signal))
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-19)
@@ -636,6 +642,16 @@ or remove one of them from the profile.")
 directories:~{ ~a~}~%")
                     (file-search-error-file-name c)
                     (file-search-error-search-path c)))
+            ((invoke-error? c)
+             (leave (G_ "program exited\
+~@[ with non-zero exit status ~a~]\
+~@[ terminated by signal ~a~]\
+~@[ stopped by signal ~a~]: ~s~%")
+                    (invoke-error-exit-status c)
+                    (invoke-error-term-signal c)
+                    (invoke-error-stop-signal c)
+                    (cons (invoke-error-program c)
+                          (invoke-error-arguments c))))
             ((and (error-location? c) (message-condition? c))
              (format (current-error-port)
                      (G_ "~a: error: ~a~%")