GNU bug report logs - #27898
Clean-up of package phases

Previous Next

Package: guix-patches;

Reported by: Kei Kebreau <kei <at> openmailbox.org>

Date: Tue, 1 Aug 2017 07:20:02 UTC

Severity: normal

Done: Ricardo Wurmus <rekado <at> elephly.net>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 27898 in the body.
You can then email your comments to 27898 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Tue, 01 Aug 2017 07:20:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Kei Kebreau <kei <at> openmailbox.org>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 01 Aug 2017 07:20:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Kei Kebreau <kei <at> openmailbox.org>
To: guix-patches <at> gnu.org
Subject: Clean-up of package phases
Date: Tue, 01 Aug 2017 03:18:01 -0400
[Message part 1 (text/plain, inline)]
These patches address some issues with our package definitions, as
partially discussed with Mark on guix-devel. I believe I've corrected
all the cases that are fit for Guix's master branch.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Tue, 01 Aug 2017 07:23:01 GMT) Full text and rfc822 format available.

Message #8 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Kei Kebreau <kei <at> openmailbox.org>
To: 27898 <at> debbugs.gnu.org
Cc: Kei Kebreau <kei <at> openmailbox.org>
Subject: [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Tue,  1 Aug 2017 03:21:52 -0400
* gnu/packages/admin.scm (mingetty, clusterssh, sudo, wpa-supplicant-minimal,
wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
'modify-phases' syntax.
* gnu/packages/algebra.scm (arb)[arguments]: Likewise.
* gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
* gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
* gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
* gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
* gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
* gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
* gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
* gnu/packages/conky.scm (conky)[arguments]: Likewise.
* gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
* gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
* gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
* gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
* gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
* gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
* gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
* gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
* gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
* gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
* gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
* gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
* gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
* gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
* gnu/packages/gl.scm (glew)[arguments]: Likewise.
* gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
* gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
* gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
* gnu/packages/graphics.scm (agg)[arguments]: Likewise.
* gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present, python2-pycairo)
[arguments]: Likewise.
* gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
* gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
* gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
* gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
[arguments]: Likewise.
* gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
* gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
* gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
* gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
module-init-tools)[arguments]: Likewise.
* gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
* gnu/packages/lout.scm (lout)[arguments]: Likewise.
* gnu/packages/lua.scm (luajit)[arguments]: Likewise.
* gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
* gnu/packages/mail.scm (exim)[arguments]: Likewise.
* gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
* gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
suitesparse)[arguments]: Likewise.
* gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
* gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
* gnu/packages/music.scm (solfege)[arguments]: Likewise.
* gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
* gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
Likewise.
* gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
* gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
Likewise.
* gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
* gnu/packages/popt.scm (popt)[arguments]: Likewise.
* gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
Likewise.
* gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
* gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
python-sqlalchemy, python-docopt)[arguments]: Likewise.
* gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
* gnu/packages/regex.scm (tre)[arguments]: Likewise.
* gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
* gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
* gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
* gnu/packages/scheme.scm (racket)[arguments]: Likewise.
* gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
* gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
* gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
* gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
* gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
* gnu/packages/tcl.scm (expect)[arguments]: Likewise.
* gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
* gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
Likewise.
* gnu/packages/time.scm (time)[arguments]: Likewise.
* gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
* gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
* gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
* gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
* gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
* gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
* gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
* gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
* gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
* gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
* gnu/packages/xorg.scm (imake)[arguments]: Likewise.
---
 gnu/packages/admin.scm            | 294 ++++++++++++++---------------
 gnu/packages/algebra.scm          |  31 ++--
 gnu/packages/apr.scm              |  25 ++-
 gnu/packages/audio.scm            | 193 +++++++++----------
 gnu/packages/backup.scm           |  33 ++--
 gnu/packages/bioinformatics.scm   | 250 +++++++++++++------------
 gnu/packages/bittorrent.scm       |  33 ++--
 gnu/packages/cdrom.scm            |   2 +-
 gnu/packages/compression.scm      |  16 +-
 gnu/packages/conky.scm            |  31 ++--
 gnu/packages/databases.scm        | 102 +++++-----
 gnu/packages/debug.scm            |  70 +++----
 gnu/packages/display-managers.scm |  22 +--
 gnu/packages/dns.scm              |   2 +-
 gnu/packages/docbook.scm          |  26 +--
 gnu/packages/emacs.scm            |  74 ++++----
 gnu/packages/engineering.scm      |  43 +++--
 gnu/packages/firmware.scm         |  48 ++---
 gnu/packages/flashing-tools.scm   |  21 +--
 gnu/packages/fltk.scm             |  42 ++---
 gnu/packages/freedesktop.scm      |  33 ++--
 gnu/packages/gd.scm               |  19 +-
 gnu/packages/gimp.scm             |  30 +--
 gnu/packages/gkrellm.scm          |   4 +-
 gnu/packages/gl.scm               |   2 +-
 gnu/packages/glib.scm             |  33 ++--
 gnu/packages/gnome.scm            | 145 +++++++--------
 gnu/packages/gprolog.scm          |  17 +-
 gnu/packages/gps.scm              |  19 +-
 gnu/packages/graphics.scm         |  13 +-
 gnu/packages/gtk.scm              |  80 ++++----
 gnu/packages/guile-wm.scm         |  81 ++++----
 gnu/packages/guile.scm            |  36 ++--
 gnu/packages/hugs.scm             |  61 +++---
 gnu/packages/hurd.scm             |  60 +++---
 gnu/packages/image-viewers.scm    |  14 +-
 gnu/packages/libcanberra.scm      |  18 +-
 gnu/packages/libsigsegv.scm       |  13 +-
 gnu/packages/linux.scm            | 379 +++++++++++++++++++-------------------
 gnu/packages/lisp.scm             |  61 +++---
 gnu/packages/lout.scm             | 142 +++++++-------
 gnu/packages/lua.scm              |   2 +-
 gnu/packages/machine-learning.scm |  88 +++++----
 gnu/packages/mail.scm             |  90 ++++-----
 gnu/packages/man.scm              |   4 +-
 gnu/packages/maths.scm            | 119 ++++++------
 gnu/packages/messaging.scm        |  27 ++-
 gnu/packages/mp3.scm              |  87 ++++-----
 gnu/packages/music.scm            | 102 +++++-----
 gnu/packages/noweb.scm            |  79 ++++----
 gnu/packages/patchutils.scm       | 120 ++++++------
 gnu/packages/pdf.scm              |  69 +++----
 gnu/packages/perl.scm             |  31 ++--
 gnu/packages/photo.scm            |  15 +-
 gnu/packages/popt.scm             |  17 +-
 gnu/packages/pretty-print.scm     |  65 +++----
 gnu/packages/pumpio.scm           |  32 ++--
 gnu/packages/python.scm           |  47 +++--
 gnu/packages/rdf.scm              |  40 ++--
 gnu/packages/regex.scm            |  20 +-
 gnu/packages/rrdtool.scm          |  19 +-
 gnu/packages/ruby.scm             |  40 ++--
 gnu/packages/sawfish.scm          |  50 ++---
 gnu/packages/scheme.scm           | 134 +++++++-------
 gnu/packages/sdl.scm              |  46 ++---
 gnu/packages/serveez.scm          |  15 +-
 gnu/packages/skribilo.scm         |  29 +--
 gnu/packages/smalltalk.scm        |  17 +-
 gnu/packages/suckless.scm         |   4 +-
 gnu/packages/tcl.scm              |  15 +-
 gnu/packages/telephony.scm        |  12 +-
 gnu/packages/textutils.scm        |  25 ++-
 gnu/packages/time.scm             |  19 +-
 gnu/packages/tor.scm              |  14 +-
 gnu/packages/uucp.scm             |  24 +--
 gnu/packages/video.scm            |   9 +-
 gnu/packages/web-browsers.scm     |  10 +-
 gnu/packages/web.scm              |  15 +-
 gnu/packages/wicd.scm             | 214 +++++++++++----------
 gnu/packages/wm.scm               |   2 +-
 gnu/packages/xdisorg.scm          |   5 +-
 gnu/packages/xfce.scm             |  23 +--
 gnu/packages/xfig.scm             |  75 ++++----
 gnu/packages/xorg.scm             |  39 ++--
 84 files changed, 2253 insertions(+), 2274 deletions(-)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 9729a30fc..afcf9dcae 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -361,32 +361,33 @@ login, passwd, su, groupadd, and useradd.")
                "05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-replace 'configure
-                               (lambda* (#:key inputs outputs
-                                         #:allow-other-keys)
-                                 (let* ((out    (assoc-ref outputs "out"))
-                                        (man8   (string-append
-                                                 out "/share/man/man8"))
-                                        (sbin   (string-append out "/sbin"))
-                                        (shadow (assoc-ref inputs "shadow"))
-                                        (login  (string-append shadow
-                                                               "/bin/login")))
-                                   (substitute* "Makefile"
-                                     (("^SBINDIR.*")
-                                      (string-append "SBINDIR = " out
-                                                     "/sbin\n"))
-                                     (("^MANDIR.*")
-                                      (string-append "MANDIR = " out
-                                                     "/share/man/man8\n")))
-
-                                   ;; Pick the right 'login' by default.
-                                   (substitute* "mingetty.c"
-                                     (("\"/bin/login\"")
-                                      (string-append "\"" login "\"")))
-
-                                   (mkdir-p sbin)
-                                   (mkdir-p man8)))
-                               %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (man8   (string-append
+                             out "/share/man/man8"))
+                    (sbin   (string-append out "/sbin"))
+                    (shadow (assoc-ref inputs "shadow"))
+                    (login  (string-append shadow
+                                           "/bin/login")))
+               (substitute* "Makefile"
+                 (("^SBINDIR.*")
+                  (string-append "SBINDIR = " out
+                                 "/sbin\n"))
+                 (("^MANDIR.*")
+                  (string-append "MANDIR = " out
+                                 "/share/man/man8\n")))
+
+               ;; Pick the right 'login' by default.
+               (substitute* "mingetty.c"
+                 (("\"/bin/login\"")
+                  (string-append "\"" login "\"")))
+
+               (mkdir-p sbin)
+               (mkdir-p man8))
+             #t)))
        #:tests? #f))                              ; no tests
     (inputs `(("shadow" ,shadow)))
 
@@ -725,25 +726,25 @@ by bandwidth they use.")
                          ("perl-x11-protocol" ,perl-x11-protocol)))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'install 'set-load-paths
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          ;; Put the perl-tk and perl-x11-protocol modules in the perl inc
-          ;; path for PROG
-          (let* ((out  (assoc-ref outputs "out"))
-                 (prog (string-append out "/bin/cssh"))
-                 (perl-ver ,(package-version perl))
-                 (x11-inc (string-append
-                           (assoc-ref inputs "perl-x11-protocol")
-                           "/lib/perl5/site_perl/" perl-ver))
-                 (tk-inc (string-append
-                          (assoc-ref inputs "perl-tk")
-                          "/lib/perl5/site_perl/" perl-ver
-                          "/x86_64-linux")))
-            (wrap-program
-             prog
-             `("PERL5LIB" ":" prefix (,x11-inc ,tk-inc)))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Put the perl-tk and perl-x11-protocol modules in the perl inc
+             ;; path for PROG
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/cssh"))
+                    (perl-ver ,(package-version perl))
+                    (x11-inc (string-append
+                              (assoc-ref inputs "perl-x11-protocol")
+                              "/lib/perl5/site_perl/" perl-ver))
+                    (tk-inc (string-append
+                             (assoc-ref inputs "perl-tk")
+                             "/lib/perl5/site_perl/" perl-ver
+                             "/x86_64-linux")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" ":" prefix (,x11-inc ,tk-inc))))
+             #t)))))
     ;; The clusterssh.sourceforge.net address requires login to view
     (home-page "https://sourceforge.net/projects/clusterssh/")
     (synopsis "Secure concurrent multi-server terminal control")
@@ -849,29 +850,30 @@ system administrator.")
        ;; Avoid non-determinism; see <http://bugs.gnu.org/21918>.
        #:parallel-build? #f
 
-       #:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda _
-                   (substitute* "src/sudo_usage.h.in"
-                     ;; Do not capture 'configure' arguments since we would
-                     ;; unduly retain references, and also because the
-                     ;; CPPFLAGS above would close the string literal
-                     ;; prematurely.
-                     (("@CONFIGURE_ARGS@") "\"\""))
-                   (substitute* (find-files "." "Makefile\\.in")
-                     (("-o [[:graph:]]+ -g [[:graph:]]+")
-                      ;; Allow installation as non-root.
-                      "")
-                     (("^install: (.*)install-sudoers(.*)" _ before after)
-                      ;; Don't try to create /etc/sudoers.
-                      (string-append "install: " before after "\n"))
-                     (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
-                      ;; Don't try to create /run/sudo.
-                      "$(TMPDIR)/dummy")
-                     (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
-                      ;; Don't try to create /var/db/sudo.
-                      "$(TMPDIR)/dummy")))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* "src/sudo_usage.h.in"
+               ;; Do not capture 'configure' arguments since we would
+               ;; unduly retain references, and also because the
+               ;; CPPFLAGS above would close the string literal
+               ;; prematurely.
+               (("@CONFIGURE_ARGS@") "\"\""))
+             (substitute* (find-files "." "Makefile\\.in")
+               (("-o [[:graph:]]+ -g [[:graph:]]+")
+                ;; Allow installation as non-root.
+                "")
+               (("^install: (.*)install-sudoers(.*)" _ before after)
+                ;; Don't try to create /etc/sudoers.
+                (string-append "install: " before after "\n"))
+               (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
+                ;; Don't try to create /run/sudo.
+                "$(TMPDIR)/dummy")
+               (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
+                ;; Don't try to create /var/db/sudo.
+                "$(TMPDIR)/dummy"))
+             #t)))
 
        ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
        ;; the chroot's /etc/passwd doesn't have it.  Turn off the tests.
@@ -907,13 +909,14 @@ commands and their arguments.")
                 "0l0l5gz3d5j9bqjsbjlfcv4w4jwndllp9fmyai4x9kg6qhs6v4xl"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (chdir "wpa_supplicant")
-                   (copy-file "defconfig" ".config")
-                   (let ((port (open-file ".config" "al")))
-                     (display "
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (chdir "wpa_supplicant")
+             (copy-file "defconfig" ".config")
+             (let ((port (open-file ".config" "al")))
+               (display "
       CONFIG_DEBUG_SYSLOG=y
 
       # Choose GnuTLS (the default is OpenSSL.)
@@ -923,26 +926,24 @@ commands and their arguments.")
       CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
       CONFIG_LIBNL32=y
       CONFIG_READLINE=y\n" port)
-                     (close-port port)))
-
-                 (alist-cons-after
-                  'install 'install-man-pages
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out  (assoc-ref outputs "out"))
-                           (man  (string-append out "/share/man"))
-                           (man5 (string-append man "/man5"))
-                           (man8 (string-append man "/man8")))
-                      (define (copy-man-page target)
-                        (lambda (file)
-                          (install-file file target)))
-
-                      (mkdir-p man5) (mkdir man8)
-                      (for-each (copy-man-page man5)
-                                (find-files "doc/docbook" "\\.5"))
-                      (for-each (copy-man-page man8)
-                                (find-files "doc/docbook" "\\.8"))
-                      #t))
-                  %standard-phases))
+               (close-port port))
+             #t))
+         (add-after 'install 'install-man-pages
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (man  (string-append out "/share/man"))
+                    (man5 (string-append man "/man5"))
+                    (man8 (string-append man "/man8")))
+               (define (copy-man-page target)
+                 (lambda (file)
+                   (install-file file target)))
+
+               (mkdir-p man5) (mkdir man8)
+               (for-each (copy-man-page man5)
+                         (find-files "doc/docbook" "\\.5"))
+               (for-each (copy-man-page man8)
+                         (find-files "doc/docbook" "\\.8"))
+               #t))))
 
       #:make-flags (list "CC=gcc"
                          (string-append "BINDIR=" (assoc-ref %outputs "out")
@@ -979,25 +980,24 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
     (arguments
      (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
        ((#:phases phases)
-        `(alist-cons-after
-          'configure 'configure-for-dbus
-          (lambda _
-            (let ((port (open-file ".config" "al")))
-              (display "
+        `(modify-phases ,phases
+           (add-after 'configure 'configure-for-dbus
+             (lambda _
+               (let ((port (open-file ".config" "al")))
+                 (display "
       CONFIG_CTRL_IFACE_DBUS=y
       CONFIG_CTRL_IFACE_DBUS_NEW=y
       CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
-              (close-port port))
-            #t)
-          (alist-cons-after
-           'install-man-pages 'install-dbus-conf
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (dir (string-append out "/etc/dbus-1/system.d")))
-               (mkdir-p dir)
-               (copy-file "dbus/dbus-wpa_supplicant.conf"
-                          (string-append dir "/wpa_supplicant.conf"))))
-           ,phases)))))))
+                 (close-port port))
+               #t))
+           (add-after 'install-man-pages 'install-dbus-conf
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (dir (string-append out "/etc/dbus-1/system.d")))
+                 (mkdir-p dir)
+                 (copy-file "dbus/dbus-wpa_supplicant.conf"
+                            (string-append dir "/wpa_supplicant.conf")))
+               #t))))))))
 
 (define-public wakelan
   (package
@@ -1013,22 +1013,22 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
                 "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (mkdir-p (string-append out "/bin"))
-                     (mkdir-p (string-append out "/share/man/man1"))
-
-                     ;; It's an old configure script that doesn't understand
-                     ;; the extra options we pass.
-                     (setenv "CONFIG_SHELL" (which "bash"))
-                     (zero?
-                      (system* "./configure"
-                               (string-append "--prefix=" out)
-                               (string-append "--mandir=" out
-                                              "/share/man")))))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/share/man/man1"))
+
+               ;; It's an old configure script that doesn't understand
+               ;; the extra options we pass.
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure"
+                         (string-append "--prefix=" out)
+                         (string-append "--mandir=" out
+                                        "/share/man")))))))
        #:tests? #f))
     (home-page "http://kernel.org")               ; really, no home page
     (synopsis "Send a wake-on-LAN packet")
@@ -1087,7 +1087,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                           "HOST=_LINUX"
                           "OPT_CFLAGS=-Wall -fno-strict-aliasing")
        #:tests? #f  ; no 'check' target.
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://acpica.org/")
     (synopsis "Tools for the development and debug of ACPI tables")
     (description
@@ -1197,7 +1197,7 @@ recover lost partitions and/or make non-booting disks bootable again.")
                (base32 "04kviw799qxly08zb8n5mgxfd96gyis6x69q2qiw86jnh87c4mv9"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f                      ; no check target
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                                (list (string-append "prefix=" out)))))
@@ -1226,23 +1226,23 @@ environment variable is set and output is to tty.")
                            "#!$SHELL")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'build 'patch-/bin/sh
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; Use the right shell when executing the watcher and
-                   ;; user-provided shell commands.
-                   (let ((bash (assoc-ref inputs "bash")))
-                     (substitute* '("src/direvent.c" "src/progman.c")
-                       (("\"/bin/sh\"")
-                        (string-append "\"" bash "/bin/sh\"")))
-
-                     ;; Adjust the 'shell.at' test accordingly.
-                     (substitute* "tests/testsuite"
-                       (("SHELL=/bin/sh")
-                        (string-append "SHELL=" bash "/bin/sh")))
-
-                     #t))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-/bin/sh
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Use the right shell when executing the watcher and
+             ;; user-provided shell commands.
+             (let ((bash (assoc-ref inputs "bash")))
+               (substitute* '("src/direvent.c" "src/progman.c")
+                 (("\"/bin/sh\"")
+                  (string-append "\"" bash "/bin/sh\"")))
+
+               ;; Adjust the 'shell.at' test accordingly.
+               (substitute* "tests/testsuite"
+                 (("SHELL=/bin/sh")
+                  (string-append "SHELL=" bash "/bin/sh")))
+
+               #t))))))
     (home-page "https://www.gnu.org/software/direvent/")
     (synopsis "Daemon to monitor directories for events such as file removal")
     (description
@@ -1699,7 +1699,7 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
                       (list (string-append "DESTDIR=" out)
                             "prefix=/"))
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs `(("python-2" ,python-2)))
     (synopsis "Versatile resource statistics tool")
     (description "Dstat is a versatile replacement for @command{vmstat},
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index d4405a5bf..f48f1c154 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -333,22 +333,21 @@ fast arithmetic.")
       ("mpfr" ,mpfr)))
    (arguments
     `(#:phases
-        (alist-replace
-         'configure
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((out (assoc-ref outputs "out"))
-                 (flint (assoc-ref inputs "flint"))
-                 (gmp (assoc-ref inputs "gmp"))
-                 (mpfr (assoc-ref inputs "mpfr")))
-             ;; do not pass "--enable-fast-install", which makes the
-             ;; homebrew configure process fail
-             (zero? (system*
-                     "./configure"
-                     (string-append "--prefix=" out)
-                     (string-append "--with-flint=" flint)
-                     (string-append "--with-gmp=" gmp)
-                     (string-append "--with-mpfr=" mpfr)))))
-         %standard-phases)))
+      (modify-phases %standard-phases
+        (replace 'configure
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out"))
+                  (flint (assoc-ref inputs "flint"))
+                  (gmp (assoc-ref inputs "gmp"))
+                  (mpfr (assoc-ref inputs "mpfr")))
+              ;; do not pass "--enable-fast-install", which makes the
+              ;; homebrew configure process fail
+              (zero? (system*
+                      "./configure"
+                      (string-append "--prefix=" out)
+                      (string-append "--with-flint=" flint)
+                      (string-append "--with-gmp=" gmp)
+                      (string-append "--with-mpfr=" mpfr)))))))))
    (synopsis "Arbitrary precision floating-point ball arithmetic")
    (description
     "Arb is a C library for arbitrary-precision floating-point ball
diff --git a/gnu/packages/apr.scm b/gnu/packages/apr.scm
index 17945c039..baadb41b6 100644
--- a/gnu/packages/apr.scm
+++ b/gnu/packages/apr.scm
@@ -80,19 +80,18 @@ around or take advantage of platform-specific deficiencies or features.")
      `(("expat" ,expat)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((out   (assoc-ref outputs "out"))
-                (apr   (assoc-ref inputs  "apr"))
-                (expat (assoc-ref inputs  "expat")))
-            (setenv "CONFIG_SHELL" (which "bash"))
-            (zero?
-             (system* "./configure"
-                      (string-append "--prefix=" out)
-                      (string-append "--with-apr=" apr)
-                      (string-append "--with-expat=" expat)))))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out   (assoc-ref outputs "out"))
+                   (apr   (assoc-ref inputs  "apr"))
+                   (expat (assoc-ref inputs  "expat")))
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure"
+                         (string-append "--prefix=" out)
+                         (string-append "--with-apr=" apr)
+                         (string-append "--with-expat=" expat)))))))
 
        ;; There are race conditions during 'make check'.  Typically, the
        ;; 'testall' executable is not built yet by the time 'make check' tries
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 40700cae3..e756fbf7c 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -623,23 +623,22 @@ language and software synthesizer.")
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-and-enter-directory
-        (lambda _
-          (substitute* "libs/Makefile"
-            (("/sbin/ldconfig") "true")
-            (("^LIBDIR =.*") "LIBDIR = lib\n"))
-          (chdir "libs")
-          #t)
-        (alist-cons-after
-         'install
-         'install-symlink
-         (lambda _
-           (symlink "libclalsadrv.so"
-                    (string-append (assoc-ref %outputs "out")
-                                   "/lib/libclalsadrv.so.2")))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-makefile-and-enter-directory
+           (lambda _
+             (substitute* "libs/Makefile"
+               (("/sbin/ldconfig") "true")
+               (("^LIBDIR =.*") "LIBDIR = lib\n"))
+             (chdir "libs")
+             #t))
+         (add-after 'install 'install-symlink
+           (lambda _
+             (symlink "libclalsadrv.so"
+                      (string-append (assoc-ref %outputs "out")
+                                     "/lib/libclalsadrv.so.2"))
+             #t))
          ;; no configure script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("fftw" ,fftw)))
@@ -978,11 +977,9 @@ follower.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack
-        'remove-broken-symlinks
-        (lambda _ (delete-file-recursively "m4") #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-broken-symlinks
+           (lambda _ (delete-file-recursively "m4") #t)))))
     (inputs
      `(("libsndfile" ,libsndfile)
        ("alsa-lib" ,alsa-lib)
@@ -1021,12 +1018,11 @@ also play midifiles using a Soundfont.")
        ("unzip" ,unzip)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'bootstrap
-        (lambda _
-          (substitute* "bootstrap" (("\r\n") "\n"))
-          (zero? (system* "sh" "bootstrap")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _
+             (substitute* "bootstrap" (("\r\n") "\n"))
+             (zero? (system* "sh" "bootstrap")))))))
     (home-page "http://www.audiocoding.com/faad2.html")
     (synopsis "MPEG-4 and MPEG-2 AAC decoder")
     (description
@@ -1680,7 +1676,7 @@ software.")
                      "TYPE=mdaPiano"
                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:tests? #f ; no check target
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("lv2" ,lv2)
        ("lvtk" ,lvtk)))
@@ -1703,7 +1699,7 @@ software.")
                      "TYPE=mdaEPiano"
                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:tests? #f ; no check target
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://elephly.net/lv2/mdaepiano.html")
     (synopsis "LV2 port of the mda EPiano plugin")
     (description "An LV2 port of the mda EPiano VSTi.")))
@@ -2096,19 +2092,19 @@ Suil currently supports every combination of Gtk 2, Qt 4, and X11.")
              (string-append "--with-default-path="
                             (assoc-ref %outputs "out") "/etc/timidity"))
        #:phases
-       (alist-cons-after
-        'install 'install-config
-        (lambda _
-          (let ((out (string-append (assoc-ref %outputs "out")
-                                    "/etc/timidity")))
-            (mkdir-p out)
-            (call-with-output-file
-                (string-append out "/timidity.cfg")
-              (lambda (port)
-                (format port (string-append "source "
-                                            (assoc-ref %build-inputs "freepats")
-                                            "/share/freepats/freepats.cfg"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'install-config
+           (lambda _
+             (let ((out (string-append (assoc-ref %outputs "out")
+                                       "/etc/timidity")))
+               (mkdir-p out)
+               (call-with-output-file
+                   (string-append out "/timidity.cfg")
+                 (lambda (port)
+                   (format port (string-append "source "
+                                               (assoc-ref %build-inputs "freepats")
+                                               "/share/freepats/freepats.cfg")))))
+             #t)))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("ao" ,ao)
@@ -2147,16 +2143,15 @@ disks as various audio file formats.")
     (arguments
      `(#:tests? #f                      ; no check target
        #:phases
-       (alist-cons-after
-        'install 'remove-libvamp-hostsdk.la
-        (lambda* (#:key outputs #:allow-other-keys)
-          ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
-          (for-each delete-file
-                    (let ((out (assoc-ref outputs "out")))
-                      (list (string-append out "/lib/libvamp-sdk.la")
-                            (string-append out "/lib/libvamp-hostsdk.la"))))
-          #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'remove-libvamp-hostsdk.la
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
+             (for-each delete-file
+                       (let ((out (assoc-ref outputs "out")))
+                         (list (string-append out "/lib/libvamp-sdk.la")
+                               (string-append out "/lib/libvamp-hostsdk.la"))))
+             #t)))))
     (inputs
      `(("libsndfile" ,libsndfile)))
     (native-inputs
@@ -2318,11 +2313,10 @@ Tracker 3 S3M and Impulse Tracker IT files.")
        ("file" ,file)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'bootstrap
-        (lambda _
-          (zero? (system* "sh" "bootstrap")))
-        %standard-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")
@@ -2456,11 +2450,10 @@ portions of LAME.")
      '(#:phases
        ;; Autoreconf is necessary because the audacity-compat patch modifies
        ;; .in files.
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _
-          (zero? (system* "autoreconf" "-vif")))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _
+             (zero? (system* "autoreconf" "-vif")))))
        #:tests? #f))                    ;no 'check' target
     (home-page "http://www.portaudio.com/")
     (synopsis "Audio I/O library")
@@ -2524,14 +2517,13 @@ synthesizer written in C++.")
        ("pulseaudio" ,pulseaudio)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (setenv "CC" "gcc")
-          (zero?
-           (system* "./configure"
-                    (string-append "--prefix=" (assoc-ref outputs "out")))))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "CC" "gcc")
+             (zero?
+              (system* "./configure"
+                       (string-append "--prefix=" (assoc-ref outputs "out")))))))
        ;; No 'check' target.
        #:tests? #f))
     (home-page "http://themaister.net/rsound.html")
@@ -2598,22 +2590,22 @@ result.")
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-and-enter-directory
-        (lambda _
-          (substitute* "libs/Makefile"
-            (("ldconfig") "true")
-            (("^LIBDIR =.*") "LIBDIR = lib\n"))
-          (chdir "libs") #t)
-        (alist-cons-after
-         'install
-         'install-symlink
-         (lambda _
-           (symlink "libzita-convolver.so"
-                    (string-append (assoc-ref %outputs "out")
-                                   "/lib/libzita-convolver.so.3")))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-makefile-and-enter-directory
+           (lambda _
+             (substitute* "libs/Makefile"
+               (("ldconfig") "true")
+               (("^LIBDIR =.*") "LIBDIR = lib\n"))
+             (chdir "libs")
+             #t))
+         (add-after 'install 'install-symlink
+           (lambda _
+             (symlink "libzita-convolver.so"
+                      (string-append (assoc-ref %outputs "out")
+                                     "/lib/libzita-convolver.so.3"))
+             #t))
          ;; no configure script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs `(("fftwf" ,fftwf)))
     (home-page "http://kokkinizita.linuxaudio.org")
     (synopsis "Fast, partitioned convolution engine library")
@@ -2688,23 +2680,22 @@ provide high-quality sample rate conversion.")
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-and-enter-directory
-        (lambda _
-          (substitute* "libs/Makefile"
-            (("ldconfig") "true")
-            (("^LIBDIR =.*") "LIBDIR = lib\n"))
-          (chdir "libs")
-          #t)
-        (alist-cons-after
-         'install
-         'install-symlink
-         (lambda _
-           (symlink "libzita-alsa-pcmi.so"
-                    (string-append (assoc-ref %outputs "out")
-                                   "/lib/libzita-alsa-pcmi.so.0")))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-makefile-and-enter-directory
+           (lambda _
+             (substitute* "libs/Makefile"
+               (("ldconfig") "true")
+               (("^LIBDIR =.*") "LIBDIR = lib\n"))
+             (chdir "libs")
+             #t))
+         (add-after 'install 'install-symlink
+           (lambda _
+             (symlink "libzita-alsa-pcmi.so"
+                      (string-append (assoc-ref %outputs "out")
+                                     "/lib/libzita-alsa-pcmi.so.0"))
+             #t))
          ;; no configure script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("fftw" ,fftw)))
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index f9a537d71..df3e683d6 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -293,20 +293,20 @@ random access nor for in-place modification.")
        ("nettle" ,nettle)))
     (arguments
      `(#:parallel-build? #f             ;race conditions
-       #:phases (alist-cons-before
-                 'build 'remove-Werror
-                 ;; rdup uses a deprecated function from libarchive
-                 (lambda _
-                   (substitute* "GNUmakefile"
-                     (("^(CFLAGS=.*)-Werror" _ front) front)))
-                 (alist-cons-before
-                  'check 'pre-check
-                  (lambda _
-                    (setenv "HOME" (getcwd))
-                    (substitute* "testsuite/rdup/rdup.rdup-up-t-with-file.exp"
-                      (("/bin/cat") (which "cat"))))
-
-                  %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'remove-Werror
+           ;; rdup uses a deprecated function from libarchive
+           (lambda _
+             (substitute* "GNUmakefile"
+               (("^(CFLAGS=.*)-Werror" _ front) front))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (setenv "HOME" (getcwd))
+             (substitute* "testsuite/rdup/rdup.rdup-up-t-with-file.exp"
+               (("/bin/cat") (which "cat")))
+             #t)))))
     (home-page "http://archive.miek.nl/projects/rdup/index.html")
     (synopsis "Provide a list of files to backup")
     (description
@@ -336,9 +336,8 @@ list and implement the backup strategy.")
                       "CC=gcc")
        #:tests? #f                      ;test input not distributed
        #:phases
-       (alist-delete
-        'configure                      ;no configure phase
-        %standard-phases)))
+       ;; no configure phase
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://viric.name/cgi-bin/btar/doc/trunk/doc/home.wiki")
     (synopsis "Tar-compatible archiver")
     (description
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 614a7d407..02250dfaf 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -366,32 +366,33 @@ transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed.")
      '(#:tests? #f
        #:make-flags (list (string-append "BINDIR=" %output "/bin"))
        #:phases
-       (alist-cons-after
-         'unpack 'unpack-tarballs
-         (lambda _
-           ;; FIXME: Bedops includes tarballs of minimally patched upstream
-           ;; libraries jansson, zlib, and bzip2.  We cannot just use stock
-           ;; libraries because at least one of the libraries (zlib) is
-           ;; patched to add a C++ function definition (deflateInit2cpp).
-           ;; Until the Bedops developers offer a way to link against system
-           ;; libraries we have to build the in-tree copies of these three
-           ;; libraries.
-
-           ;; See upstream discussion:
-           ;; https://github.com/bedops/bedops/issues/124
-
-           ;; Unpack the tarballs to benefit from shebang patching.
-           (with-directory-excursion "third-party"
-             (and (zero? (system* "tar" "xvf" "jansson-2.6.tar.bz2"))
-                  (zero? (system* "tar" "xvf" "zlib-1.2.7.tar.bz2"))
-                  (zero? (system* "tar" "xvf" "bzip2-1.0.6.tar.bz2"))))
-           ;; Disable unpacking of tarballs in Makefile.
-           (substitute* "system.mk/Makefile.linux"
-             (("^\tbzcat .*") "\t <at> echo \"not unpacking\"\n")
-             (("\\./configure") "CONFIG_SHELL=bash ./configure"))
-           (substitute* "third-party/zlib-1.2.7/Makefile.in"
-             (("^SHELL=.*$") "SHELL=bash\n")))
-         (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-tarballs
+           (lambda _
+             ;; FIXME: Bedops includes tarballs of minimally patched upstream
+             ;; libraries jansson, zlib, and bzip2.  We cannot just use stock
+             ;; libraries because at least one of the libraries (zlib) is
+             ;; patched to add a C++ function definition (deflateInit2cpp).
+             ;; Until the Bedops developers offer a way to link against system
+             ;; libraries we have to build the in-tree copies of these three
+             ;; libraries.
+
+             ;; See upstream discussion:
+             ;; https://github.com/bedops/bedops/issues/124
+
+             ;; Unpack the tarballs to benefit from shebang patching.
+             (with-directory-excursion "third-party"
+               (and (zero? (system* "tar" "xvf" "jansson-2.6.tar.bz2"))
+                    (zero? (system* "tar" "xvf" "zlib-1.2.7.tar.bz2"))
+                    (zero? (system* "tar" "xvf" "bzip2-1.0.6.tar.bz2"))))
+             ;; Disable unpacking of tarballs in Makefile.
+             (substitute* "system.mk/Makefile.linux"
+               (("^\tbzcat .*") "\t <at> echo \"not unpacking\"\n")
+               (("\\./configure") "CONFIG_SHELL=bash ./configure"))
+             (substitute* "third-party/zlib-1.2.7/Makefile.in"
+               (("^SHELL=.*$") "SHELL=bash\n"))
+             #t))
+         (delete 'configure))))
     (home-page "https://github.com/bedops/bedops")
     (synopsis "Tools for high-performance genomic feature operations")
     (description
@@ -1322,20 +1323,21 @@ splice junctions between exons.")
     (arguments
      '(#:tests? #f ;no "check" target
        #:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((bin (string-append
-                      (assoc-ref outputs "out") "/bin"))
-                (doc (string-append
-                      (assoc-ref outputs "out") "/share/doc/bwa"))
-                (man (string-append
-                      (assoc-ref outputs "out") "/share/man/man1")))
-            (install-file "bwa" bin)
-            (install-file "README.md" doc)
-            (install-file "bwa.1" man)))
-        ;; no "configure" script
-        (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append
+                         (assoc-ref outputs "out") "/bin"))
+                   (doc (string-append
+                         (assoc-ref outputs "out") "/share/doc/bwa"))
+                   (man (string-append
+                         (assoc-ref outputs "out") "/share/man/man1")))
+               (install-file "bwa" bin)
+               (install-file "README.md" doc)
+               (install-file "bwa.1" man))
+             #t))
+         ;; no "configure" script
+         (delete 'configure))))
     (inputs `(("zlib" ,zlib)))
     ;; Non-portable SSE instructions are used so building fails on platforms
     ;; other than x86_64.
@@ -1812,10 +1814,9 @@ time.")
     (arguments
      `(#:python ,python-2
        #:phases
-       (alist-cons-after
-        'unpack 'set-env
-        (lambda _ (setenv "CROSSMAP_USE_SYSTEM_PYSAM" "1"))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-env
+           (lambda _ (setenv "CROSSMAP_USE_SYSTEM_PYSAM" "1") #t)))))
     (inputs
      `(("python-numpy" ,python2-numpy)
        ("python-pysam" ,python2-pysam)
@@ -2362,19 +2363,18 @@ dynamic programming or a variety of heuristics.")
     (arguments
      `(#:tests? #f ;no "check" target
        #:phases
-       (alist-cons-after
-        'unpack 'use-shared-boost-libs-and-set-bamtools-paths
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "CMakeLists.txt"
-            (("set\\(Boost_USE_STATIC_LIBS ON\\)")
-             "set(Boost_USE_STATIC_LIBS OFF)")
-            (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/bamtools/include")
-             (string-append (assoc-ref inputs "bamtools") "/include/bamtools")))
-          (substitute* "src/CMakeLists.txt"
-            (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/\\.\\./bamtools/lib")
-             (string-append (assoc-ref inputs "bamtools") "/lib/bamtools")))
-          #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-shared-boost-libs-and-set-bamtools-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("set\\(Boost_USE_STATIC_LIBS ON\\)")
+                "set(Boost_USE_STATIC_LIBS OFF)")
+               (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/bamtools/include")
+                (string-append (assoc-ref inputs "bamtools") "/include/bamtools")))
+             (substitute* "src/CMakeLists.txt"
+               (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/\\.\\./bamtools/lib")
+                (string-append (assoc-ref inputs "bamtools") "/lib/bamtools")))
+             #t)))))
     (inputs
      `(("boost" ,boost)
        ("bamtools" ,bamtools)
@@ -2541,15 +2541,15 @@ results.  The FASTX-Toolkit tools perform some of these preprocessing tasks.")
                                          (assoc-ref %outputs "out")
                                          "/bin/"))
        #:phases
-       (alist-replace
-        'check
-        (lambda* (#:key outputs #:allow-other-keys)
-          (setenv "PATH" (string-append
-                          (assoc-ref outputs "out") "/bin:"
-                          (getenv "PATH")))
-          (chdir "../flexbar_v2.5_src/test")
-          (zero? (system* "bash" "flexbar_validate.sh")))
-        (alist-delete 'install %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "PATH" (string-append
+                             (assoc-ref outputs "out") "/bin:"
+                             (getenv "PATH")))
+             (chdir "../flexbar_v2.5_src/test")
+             (zero? (system* "bash" "flexbar_validate.sh"))))
+         (delete 'install))))
     (inputs
      `(("tbb" ,tbb)
        ("zlib" ,zlib)))
@@ -2785,21 +2785,20 @@ association studies (GWAS).")
     (arguments
      `(#:python ,python-2
        #:phases
-       (alist-cons-after
-        'unpack 'generate-from-cython-sources
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          ;; Delete these C files to force fresh generation from pyx sources.
-          (delete-file "grit/sparsify_support_fns.c")
-          (delete-file "grit/call_peaks_support_fns.c")
-          (substitute* "setup.py"
-            (("Cython.Setup") "Cython.Build")
-            ;; Add numpy include path to fix compilation
-            (("pyx\", \\]")
-             (string-append "pyx\", ], include_dirs = ['"
-                            (assoc-ref inputs "python-numpy")
-                            "/lib/python2.7/site-packages/numpy/core/include/"
-                            "']"))) #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'generate-from-cython-sources
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Delete these C files to force fresh generation from pyx sources.
+             (delete-file "grit/sparsify_support_fns.c")
+             (delete-file "grit/call_peaks_support_fns.c")
+             (substitute* "setup.py"
+               (("Cython.Setup") "Cython.Build")
+               ;; Add numpy include path to fix compilation
+               (("pyx\", \\]")
+                (string-append "pyx\", ], include_dirs = ['"
+                               (assoc-ref inputs "python-numpy")
+                               "/lib/python2.7/site-packages/numpy/core/include/"
+                               "']"))) #t)))))
     (inputs
      `(("python-scipy" ,python2-scipy)
        ("python-numpy" ,python2-numpy)
@@ -2842,28 +2841,29 @@ estimates transcript expression.")
                             '()
                             '("POPCNT_CAPABILITY=0")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-sources
-        (lambda _
-          ;; XXX Cannot use snippet because zip files are not supported
-          (substitute* "Makefile"
-            (("^CC = .*$") "CC = gcc")
-            (("^CPP = .*$") "CPP = g++")
-            ;; replace BUILD_HOST and BUILD_TIME for deterministic build
-            (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
-            (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\""))
-          (substitute* '("hisat-build" "hisat-inspect")
-            (("/usr/bin/env") (which "env"))))
-        (alist-replace
-         'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
-             (for-each (lambda (file)
-                         (install-file file bin))
-                       (find-files
-                        "."
-                        "hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$"))))
-         (alist-delete 'configure %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-sources
+           (lambda _
+             ;; XXX Cannot use snippet because zip files are not supported
+             (substitute* "Makefile"
+               (("^CC = .*$") "CC = gcc")
+               (("^CPP = .*$") "CPP = g++")
+               ;; replace BUILD_HOST and BUILD_TIME for deterministic build
+               (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
+               (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\""))
+             (substitute* '("hisat-build" "hisat-inspect")
+               (("/usr/bin/env") (which "env")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+               (for-each (lambda (file)
+                           (install-file file bin))
+                         (find-files
+                          "."
+                          "hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$")))
+             #t))
+         (delete 'configure))))
     (native-inputs
      `(("unzip" ,unzip)))
     (inputs
@@ -4673,19 +4673,17 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
      `(#:parallel-build? #f ; not supported
        #:tests? #f ; no "check" target
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out")))
-            ;; The 'configure' script doesn't recognize things like
-            ;; '--enable-fast-install'.
-            (zero? (system* "./configure"
-                            (string-append "--build-prefix=" (getcwd) "/build")
-                            (string-append "--prefix=" out)))))
-        (alist-cons-after
-         'unpack 'enter-dir
-         (lambda _ (chdir "ngs-sdk") #t)
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; The 'configure' script doesn't recognize things like
+               ;; '--enable-fast-install'.
+               (zero? (system* "./configure"
+                               (string-append "--build-prefix=" (getcwd) "/build")
+                               (string-append "--prefix=" out))))))
+         (add-after 'unpack 'enter-dir
+           (lambda _ (chdir "ngs-sdk") #t)))))
     (native-inputs `(("perl" ,perl)))
     ;; According to the test
     ;;   unless ($MARCH =~ /x86_64/i || $MARCH =~ /i?86/i)
@@ -5435,17 +5433,17 @@ sequences.")
              "-f" "Makefile.Linux"
              "CC=gcc ${CCFLAGS}")
        #:phases
-       (alist-cons-after
-        'unpack 'enter-dir
-        (lambda _ (chdir "src") #t)
-        (alist-replace
-         'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
-             (mkdir-p bin)
-             (copy-recursively "../bin" bin)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'enter-dir
+           (lambda _ (chdir "src") #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+               (mkdir-p bin)
+               (copy-recursively "../bin" bin))
+             #t))
          ;; no "configure" script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs `(("zlib" ,zlib)))
     (home-page "http://bioinf.wehi.edu.au/subread-package/")
     (synopsis "Tool kit for processing next-gen sequencing data")
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 79a87dc8b..9bd89d908 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -74,23 +74,24 @@
                "gui"))                    ; graphical user interface
     (arguments
      '(#:glib-or-gtk-wrap-excluded-outputs '("out")
-       #:phases (alist-cons-after
-                 'install 'move-gui
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Move the GUI to its own output, so that "out" doesn't
-                   ;; depend on GTK+.
-                   (let ((out (assoc-ref outputs "out"))
-                         (gui (assoc-ref outputs "gui")))
-                     (mkdir-p (string-append gui "/bin"))
-                     (rename-file (string-append out "/bin/transmission-gtk")
-                                  (string-append gui
-                                                 "/bin/transmission-gtk"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'move-gui
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Move the GUI to its own output, so that "out" doesn't
+             ;; depend on GTK+.
+             (let ((out (assoc-ref outputs "out"))
+                   (gui (assoc-ref outputs "gui")))
+               (mkdir-p (string-append gui "/bin"))
+               (rename-file (string-append out "/bin/transmission-gtk")
+                            (string-append gui
+                                           "/bin/transmission-gtk"))
 
-                     ;; Move the '.desktop' file as well.
-                     (mkdir (string-append gui "/share"))
-                     (rename-file (string-append out "/share/applications")
-                                  (string-append gui "/share/applications"))))
-                 %standard-phases)))
+               ;; Move the '.desktop' file as well.
+               (mkdir (string-append gui "/share"))
+               (rename-file (string-append out "/share/applications")
+                            (string-append gui "/share/applications")))
+             #t)))))
     (inputs
      `(("inotify-tools" ,inotify-tools)
        ("libevent" ,libevent)
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 704e8ad36..ad72ad0f7 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -454,7 +454,7 @@ the data.")
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
-       #:phases (alist-delete 'configure %standard-phases)
+       #:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX="
                                          (assoc-ref %outputs "out")))))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 92636de7f..2a9ccd167 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -527,14 +527,14 @@ decompressors when faced with corrupted input.")
      `(("which" ,which)))
     (arguments
      `(#:phases
-        (alist-cons-after
-         'patch-source-shebangs 'unpatch-source-shebang
-         ;; revert the patch-shebang phase on a script which is
-         ;; in fact test data
-         (lambda _
-           (substitute* "tests/shar-1.ok"
-             (((which "sh")) "/bin/sh")))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'unpatch-source-shebang
+           ;; revert the patch-shebang phase on a script which is
+           ;; in fact test data
+           (lambda _
+             (substitute* "tests/shar-1.ok"
+               (((which "sh")) "/bin/sh"))
+             #t)))))
     (home-page "https://www.gnu.org/software/sharutils/")
     (synopsis "Archives in shell scripts, uuencode/uudecode")
     (description
diff --git a/gnu/packages/conky.scm b/gnu/packages/conky.scm
index 1f5b38eef..f0f19c5a0 100644
--- a/gnu/packages/conky.scm
+++ b/gnu/packages/conky.scm
@@ -50,22 +50,21 @@
          ;; TODO: add 'ncurses.pc' to the ncurses package.
          "-DBUILD_NCURSES=false")
        #:phases
-       (alist-cons-after
-        'unpack 'add-freetype-to-search-path
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "cmake/ConkyPlatformChecks.cmake"
-            (("set\\(INCLUDE_SEARCH_PATH")
-             (string-append
-              "set(INCLUDE_SEARCH_PATH "
-              (assoc-ref inputs "freetype") "/include/freetype2 ")))
-          #t)
-        (alist-replace
-         'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
-             (mkdir-p bin)
-             (install-file "src/conky" bin)))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'add-freetype-to-search-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "cmake/ConkyPlatformChecks.cmake"
+               (("set\\(INCLUDE_SEARCH_PATH")
+                (string-append
+                 "set(INCLUDE_SEARCH_PATH "
+                 (assoc-ref inputs "freetype") "/include/freetype2 ")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+               (mkdir-p bin)
+               (install-file "src/conky" bin))
+             #t)))))
     (inputs
      `(("freetype" ,freetype)
        ("ncurses" ,ncurses)
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 13efc5edc..655c6db18 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -164,34 +164,33 @@ and provides interfaces to the traditional file format.")
      '(#:tests? #f                            ; no check target available
        #:disallowed-references ("doc")
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out"))
-                (doc (assoc-ref outputs "doc")))
-            ;; '--docdir' is not honored, so we need to patch.
-            (substitute* "dist/Makefile.in"
-              (("docdir[[:blank:]]*=.*")
-               (string-append "docdir = " doc "/share/doc/bdb")))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               ;; '--docdir' is not honored, so we need to patch.
+               (substitute* "dist/Makefile.in"
+                 (("docdir[[:blank:]]*=.*")
+                  (string-append "docdir = " doc "/share/doc/bdb")))
 
-            (zero?
-             (system* "./dist/configure"
-                      (string-append "--prefix=" out)
-                      (string-append "CONFIG_SHELL=" (which "bash"))
-                      (string-append "SHELL=" (which "bash"))
+               (zero?
+                (system* "./dist/configure"
+                         (string-append "--prefix=" out)
+                         (string-append "CONFIG_SHELL=" (which "bash"))
+                         (string-append "SHELL=" (which "bash"))
 
-                      ;; Remove 7 MiB of .a files.
-                      "--disable-static"
+                         ;; Remove 7 MiB of .a files.
+                         "--disable-static"
 
-                      ;; The compatibility mode is needed by some packages,
-                      ;; notably iproute2.
-                      "--enable-compat185"
+                         ;; The compatibility mode is needed by some packages,
+                         ;; notably iproute2.
+                         "--enable-compat185"
 
-                      ;; The following flag is needed so that the inclusion
-                      ;; of db_cxx.h into C++ files works; it leads to
-                      ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
-                      "--enable-cxx"))))
-                 %standard-phases)))
+                         ;; The following flag is needed so that the inclusion
+                         ;; of db_cxx.h into C++ files works; it leads to
+                         ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
+                         "--enable-cxx"))))))))
     (synopsis "Berkeley database")
     (description
      "Berkeley DB is an embeddable database allowing developers the choice of
@@ -219,39 +218,38 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
      `(#:tests? #f                            ; no check target available
        #:disallowed-references ("doc")
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out"))
-                (doc (assoc-ref outputs "doc")))
-            ;; '--docdir' is not honored, so we need to patch.
-            (substitute* "dist/Makefile.in"
-              (("docdir[[:blank:]]*=.*")
-               (string-append "docdir = " doc "/share/doc/bdb")))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               ;; '--docdir' is not honored, so we need to patch.
+               (substitute* "dist/Makefile.in"
+                 (("docdir[[:blank:]]*=.*")
+                  (string-append "docdir = " doc "/share/doc/bdb")))
 
-            (zero?
-             (system* "./dist/configure"
-                      (string-append "--prefix=" out)
-                      (string-append "CONFIG_SHELL=" (which "bash"))
-                      (string-append "SHELL=" (which "bash"))
+               (zero?
+                (system* "./dist/configure"
+                         (string-append "--prefix=" out)
+                         (string-append "CONFIG_SHELL=" (which "bash"))
+                         (string-append "SHELL=" (which "bash"))
 
-                      ;; Bdb doesn't recognize aarch64 as an architecture.
-                      ,@(if (string=? "aarch64-linux" (%current-system))
-                            '("--build=aarch64-unknown-linux-gnu")
-                            '())
+                         ;; Bdb doesn't recognize aarch64 as an architecture.
+                         ,@(if (string=? "aarch64-linux" (%current-system))
+                               '("--build=aarch64-unknown-linux-gnu")
+                               '())
 
-                      ;; Remove 7 MiB of .a files.
-                      "--disable-static"
+                         ;; Remove 7 MiB of .a files.
+                         "--disable-static"
 
-                      ;; The compatibility mode is needed by some packages,
-                      ;; notably iproute2.
-                      "--enable-compat185"
+                         ;; The compatibility mode is needed by some packages,
+                         ;; notably iproute2.
+                         "--enable-compat185"
 
-                      ;; The following flag is needed so that the inclusion
-                      ;; of db_cxx.h into C++ files works; it leads to
-                      ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
-                      "--enable-cxx"))))
-                 %standard-phases)))))
+                         ;; The following flag is needed so that the inclusion
+                         ;; of db_cxx.h into C++ files works; it leads to
+                         ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
+                         "--enable-cxx"))))))))))
 
 (define-public leveldb
   (package
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 34c106141..1dab0085c 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -57,23 +57,24 @@
      `(("perl" ,perl)))
     (arguments
      `(#:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs #:allow-other-keys)
-          ;; Makefile contains no install target
-          (let* ((out (assoc-ref outputs "out"))
-                 (bin (string-append out "/bin"))
-                 (doc (string-append out "/share/doc/delta-" ,version)))
-            (begin
-              (mkdir-p bin)
-              (mkdir-p doc)
-              (for-each (lambda (h)
-                          (install-file h doc))
-                        `("License.txt" ,@(find-files "www" ".*\\.html")))
-              (for-each (lambda (b)
-                          (install-file b bin))
-                        `("delta" "multidelta" "topformflat")))))
-        (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Makefile contains no install target
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/delta-" ,version)))
+               (begin
+                 (mkdir-p bin)
+                 (mkdir-p doc)
+                 (for-each (lambda (h)
+                             (install-file h doc))
+                           `("License.txt" ,@(find-files "www" ".*\\.html")))
+                 (for-each (lambda (b)
+                             (install-file b bin))
+                           `("delta" "multidelta" "topformflat"))))
+             #t))
+         (delete 'configure))))
     (home-page "http://delta.tigris.org/")
     (synopsis "Heuristical file minimizer")
     (description
@@ -113,23 +114,24 @@ program to exhibit a bug.")
        ("sys-cpu"         ,perl-sys-cpu)
        ("term-readkey"    ,perl-term-readkey)))
     (arguments
-     `(#:phases (alist-cons-after
-                 'install 'set-load-paths
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   ;; Tell creduce where to find the perl modules it needs.
-                   (let* ((out (assoc-ref outputs "out"))
-                          (prog (string-append out "/bin/creduce")))
-                     (wrap-program
-                      prog
-                      `("PERL5LIB" ":" prefix
-                        ,(map (lambda (p)
-                                (string-append (assoc-ref inputs p)
-                                               "/lib/perl5/site_perl/"
-                                               ,(package-version perl)))
-                              '("term-readkey"    "exporter-lite"
-                                "file-which"      "getopt-tabular"
-                                "regex-common"    "sys-cpu"))))))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Tell creduce where to find the perl modules it needs.
+             (let* ((out (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/creduce")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" ":" prefix
+                   ,(map (lambda (p)
+                           (string-append (assoc-ref inputs p)
+                                          "/lib/perl5/site_perl/"
+                                          ,(package-version perl)))
+                         '("term-readkey"    "exporter-lite"
+                           "file-which"      "getopt-tabular"
+                           "regex-common"    "sys-cpu")))))
+             #t)))))
     (home-page "http://embed.cs.utah.edu/creduce")
     (synopsis "Reducer for interesting code")
     (description
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 869d6239e..a0ed8367e 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -329,17 +329,17 @@ GTK+, lets you select a desktop session and log in to it.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (arguments
-     '(#:phases (alist-cons-before
-		 'configure 'set-new-etc-location
-		 (lambda _
-		   (substitute* "CMakeLists.txt"
-		     (("/etc")
-		      (string-append (assoc-ref %outputs "out") "/etc"))
-                     (("install.*systemd.*")
-                      ;; The build system's logic here is: if "Linux", then
-                      ;; "systemd".  Strip that.
-                      "")))
-		 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-new-etc-location
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("/etc")
+                (string-append (assoc-ref %outputs "out") "/etc"))
+               (("install.*systemd.*")
+                ;; The build system's logic here is: if "Linux", then
+                ;; "systemd".  Strip that.
+                "")))))
        #:configure-flags '("-DUSE_PAM=yes"
                            "-DUSE_CONSOLEKIT=no")
        #:tests? #f))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index afae4596b..64fdc9c3e 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -75,7 +75,7 @@
      `(("dbus" ,dbus)))
     (arguments
      `(#:phases
-       (alist-delete 'configure %standard-phases)
+       (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "CC=gcc"
                           "COPTS=\"-DHAVE_DBUS\"")
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 189ece01a..4475cc70d 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -232,19 +232,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/emacs.scm b/gnu/packages/emacs.scm
index 02e7a9e90..b77abc778 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -302,14 +302,15 @@ editor (without an X toolkit)" )
                "0phz9d8wjk4p13vqannv0003fwh8qqrp0gfzcs2hgq1mrmv1srss"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (symlink "geiser-install.el"
-                            (string-append (assoc-ref outputs "out")
-                                           "/share/emacs/site-lisp/"
-                                           "geiser-autoloads.el")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (symlink "geiser-install.el"
+                      (string-append (assoc-ref outputs "out")
+                                     "/share/emacs/site-lisp/"
+                                     "geiser-autoloads.el"))
+             #t)))))
     (inputs `(("guile" ,guile-2.0)))
     (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://nongnu.org/geiser/")
@@ -768,25 +769,25 @@ provides an optional IDE-like error list.")
                            (guix build emacs-utils))
        #:tests? #f  ; no check target
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (substitute* "Makefile"
-            (("/usr/local") (assoc-ref outputs "out"))
-            (("/site-lisp/emacs-wget") "/site-lisp")))
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((wget (assoc-ref inputs "wget")))
-             (emacs-substitute-variables "wget.el"
-               ("wget-command" (string-append wget "/bin/wget")))))
-         (alist-cons-after
-          'install 'post-install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (emacs-generate-autoloads
-             "wget" (string-append (assoc-ref outputs "out")
-                                   "/share/emacs/site-lisp/")))
-          %standard-phases)))))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("/usr/local") (assoc-ref outputs "out"))
+               (("/site-lisp/emacs-wget") "/site-lisp"))
+             #t))
+         (add-before 'build 'patch-exec-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((wget (assoc-ref inputs "wget")))
+               (emacs-substitute-variables "wget.el"
+                 ("wget-command" (string-append wget "/bin/wget"))))
+             #t))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (emacs-generate-autoloads
+              "wget" (string-append (assoc-ref outputs "out")
+                                    "/share/emacs/site-lisp/"))
+             #t)))))
     (home-page "http://www.emacswiki.org/emacs/EmacsWget")
     (synopsis "Simple file downloader for Emacs based on wget")
     (description
@@ -980,15 +981,16 @@ within a specified width.  It is useful for displaying long track titles.")
                    "doc_DATA =\n")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Add an autoloads file with the right name for guix.el.
-                   (let* ((out  (assoc-ref outputs "out"))
-                          (site (string-append out "/share/emacs/site-lisp")))
-                     (with-directory-excursion site
-                       (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Add an autoloads file with the right name for guix.el.
+             (let* ((out  (assoc-ref outputs "out"))
+                    (site (string-append out "/share/emacs/site-lisp")))
+               (with-directory-excursion site
+                 (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el")))
+             #t)))))
     (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://savannah.nongnu.org/projects/bbdb/")
     (synopsis "Contact management utility for Emacs")
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 650ac2b89..28d9a718e 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -190,28 +190,27 @@ utilities.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'use-wish8.6
-        (lambda _
-          (substitute* "configure"
-            (("wish85") "wish8.6")))
-        (alist-cons-after
-         'install 'wrap
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           ;; FIXME: Mesa tries to dlopen libudev.so.0 and fails.  Pending a
-           ;; fix of the mesa package we wrap the pcb executable such that
-           ;; Mesa can find libudev.so.0 through LD_LIBRARY_PATH.
-           (let* ((out (assoc-ref outputs "out"))
-                  (path (string-append (assoc-ref inputs "udev") "/lib")))
-             (wrap-program (string-append out "/bin/pcb")
-               `("LD_LIBRARY_PATH" ":" prefix (,path)))))
-         (alist-cons-before
-          'check 'pre-check
-          (lambda _
-            (system "Xvfb :1 &")
-            (setenv "DISPLAY" ":1")
-            #t)
-          %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-wish8.6
+           (lambda _
+             (substitute* "configure"
+               (("wish85") "wish8.6"))
+             #t))
+         (add-after 'install 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; FIXME: Mesa tries to dlopen libudev.so.0 and fails.  Pending a
+             ;; fix of the mesa package we wrap the pcb executable such that
+             ;; Mesa can find libudev.so.0 through LD_LIBRARY_PATH.
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (string-append (assoc-ref inputs "udev") "/lib")))
+               (wrap-program (string-append out "/bin/pcb")
+                 `("LD_LIBRARY_PATH" ":" prefix (,path))))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (system "Xvfb :1 &")
+             (setenv "DISPLAY" ":1")
+             #t)))))
     (inputs
      `(("dbus" ,dbus)
        ("mesa" ,mesa)
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 8d0b82478..21bd8ae7a 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -52,31 +52,31 @@
               (patches (search-patches "ath9k-htc-firmware-objcopy.patch"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (chdir "target_firmware")
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (chdir "target_firmware")
 
-                   ;; 'configure' is a simple script that runs 'cmake' with
-                   ;; the right flags.
-                   (substitute* "configure"
-                     (("^TOOLCHAIN=.*$")
-                      (string-append "TOOLCHAIN="
-                                     (assoc-ref inputs "cross-gcc")
-                                     "\n"))))
-                 (alist-replace
-                  'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out    (assoc-ref outputs "out"))
-                           (fw-dir (string-append out "/lib/firmware")))
-                      (mkdir-p fw-dir)
-                      (for-each (lambda (file)
-                                  (copy-file file
-                                             (string-append fw-dir "/"
-                                                            (basename file))))
-                                (find-files "." "\\.fw$"))
-                      #t))
-                  %standard-phases))
+             ;; 'configure' is a simple script that runs 'cmake' with
+             ;; the right flags.
+             (substitute* "configure"
+               (("^TOOLCHAIN=.*$")
+                (string-append "TOOLCHAIN="
+                               (assoc-ref inputs "cross-gcc")
+                               "\n")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (fw-dir (string-append out "/lib/firmware")))
+               (mkdir-p fw-dir)
+               (for-each (lambda (file)
+                           (copy-file file
+                                      (string-append fw-dir "/"
+                                                     (basename file))))
+                         (find-files "." "\\.fw$"))
+               #t))))
        #:tests? #f))
 
     ;; The firmware is cross-compiled using a "bare bones" compiler (no libc.)
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 127fc795a..e76865798 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -62,17 +62,16 @@
                           "CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no")
        #:tests? #f   ; no 'check' target
        #:phases
-       (alist-delete
-        'configure
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs #:allow-other-keys)
-           (substitute* "dmi.c"
-             (("\"dmidecode\"")
-              (format #f "~S"
-                      (string-append (assoc-ref inputs "dmidecode")
-                                     "/sbin/dmidecode")))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'patch-exec-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "dmi.c"
+               (("\"dmidecode\"")
+                (format #f "~S"
+                        (string-append (assoc-ref inputs "dmidecode")
+                                       "/sbin/dmidecode"))))
+             #t)))))
     (home-page "http://flashrom.org/")
     (synopsis "Identify, read, write, erase, and verify ROM/flash chips")
     (description
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index 27d2f62ca..65336fc62 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -63,27 +63,27 @@
        (list "--enable-shared"
              (string-append "DSOFLAGS=-Wl,-rpath=" %output "/lib"))
        #:phases
-       (alist-cons-before
-        'configure 'patch-makeinclude
-        (lambda _
-          (substitute* "makeinclude.in"
-            (("/bin/sh") (which "sh"))))
-        (alist-cons-after
-         'install 'patch-config
-         ;; Provide -L flags for image libraries when querying fltk-config to
-         ;; avoid propagating inputs.
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (use-modules (srfi srfi-26))
-           (let* ((conf (string-append (assoc-ref outputs "out")
-                                      "/bin/fltk-config"))
-                  (jpeg (assoc-ref inputs "libjpeg"))
-                  (png  (assoc-ref inputs "libpng"))
-                  (zlib (assoc-ref inputs "zlib")))
-             (substitute* conf
-               (("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg"))
-               (("-lpng") (string-append "-L" png "/lib -lpng"))
-               (("-lz") (string-append "-L" zlib "/lib -lz")))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-makeinclude
+           (lambda _
+             (substitute* "makeinclude.in"
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-after 'install 'patch-config
+           ;; Provide -L flags for image libraries when querying fltk-config to
+           ;; avoid propagating inputs.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (use-modules (srfi srfi-26))
+             (let* ((conf (string-append (assoc-ref outputs "out")
+                                         "/bin/fltk-config"))
+                    (jpeg (assoc-ref inputs "libjpeg"))
+                    (png  (assoc-ref inputs "libpng"))
+                    (zlib (assoc-ref inputs "zlib")))
+               (substitute* conf
+                 (("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg"))
+                 (("-lpng") (string-append "-L" png "/lib -lpng"))
+                 (("-lz") (string-append "-L" zlib "/lib -lz"))))
+             #t)))))
     (home-page "http://www.fltk.org")
     (synopsis "3D C++ GUI library")
     (description "FLTK is a C++ GUI toolkit providing modern GUI functionality
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index a9a7e08da..9d8d4152c 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -324,23 +324,22 @@ manager for the current system.")
     (build-system python-build-system)
     (arguments
      '(#:phases
-       (alist-replace
-        'check
-        (lambda* (#:key inputs #:allow-other-keys)
-          (setenv "XDG_DATA_DIRS"
-                  (string-append (assoc-ref inputs "shared-mime-info")
-                                 "/share/"))
-          (substitute* "test/test-icon.py"
-            (("/usr/share/icons/hicolor/index.theme")
-             (string-append (assoc-ref inputs "hicolor-icon-theme")
-                            "/share/icons/hicolor/index.theme")))
-
-          ;; One test fails with:
-          ;; AssertionError: 'x-apple-ios-png' != 'png'
-          (substitute* "test/test-mime.py"
-            (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
-          (zero? (system* "nosetests" "-v")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "XDG_DATA_DIRS"
+                     (string-append (assoc-ref inputs "shared-mime-info")
+                                    "/share/"))
+             (substitute* "test/test-icon.py"
+               (("/usr/share/icons/hicolor/index.theme")
+                (string-append (assoc-ref inputs "hicolor-icon-theme")
+                               "/share/icons/hicolor/index.theme")))
+
+             ;; One test fails with:
+             ;; AssertionError: 'x-apple-ios-png' != 'png'
+             (substitute* "test/test-mime.py"
+               (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
+             (zero? (system* "nosetests" "-v")))))))
     (native-inputs
      `(("shared-mime-info" ,shared-mime-info) ;for tests
        ("hicolor-icon-theme" ,hicolor-icon-theme) ;for tests
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index aac0f9664..5aa83e073 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -125,15 +125,16 @@ most common applications of GD involve website development.")
                                                   (assoc-ref %build-inputs i)))
                                  '("zlib" "png" "ft" "jpeg" "fontconfig"))
        #:tests? #f ;; Failed 1/2 test programs. 1/12 subtests failed.
-       #:phases (alist-cons-after
-                 'configure 'clear-autogenerated-files
-                 (lambda _
-                   ;; This file is autogenerated by its .PLS script at build
-                   ;; time, but file creation fails because that file already
-                   ;; exists in the distribution with non-writable
-                   ;; permissions, so delete it first.
-                   (delete-file "bdf_scripts/bdf2gdfont.pl"))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'clear-autogenerated-files
+           (lambda _
+             ;; This file is autogenerated by its .PLS script at build
+             ;; time, but file creation fails because that file already
+             ;; exists in the distribution with non-writable
+             ;; permissions, so delete it first.
+             (delete-file "bdf_scripts/bdf2gdfont.pl")
+             #t)))))
     (home-page "http://search.cpan.org/dist/GD")
     (synopsis "Perl interface to the GD graphics library")
     (description "GD.pm is an autoloadable interface module for libgd, a
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 362e2047f..74588309c 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -87,22 +87,22 @@ provided as well as the framework to add new color models and data types.")
        ;; all according to the rationale given below.
        #:tests? #f
        #:phases
-       (alist-cons-before
-        'build 'pre-build
-        (lambda _
-          ;; This test program seems to crash on exit. Specifically, whilst
-          ;; g_object_unreffing bufferA and bufferB - This seems to be a bug
-          ;; in the destructor.  This is just a test program so will not have
-          ;; any wider effect, although might be hiding another problem.
-          ;; According to advice received on irc.gimp.org#gegl although 0.2.0
-          ;; is the latest released version, any bug reports against it will
-          ;; be ignored.  So we are on our own.
-          (substitute* "tools/img_cmp.c"
-            (("g_object_unref \\(buffer.\\);") ""))
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda _
+             ;; This test program seems to crash on exit. Specifically, whilst
+             ;; g_object_unreffing bufferA and bufferB - This seems to be a bug
+             ;; in the destructor.  This is just a test program so will not have
+             ;; any wider effect, although might be hiding another problem.
+             ;; According to advice received on irc.gimp.org#gegl although 0.2.0
+             ;; is the latest released version, any bug reports against it will
+             ;; be ignored.  So we are on our own.
+             (substitute* "tools/img_cmp.c"
+               (("g_object_unref \\(buffer.\\);") ""))
 
-          (substitute* "tests/compositions/Makefile"
-            (("/bin/sh") (which "sh"))))
-        %standard-phases)))
+             (substitute* "tests/compositions/Makefile"
+               (("/bin/sh") (which "sh")))
+             #t)))))
     (inputs
      `(("babl" ,babl)
        ("glib" ,glib)
diff --git a/gnu/packages/gkrellm.scm b/gnu/packages/gkrellm.scm
index 68853eb8f..4cc84b3fc 100644
--- a/gnu/packages/gkrellm.scm
+++ b/gnu/packages/gkrellm.scm
@@ -50,9 +50,7 @@
     (arguments
      `(#:tests? #f ; there is no check target
        #:phases
-       (alist-delete
-        'configure
-        %standard-phases)
+       (modify-phases %standard-phases (delete 'configure))
        #:make-flags
        (let ((out (assoc-ref %outputs "out")))
          (list (string-append "INSTALLROOT=" out)
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 08f6187f8..1adb28a45 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -420,7 +420,7 @@ glxgears, glxheads, and glxinfo.")
                   (("/lib64") "/lib")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "GLEW_PREFIX="
                                          (assoc-ref %outputs "out"))
                           (string-append "GLEW_DEST="
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index fcd1daf5e..0ecceb525 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -503,22 +503,23 @@ has an ease of use unmatched by other C++ callback libraries.")
                "1926b3adx903hzvdp8glblsgjyadzqnwgkj8hg605d4wv98m1n0z"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'build 'pre-build
-                 (lambda _
-                   ;; This test uses /etc/fstab as an example file to read
-                   ;; from; choose a better example.
-                   (substitute* "tests/giomm_simple/main.cc"
-                     (("/etc/fstab")
-                      (string-append (getcwd)
-                                     "/tests/giomm_simple/main.cc")))
-
-                   ;; This test does a DNS lookup, and then expects to be able
-                   ;; to open a TLS session; just skip it.
-                   (substitute* "tests/giomm_tls_client/main.cc"
-                     (("Gio::init.*$")
-                      "return 77;\n")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda _
+             ;; This test uses /etc/fstab as an example file to read
+             ;; from; choose a better example.
+             (substitute* "tests/giomm_simple/main.cc"
+               (("/etc/fstab")
+                (string-append (getcwd)
+                               "/tests/giomm_simple/main.cc")))
+
+             ;; This test does a DNS lookup, and then expects to be able
+             ;; to open a TLS session; just skip it.
+             (substitute* "tests/giomm_tls_client/main.cc"
+               (("Gio::init.*$")
+                "return 77;\n"))
+             #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("glib" ,glib "bin")))
     (propagated-inputs
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index d9d3fe793..f40381498 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -800,16 +800,16 @@ for settings shared by various components of the GNOME desktop.")
        ("perl-xml-simple" ,perl-xml-simple)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'install 'set-load-paths
-        ;; Tell 'icon-name-mapping' where XML::Simple is.
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let* ((out  (assoc-ref outputs "out"))
-                 (prog (string-append out "/libexec/icon-name-mapping")))
-            (wrap-program
-             prog
-             `("PERL5LIB" = ,(list (getenv "PERL5LIB"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           ;; Tell 'icon-name-mapping' where XML::Simple is.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/libexec/icon-name-mapping")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" = ,(list (getenv "PERL5LIB")))))
+             #t)))))
     (home-page "http://tango.freedesktop.org/Standard_Icon_Naming_Specification")
     (synopsis
      "Utility to implement the Freedesktop Icon Naming Specification")
@@ -1252,12 +1252,12 @@ functionality was designed to be as reusable and portable as possible.")
        '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
        ;; ... which they then completly ignore !!
        #:phases
-       (alist-cons-before
-        'configure 'ignore-deprecations
-        (lambda _
-          (substitute* "linc2/src/Makefile.in"
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'ignore-deprecations
+           (lambda _
+             (substitute* "linc2/src/Makefile.in"
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t)))))
     (inputs `(("glib" ,glib)
               ("libidl" ,libidl)))
     (native-inputs
@@ -1292,12 +1292,12 @@ featuring mature C, C++ and Python bindings.")
        '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
        ;; ... which they then completly ignore !!
        #:phases
-       (alist-cons-before
-        'configure 'ignore-deprecations
-        (lambda _
-          (substitute* "activation-server/Makefile.in"
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'ignore-deprecations
+           (lambda _
+             (substitute* "activation-server/Makefile.in"
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t)))))
     (inputs `(("popt" ,popt)
               ("libxml2" ,libxml2)))
     ;; The following are Required by the .pc file
@@ -1389,19 +1389,18 @@ designed to be accessed through the MIME functions in GnomeVFS.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-before
-        'configure 'ignore-deprecations
-        (lambda _
-          (substitute* '("libgnomevfs/Makefile.in"
-                         "daemon/Makefile.in")
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
-          #t)
-        (alist-cons-before
-         'configure 'patch-test-async-cancel-to-never-fail
-         (lambda _
-           (substitute* "test/test-async-cancel.c"
-             (("EXIT_FAILURE") "77")))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'ignore-deprecations
+           (lambda _
+             (substitute* '("libgnomevfs/Makefile.in"
+                            "daemon/Makefile.in")
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t))
+         (add-before 'configure 'patch-test-async-cancel-to-never-fail
+           (lambda _
+             (substitute* "test/test-async-cancel.c"
+               (("EXIT_FAILURE") "77"))
+             #t)))))
     (inputs `(("libxml2" ,libxml2)
               ("dbus-glib" ,dbus-glib)
               ("gconf" ,gconf)
@@ -1436,12 +1435,12 @@ to access local and remote files with a single consistent API.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-before
-        'configure 'enable-deprecated
-        (lambda _
-          (substitute* "libgnome/Makefile.in"
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'enable-deprecated
+           (lambda _
+             (substitute* "libgnome/Makefile.in"
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t)))))
     (inputs `(("libxml2" ,libxml2)))
     (native-inputs
      `(("glib" ,glib "bin")             ; for glib-mkenums, etc.
@@ -1676,18 +1675,17 @@ since ca. 2006, when GTK+ itself incorporated printing support.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-before
-        'check 'start-xserver
-        (lambda* (#:key inputs #:allow-other-keys)
-          (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                (disp ":1"))
-
-            (setenv "HOME" (getcwd))
-            (setenv "DISPLAY" disp)
-            ;; There must be a running X server and make check doesn't start one.
-            ;; Therefore we must do it.
-            (zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp)))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server"))
+                   (disp ":1"))
+
+               (setenv "HOME" (getcwd))
+               (setenv "DISPLAY" disp)
+               ;; There must be a running X server and make check doesn't start one.
+               ;; Therefore we must do it.
+               (zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp)))))))))
     ;; Mentioned as Required by the .pc file
     (propagated-inputs `(("libxml2" ,libxml2)))
     (inputs
@@ -1801,14 +1799,13 @@ Hints specification (EWMH).")
                (base32 "05fvzbs5bin05bbsr4dp79aiva3lnq0a3a40zq55i13vnsz70l0n"))))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'fix-pcre-check
-        (lambda _
-          ;; Only glib.h can be included directly.  See
-          ;; https://bugzilla.gnome.org/show_bug.cgi?id=670316
-          (substitute* "configure"
-            (("glib/gregex\\.h") "glib.h")) #t)
-        %standard-phases)
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-pcre-check
+           (lambda _
+             ;; Only glib.h can be included directly.  See
+             ;; https://bugzilla.gnome.org/show_bug.cgi?id=670316
+             (substitute* "configure"
+               (("glib/gregex\\.h") "glib.h")) #t)))
 
        ,@(package-arguments goffice)))
     (propagated-inputs
@@ -2178,19 +2175,19 @@ and RDP protocols.")
                             (assoc-ref %outputs "out") "/lib")
              "--disable-gtk-doc-html") ; FIXME: requires gtk-doc
        #:phases
-       (alist-cons-before
-        'configure 'fix-docbook
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "docs/Makefile.in"
-            (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
-             (string-append (assoc-ref inputs "docbook-xsl")
-                            "/xml/xsl/docbook-xsl-"
-                            ,(package-version docbook-xsl)
-                            "/manpages/docbook.xsl")))
-          (setenv "XML_CATALOG_FILES"
-                  (string-append (assoc-ref inputs "docbook-xml")
-                                 "/xml/dtd/docbook/catalog.xml")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-docbook
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "docs/Makefile.in"
+               (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
+                (string-append (assoc-ref inputs "docbook-xsl")
+                               "/xml/xsl/docbook-xsl-"
+                               ,(package-version docbook-xsl)
+                               "/manpages/docbook.xsl")))
+             (setenv "XML_CATALOG_FILES"
+                     (string-append (assoc-ref inputs "docbook-xml")
+                                    "/xml/dtd/docbook/catalog.xml"))
+             #t)))))
     (home-page "https://developer.gnome.org/dconf")
     (synopsis "Low-level GNOME configuration system")
     (description "Dconf is a low-level configuration system.  Its main purpose
diff --git a/gnu/packages/gprolog.scm b/gnu/packages/gprolog.scm
index 87c833e94..b27b080ca 100644
--- a/gnu/packages/gprolog.scm
+++ b/gnu/packages/gprolog.scm
@@ -41,14 +41,15 @@
      `(#:configure-flags
        (list (string-append
               "--with-install-dir=" %output "/share/gprolog"))
-       #:phases (alist-cons-before
-                 'configure 'change-dir-n-fix-shells
-                 (lambda _
-                   (chdir "src")
-                   (substitute* "configure"
-                     (("-/bin/sh")  (string-append "-"  (which "sh")))
-                     (("= /bin/sh") (string-append "= " (which "sh")))))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'change-dir-n-fix-shells
+           (lambda _
+             (chdir "src")
+             (substitute* "configure"
+               (("-/bin/sh")  (string-append "-"  (which "sh")))
+               (("= /bin/sh") (string-append "= " (which "sh"))))
+             #t)))))
     (home-page "https://www.gnu.org/software/gprolog/")
     (synopsis "Prolog compiler")
     (description
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 0a9038b7a..10592c23e 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -102,15 +102,16 @@ manipulate maps.")
                   "006a6l8p38a4h7y2959sqrmjjn29d8pd50zj9nypcp5ph18nybjb"))))
       (build-system gnu-build-system)
       (arguments
-       `(#:phases (alist-replace
-                   'configure
-                   (lambda* (#:key inputs outputs #:allow-other-keys)
-                     ;; This is a rudimentary build system.
-                     (substitute* "Makefile"
-                       (("prefix[[:blank:]]*=.*$")
-                        (string-append "prefix = " (assoc-ref outputs "out")
-                                       "\n"))))
-                   %standard-phases)
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'configure
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               ;; This is a rudimentary build system.
+               (substitute* "Makefile"
+                 (("prefix[[:blank:]]*=.*$")
+                  (string-append "prefix = " (assoc-ref outputs "out")
+                                 "\n")))
+               #t)))
          #:tests? #f))
       (inputs
        `(("gtk+" ,gtk+-2)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 6c813e8a3..512dd5e16 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -553,13 +553,12 @@ and understanding different BRDFs (and other component functions).")
              (string-append "--x-libraries=" (assoc-ref %build-inputs "libx11")
                             "/lib"))
        #:phases
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _
-          ;; let's call configure from configure phase and not now
-          (substitute* "autogen.sh" (("./configure") "# ./configure"))
-          (zero? (system* "sh" "autogen.sh")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _
+             ;; let's call configure from configure phase and not now
+             (substitute* "autogen.sh" (("./configure") "# ./configure"))
+             (zero? (system* "sh" "autogen.sh")))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("libtool" ,libtool)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index b2aa6ecff..11e2ace98 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -279,16 +279,17 @@ functions which were removed.")
                 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
     (build-system waf-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'set-flags
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Compile with C++11, required by gtkmm.
-                   (setenv "CXXFLAGS" "-std=c++11")
-                   ;; Allow 'bin/ganv_bench' to find libganv-1.so.
-                   (setenv "LDFLAGS"
-                           (string-append "-Wl,-rpath="
-                                          (assoc-ref outputs "out") "/lib")))
-                 %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-flags
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Compile with C++11, required by gtkmm.
+             (setenv "CXXFLAGS" "-std=c++11")
+             ;; Allow 'bin/ganv_bench' to find libganv-1.so.
+             (setenv "LDFLAGS"
+                     (string-append "-Wl,-rpath="
+                                    (assoc-ref outputs "out") "/lib"))
+             #t)))
        #:tests? #f)) ; no check target
     (inputs
      `(("gtk" ,gtk+-2)
@@ -349,24 +350,24 @@ diagrams.")
      `(#:phases
        ;; Unfortunately, some of the tests in "make check" are highly dependent
        ;; on the environment therefore, some black magic is required.
-       (alist-cons-before
-        'check 'start-xserver
-        (lambda* (#:key inputs #:allow-other-keys)
-          (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                (mime (assoc-ref inputs "shared-mime-info")))
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server"))
+                   (mime (assoc-ref inputs "shared-mime-info")))
 
-            ;; There must be a running X server and make check doesn't start one.
-            ;; Therefore we must do it.
-            (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
-            (setenv "DISPLAY" ":1")
+               ;; There must be a running X server and make check doesn't start one.
+               ;; Therefore we must do it.
+               (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
+               (setenv "DISPLAY" ":1")
 
-            ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
-            (system "ln -s gtksourceview gtksourceview-2.0")
-            (setenv "XDG_DATA_HOME" (getcwd))
+               ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
+               (system "ln -s gtksourceview gtksourceview-2.0")
+               (setenv "XDG_DATA_HOME" (getcwd))
 
-            ;; Finally, the mimetypes must be available.
-            (setenv "XDG_DATA_DIRS" (string-append mime "/share/")) ))
-        %standard-phases)))
+               ;; Finally, the mimetypes must be available.
+               (setenv "XDG_DATA_DIRS" (string-append mime "/share/")))
+             #t)))))
     (synopsis "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget")
     (description
      "GtkSourceView is a portable C library that extends the standard GTK+
@@ -876,18 +877,19 @@ images onto Cairo surfaces.")
                    "godir = $(moddir)\n")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let* ((out   (assoc-ref outputs "out"))
-                          (bin   (string-append out "/bin"))
-                          (guile (assoc-ref inputs "guile")))
-                     (substitute* (find-files bin ".*")
-                       (("guile")
-                        (string-append guile "/bin/guile -L "
-                                       out "/share/guile/site/2.0 -C "
-                                       out "/share/guile/site/2.0 ")))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out   (assoc-ref outputs "out"))
+                    (bin   (string-append out "/bin"))
+                    (guile (assoc-ref inputs "guile")))
+               (substitute* (find-files bin ".*")
+                 (("guile")
+                  (string-append guile "/bin/guile -L "
+                                 out "/share/guile/site/2.0 -C "
+                                 out "/share/guile/site/2.0 "))))
+             #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.2)))
     (propagated-inputs
@@ -1161,7 +1163,7 @@ extensive documentation, including API reference and a tutorial.")
      `(#:python ,python-2
        ,@(substitute-keyword-arguments (package-arguments python-pycairo)
            ((#:phases phases)
-            `(alist-delete 'patch-waf ,phases))
+            `(modify-phases ,phases (delete 'patch-waf)))
            ((#:native-inputs native-inputs)
             `(alist-delete "python-waf" ,native-inputs)))))
     ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
@@ -1255,7 +1257,7 @@ write GNOME applications.")
        #:test-target "test"
        #:tests? #f ; Tests fail with "Gtk cannot open display:"
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (build-system gnu-build-system)
     (home-page "https://pwmt.org/projects/girara/")
     (synopsis "Library for minimalistic gtk+3 user interfaces")
diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm
index a114fd441..87fb57194 100644
--- a/gnu/packages/guile-wm.scm
+++ b/gnu/packages/guile-wm.scm
@@ -80,50 +80,51 @@ dependencies.")
        #:configure-flags (list (string-append "--datadir="
                                               (assoc-ref %outputs "out")
                                               "/share/guile/site/2.0"))
-       #:phases (alist-cons-before
-                 'configure 'set-go-directory
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Install .go files to $out/share/guile/site/2.0.
-                   (let ((out (assoc-ref outputs "out")))
-                     (substitute* "module/Makefile.in"
-                       (("^wmdir = .*$")
-                        (string-append "wmdir = " out
-                                       "/share/guile/site/2.0\n")))))
-                 (alist-cons-after
-                  'install 'set-load-path
-                  (lambda* (#:key inputs outputs #:allow-other-keys)
-                    ;; Put Guile-XCB's and Guile-WM's modules in the
-                    ;; search path of PROG.
-                    (let* ((out  (assoc-ref outputs "out"))
-                           (prog (string-append out "/bin/guile-wm"))
-                           (mods (string-append
-                                  out "/share/guile/site/2.0"))
-                           (xcb  (string-append
-                                  (assoc-ref inputs "guile-xcb")
-                                  "/share/guile/site/2.0")))
-                      (wrap-program
-                          prog
-                        `("GUILE_LOAD_PATH" ":" prefix (,mods ,xcb))
-                        `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                          (,mods ,xcb)))))
-                  (alist-cons-after
-                   'install 'install-xsession
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; add a .desktop file to xsessions
-                     (let ((xsessions (string-append
-                                       %output "/share/xsessions")))
-                       (mkdir-p xsessions)
-                       (call-with-output-file (string-append
-                                               xsessions "/guile-wm.desktop")
-                         (lambda (port)
-                           (format port
-                                   "[Desktop Entry]~@
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-go-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Install .go files to $out/share/guile/site/2.0.
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "module/Makefile.in"
+                 (("^wmdir = .*$")
+                  (string-append "wmdir = " out
+                                 "/share/guile/site/2.0\n"))))
+             #t))
+         (add-after 'install 'set-load-path
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Put Guile-XCB's and Guile-WM's modules in the
+             ;; search path of PROG.
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/guile-wm"))
+                    (mods (string-append
+                           out "/share/guile/site/2.0"))
+                    (xcb  (string-append
+                           (assoc-ref inputs "guile-xcb")
+                           "/share/guile/site/2.0")))
+               (wrap-program
+                   prog
+                 `("GUILE_LOAD_PATH" ":" prefix (,mods ,xcb))
+                 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                   (,mods ,xcb))))
+             #t))
+         (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; add a .desktop file to xsessions
+             (let ((xsessions (string-append
+                               %output "/share/xsessions")))
+               (mkdir-p xsessions)
+               (call-with-output-file (string-append
+                                       xsessions "/guile-wm.desktop")
+                 (lambda (port)
+                   (format port
+                           "[Desktop Entry]~@
                                     Name=~a~@
                                     Comment=~a~@
                                     Exec=~a/bin/guile-wm~@
                                     Type=Application~%"
-                            ,name ,synopsis %output)))))
-                   %standard-phases)))))
+                           ,name ,synopsis %output))))
+             #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.0)
               ("guile-xcb" ,guile-xcb)))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 3fd3f89dc..f377d83b1 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -94,24 +94,24 @@
    (arguments '(#:configure-flags '("--disable-error-on-warning")
 
                 ;; Insert a phase before `configure' to patch things up.
-                #:phases (alist-cons-before
-                           'configure
-                           'patch-stuff
-                           (lambda* (#:key outputs #:allow-other-keys)
-                             ;; Add a call to `lt_dladdsearchdir' so that
-                             ;; `libguile-readline.so' & co. are in the
-                             ;; loader's search path.
-                             (substitute* "libguile/dynl.c"
-                               (("lt_dlinit.*$" match)
-                                (format #f
-                                        "  ~a~%  lt_dladdsearchdir(\"~a/lib\");~%"
-                                        match
-                                        (assoc-ref outputs "out"))))
-
-                             ;; The usual /bin/sh...
-                             (substitute* "ice-9/popen.scm"
-                               (("/bin/sh") (which "sh"))))
-                           %standard-phases)))
+                #:phases
+                (modify-phases %standard-phases
+                  (add-before 'configure 'patch-stuff
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; Add a call to `lt_dladdsearchdir' so that
+                      ;; `libguile-readline.so' & co. are in the
+                      ;; loader's search path.
+                      (substitute* "libguile/dynl.c"
+                        (("lt_dlinit.*$" match)
+                         (format #f
+                                 "  ~a~%  lt_dladdsearchdir(\"~a/lib\");~%"
+                                 match
+                                 (assoc-ref outputs "out"))))
+
+                      ;; The usual /bin/sh...
+                      (substitute* "ice-9/popen.scm"
+                        (("/bin/sh") (which "sh")))
+                      #t)))))
    (inputs `(("gawk" ,gawk)
              ("readline" ,readline)))
 
diff --git a/gnu/packages/hugs.scm b/gnu/packages/hugs.scm
index 2367d5bc6..a14b8a858 100644
--- a/gnu/packages/hugs.scm
+++ b/gnu/packages/hugs.scm
@@ -39,36 +39,37 @@
         "1mdy4aq4campgmnpc2qwq7bsbfhaxfsqdghbyyz2wms4lnfcmyma"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'fix-sh-n-cp
-                 (lambda _
-                   (substitute*
-                       '("configure"
-                         "libraries/configure"
-                         "packages/time/configure"
-                         "packages/base/configure"
-                         "packages/X11/configure"
-                         "packages/HGL/configure"
-                         "packages/OpenAL/configure"
-                         "packages/OpenGL/configure"
-                         "packages/network/configure"
-                         "packages/unix/configure"
-                         "packages/Cabal/tests/HSQL/configure"
-                         "packages/ALUT/configure"
-                         "packages/GLUT/configure"
-                         "packages/base/cbits/execvpe.c"
-                         "packages/base/System/Process/Internals.hs"
-                         "packages/Cabal/Distribution/attic"
-                         "packages/Cabal/Distribution/Simple/Register.hs"
-                         "packages/Cabal/Distribution/Simple/Hugs.hs"
-                         "tools/hugs-hc"
-                         "src/machdep.c"
-                         "libraries/Makefile.in")
-                     (("/bin/sh") (which "sh")))
-                   (substitute* '("demos/Makefile.in"
-                                  "libraries/Makefile.in")
-                     (("/bin/cp") (which "cp"))))
-                  %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-sh-n-cp
+           (lambda _
+             (substitute*
+                 '("configure"
+                   "libraries/configure"
+                   "packages/time/configure"
+                   "packages/base/configure"
+                   "packages/X11/configure"
+                   "packages/HGL/configure"
+                   "packages/OpenAL/configure"
+                   "packages/OpenGL/configure"
+                   "packages/network/configure"
+                   "packages/unix/configure"
+                   "packages/Cabal/tests/HSQL/configure"
+                   "packages/ALUT/configure"
+                   "packages/GLUT/configure"
+                   "packages/base/cbits/execvpe.c"
+                   "packages/base/System/Process/Internals.hs"
+                   "packages/Cabal/Distribution/attic"
+                   "packages/Cabal/Distribution/Simple/Register.hs"
+                   "packages/Cabal/Distribution/Simple/Hugs.hs"
+                   "tools/hugs-hc"
+                   "src/machdep.c"
+                   "libraries/Makefile.in")
+               (("/bin/sh") (which "sh")))
+             (substitute* '("demos/Makefile.in"
+                            "libraries/Makefile.in")
+               (("/bin/cp") (which "cp")))
+             #t)))
        #:tests? #f)) ; no test target
     ;; FIXME: Fails to build with GCC 5.
     (native-inputs `(("gcc" ,gcc-4.9)))
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index bd1eb4b08..a29e5bafd 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -56,14 +56,13 @@
         "02hygsfpd2dljl5lg1vjjg9pizi9jyxd4aiiqzjshz6jax62jm9f"))))
     (build-system gnu-build-system)
     (arguments
-    `(#:phases (alist-replace
-                'install
-                (lambda _
-                  (zero?
-                   (system* "make" "install-data")))
-                (alist-delete
-                 'build
-                 %standard-phases))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda _
+             (zero?
+              (system* "make" "install-data"))))
+         (delete 'build))
 
       ;; GNU Mach supports only IA32 currently, so cheat so that we can at
       ;; least install its headers.
@@ -125,11 +124,12 @@ communication.")
     (native-inputs
      `(("mig" ,mig)))
     (arguments
-     `(#:phases (alist-replace
-                 'install
-                 (lambda _
-                   (zero? (system* "make" "install-headers" "no_deps=t")))
-                 (alist-delete 'build %standard-phases))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda _
+             (zero? (system* "make" "install-headers" "no_deps=t"))))
+         (delete 'build))
 
        #:configure-flags '(;; Pretend we're on GNU/Hurd; 'configure' wants
                            ;; that.
@@ -164,24 +164,22 @@ Library and other user programs.")
     (arguments
      (substitute-keyword-arguments (package-arguments hurd-headers)
        ((#:phases _)
-        '(alist-replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
-              ;; We need to copy libihash.a to the output directory manually,
-              ;; since there is no target for that in the makefile.
-              (mkdir-p (string-append out "/include"))
-              (copy-file "libihash/ihash.h"
-                         (string-append out "/include/ihash.h"))
-              (mkdir-p (string-append out "/lib"))
-              (copy-file "libihash/libihash.a"
-                         (string-append out "/lib/libihash.a"))
-              #t))
-          (alist-replace
-           'build
-           (lambda _
-             (zero? (system* "make" "-Clibihash" "libihash.a")))
-           %standard-phases)))))
+        '(modify-phases %standard-phases
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 ;; We need to copy libihash.a to the output directory manually,
+                 ;; since there is no target for that in the makefile.
+                 (mkdir-p (string-append out "/include"))
+                 (copy-file "libihash/ihash.h"
+                            (string-append out "/include/ihash.h"))
+                 (mkdir-p (string-append out "/lib"))
+                 (copy-file "libihash/libihash.a"
+                            (string-append out "/lib/libihash.a"))
+                 #t)))
+           (replace 'build
+             (lambda _
+               (zero? (system* "make" "-Clibihash" "libihash.a"))))))))
     (home-page "https://www.gnu.org/software/hurd/hurd.html")
     (synopsis "GNU Hurd libraries")
     (description
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 644780b5e..4d501476a 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -65,10 +65,10 @@
                 "1d4ycmai3dpajl0bdr9i56646g4h5j1lb95jjn0nckwcddcj927c"))))
     (build-system gnu-build-system)
     (arguments
-      '(#:phases (alist-delete 'configure %standard-phases)
-        #:tests? #f ;FIXME: Requires 'perl-test-command'.
-        #:make-flags
-          (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))))
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
+       #:tests? #f ;FIXME: Requires 'perl-test-command'.
+       #:make-flags
+       (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))))
     (inputs `(("imlib2" ,imlib2)
               ("curl" ,curl)
               ("libpng" ,libpng)
@@ -178,9 +178,9 @@ It is the default image viewer on LXDE desktop environment.")
      '(#:tests? #f                      ; no check target
        #:make-flags (list (string-append "PREFIX=" %output)
                           "CC=gcc")
-       #:phases (alist-delete
-                 'configure             ; no configure phase
-                 %standard-phases)))
+       #:phases
+       ;; no configure phase
+       (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("libx11" ,libx11)
        ("imlib2" ,imlib2)
diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm
index 6bac0bcd5..941d3dcc4 100644
--- a/gnu/packages/libcanberra.scm
+++ b/gnu/packages/libcanberra.scm
@@ -79,15 +79,15 @@
      `(("pkg-config" ,pkg-config)))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'build 'patch-default-sounds-directory
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "src/sound-theme-spec.c"
-            (("@SOUND_THEME_DIRECTORY@")
-             (string-append
-              (assoc-ref inputs "sound-theme-freedesktop")
-              "/share"))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-default-sounds-directory
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/sound-theme-spec.c"
+               (("@SOUND_THEME_DIRECTORY@")
+                (string-append
+                 (assoc-ref inputs "sound-theme-freedesktop")
+                 "/share")))
+             #t)))))
     (home-page "http://0pointer.de/lennart/projects/libcanberra/")
     (synopsis
      "Implementation of the XDG Sound Theme and Name Specifications")
diff --git a/gnu/packages/libsigsegv.scm b/gnu/packages/libsigsegv.scm
index 41e734535..d7a510d9c 100644
--- a/gnu/packages/libsigsegv.scm
+++ b/gnu/packages/libsigsegv.scm
@@ -44,12 +44,13 @@
     ;; linux-libre-headers-cross-mips64el-linux-gnu-3.3.8/include/asm/sigcontext.h:57:8: error: redefinition of 'struct sigcontext'
     (if (string-contains (or (%current-target-system) (%current-system))
                          "mips64el")
-        `(#:phases (alist-cons-before
-                    'configure 'patch-mips-old-h
-                    (lambda _
-                      (substitute* "src/fault-linux-mips-old.h"
-                        (("#include <asm/sigcontext\\.h>") "")))
-                    %standard-phases))
+        `(#:phases
+          (modify-phases %standard-phases
+            (add-before 'configure 'patch-mips-old-h
+              (lambda _
+                (substitute* "src/fault-linux-mips-old.h"
+                  (("#include <asm/sigcontext\\.h>") ""))
+                #t))))
         '()))
    (description
     "GNU libsigsegv is a library to handle page faults, which occur when a
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index a189458ad..7f44ea789 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -833,18 +833,19 @@ ext3 or ext4 partition.")
                 "1xncw3dn2cp922ly42m96p6fh7jv8ysg6bwqbk5xvw701f3dmkrs"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (bin (string-append out "/bin")))
-                     (mkdir-p bin)
-                     (copy-file "zerofree"
-                                (string-append bin "/zerofree"))
-                     (chmod (string-append bin "/zerofree")
-                            #o555)
-                     #t))
-                 (alist-delete 'configure %standard-phases))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (mkdir-p bin)
+               (copy-file "zerofree"
+                          (string-append bin "/zerofree"))
+               (chmod (string-append bin "/zerofree")
+                      #o555)
+               #t)))
+         (delete 'configure))
        #:tests? #f))                              ;no tests
     (inputs `(("libext2fs" ,e2fsprogs)))
     (synopsis "Zero non-allocated regions in ext2/ext3/ext4 file systems")
@@ -1296,49 +1297,48 @@ configuration (iptunnel, ipmaddr).")
                   (guix build utils)
                   (srfi srfi-1)
                   (srfi srfi-26))
-       #:phases (alist-cons-after
-                 'unpack 'patch
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (define (apply-patch file)
-                     (zero? (system* "patch" "-p1" "--force"
-                                     "--input" file)))
-
-                   (let ((patch.gz (assoc-ref inputs "patch")))
-                     (format #t "applying Debian patch set '~a'...~%"
-                             patch.gz)
-                     (system (string-append "gunzip < " patch.gz " > the-patch"))
-                     (and (apply-patch "the-patch")
-                          (for-each apply-patch
-                                    (find-files "debian/patches"
-                                                "\\.patch")))))
-                 (alist-replace
-                  'configure
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out")))
-                      (mkdir-p (string-append out "/bin"))
-                      (mkdir-p (string-append out "/sbin"))
-
-                      ;; Pretend we have everything...
-                      (system "yes | make config")
-
-                      ;; ... except for the things we don't have.
-                      ;; HAVE_AFDECnet requires libdnet, which we don't have.
-                      ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers
-                      ;; that have been removed.
-                      (substitute* '("config.make" "config.h")
-                        (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR)[ =]1.*$") ""))))
-                  (alist-cons-after
-                   'install 'remove-redundant-commands
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; Remove commands and man pages redundant with
-                     ;; Inetutils.
-                     (let* ((out (assoc-ref outputs "out"))
-                            (dup (append-map (cut find-files out <>)
-                                             '("^hostname"
-                                               "^(yp|nis|dns)?domainname"))))
-                       (for-each delete-file dup)
-                       #t))
-                   %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define (apply-patch file)
+               (zero? (system* "patch" "-p1" "--force"
+                               "--input" file)))
+
+             (let ((patch.gz (assoc-ref inputs "patch")))
+               (format #t "applying Debian patch set '~a'...~%"
+                       patch.gz)
+               (system (string-append "gunzip < " patch.gz " > the-patch"))
+               (and (apply-patch "the-patch")
+                    (for-each apply-patch
+                              (find-files "debian/patches"
+                                          "\\.patch"))))))
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/sbin"))
+
+               ;; Pretend we have everything...
+               (system "yes | make config")
+
+               ;; ... except for the things we don't have.
+               ;; HAVE_AFDECnet requires libdnet, which we don't have.
+               ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers
+               ;; that have been removed.
+               (substitute* '("config.make" "config.h")
+                 (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR)[ =]1.*$") "")))
+             #t))
+         (add-after 'install 'remove-redundant-commands
+          (lambda* (#:key outputs #:allow-other-keys)
+            ;; Remove commands and man pages redundant with
+            ;; Inetutils.
+            (let* ((out (assoc-ref outputs "out"))
+                   (dup (append-map (cut find-files out <>)
+                                    '("^hostname"
+                                      "^(yp|nis|dns)?domainname"))))
+              (for-each delete-file dup)
+              #t))))
 
        ;; Binaries that depend on libnet-tools.a don't declare that
        ;; dependency, making it parallel-unsafe.
@@ -1420,22 +1420,22 @@ Linux-based operating systems.")
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)))
     (arguments
-     '(#:phases (alist-cons-after
-                 'unpack 'bootstrap
-                 (lambda _
-                   ;; Fix "field ‘ip6’ has incomplete type" errors.
-                   (substitute* "libbridge/libbridge.h"
-                     (("#include <linux/if_bridge.h>")
-                      "#include <linux/in6.h>\n#include <linux/if_bridge.h>"))
-
-                   ;; Ensure that the entire build fails if one of the
-                   ;; sub-Makefiles fails.
-                   (substitute* "Makefile.in"
-                     (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
-                      "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
-
-                   (zero? (system* "autoreconf" "-vf")))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _
+             ;; Fix "field ‘ip6’ has incomplete type" errors.
+             (substitute* "libbridge/libbridge.h"
+               (("#include <linux/if_bridge.h>")
+                "#include <linux/in6.h>\n#include <linux/if_bridge.h>"))
+
+             ;; Ensure that the entire build fails if one of the
+             ;; sub-Makefiles fails.
+             (substitute* "Makefile.in"
+               (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
+                "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
+
+             (zero? (system* "autoreconf" "-vf")))))
        #:tests? #f))                              ; no 'check' target
 
     (home-page
@@ -1495,7 +1495,7 @@ configuration and monitoring interfaces.")
     (arguments
      `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "CC=gcc")
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://wireless.wiki.kernel.org/")
     (synopsis "Tool for configuring wireless devices")
     (description
@@ -1628,27 +1628,28 @@ processes currently causing I/O.")
                                (string-append "UDEV_RULES_PATH="
                                               (assoc-ref %outputs "out")
                                               "/lib/udev/rules.d"))
-      #:phases (alist-cons-before
-                'build 'set-file-names
-                (lambda* (#:key inputs #:allow-other-keys)
-                  ;; libfuse calls out to mount(8) and umount(8).  Make sure
-                  ;; it refers to the right ones.
-                  (substitute* '("lib/mount_util.c" "util/mount_util.c")
-                    (("/bin/(u?)mount" _ maybe-u)
-                     (string-append (assoc-ref inputs "util-linux")
-                                    "/bin/" maybe-u "mount")))
-                  (substitute* '("util/mount.fuse.c")
-                    (("/bin/sh")
-                     (which "sh")))
-
-                  ;; This hack leads libfuse to search for 'fusermount' in
-                  ;; $PATH, where it may find a setuid-root binary, instead of
-                  ;; trying solely $out/sbin/fusermount and failing because
-                  ;; it's not setuid.
-                  (substitute* "lib/Makefile"
-                    (("-DFUSERMOUNT_DIR=[[:graph:]]+")
-                     "-DFUSERMOUNT_DIR=\\\"/var/empty\\\"")))
-                %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'set-file-names
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; libfuse calls out to mount(8) and umount(8).  Make sure
+             ;; it refers to the right ones.
+             (substitute* '("lib/mount_util.c" "util/mount_util.c")
+               (("/bin/(u?)mount" _ maybe-u)
+                (string-append (assoc-ref inputs "util-linux")
+                               "/bin/" maybe-u "mount")))
+             (substitute* '("util/mount.fuse.c")
+               (("/bin/sh")
+                (which "sh")))
+
+             ;; This hack leads libfuse to search for 'fusermount' in
+             ;; $PATH, where it may find a setuid-root binary, instead of
+             ;; trying solely $out/sbin/fusermount and failing because
+             ;; it's not setuid.
+             (substitute* "lib/Makefile"
+               (("-DFUSERMOUNT_DIR=[[:graph:]]+")
+                "-DFUSERMOUNT_DIR=\\\"/var/empty\\\""))
+             #t)))))
     (home-page "https://github.com/libfuse/libfuse")
     (synopsis "Support file systems implemented in user space")
     (description
@@ -1726,20 +1727,20 @@ UnionFS-FUSE additionally supports copy-on-write.")
     (arguments
      '(#:tests? #f
        #:configure-flags '("-DCMAKE_EXE_LINKER_FLAGS=-static")
-       #:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (exe (string-append out "/bin/unionfs")))
-                     ;; By default, 'unionfs' keeps references to
-                     ;; $glibc/share/locale and similar stuff.  Remove them.
-                     (remove-store-references exe)
-
-                     ;; 'unionfsctl' has references to glibc as well.  Since
-                     ;; we don't need it, remove it.
-                     (delete-file (string-append out "/bin/unionfsctl"))
-                     #t))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (exe (string-append out "/bin/unionfs")))
+               ;; By default, 'unionfs' keeps references to
+               ;; $glibc/share/locale and similar stuff.  Remove them.
+               (remove-store-references exe)
+
+               ;; 'unionfsctl' has references to glibc as well.  Since
+               ;; we don't need it, remove it.
+               (delete-file (string-append out "/bin/unionfsctl"))
+               #t))))))
     (inputs `(("fuse" ,fuse-static)))))
 
 (define-public sshfs-fuse
@@ -2318,43 +2319,42 @@ country-specific regulations for the wireless spectrum.")
                           (string-append "ETCDIR=" %output "/etc")
                           (string-append "MANDIR=" %output "/share/man"))
        #:phases
-       (alist-delete
-        'configure
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (substitute* "prog/detect/sensors-detect"
-             (("`uname")
-              (string-append "`" (assoc-ref inputs "coreutils")
-                             "/bin/uname"))
-             (("(`|\")modprobe" all open-quote)
-              (string-append open-quote
-                             (assoc-ref inputs "kmod")
-                             "/bin/modprobe")))
-           (substitute* '("prog/pwm/pwmconfig"
-                          "prog/pwm/fancontrol")
-             (("gnuplot")
-              (string-append (assoc-ref inputs "gnuplot")
-                             "/bin/gnuplot"))
-             (("cat ")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/cat "))
-             (("egrep ")
-              (string-append (assoc-ref inputs "grep")
-                             "/bin/egrep "))
-             (("sed -e")
-              (string-append (assoc-ref inputs "sed")
-                             "/bin/sed -e"))
-             (("cut -d")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/cut -d"))
-             (("sleep ")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/sleep "))
-             (("readlink -f")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/readlink -f"))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'patch-exec-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "prog/detect/sensors-detect"
+               (("`uname")
+                (string-append "`" (assoc-ref inputs "coreutils")
+                               "/bin/uname"))
+               (("(`|\")modprobe" all open-quote)
+                (string-append open-quote
+                               (assoc-ref inputs "kmod")
+                               "/bin/modprobe")))
+             (substitute* '("prog/pwm/pwmconfig"
+                            "prog/pwm/fancontrol")
+               (("gnuplot")
+                (string-append (assoc-ref inputs "gnuplot")
+                               "/bin/gnuplot"))
+               (("cat ")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/cat "))
+               (("egrep ")
+                (string-append (assoc-ref inputs "grep")
+                               "/bin/egrep "))
+               (("sed -e")
+                (string-append (assoc-ref inputs "sed")
+                               "/bin/sed -e"))
+               (("cut -d")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/cut -d"))
+               (("sleep ")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/sleep "))
+               (("readlink -f")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/readlink -f")))
+             #t)))))
     (home-page "http://jdelvare.nerim.net/devel.html#lmsensors")
     (synopsis "Utilities to read temperature/voltage/fan sensors")
     (description
@@ -2381,7 +2381,7 @@ It works with most newer systems.")
        #:make-flags (list (string-append "prefix=" %output)
                           "CC=gcc")
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("perl" ,perl)))
     (home-page "http://jdelvare.nerim.net/devel.html#i2ctools")
@@ -2410,18 +2410,19 @@ SMBus access.")
               ("gtk" ,gtk+-2)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'enable-deprecated
-                 (lambda _
-                   (substitute* "src/Makefile.in"
-                     (("-DGDK_DISABLE_DEPRECATED") "")
-                     (("-DGTK_DISABLE_DEPRECATED") "")))
-                 (alist-cons-before
-                  'configure 'remove-Werror
-                  (lambda _
-                    (substitute* '("configure" "src/Makefile.in")
-                      (("-Werror") "")))
-                  %standard-phases))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'enable-deprecated
+           (lambda _
+             (substitute* "src/Makefile.in"
+               (("-DGDK_DISABLE_DEPRECATED") "")
+               (("-DGTK_DISABLE_DEPRECATED") ""))
+             #t))
+         (add-before 'configure 'remove-Werror
+           (lambda _
+             (substitute* '("configure" "src/Makefile.in")
+               (("-Werror") ""))
+             #t)))))
     (home-page "http://www.linuxhardware.org/xsensors/")
     (synopsis "Hardware health information viewer")
     (description
@@ -2437,12 +2438,13 @@ in a digital read-out.")
     (source (package-source linux-libre))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (setenv "SHELL_PATH" (which "bash"))
-                   (chdir "tools/perf"))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "SHELL_PATH" (which "bash"))
+             (chdir "tools/perf")
+             #t)))
        #:make-flags (list (string-append "DESTDIR="
                                          (assoc-ref %outputs "out"))
                           "WERROR=0"
@@ -2781,22 +2783,23 @@ MPEG-2 and audio over Linux IEEE 1394.")
                             (string-append "BINDIR=" out "/sbin")
                             (string-append "MANDIR=" out "/share/man")
                             (string-append "UDEVDIR=" out "/lib/udev")))
-       #:phases (alist-cons-before
-                 'build 'patch-program-paths
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (let ((coreutils (assoc-ref inputs "coreutils")))
-                     (substitute* "udev-md-raid-arrays.rules"
-                       (("/usr/bin/(readlink|basename)" all program)
-                        (string-append coreutils "/bin/" program)))))
-                 (alist-cons-before
-                  'build 'remove-W-error
-                  (lambda _
-                    ;; We cannot build with -Werror on i686 due to a
-                    ;; 'sign-compare' warning in util.c.
-                    (substitute* "Makefile"
-                      (("-Werror") ""))
-                    #t)
-                  (alist-delete 'configure %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-program-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((coreutils (assoc-ref inputs "coreutils")))
+               (substitute* "udev-md-raid-arrays.rules"
+                 (("/usr/bin/(readlink|basename)" all program)
+                  (string-append coreutils "/bin/" program))))
+             #t))
+         (add-before 'build 'remove-W-error
+           (lambda _
+             ;; We cannot build with -Werror on i686 due to a
+             ;; 'sign-compare' warning in util.c.
+             (substitute* "Makefile"
+               (("-Werror") ""))
+             #t))
+         (delete 'configure))
        ;;tests must be done as root
        #:tests? #f))
     (home-page "http://neil.brown.name/blog/mdadm")
@@ -2931,7 +2934,8 @@ Linux Device Mapper multipathing driver:
        (list "CC=gcc" (string-append "prefix=" %output))
        #:test-target "partcheck" ; need root for a full 'check'
        #:phases
-       (alist-delete 'configure %standard-phases))) ; no configure script
+       ;; no configure script
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://lse.sourceforge.net/io/aio.html")
     (synopsis "Linux-native asynchronous I/O access library")
     (description
@@ -3537,13 +3541,14 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
      ;; FIXME: The upstream tarball lacks man pages, and building them would
      ;; require DocBook & co.  We used to use Gentoo's pre-built man pages,
      ;; but they vanished.  In the meantime, fake it.
-     '(#:phases (alist-cons-before
-                 'configure 'fake-docbook
-                 (lambda _
-                   (substitute* "Makefile.in"
-                     (("^DOCBOOKTOMAN.*$")
-                      "DOCBOOKTOMAN = true\n")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fake-docbook
+           (lambda _
+             (substitute* "Makefile.in"
+               (("^DOCBOOKTOMAN.*$")
+                "DOCBOOKTOMAN = true\n"))
+             #t)))))
     (home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
     (synopsis "Tools for loading and managing Linux kernel modules")
     (description
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 224cea56f..c3b213047 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -445,36 +445,33 @@ statistical profiler, a code coverage tool, and many other extensions.")
                   (guix build utils)
                   (guix build gnu-build-system))
        #:phases
-       (alist-replace
-        'unpack
-        (lambda* (#:key inputs #:allow-other-keys)
-          (and (zero? (system* "tar" "xzvf" (assoc-ref inputs "ccl")))
-               (begin (chdir "ccl") #t)))
-        (alist-delete
-         'configure
-         (alist-cons-before
-          'build 'pre-build
-          ;; Enter the source directory for the current platform's lisp
-          ;; kernel, and run 'make clean' to remove the precompiled one.
-          (lambda _
-            (chdir (string-append
-                    "lisp-kernel/"
-                    ,(match (or (%current-target-system) (%current-system))
-                       ("i686-linux"   "linuxx8632")
-                       ("x86_64-linux" "linuxx8664")
-                       ("armhf-linux"  "linuxarm")
-                       ;; Prevent errors when querying this package
-                       ;; on unsupported platforms, e.g. when running
-                       ;; "guix package --search="
-                       (_              "UNSUPPORTED"))))
-            (substitute* '("Makefile")
-              (("/bin/rm") "rm"))
-            (setenv "CC" "gcc")
-            (zero? (system* "make" "clean")))
-          ;; XXX Do we need to recompile the heap image as well for Guix?
-          ;; For now just use the one we already got in the tarball.
-          (alist-replace
-           'install
+       (modify-phases %standard-phases
+         (replace 'unpack
+           (lambda* (#:key inputs #:allow-other-keys)
+             (and (zero? (system* "tar" "xzvf" (assoc-ref inputs "ccl")))
+                  (begin (chdir "ccl") #t))))
+         (delete 'configure)
+         (add-before 'build 'pre-build
+           ;; Enter the source directory for the current platform's lisp
+           ;; kernel, and run 'make clean' to remove the precompiled one.
+           (lambda _
+             (chdir (string-append
+                     "lisp-kernel/"
+                     ,(match (or (%current-target-system) (%current-system))
+                        ("i686-linux"   "linuxx8632")
+                        ("x86_64-linux" "linuxx8664")
+                        ("armhf-linux"  "linuxarm")
+                        ;; Prevent errors when querying this package
+                        ;; on unsupported platforms, e.g. when running
+                        ;; "guix package --search="
+                        (_              "UNSUPPORTED"))))
+             (substitute* '("Makefile")
+               (("/bin/rm") "rm"))
+             (setenv "CC" "gcc")
+             (zero? (system* "make" "clean"))))
+         ;; XXX Do we need to recompile the heap image as well for Guix?
+         ;; For now just use the one we already got in the tarball.
+         (replace 'install
            (lambda* (#:key outputs inputs #:allow-other-keys)
              ;; The lisp kernel built by running 'make' in lisp-kernel/$system
              ;; is put back into the original directory, so go back.  The heap
@@ -513,8 +510,8 @@ statistical profiler, a code coverage tool, and many other extensions.")
                      "CCL_DEFAULT_DIRECTORY=" libdir "\n"
                      "export CCL_DEFAULT_DIRECTORY\n"
                      "exec " libdir kernel "\n"))))
-               (chmod wrapper #o755)))
-           %standard-phases))))))
+               (chmod wrapper #o755)
+               #t))))))
     (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
     (home-page "http://ccl.clozure.com/")
     (synopsis "Common Lisp implementation")
diff --git a/gnu/packages/lout.scm b/gnu/packages/lout.scm
index f2c724ae0..d99f944b4 100644
--- a/gnu/packages/lout.scm
+++ b/gnu/packages/lout.scm
@@ -24,91 +24,81 @@
   #:use-module (gnu packages ghostscript))
 
 (define-public lout
-  ;; This one is a bit tricky, because it doesn't follow the GNU Build System
-  ;; rules.  Instead, it has a makefile that has to be patched to set the
-  ;; prefix, etc., and it has no makefile rules to build its doc.
-  (let ((configure-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out"))
-                  (doc (assoc-ref outputs "doc")))
-              (substitute* "makefile"
-                (("^PREFIX[[:blank:]]*=.*$")
-                 (string-append "PREFIX = " out "\n"))
-                (("^LOUTLIBDIR[[:blank:]]*=.*$")
-                 (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
-                (("^LOUTDOCDIR[[:blank:]]*=.*$")
-                 (string-append "LOUTDOCDIR = " doc "/share/doc/lout\n"))
-                (("^MANDIR[[:blank:]]*=.*$")
-                 (string-append "MANDIR = " out "/man\n")))
-              (mkdir out)
-              (mkdir (string-append out "/bin"))
-              (mkdir (string-append out "/lib"))
-              (mkdir (string-append out "/man"))
-              (mkdir-p (string-append doc "/share/doc/lout")))))
-        (install-man-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (zero? (system* "make" "installman"))))
-        (doc-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (define out
-              (assoc-ref outputs "doc"))
-
-            (setenv "PATH"
-                    (string-append (assoc-ref outputs "out")
-                                   "/bin:" (getenv "PATH")))
-            (chdir "doc")
-            (every (lambda (doc)
-                     (format #t "doc: building `~a'...~%" doc)
-                     (with-directory-excursion doc
-                       (let ((file (string-append out "/share/doc/lout/"
-                                                  doc ".ps")))
-                         (and (or (file-exists? "outfile.ps")
-                                  (zero? (system* "lout" "-r4" "-o"
-                                                  "outfile.ps" "all")))
-                              (begin
-                                (copy-file "outfile.ps" file)
-                                #t)
-                              (zero? (system* "ps2pdf"
-                                              "-dPDFSETTINGS=/prepress"
-                                              "-sPAPERSIZE=a4"
-                                              file
-                                              (string-append out "/share/doc/lout/"
-                                                             doc ".pdf")))))))
-                   '("design" "expert" "slides" "user")))))
-   (package
+  (package
     (name "lout")
     (version "3.40")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://savannah/lout/lout-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix"))))
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/lout/lout-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix"))))
     (build-system gnu-build-system)               ; actually, just a makefile
     (outputs '("out" "doc"))
     (native-inputs
      `(("ghostscript" ,ghostscript)))
-    (arguments `(#:modules ((guix build utils)
-                            (guix build gnu-build-system)
-                            (srfi srfi-1))        ; we need SRFI-1
-                 #:tests? #f                      ; no "check" target
-
-                 ;; Customize the build phases.
-                 #:phases (alist-replace
-                           'configure ,configure-phase
-
-                           (alist-cons-after
-                            'install 'install-man-pages
-                            ,install-man-phase
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix build gnu-build-system)
+                  (srfi srfi-1))        ; we need SRFI-1
+       #:tests? #f                      ; no "check" target
 
-                            (alist-cons-after
-                             'install 'install-doc
-                             ,doc-phase
-                             %standard-phases)))))
+       ;; This one is a bit tricky, because it doesn't follow the GNU Build
+       ;; System rules.  Instead, it has a makefile that has to be patched to
+       ;; set the prefix, etc., and it has no makefile rules to build its doc.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               (substitute* "makefile"
+                 (("^PREFIX[[:blank:]]*=.*$")
+                  (string-append "PREFIX = " out "\n"))
+                 (("^LOUTLIBDIR[[:blank:]]*=.*$")
+                  (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
+                 (("^LOUTDOCDIR[[:blank:]]*=.*$")
+                  (string-append "LOUTDOCDIR = " doc "/share/doc/lout\n"))
+                 (("^MANDIR[[:blank:]]*=.*$")
+                  (string-append "MANDIR = " out "/man\n")))
+               (mkdir out)
+               (mkdir (string-append out "/bin"))
+               (mkdir (string-append out "/lib"))
+               (mkdir (string-append out "/man"))
+               (mkdir-p (string-append doc "/share/doc/lout")))
+             #t))
+         (add-after 'install-man-pages 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "doc")))
+               (setenv "PATH"
+                       (string-append (assoc-ref outputs "out")
+                                      "/bin:" (getenv "PATH")))
+               (chdir "doc")
+               (every (lambda (doc)
+                        (format #t "doc: building `~a'...~%" doc)
+                        (with-directory-excursion doc
+                          (let ((file (string-append out "/share/doc/lout/"
+                                                     doc ".ps")))
+                            (and (or (file-exists? "outfile.ps")
+                                     (zero? (system* "lout" "-r4" "-o"
+                                                     "outfile.ps" "all")))
+                                 (begin
+                                   (copy-file "outfile.ps" file)
+                                   #t)
+                                 (zero? (system* "ps2pdf"
+                                                 "-dPDFSETTINGS=/prepress"
+                                                 "-sPAPERSIZE=a4"
+                                                 file
+                                                 (string-append out "/share/doc/lout/"
+                                                                doc ".pdf")))))))
+                      '("design" "expert" "slides" "user")))))
+         (add-after 'install 'install-man-pages
+           (lambda _
+             (zero? (system* "make" "installman")))))))
     (synopsis "Document layout system")
     (description
-"The Lout document formatting system reads a high-level description of
+     "The Lout document formatting system reads a high-level description of
 a document similar in style to LaTeX and produces a PostScript or plain text
 output file.
 
@@ -124,4 +114,4 @@ TeX macros because Lout is a high-level, purely functional language, the
 outcome of an eight-year research project that went back to the
 beginning.")
     (license gpl3+)
-    (home-page "http://savannah.nongnu.org/projects/lout/"))))
+    (home-page "http://savannah.nongnu.org/projects/lout/")))
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index c3cb700be..c8bc4ef85 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -124,7 +124,7 @@ for configuration, scripting, and rapid prototyping.")
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f                      ;luajit is distributed without tests
-       #:phases (alist-delete 'configure %standard-phases)
+       #:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
     (home-page "http://www.luajit.org/")
     (synopsis "Just in time compiler for Lua programming language version 5.1")
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index d39e77d97..91fab8ccf 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -375,54 +375,50 @@ sample proximities between pairs of cases.")
     (arguments
      '(#:tests? #f ;no check target
        #:phases
-       (alist-cons-after
-        'unpack 'delete-broken-symlinks
-        (lambda _
-          (for-each delete-file '("applications/arts/data"
-                                  "applications/asp/data"
-                                  "applications/easysvm/data"
-                                  "applications/msplicer/data"
-                                  "applications/ocr/data"
-                                  "examples/documented/data"
-                                  "examples/documented/matlab_static"
-                                  "examples/documented/octave_static"
-                                  "examples/undocumented/data"
-                                  "examples/undocumented/matlab_static"
-                                  "examples/undocumented/octave_static"
-                                  "tests/integration/data"
-                                  "tests/integration/matlab_static"
-                                  "tests/integration/octave_static"
-                                  "tests/integration/python_modular/tests"))
-          #t)
-        (alist-cons-after
-         'unpack 'change-R-target-path
-         (lambda* (#:key outputs #:allow-other-keys)
-           (substitute* '("src/interfaces/r_modular/CMakeLists.txt"
-                          "src/interfaces/r_static/CMakeLists.txt"
-                          "examples/undocumented/r_modular/CMakeLists.txt")
-             (("\\$\\{R_COMPONENT_LIB_PATH\\}")
-              (string-append (assoc-ref outputs "out")
-                             "/lib/R/library/")))
-           #t)
-         (alist-cons-after
-          'unpack 'fix-octave-modules
-          (lambda* (#:key outputs #:allow-other-keys)
-            (substitute* '("src/interfaces/octave_modular/CMakeLists.txt"
-                           "src/interfaces/octave_static/CMakeLists.txt")
-              (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}")
-               "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave"))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-broken-symlinks
+           (lambda _
+             (for-each delete-file '("applications/arts/data"
+                                     "applications/asp/data"
+                                     "applications/easysvm/data"
+                                     "applications/msplicer/data"
+                                     "applications/ocr/data"
+                                     "examples/documented/data"
+                                     "examples/documented/matlab_static"
+                                     "examples/documented/octave_static"
+                                     "examples/undocumented/data"
+                                     "examples/undocumented/matlab_static"
+                                     "examples/undocumented/octave_static"
+                                     "tests/integration/data"
+                                     "tests/integration/matlab_static"
+                                     "tests/integration/octave_static"
+                                     "tests/integration/python_modular/tests"))
+             #t))
+         (add-after 'unpack 'change-R-target-path
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("src/interfaces/r_modular/CMakeLists.txt"
+                            "src/interfaces/r_static/CMakeLists.txt"
+                            "examples/undocumented/r_modular/CMakeLists.txt")
+               (("\\$\\{R_COMPONENT_LIB_PATH\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/lib/R/library/")))
+             #t))
+         (add-after 'unpack 'fix-octave-modules
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("src/interfaces/octave_modular/CMakeLists.txt"
+                            "src/interfaces/octave_static/CMakeLists.txt")
+               (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}")
+                "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave"))
 
-            ;; change target directory
-            (substitute* "src/interfaces/octave_modular/CMakeLists.txt"
-              (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}")
-               (string-append (assoc-ref outputs "out")
-                              "/share/octave/packages")))
-            #t)
-          (alist-cons-before
-           'build 'set-HOME
+             ;; change target directory
+             (substitute* "src/interfaces/octave_modular/CMakeLists.txt"
+               (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/octave/packages")))
+             #t))
+         (add-before 'build 'set-HOME
            ;; $HOME needs to be set at some point during the build phase
-           (lambda _ (setenv "HOME" "/tmp") #t)
-           %standard-phases))))
+           (lambda _ (setenv "HOME" "/tmp") #t)))
        #:configure-flags
        (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
              "-DUSE_SVMLIGHT=OFF" ;disable proprietary SVMLIGHT
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index cc76a93ed..af8690dda 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1028,51 +1028,51 @@ delivery.")
        ("perl" ,perl)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        ;; We'd use #:make-flags but the top-level Makefile calls others
-        ;; recursively, so just set all variables this way.
-        (lambda* (#:key outputs inputs #:allow-other-keys)
-          (substitute* '("Makefile" "OS/Makefile-Default")
-            (("(RM_COMMAND=).*" all var)
-             (string-append var "rm\n")))
-          (copy-file "src/EDITME" "Local/Makefile")
-          (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
-          (let ((out (assoc-ref outputs "out"))
-                (gzip (assoc-ref inputs "gzip"))
-                (bzip2 (assoc-ref inputs "bzip2"))
-                (xz (assoc-ref inputs "xz")))
-            (substitute* '("Local/Makefile")
-              (("(BIN_DIRECTORY=).*" all var)
-               (string-append var out "/bin\n"))
-              (("(CONFIGURE_FILE=).*" all var)
-               (string-append var out "/etc/exim.conf\n"))
-              (("(EXIM_USER=).*" all var)
-               (string-append var "nobody\n"))
-              (("(FIXED_NEVER_USERS=).*" all var)
-               (string-append var "\n"))  ;XXX no root in build environment
-              (("(COMPRESS_COMMAND=).*" all var)
-               (string-append var gzip "/bin/gzip\n"))
-              (("(ZCAT_COMMAND=).*" all var)
-               (string-append var gzip "/bin/zcat\n")))
-            ;; This file has hardcoded names for tools despite the zcat
-            ;; configuration above.
-            (substitute* '("src/exigrep.src")
-              (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
-              (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
-              (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
-              (("'lzma'") (string-append "'" xz "/bin/lzma'")))))
-        (alist-cons-before
-         'build 'fix-sh-paths
-         (lambda* (#:key inputs #:allow-other-keys)
-           (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
-             (("SHELL=/bin/sh") "SHELL=sh"))
-           (substitute* '("scripts/Configure-config.h")
-             (("\\| /bin/sh") "| sh"))
-           (let ((bash (assoc-ref inputs "bash")))
-             (substitute* '("scripts/Configure-eximon")
-               (("#!/bin/sh") (string-append "#!" bash "/bin/sh")))))
-         %standard-phases))
+       (modify-phases %standard-phases
+         (replace 'configure
+           ;; We'd use #:make-flags but the top-level Makefile calls others
+           ;; recursively, so just set all variables this way.
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (substitute* '("Makefile" "OS/Makefile-Default")
+               (("(RM_COMMAND=).*" all var)
+                (string-append var "rm\n")))
+             (copy-file "src/EDITME" "Local/Makefile")
+             (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
+             (let ((out (assoc-ref outputs "out"))
+                   (gzip (assoc-ref inputs "gzip"))
+                   (bzip2 (assoc-ref inputs "bzip2"))
+                   (xz (assoc-ref inputs "xz")))
+               (substitute* '("Local/Makefile")
+                 (("(BIN_DIRECTORY=).*" all var)
+                  (string-append var out "/bin\n"))
+                 (("(CONFIGURE_FILE=).*" all var)
+                  (string-append var out "/etc/exim.conf\n"))
+                 (("(EXIM_USER=).*" all var)
+                  (string-append var "nobody\n"))
+                 (("(FIXED_NEVER_USERS=).*" all var)
+                  (string-append var "\n"))  ;XXX no root in build environment
+                 (("(COMPRESS_COMMAND=).*" all var)
+                  (string-append var gzip "/bin/gzip\n"))
+                 (("(ZCAT_COMMAND=).*" all var)
+                  (string-append var gzip "/bin/zcat\n")))
+               ;; This file has hardcoded names for tools despite the zcat
+               ;; configuration above.
+               (substitute* '("src/exigrep.src")
+                 (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
+                 (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
+                 (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
+                 (("'lzma'") (string-append "'" xz "/bin/lzma'"))))
+             #t))
+         (add-before 'build 'fix-sh-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
+               (("SHELL=/bin/sh") "SHELL=sh"))
+             (substitute* '("scripts/Configure-config.h")
+               (("\\| /bin/sh") "| sh"))
+             (let ((bash (assoc-ref inputs "bash")))
+               (substitute* '("scripts/Configure-eximon")
+                 (("#!/bin/sh") (string-append "#!" bash "/bin/sh"))))
+             #t)))
        #:make-flags '("INSTALL_ARG=-no_chown")
        ;; No 'check' target.
        #:tests? #f))
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 4eefafbe1..86a79bc0c 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -154,7 +154,7 @@ the traditional flat-text whatis databases.")
                 "14z0zcwm0m98fk2m2b3pvr8rs2sb602mg8f7wwb4xl7yj7cpjvbg"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
 
        ;; The 'all' target depends on three targets that directly populate
        ;; $(MANDIR) based on its current contents.  Doing that in parallel
@@ -220,7 +220,7 @@ automatically.")
     (arguments
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("gawk" ,gawk)))
     (home-page "https://github.com/mvertes/txt2man")
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 6566d750b..31ed4a49d 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -456,13 +456,14 @@ large scale eigenvalue problems.")
 
                           ;; Build the 'LAPACKE_clatms' functions.
                           "-DLAPACKE_WITH_TMG=ON")
-       #:phases (alist-cons-before
-                 'check 'patch-python
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (let ((python (assoc-ref inputs "python")))
-                     (substitute* "lapack_testing.py"
-                       (("/usr/bin/env python") python))))
-                  %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-python
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((python (assoc-ref inputs "python")))
+               (substitute* "lapack_testing.py"
+                 (("/usr/bin/env python") python)))
+             #t)))))
     (synopsis "Library for numerical linear algebra")
     (description
      "LAPACK is a Fortran 90 library for solving the most commonly occurring
@@ -1758,12 +1759,12 @@ void mc64ad_ (int *a, int *b, int *c, int *d, int *e, double *f, int *g,
     (arguments
      `(#:parallel-build? #f             ;race conditions using ar
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (call-with-output-file "make.inc"
-            (lambda (port)
-              (format port "
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (call-with-output-file "make.inc"
+               (lambda (port)
+                 (format port "
 PLAT        =
 DSuperLUroot = ~a
 DSUPERLULIB  = ~a/lib/libsuperlu_dist.a
@@ -1786,47 +1787,46 @@ FORTRAN     = mpifort
 FFLAGS      = -O2 -g $(PIC)
 LOADER      = $(CC)
 CDEFS       = -DAdd_"
-                      (getcwd)
-                      (assoc-ref outputs "out")
-                      (assoc-ref inputs "lapack")
-                      (assoc-ref inputs "pt-scotch")))))
-        (alist-cons-after
-         'unpack 'remove-broken-symlinks
-         (lambda _
-           (for-each delete-file
-                     (find-files "MAKE_INC" "\\.#make\\..*")))
-         (alist-cons-before
-          'build 'create-install-directories
-          (lambda* (#:key outputs #:allow-other-keys)
-            (for-each
-             (lambda (dir)
-               (mkdir-p (string-append (assoc-ref outputs "out")
-                                       "/" dir)))
-             '("lib" "include")))
-          (alist-replace
-           'check
+                         (getcwd)
+                         (assoc-ref outputs "out")
+                         (assoc-ref inputs "lapack")
+                         (assoc-ref inputs "pt-scotch"))))
+             #t))
+         (add-after 'unpack 'remove-broken-symlinks
+           (lambda _
+             (for-each delete-file
+                       (find-files "MAKE_INC" "\\.#make\\..*"))
+             #t))
+         (add-before 'build 'create-install-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (for-each
+              (lambda (dir)
+                (mkdir-p (string-append (assoc-ref outputs "out")
+                                        "/" dir)))
+              '("lib" "include"))
+             #t))
+         (replace 'check
            (lambda _
              (with-directory-excursion "EXAMPLE"
                (and
                 (zero? (system* "mpirun" "-n" "2"
                                 "./pddrive" "-r" "1" "-c" "2" "g20.rua"))
                 (zero? (system* "mpirun" "-n" "2"
-                                "./pzdrive" "-r" "1" "-c" "2" "cg20.cua")))))
-           (alist-replace
-            'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              ;; Library is placed in lib during the build phase.  Copy over
-              ;; headers to include.
-              (let* ((out    (assoc-ref outputs "out"))
-                     (incdir (string-append out "/include")))
-                (for-each (lambda (file)
-                            (let ((base (basename file)))
-                              (format #t "installing `~a' to `~a'~%"
-                                      base incdir)
-                              (copy-file file
-                                         (string-append incdir "/" base))))
-                          (find-files "SRC" ".*\\.h$"))))
-            %standard-phases)))))))
+                                "./pzdrive" "-r" "1" "-c" "2" "cg20.cua"))))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Library is placed in lib during the build phase.  Copy over
+             ;; headers to include.
+             (let* ((out    (assoc-ref outputs "out"))
+                    (incdir (string-append out "/include")))
+               (for-each (lambda (file)
+                           (let ((base (basename file)))
+                             (format #t "installing `~a' to `~a'~%"
+                                     base incdir)
+                             (copy-file file
+                                        (string-append incdir "/" base))))
+                         (find-files "SRC" ".*\\.h$")))
+             #t)))))
     (home-page (package-home-page superlu))
     (synopsis "Parallel supernodal direct solver")
     (description
@@ -2356,7 +2356,7 @@ parts of it.")
        (list (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases
        ;; no configure script
-       (alist-delete 'configure %standard-phases)
+       (modify-phases %standard-phases (delete 'configure))
        #:tests? #f)) ;the tests are part of the default target
     (home-page "http://openlibm.org/")
     (synopsis "Portable C mathematical library (libm)")
@@ -2395,7 +2395,7 @@ environments.")
        #:make-flags
        (list (string-append "prefix=" (assoc-ref %outputs "out")))
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("fortran" ,gfortran)))
     (home-page "https://github.com/JuliaLang/openspecfun")
@@ -2440,15 +2440,16 @@ Fresnel integrals, and similar related functions as well.")
              (string-append "INSTALL_INCLUDE="
                             (assoc-ref %outputs "out") "/include"))
        #:phases
-       (alist-cons-before
-        'install 'prepare-out
-        ;; README.txt states that the target directories must exist prior to
-        ;; running "make install".
-        (lambda _
-          (mkdir-p (string-append (assoc-ref %outputs "out") "/lib"))
-          (mkdir-p (string-append (assoc-ref %outputs "out") "/include")))
-        ;; no configure script
-        (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'install 'prepare-out
+           ;; README.txt states that the target directories must exist prior to
+           ;; running "make install".
+           (lambda _
+             (mkdir-p (string-append (assoc-ref %outputs "out") "/lib"))
+             (mkdir-p (string-append (assoc-ref %outputs "out") "/include"))
+             #t))
+         ;; no configure script
+         (delete 'configure))))
     (inputs
      `(("tbb" ,tbb)
        ("lapack" ,lapack)))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index eb9e86915..adb7b938f 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -142,20 +142,19 @@ keys, no previous conversation is compromised.")
               ("python" ,python-2)
               ("perl" ,perl)))
     (arguments
-     `(#:phases (alist-cons-after
-                 'install 'install-etc
-                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
-                   (zero? (apply system* "make" "install-etc" make-flags)))
-                 (alist-replace
-                  'configure
-                  ;; bitlbee's configure script does not tolerate many of the
-                  ;; variable settings that Guix would pass to it.
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (zero? (system* "./configure"
-                                    (string-append "--prefix="
-                                                   (assoc-ref outputs "out"))
-                                    "--otr=1")))
-                  %standard-phases))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-etc
+           (lambda* (#:key (make-flags '()) #:allow-other-keys)
+             (zero? (apply system* "make" "install-etc" make-flags))))
+         (replace 'configure
+           ;; bitlbee's configure script does not tolerate many of the
+           ;; variable settings that Guix would pass to it.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (zero? (system* "./configure"
+                             (string-append "--prefix="
+                                            (assoc-ref outputs "out"))
+                             "--otr=1")))))))
     (synopsis "IRC to instant messaging gateway")
     (description "BitlBee brings IM (instant messaging) to IRC clients, for
 people who have an IRC client running all the time and don't want to run an
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 789e596f8..23063616f 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -65,12 +65,12 @@
    (build-system gnu-build-system)
    (arguments
     `(#:phases
-       (alist-cons-before
-        'configure 'remove-unsupported-gcc-flags
-        (lambda _
-          ;; remove option that is not supported by gcc any more
-          (substitute* "configure" ((" -fforce-mem") "")))
-       %standard-phases)))
+      (modify-phases %standard-phases
+        (add-before 'configure 'remove-unsupported-gcc-flags
+          (lambda _
+            ;; remove option that is not supported by gcc any more
+            (substitute* "configure" ((" -fforce-mem") ""))
+            #t)))))
    (synopsis "MPEG audio decoder")
    (description
     "MAD (MPEG Audio Decoder) supports MPEG-1 and the MPEG-2 extension to
@@ -118,20 +118,20 @@ versions of ID3v2.")
    (build-system gnu-build-system)
    (arguments
     `(#:phases
-       (alist-cons-before
-        'configure 'apply-patches
-        ;; TODO: create a patch for origin instead?
-        (lambda _
-          (substitute* "configure"
-            (("iomanip.h") "")) ; drop check for unused header
-          ;; see http://www.linuxfromscratch.org/patches/downloads/id3lib/
-          (substitute* "include/id3/id3lib_strings.h"
-            (("include <string>") "include <cstring>\n#include <string>"))
-          (substitute* "include/id3/writers.h"
-            (("//\\#include <string.h>") "#include <cstring>"))
-          (substitute* "examples/test_io.cpp"
-            (("dami;") "dami;\nusing namespace std;")))
-         %standard-phases)))
+      (modify-phases %standard-phases
+        (add-before 'configure 'apply-patches
+          ;; TODO: create a patch for origin instead?
+          (lambda _
+            (substitute* "configure"
+              (("iomanip.h") "")) ; drop check for unused header
+            ;; see http://www.linuxfromscratch.org/patches/downloads/id3lib/
+            (substitute* "include/id3/id3lib_strings.h"
+              (("include <string>") "include <cstring>\n#include <string>"))
+            (substitute* "include/id3/writers.h"
+              (("//\\#include <string.h>") "#include <cstring>"))
+            (substitute* "examples/test_io.cpp"
+              (("dami;") "dami;\nusing namespace std;"))
+            #t)))))
    (synopsis "Library for reading, writing, and manipulating ID3v1 and ID3v2 tags")
    (description
     "Id3lib is a cross-platform software development library for reading,
@@ -189,29 +189,30 @@ Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
     (build-system gnu-build-system)
     (outputs '("out" "gui"))                      ;GTK+ interface in "gui"
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (substitute* "Makefile"
-                       (("prefix=.*")
-                        (string-append "prefix := " out "\n")))))
-                 (alist-cons-before
-                  'install 'pre-install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out")))
-                      (mkdir-p (string-append out "/bin"))
-                      (mkdir-p (string-append out "/share/man/man1"))))
-                  (alist-cons-after
-                   'install 'post-install
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; Move the GTK+ interface to "gui".
-                     (let ((out (assoc-ref outputs "out"))
-                           (gui (assoc-ref outputs "gui")))
-                       (mkdir-p (string-append gui "/bin"))
-                       (rename-file (string-append out "/bin/gmp3info")
-                                    (string-append gui "/bin/gmp3info"))))
-                   %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "Makefile"
+                 (("prefix=.*")
+                  (string-append "prefix := " out "\n"))))
+             #t))
+         (add-before 'install 'pre-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/share/man/man1")))
+             #t))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Move the GTK+ interface to "gui".
+             (let ((out (assoc-ref outputs "out"))
+                   (gui (assoc-ref outputs "gui")))
+               (mkdir-p (string-append gui "/bin"))
+               (rename-file (string-append out "/bin/gmp3info")
+                            (string-append gui "/bin/gmp3info")))
+             #t)))
         #:tests? #f))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 40996b11b..8875c85e2 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -867,60 +867,60 @@ complete studio.")
      `(#:tests? #f ; xmllint attempts to download DTD
        #:test-target "test"
        #:phases
-       (alist-cons-after
-        'unpack 'fix-configuration
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "default.config"
-            (("csound=csound")
-             (string-append "csound="
-                            (assoc-ref inputs "csound")
-                            "/bin/csound"))
-            (("/usr/bin/aplay")
-             (string-append (assoc-ref inputs "aplay")
-                            "/bin/aplay"))
-            (("/usr/bin/timidity")
-             (string-append (assoc-ref inputs "timidity")
-                            "/bin/timidity"))
-            (("/usr/bin/mpg123")
-             (string-append (assoc-ref inputs "mpg123")
-                            "/bin/mpg123"))
-            (("/usr/bin/ogg123")
-             (string-append (assoc-ref inputs "ogg123")
-                            "/bin/ogg123"))))
-        (alist-cons-before
-         'build 'patch-python-shebangs
-         (lambda _
-           ;; Two python scripts begin with a Unicode BOM, so patch-shebang
-           ;; has no effect.
-           (substitute* '("solfege/parsetree.py"
-                          "solfege/presetup.py")
-             (("#!/usr/bin/python") (string-append "#!" (which "python")))))
-         (alist-cons-before
-          'build 'add-sitedirs
-          ;; .pth files are not automatically interpreted unless the
-          ;; directories containing them are added as "sites".  The directories
-          ;; are then added to those in the PYTHONPATH.  This is required for
-          ;; the operation of pygtk and pygobject.
-          (lambda _
-            (substitute* "run-solfege.py"
-              (("import os")
-               "import os, site
-for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
-          (alist-cons-before
-           'build 'adjust-config-file-prefix
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-configuration
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "default.config"
+               (("csound=csound")
+                (string-append "csound="
+                               (assoc-ref inputs "csound")
+                               "/bin/csound"))
+               (("/usr/bin/aplay")
+                (string-append (assoc-ref inputs "aplay")
+                               "/bin/aplay"))
+               (("/usr/bin/timidity")
+                (string-append (assoc-ref inputs "timidity")
+                               "/bin/timidity"))
+               (("/usr/bin/mpg123")
+                (string-append (assoc-ref inputs "mpg123")
+                               "/bin/mpg123"))
+               (("/usr/bin/ogg123")
+                (string-append (assoc-ref inputs "ogg123")
+                               "/bin/ogg123")))
+             #t))
+         (add-before 'build 'patch-python-shebangs
+           (lambda _
+             ;; Two python scripts begin with a Unicode BOM, so patch-shebang
+             ;; has no effect.
+             (substitute* '("solfege/parsetree.py"
+                            "solfege/presetup.py")
+               (("#!/usr/bin/python") (string-append "#!" (which "python"))))
+             #t))
+         (add-before 'build 'add-sitedirs
+           ;; .pth files are not automatically interpreted unless the
+           ;; directories containing them are added as "sites".  The directories
+           ;; are then added to those in the PYTHONPATH.  This is required for
+           ;; the operation of pygtk and pygobject.
+           (lambda _
+             (substitute* "run-solfege.py"
+               (("import os")
+                "import os, site
+for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))
+             #t))
+         (add-before 'build 'adjust-config-file-prefix
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "run-solfege.py"
                (("prefix = os.path.*$")
-                (string-append "prefix = " (assoc-ref outputs "out")))))
-           (alist-cons-after
-            'install 'wrap-program
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              ;; Make sure 'solfege' runs with the correct PYTHONPATH.
-              (let* ((out (assoc-ref outputs "out"))
-                     (path (getenv "PYTHONPATH")))
-                (wrap-program (string-append out "/bin/solfege")
-                  `("PYTHONPATH" ":" prefix (,path)))))
-            %standard-phases)))))))
+                (string-append "prefix = " (assoc-ref outputs "out"))))
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Make sure 'solfege' runs with the correct PYTHONPATH.
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (getenv "PYTHONPATH")))
+               (wrap-program (string-append out "/bin/solfege")
+                 `("PYTHONPATH" ":" prefix (,path))))
+             #t)))))
     (inputs
      `(("python" ,python-2)
        ("pygtk" ,python2-pygtk)
diff --git a/gnu/packages/noweb.scm b/gnu/packages/noweb.scm
index be90e2dc6..0954e7995 100644
--- a/gnu/packages/noweb.scm
+++ b/gnu/packages/noweb.scm
@@ -35,47 +35,46 @@
                "10hdd6mrk26kyh4bnng4ah5h1pnanhsrhqa7qwqy6dyv3rng44y9"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'install 'pre-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (mkdir-p (string-append out "/share/texmf/tex/latex"))
-                     #t))
-                 (alist-cons-after
-                  'install 'post-install
-                  (lambda* (#:key outputs inputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out"))
-                          (cu  (assoc-ref inputs "coreutils"))
-                          (du  (assoc-ref inputs "diffutils")))
-                      (with-directory-excursion out
-                        (for-each (lambda (prog)
-                                    (substitute* prog
-                                      (("nawk") (which "awk"))))
-                                  (append (map (lambda (x)
-                                                 (string-append "bin/" x))
-                                               '("noweb" "nountangle"
-                                                 "noroots" "noroff"
-                                                 "noindex"))
-                                          (map (lambda (x)
-                                                 (string-append "lib/" x))
-                                               '("btdefn" "emptydefn" "noidx"
-                                                 "pipedocs" "toascii" "tohtml"
-                                                 "toroff" "totex" "unmarkup"))))
-                        (substitute* "bin/cpif"
-                          (("^PATH=.*$")
-                           (string-append "PATH=" cu "/bin:" du "/bin\n"))))
-                      #t))
-                  (alist-replace
-                   'configure
-                   (lambda _
-                     ;; Jump in the source.
-                     (chdir "src")
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'pre-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/share/texmf/tex/latex"))
+               #t)))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (cu  (assoc-ref inputs "coreutils"))
+                   (du  (assoc-ref inputs "diffutils")))
+               (with-directory-excursion out
+                 (for-each (lambda (prog)
+                             (substitute* prog
+                               (("nawk") (which "awk"))))
+                           (append (map (lambda (x)
+                                          (string-append "bin/" x))
+                                        '("noweb" "nountangle"
+                                          "noroots" "noroff"
+                                          "noindex"))
+                                   (map (lambda (x)
+                                          (string-append "lib/" x))
+                                        '("btdefn" "emptydefn" "noidx"
+                                          "pipedocs" "toascii" "tohtml"
+                                          "toroff" "totex" "unmarkup"))))
+                 (substitute* "bin/cpif"
+                   (("^PATH=.*$")
+                    (string-append "PATH=" cu "/bin:" du "/bin\n"))))
+               #t)))
+         (replace 'configure
+           (lambda _
+             ;; Jump in the source.
+             (chdir "src")
 
-                     ;; The makefile reads "source: FAQ", but FAQ isn't
-                     ;; available.
-                     (substitute* "Makefile"
-                       (("FAQ") "")))
-                   %standard-phases)))
+             ;; The makefile reads "source: FAQ", but FAQ isn't
+             ;; available.
+             (substitute* "Makefile"
+               (("FAQ") ""))
+             #t)))
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                       (list (string-append "BIN=" out "/bin")
                             (string-append "LIB=" out "/lib")
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 42da56194..c8491dc05 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -53,30 +53,31 @@
     (inputs `(("perl" ,perl)))
     (arguments
      '(#:parallel-tests? #f
-       #:phases (alist-cons-before
-                 'check 'patch-test-scripts
-                 (lambda _
-                   (let ((echo (which "echo")))
-                     (substitute*
-                         (find-files "tests" "^run-test$")
-                       (("/bin/echo") echo))))
-                 (alist-cons-after
-                  'install 'wrap-program
-                  ;; Point installed scripts to the utilities they need.
-                  (lambda* (#:key inputs outputs #:allow-other-keys)
-                    (let* ((out       (assoc-ref outputs "out"))
-                           (diffutils (assoc-ref inputs "diffutils"))
-                           (sed       (assoc-ref inputs "sed"))
-                           (gawk      (assoc-ref inputs "gawk")))
-                      (for-each
-                       (lambda (prog)
-                         (wrap-program (string-append out "/bin/" prog)
-                                       `("PATH" ":" prefix
-                                         ,(map (lambda (dir)
-                                                 (string-append dir "/bin"))
-                                               (list diffutils sed gawk)))))
-                       '("dehtmldiff" "editdiff" "espdiff"))))
-                  %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test-scripts
+           (lambda _
+             (let ((echo (which "echo")))
+               (substitute*
+                   (find-files "tests" "^run-test$")
+                 (("/bin/echo") echo)))
+             #t))
+         (add-after 'install 'wrap-program
+           ;; Point installed scripts to the utilities they need.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out       (assoc-ref outputs "out"))
+                    (diffutils (assoc-ref inputs "diffutils"))
+                    (sed       (assoc-ref inputs "sed"))
+                    (gawk      (assoc-ref inputs "gawk")))
+               (for-each
+                (lambda (prog)
+                  (wrap-program (string-append out "/bin/" prog)
+                    `("PATH" ":" prefix
+                      ,(map (lambda (dir)
+                              (string-append dir "/bin"))
+                            (list diffutils sed gawk)))))
+                '("dehtmldiff" "editdiff" "espdiff")))
+             #t)))))
     (home-page "http://cyberelk.net/tim/software/patchutils")
     (synopsis "Collection of tools for manipulating patch files")
     (description
@@ -105,39 +106,39 @@ listing the files modified by a patch.")
               ("ed" ,ed)))
     (arguments
      '(#:parallel-tests? #f
-       #:phases 
-       (alist-cons-before
-        'check 'patch-tests
-        (lambda _
-          (substitute*
-              '("test/run"
-                "test/edit.test") 
-            (("/bin/sh") (which "sh")))
-          ;; TODO: Run the mail tests once the mail feature can be supported.
-          (delete-file "test/mail.test"))
-        (alist-cons-after
-         'install 'wrap-program
-         ;; quilt's configure checks for the absolute path to the utilities it
-         ;; needs, but uses only the name when invoking them, so we need to
-         ;; make sure the quilt script can find those utilities when run.
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let* ((out       (assoc-ref outputs "out"))
-                  (coreutils (assoc-ref inputs "coreutils"))
-                  (diffutils (assoc-ref inputs "diffutils"))
-                  (findutils (assoc-ref inputs "findutils"))
-                  (less      (assoc-ref inputs "less"))
-                  (file      (assoc-ref inputs "file"))
-                  (ed        (assoc-ref inputs "ed"))
-                  (sed       (assoc-ref inputs "sed"))
-                  (bash      (assoc-ref inputs "bash"))
-                  (grep      (assoc-ref inputs "grep")))
-             (wrap-program (string-append out "/bin/quilt")
-                           `("PATH" ":" prefix
-                             ,(map (lambda (dir)
-                                     (string-append dir "/bin"))
-                                   (list coreutils diffutils findutils
-                                         less file ed sed bash grep))))))
-         %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-tests
+           (lambda _
+             (substitute*
+                 '("test/run"
+                   "test/edit.test")
+               (("/bin/sh") (which "sh")))
+             ;; TODO: Run the mail tests once the mail feature can be supported.
+             (delete-file "test/mail.test")
+             #t))
+         (add-after 'install 'wrap-program
+           ;; quilt's configure checks for the absolute path to the utilities it
+           ;; needs, but uses only the name when invoking them, so we need to
+           ;; make sure the quilt script can find those utilities when run.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out       (assoc-ref outputs "out"))
+                    (coreutils (assoc-ref inputs "coreutils"))
+                    (diffutils (assoc-ref inputs "diffutils"))
+                    (findutils (assoc-ref inputs "findutils"))
+                    (less      (assoc-ref inputs "less"))
+                    (file      (assoc-ref inputs "file"))
+                    (ed        (assoc-ref inputs "ed"))
+                    (sed       (assoc-ref inputs "sed"))
+                    (bash      (assoc-ref inputs "bash"))
+                    (grep      (assoc-ref inputs "grep")))
+               (wrap-program (string-append out "/bin/quilt")
+                 `("PATH" ":" prefix
+                   ,(map (lambda (dir)
+                           (string-append dir "/bin"))
+                         (list coreutils diffutils findutils
+                               less file ed sed bash grep)))))
+             #t)))))
     (home-page "https://savannah.nongnu.org/projects/quilt/")
     (synopsis "Script for managing patches to software")
     (description
@@ -164,8 +165,9 @@ refreshed, and more.")
        #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
                           "INSTALL_DIR=/bin" "MAN_DIR=/share/man/man1")
        #:phases
-       (alist-delete 'configure
-                     (alist-delete 'build %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build))))
     (inputs
      `(("perl" ,perl)
        ("xmlto" ,xmlto)))
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 7b76955e2..20dfdafb9 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -305,23 +305,23 @@ reading and editing of existing PDF files.")
     `(#:tests? #f ; there is no check target
       #:parallel-build? #f ; build fails randomly on 8-way machines
       #:configure-flags
-        (list (string-append "--with-freetype2-includes="
-                             (assoc-ref %build-inputs "freetype")
-                             "/include/freetype2"))
+      (list (string-append "--with-freetype2-includes="
+                           (assoc-ref %build-inputs "freetype")
+                           "/include/freetype2"))
       #:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs inputs #:allow-other-keys #:rest args)
-         (let* ((install (assoc-ref %standard-phases 'install))
-                (out (assoc-ref outputs "out"))
-                (xpdfrc (string-append out "/etc/xpdfrc"))
-                (gs-fonts (assoc-ref inputs "gs-fonts")))
-               (apply install args)
-               (substitute* xpdfrc
+      (modify-phases %standard-phases
+        (replace 'install
+          (lambda* (#:key outputs inputs #:allow-other-keys #:rest args)
+            (let* ((install (assoc-ref %standard-phases 'install))
+                   (out (assoc-ref outputs "out"))
+                   (xpdfrc (string-append out "/etc/xpdfrc"))
+                   (gs-fonts (assoc-ref inputs "gs-fonts")))
+              (apply install args)
+              (substitute* xpdfrc
                 (("/usr/local/share/ghostscript/fonts")
                  (string-append gs-fonts "/share/fonts/type1/ghostscript"))
-                (("#fontFile") "fontFile"))))
-        %standard-phases)))
+                (("#fontFile") "fontFile")))
+            #t)))))
    (synopsis "Viewer for PDF files based on the Motif toolkit")
    (description
     "Xpdf is a viewer for Portable Document Format (PDF) files.")
@@ -352,7 +352,7 @@ reading and editing of existing PDF files.")
                           "CC=gcc")
        #:tests? #f ; Package does not contain tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-cb/")
     (synopsis "Comic book support for zathura (libarchive backend)")
     (description "The zathura-cb plugin adds comic book support to zathura
@@ -383,7 +383,7 @@ using libarchive.")
                           "CC=gcc")
        #:tests? #f ; Package does not contain tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-ps/")
     (synopsis "PS support for zathura (libspectre backend)")
     (description "The zathura-ps plugin adds PS support to zathura
@@ -415,7 +415,7 @@ using libspectre.")
                           "CC=gcc")
        #:tests? #f ; Package does not contain tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-djvu/")
     (synopsis "DjVu support for zathura (DjVuLibre backend)")
     (description "The zathura-djvu plugin adds DjVu support to zathura
@@ -448,7 +448,7 @@ using the DjVuLibre library.")
                           "CC=gcc")
        #:tests? #f ; Package does not include tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-pdf-poppler/")
     (synopsis "PDF support for zathura (poppler backend)")
     (description "The zathura-pdf-poppler plugin adds PDF support to zathura
@@ -486,7 +486,7 @@ by using the poppler rendering engine.")
        #:tests? #f ; Tests fail: "Gtk cannot open display".
        #:test-target "test"
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura/")
     (synopsis "Lightweight keyboard-driven PDF viewer")
     (description "Zathura is a customizable document viewer.  It provides a
@@ -519,14 +519,14 @@ interaction.")
      `(#:configure-flags '("-DPODOFO_BUILD_SHARED=ON"
                            "-DPODOFO_BUILD_STATIC=ON")
        #:phases
-         (alist-cons-before
-         'configure 'patch
-         (lambda* (#:key inputs #:allow-other-keys)
-           (let ((freetype (assoc-ref inputs "freetype")))
-             ;; Look for freetype include files in the correct place.
-             (substitute* "cmake/modules/FindFREETYPE.cmake"
-               (("/usr/local") freetype))))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((freetype (assoc-ref inputs "freetype")))
+               ;; Look for freetype include files in the correct place.
+               (substitute* "cmake/modules/FindFREETYPE.cmake"
+                 (("/usr/local") freetype)))
+             #t)))))
     (home-page "http://podofo.sourceforge.net")
     (synopsis "Tools to work with the PDF file format")
     (description
@@ -772,13 +772,14 @@ the PDF pages.")
                 "0bw224vb7jh0lrqaf4jgxk48xglvxs674qcpj5y0axyfbh896cfk"))))
     (build-system gnu-build-system)
     (arguments
-      '(#:phases (alist-cons-after
-                  'unpack 'patch-ldconfig
-                  (lambda _
-                   (substitute* "mk/Autoconf.mk"
-                    (("/sbin/ldconfig -p") "echo lib")) #t)
-                  (alist-delete 'configure %standard-phases))
-        #:tests? #f
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-ldconfig
+           (lambda _
+             (substitute* "mk/Autoconf.mk"
+               (("/sbin/ldconfig -p") "echo lib")) #t))
+         (delete 'configure))
+       #:tests? #f
         #:make-flags (list "CC=gcc"
                            (string-append "prefix=" (assoc-ref %outputs "out")))))
     (inputs `(("libjpeg" ,libjpeg)
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 6a59e6bf8..5248d773f 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -3060,11 +3060,11 @@ at the end of the scope.")
     (build-system perl-build-system)
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'cd
-        (lambda* _
-         (chdir "List"))
-       %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'cd
+           (lambda* _
+             (chdir "List")
+             #t)))))
     (license (package-license perl))
     (synopsis "Perl extension for crawling directory trees and compiling
 lists of files")
@@ -6621,16 +6621,17 @@ contents of a file is equal to a particular string.")
          "0gmnjss0hjkyiwvgby50nl5nzv254pn7fjqqdysjil21n09nymp7"))))
     (build-system perl-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'check 'patch-test
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; This test looks for "#!/usr/bin/perl" in some source.
-                   ;; Patch what the test looks for.
-                   (substitute* "t/source.t"
-                     (("#!/usr/bin/perl")
-                      (string-append "#!" (assoc-ref inputs "perl")
-                                     "/bin/perl"))))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; This test looks for "#!/usr/bin/perl" in some source.
+             ;; Patch what the test looks for.
+             (substitute* "t/source.t"
+               (("#!/usr/bin/perl")
+                (string-append "#!" (assoc-ref inputs "perl")
+                               "/bin/perl")))
+             #t)))))
     (home-page "http://search.cpan.org/dist/Test-Harness")
     (synopsis "Run Perl standard test scripts with statistics")
     (description "Simple test harness which allows tests to be run and results
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 7cfbe2ffb..169a876c5 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -152,13 +152,14 @@ from digital cameras.")
        ("libexif" ,libexif)
        ("libgphoto2" ,libgphoto2)))
     (arguments
-     '(#:phases (alist-cons-before
-                 'check 'pre-check
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (substitute* (find-files "tests/data" "\\.param$")
-                     (("/usr/bin/env")
-                      (which "env"))))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (find-files "tests/data" "\\.param$")
+               (("/usr/bin/env")
+                (which "env")))
+             #t)))
 
        ;; FIXME: There are 2 test failures, most likely related to the build
        ;; environment.
diff --git a/gnu/packages/popt.scm b/gnu/packages/popt.scm
index 4978ea729..9c125dcc4 100644
--- a/gnu/packages/popt.scm
+++ b/gnu/packages/popt.scm
@@ -66,14 +66,15 @@ line syntax.")
                "1j2c61nn2n351nhj4d25mnf3vpiddcykq005w2h6kw79dwlysa77"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'patch-test
-                 (lambda _
-                   (substitute* "test-poptrc.in"
-                     (("/bin/echo") (which "echo")))
-                   (substitute* "testit.sh"   ; don't expect old libtool names
-                     (("lt-test1") "test1")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-test
+           (lambda _
+             (substitute* "test-poptrc.in"
+               (("/bin/echo") (which "echo")))
+             (substitute* "testit.sh"   ; don't expect old libtool names
+               (("lt-test1") "test1"))
+             #t)))))
     (home-page "http://rpm5.org/files/popt/")
     (synopsis "Command line option parsing library")
     (description
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index 9de281974..e97193003 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -205,22 +205,23 @@ to @code{IOStreams}.")
        (list (string-append "--with-boost="
                             (assoc-ref %build-inputs "boost")))
        #:parallel-tests? #f             ;There appear to be race conditions
-       #:phases (alist-cons-before
-                 'check 'patch-test-files
-                 (lambda _
-                   ;; Unpatch shebangs in test input so that source-highlight
-                   ;; is still able to infer input language
-                   (substitute* '("tests/test.sh"
-                                  "tests/test2.sh"
-                                  "tests/test.tcl")
-                     (((string-append "#! *" (which "sh"))) "#!/bin/sh"))
-                   ;; Initial patching unrecoverably removes whitespace, so
-                   ;; remove it also in the comparison output.
-                   (substitute* '("tests/test.sh.html"
-                                  "tests/test2.sh.html"
-                                  "tests/test.tcl.html")
-                     (("#! */bin/sh") "#!/bin/sh")))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test-files
+           (lambda _
+             ;; Unpatch shebangs in test input so that source-highlight
+             ;; is still able to infer input language
+             (substitute* '("tests/test.sh"
+                            "tests/test2.sh"
+                            "tests/test.tcl")
+               (((string-append "#! *" (which "sh"))) "#!/bin/sh"))
+             ;; Initial patching unrecoverably removes whitespace, so
+             ;; remove it also in the comparison output.
+             (substitute* '("tests/test.sh.html"
+                            "tests/test2.sh.html"
+                            "tests/test.tcl.html")
+               (("#! */bin/sh") "#!/bin/sh"))
+             #t)))))
     (home-page "https://www.gnu.org/software/src-highlite/")
     (synopsis "Produce a document with syntax highlighting from a source file")
     (description
@@ -292,22 +293,22 @@ highlighting.  Language definitions and color themes are customizable.")
        #:make-flags (list (string-append "prefix=" %output)
                           "INSTALL=install"
                           "all")
-       #:phases (alist-replace
-                 'configure
-                 (lambda _ (chdir "build/gcc"))
-                 (alist-cons-after
-                  'install 'install-libs
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    ;; Libraries are not installed by default
-                    (let* ((output (assoc-ref outputs "out"))
-                           (libdir (string-append output "/lib")))
-                      (begin
-                        (mkdir-p libdir)
-                        (for-each (lambda (l)
-                                    (copy-file
-                                     l (string-append libdir "/" (basename l))))
-                                  (find-files "bin" "lib*")))))
-                  %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _ (chdir "build/gcc") #t))
+         (add-after 'install 'install-libs
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Libraries are not installed by default
+             (let* ((output (assoc-ref outputs "out"))
+                    (libdir (string-append output "/lib")))
+               (begin
+                 (mkdir-p libdir)
+                 (for-each (lambda (l)
+                             (copy-file
+                              l (string-append libdir "/" (basename l))))
+                           (find-files "bin" "lib*"))))
+             #t)))))
     (home-page "http://astyle.sourceforge.net/")
     (synopsis "Source code indenter, formatter, and beautifier")
     (description
diff --git a/gnu/packages/pumpio.scm b/gnu/packages/pumpio.scm
index a74d47436..c692e6932 100644
--- a/gnu/packages/pumpio.scm
+++ b/gnu/packages/pumpio.scm
@@ -42,22 +42,22 @@
               (file-name (string-append name "-" version "-checkout"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   ;; Fix dependency tests.
-                   (substitute* "pumpa.pro"
-                     (("/usr/include/tidy\\.h")
-                      (string-append (assoc-ref inputs "tidy")
-                                     "/include/tidy.h"))
-                     (("/usr/include/aspell.h")
-                      (string-append (assoc-ref inputs "aspell")
-                                     "/include/aspell.h")))
-                   ;; Run qmake with proper installation prefix.
-                   (let ((prefix (string-append "PREFIX="
-                                                (assoc-ref outputs "out"))))
-                     (zero? (system* "qmake" prefix))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Fix dependency tests.
+             (substitute* "pumpa.pro"
+               (("/usr/include/tidy\\.h")
+                (string-append (assoc-ref inputs "tidy")
+                               "/include/tidy.h"))
+               (("/usr/include/aspell.h")
+                (string-append (assoc-ref inputs "aspell")
+                               "/include/aspell.h")))
+             ;; Run qmake with proper installation prefix.
+             (let ((prefix (string-append "PREFIX="
+                                          (assoc-ref outputs "out"))))
+               (zero? (system* "qmake" prefix))))))))
     (inputs
      `(("aspell" ,aspell)
        ("qtbase" ,qtbase)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 2b3820221..3d6a78356 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -480,11 +480,10 @@ pidof, tty, taskset, pmap.")
      `(("python-py-bcrypt" ,python-py-bcrypt)))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'check 'set-PYTHON_EGG_CACHE
-        ;; some tests require access to "$HOME/.cython"
-        (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'check 'set-PYTHON_EGG_CACHE
+           ;; some tests require access to "$HOME/.cython"
+           (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
     (home-page "https://bitbucket.org/ecollins/passlib")
     (synopsis
      "Comprehensive password hashing framework")
@@ -1074,12 +1073,12 @@ multiple Unicode code points, e.g. \"G\" + acute-accent)
        ("gmp" ,gmp)))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'build 'set-build-env
-        ;; pycrypto runs an autoconf configure script behind the scenes
-        (lambda _
-          (setenv "CONFIG_SHELL" (which "bash")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'build 'set-build-env
+           ;; pycrypto runs an autoconf configure script behind the scenes
+           (lambda _
+             (setenv "CONFIG_SHELL" (which "bash"))
+             #t)))))
     (home-page "http://www.pycrypto.org/")
     (synopsis "Cryptographic modules for Python")
     (description
@@ -1464,11 +1463,11 @@ other Python program.")
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2
-       #:phases (alist-replace
-                 'check
-                 (lambda _
-                   (zero? (system* "./test.sh")))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "./test.sh")))))))
     (home-page "http://www.alcyone.com/software/empy/")
     (synopsis "Templating system for Python")
     (description
@@ -4532,10 +4531,10 @@ as the original project seems to have been abandoned circa 2007.")
        ("python-pytest" ,python-pytest)
        ("python-mock"   ,python-mock))) ;for tests
     (arguments
-     `(#:phases (alist-replace
-                 'check
-                 (lambda _ (zero? (system* "py.test")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _ (zero? (system* "py.test")))))))
     (home-page "http://www.sqlalchemy.org")
     (synopsis "Database abstraction library")
     (description
@@ -8312,10 +8311,10 @@ automatically detect a wide range of file encodings.")
     (native-inputs
      `(("python-pytest" ,python-pytest)))
     (arguments
-     `(#:phases (alist-replace
-                 'check
-                 (lambda _ (zero? (system* "py.test")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _ (zero? (system* "py.test")))))))
     (home-page "http://docopt.org")
     (synopsis "Command-line interface description language for Python")
     (description "This library allows the user to define a command-line
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 6b5cfb013..2ccfc2cec 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -127,26 +127,26 @@ Java Lucene text search engine API to C++.")
                 "18p2flb2sv2hq6w2qkd29z9c7knnwqr3f12i2srshlzx6vwkm05s"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'remove-out-of-tree-references 'autoreconf
-                 (lambda _
-                   (zero? (system* "autoreconf" "-vfi")))
-                 (alist-cons-after
-                  'unpack 'remove-out-of-tree-references
-                  (lambda _
-                    ;; remove symlinks to files in /usr/
-                    (delete-file-recursively "m4")
-                    (for-each delete-file '("config.guess"
-                                            "config.sub"
-                                            "depcomp"
-                                            "install-sh"
-                                            "ltmain.sh"
-                                            "missing"))
-                    ;; remove_test depends on an out-of-tree RDF file
-                    (substitute* "examples/Makefile.am"
-                      (("instances_test remove_test") "instances_test")
-                      (("\\$\\(TESTS\\) remove_test") "$(TESTS)")))
-                  %standard-phases))))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-out-of-tree-references
+           (lambda _
+             ;; remove symlinks to files in /usr/
+             (delete-file-recursively "m4")
+             (for-each delete-file '("config.guess"
+                                     "config.sub"
+                                     "depcomp"
+                                     "install-sh"
+                                     "ltmain.sh"
+                                     "missing"))
+             ;; remove_test depends on an out-of-tree RDF file
+             (substitute* "examples/Makefile.am"
+               (("instances_test remove_test") "instances_test")
+               (("\\$\\(TESTS\\) remove_test") "$(TESTS)"))
+             #t))
+         (add-after 'remove-out-of-tree-references 'autoreconf
+           (lambda _
+             (zero? (system* "autoreconf" "-vfi")))))))
     (inputs
      `(("raptor" ,raptor2)
        ("cyrus-sasl" ,cyrus-sasl)
diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm
index 275912b9d..2b0e22ee2 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -85,16 +85,16 @@ Python.  It is a C++ library.")
                 "0n36cgqys59r2gmb7jzbqiwsy790v8nbxk82d2n2saz0rp145ild"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'check 'install-locales
-                 (lambda _
-                   ;; The tests require the availability of the
-                   ;; 'en_US.ISO-8859-1' locale.
-                   (setenv "LOCPATH" (getcwd))
-                   (zero? (system* "localedef" "--no-archive"
-                                   "--prefix" (getcwd) "-i" "en_US"
-                                   "-f" "ISO-8859-1" "./en_US.ISO-8859-1")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'install-locales
+           (lambda _
+             ;; The tests require the availability of the
+             ;; 'en_US.ISO-8859-1' locale.
+             (setenv "LOCPATH" (getcwd))
+             (zero? (system* "localedef" "--no-archive"
+                             "--prefix" (getcwd) "-i" "en_US"
+                             "-f" "ISO-8859-1" "./en_US.ISO-8859-1")))))))
     (synopsis "Approximate regex matching library and agrep utility")
     (description "Superset of the POSIX regex API, enabling approximate
 matching.  Also ships a version of the agrep utility which behaves similar to
diff --git a/gnu/packages/rrdtool.scm b/gnu/packages/rrdtool.scm
index a07d70537..fbb6a3403 100644
--- a/gnu/packages/rrdtool.scm
+++ b/gnu/packages/rrdtool.scm
@@ -53,15 +53,16 @@
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("groff" ,groff)))
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda _
-                   (substitute* "libtool"
-                     (("/bin/sed") (which "sed")))
-                   (substitute* "src/Makefile.in"
-                     (("^rrdcached_LDADD = librrd_th.la")
-                      "rrdcached_LDADD = librrd_th.la -lglib-2.0")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* "libtool"
+               (("/bin/sed") (which "sed")))
+             (substitute* "src/Makefile.in"
+               (("^rrdcached_LDADD = librrd_th.la")
+                "rrdcached_LDADD = librrd_th.la -lglib-2.0"))
+             #t)))))
     (home-page "http://oss.oetiker.ch/rrdtool/")
     (synopsis "Time-series data storage and display system")
     (description
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 414b38c4f..7465a9a72 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -150,16 +150,16 @@ a focus on simplicity and productivity.")
      `(#:test-target "test"
        #:parallel-tests? #f
        #:phases
-        (alist-cons-before
-         'configure 'replace-bin-sh
-         (lambda _
-           (substitute* '("Makefile.in"
-                          "ext/pty/pty.c"
-                          "io.c"
-                          "lib/mkmf.rb"
-                          "process.c")
-             (("/bin/sh") (which "sh"))))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'replace-bin-sh
+           (lambda _
+             (substitute* '("Makefile.in"
+                            "ext/pty/pty.c"
+                            "io.c"
+                            "lib/mkmf.rb"
+                            "process.c")
+               (("/bin/sh") (which "sh")))
+             #t)))))
     (native-search-paths
      (list (search-path-specification
             (variable "GEM_PATH")
@@ -184,16 +184,16 @@ a focus on simplicity and productivity.")
      `(#:test-target "test"
        #:parallel-tests? #f
        #:phases
-        (alist-cons-before
-         'configure 'replace-bin-sh
-         (lambda _
-           (substitute* '("Makefile.in"
-                          "ext/pty/pty.c"
-                          "io.c"
-                          "lib/mkmf.rb"
-                          "process.c")
-             (("/bin/sh") (which "sh"))))
-         %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'replace-bin-sh
+           (lambda _
+             (substitute* '("Makefile.in"
+                            "ext/pty/pty.c"
+                            "io.c"
+                            "lib/mkmf.rb"
+                            "process.c")
+               (("/bin/sh") (which "sh")))
+             #t)))))))
 
 (define-public ruby-hoe
   (package
diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm
index 535dd8eb0..ebb8c5e1f 100644
--- a/gnu/packages/sawfish.scm
+++ b/gnu/packages/sawfish.scm
@@ -138,31 +138,31 @@ backend of Sawfish.")
     (arguments
      '(#:tests? #f ; no tests
        #:phases
-       (alist-cons-before
-        'configure 'patch-exec-rep
-        (lambda _
-          (substitute* '("lisp/sawfish/cfg/main.jl.in"
-                         "scripts/sawfish-about.jl.in"
-                         "scripts/sawfish-client.jl"
-                         "scripts/sawfish-menu.jl")
-            (("exec rep") (string-append "exec " (which "rep")))))
-        (alist-cons-after
-         'install 'wrap-scripts
-         ;; Wrap scripts with REP_DL_LOAD_PATH for finding rep-gtk
-         ;; and sawfish.client.
-         (lambda* (#:key outputs #:allow-other-keys)
-           (define (wrap-script script)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out script)
-                             `("REP_DL_LOAD_PATH" =
-                               ,(list (getenv "REP_DL_LOAD_PATH")
-                                      (string-append out "/lib/rep"))))))
-           (for-each wrap-script
-                     (list "/bin/sawfish-about"
-                           "/bin/sawfish-client"
-                           "/bin/sawfish-config"
-                           "/lib/sawfish/sawfish-menu")))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-exec-rep
+           (lambda _
+             (substitute* '("lisp/sawfish/cfg/main.jl.in"
+                            "scripts/sawfish-about.jl.in"
+                            "scripts/sawfish-client.jl"
+                            "scripts/sawfish-menu.jl")
+               (("exec rep") (string-append "exec " (which "rep"))))
+             #t))
+         (add-after 'install 'wrap-scripts
+           ;; Wrap scripts with REP_DL_LOAD_PATH for finding rep-gtk
+           ;; and sawfish.client.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (define (wrap-script script)
+               (let ((out (assoc-ref outputs "out")))
+                 (wrap-program (string-append out script)
+                   `("REP_DL_LOAD_PATH" =
+                     ,(list (getenv "REP_DL_LOAD_PATH")
+                            (string-append out "/lib/rep"))))))
+             (for-each wrap-script
+                       (list "/bin/sawfish-about"
+                             "/bin/sawfish-client"
+                             "/bin/sawfish-config"
+                             "/lib/sawfish/sawfish-menu"))
+             #t)))))
     (native-inputs
      `(("gettext"     ,gettext-minimal)
        ("makeinfo"    ,texinfo)
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 161138285..bafc3da33 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -417,73 +417,73 @@ implementation techniques and as an expository tool.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-       (alist-cons-before
-        'configure 'pre-configure
-        (lambda* (#:key inputs #:allow-other-keys)
-          ;; Patch dynamically loaded libraries with their absolute paths.
-          (let* ((library-path   (search-path-as-string->list
-                                  (getenv "LIBRARY_PATH")))
-                 (find-so        (lambda (soname)
-                                   (search-path
-                                    library-path
-                                    (format #f "~a.so" soname))))
-                 (patch-ffi-libs (lambda (file libs)
-                                   (for-each
-                                    (lambda (lib)
-                                      (substitute* file
-                                        (((format #f "\"~a\"" lib))
-                                         (format #f "\"~a\"" (find-so lib)))))
-                                    libs))))
-            (substitute* "collects/db/private/sqlite3/ffi.rkt"
-              (("ffi-lib sqlite-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libsqlite3"))))
-            (substitute* "collects/openssl/libssl.rkt"
-              (("ffi-lib libssl-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libssl"))))
-            (substitute* "collects/openssl/libcrypto.rkt"
-              (("ffi-lib libcrypto-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libcrypto"))))
-            (substitute* "share/pkgs/math-lib/math/private/bigfloat/gmp.rkt"
-              (("ffi-lib libgmp-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libgmp"))))
-            (substitute* "share/pkgs/math-lib/math/private/bigfloat/mpfr.rkt"
-              (("ffi-lib libmpfr-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libmpfr"))))
-            (for-each
-             (lambda (x) (apply patch-ffi-libs x))
-             '(("share/pkgs/draw-lib/racket/draw/unsafe/cairo-lib.rkt"
-                ("libfontconfig" "libcairo"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/glib.rkt"
-                ("libglib-2.0" "libgmodule-2.0" "libgobject-2.0"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/jpeg.rkt"
-                ("libjpeg"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/pango.rkt"
-                ("libpango-1.0" "libpangocairo-1.0"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/png.rkt"
-                ("libpng"))
-               ("share/pkgs/db-lib/db/private/odbc/ffi.rkt"
-                ("libodbc"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/x11.rkt"
-                ("libX11"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/gsettings.rkt"
-                ("libgio-2.0"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/gtk3.rkt"
-                ("libgdk-3" "libgtk-3"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/unique.rkt"
-                ("libunique-1.0"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/utils.rkt"
-                ("libgdk-x11-2.0" "libgdk_pixbuf-2.0" "libgtk-x11-2.0"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/gl-context.rkt"
-                ("libGL"))
-               ("share/pkgs/sgl/gl.rkt"
-                ("libGL" "libGLU")))))
-          (chdir "src"))
-        (alist-cons-after
-         'unpack 'patch-/bin/sh
-         (lambda _
-           (substitute* "collects/racket/system.rkt"
-             (("/bin/sh") (which "sh"))))
-         %standard-phases))
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Patch dynamically loaded libraries with their absolute paths.
+             (let* ((library-path   (search-path-as-string->list
+                                     (getenv "LIBRARY_PATH")))
+                    (find-so        (lambda (soname)
+                                      (search-path
+                                       library-path
+                                       (format #f "~a.so" soname))))
+                    (patch-ffi-libs (lambda (file libs)
+                                      (for-each
+                                       (lambda (lib)
+                                         (substitute* file
+                                           (((format #f "\"~a\"" lib))
+                                            (format #f "\"~a\"" (find-so lib)))))
+                                       libs))))
+               (substitute* "collects/db/private/sqlite3/ffi.rkt"
+                 (("ffi-lib sqlite-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libsqlite3"))))
+               (substitute* "collects/openssl/libssl.rkt"
+                 (("ffi-lib libssl-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libssl"))))
+               (substitute* "collects/openssl/libcrypto.rkt"
+                 (("ffi-lib libcrypto-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libcrypto"))))
+               (substitute* "share/pkgs/math-lib/math/private/bigfloat/gmp.rkt"
+                 (("ffi-lib libgmp-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libgmp"))))
+               (substitute* "share/pkgs/math-lib/math/private/bigfloat/mpfr.rkt"
+                 (("ffi-lib libmpfr-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libmpfr"))))
+               (for-each
+                (lambda (x) (apply patch-ffi-libs x))
+                '(("share/pkgs/draw-lib/racket/draw/unsafe/cairo-lib.rkt"
+                   ("libfontconfig" "libcairo"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/glib.rkt"
+                   ("libglib-2.0" "libgmodule-2.0" "libgobject-2.0"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/jpeg.rkt"
+                   ("libjpeg"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/pango.rkt"
+                   ("libpango-1.0" "libpangocairo-1.0"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/png.rkt"
+                   ("libpng"))
+                  ("share/pkgs/db-lib/db/private/odbc/ffi.rkt"
+                   ("libodbc"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/x11.rkt"
+                   ("libX11"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/gsettings.rkt"
+                   ("libgio-2.0"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/gtk3.rkt"
+                   ("libgdk-3" "libgtk-3"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/unique.rkt"
+                   ("libunique-1.0"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/utils.rkt"
+                   ("libgdk-x11-2.0" "libgdk_pixbuf-2.0" "libgtk-x11-2.0"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/gl-context.rkt"
+                   ("libGL"))
+                  ("share/pkgs/sgl/gl.rkt"
+                   ("libGL" "libGLU")))))
+             (chdir "src")
+             #t))
+         (add-after 'unpack 'patch-/bin/sh
+           (lambda _
+             (substitute* "collects/racket/system.rkt"
+               (("/bin/sh") (which "sh")))
+             #t)))
        #:tests? #f                                ; XXX: how to run them?
        ))
     (inputs
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 9e2d81f18..c1a6144ac 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -400,30 +400,30 @@ directory.")
                             (assoc-ref %build-inputs "sdl-union")))
        #:parallel-build? #f ; parallel build fails
        #:phases
-       (alist-cons-before
-        'configure 'fix-env-and-patch
-        (lambda* (#:key inputs #:allow-other-keys)
-          (setenv "GUILE_AUTO_COMPILE" "0")
-          ;; SDL_image needs to dlopen libjpeg in the test suite.
-          (setenv "LD_LIBRARY_PATH"
-                  (string-append (assoc-ref inputs "libjpeg") "/lib"))
-          ;; Change the site directory /site/2.0 like Guile expects.
-          (substitute* "build-aux/guile-baux/re-prefixed-site-dirs"
-            (("\"/site\"") "\"/site/2.0\""))
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-env-and-patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "GUILE_AUTO_COMPILE" "0")
+             ;; SDL_image needs to dlopen libjpeg in the test suite.
+             (setenv "LD_LIBRARY_PATH"
+                     (string-append (assoc-ref inputs "libjpeg") "/lib"))
+             ;; Change the site directory /site/2.0 like Guile expects.
+             (substitute* "build-aux/guile-baux/re-prefixed-site-dirs"
+               (("\"/site\"") "\"/site/2.0\""))
 
-          ;; Skip tests that rely on sound support, which is unavailable in
-          ;; the build environment.
-          (substitute* "test/Makefile.in"
-            (("HAVE_MIXER = .*$")
-             "HAVE_MIXER = 0\n")))
-        (alist-cons-before
-         'check 'start-xorg-server
-         (lambda* (#:key inputs #:allow-other-keys)
-           ;; The test suite requires a running X server.
-           (system (format #f "~a/bin/Xvfb :1 &"
-                           (assoc-ref inputs "xorg-server")))
-           (setenv "DISPLAY" ":1"))
-         %standard-phases))))
+             ;; Skip tests that rely on sound support, which is unavailable in
+             ;; the build environment.
+             (substitute* "test/Makefile.in"
+               (("HAVE_MIXER = .*$")
+                "HAVE_MIXER = 0\n"))
+             #t))
+         (add-before 'check 'start-xorg-server
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; The test suite requires a running X server.
+             (system (format #f "~a/bin/Xvfb :1 &"
+                             (assoc-ref inputs "xorg-server")))
+             (setenv "DISPLAY" ":1")
+             #t)))))
     (synopsis "Guile interface for SDL (Simple DirectMedia Layer)")
     (description "Guile-SDL is a set of bindings to the Simple DirectMedia
 Layer (SDL).  With them, Guile programmers can have easy access to graphics,
diff --git a/gnu/packages/serveez.scm b/gnu/packages/serveez.scm
index 974db8611..871fb00d3 100644
--- a/gnu/packages/serveez.scm
+++ b/gnu/packages/serveez.scm
@@ -40,13 +40,14 @@
     (inputs `(("guile" ,guile-2.0)))
     (arguments
      `(#:configure-flags '("--enable-libserveez-install")
-       #:phases (alist-cons-before
-                 'patch-source-shebangs 'patch-test-source
-                 (lambda _
-                   (substitute*
-                       (find-files "test" "^t[0-9]{3}$")
-                     (("/bin/sh") (which "sh"))))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'patch-source-shebangs 'patch-test-source
+           (lambda _
+             (substitute*
+                 (find-files "test" "^t[0-9]{3}$")
+               (("/bin/sh") (which "sh")))
+             #t)))))
     (home-page "https://www.gnu.org/software/serveez/")
     (synopsis "Framework for implementing IP-based servers")
     (description
diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm
index 458d91e56..87dc3558d 100644
--- a/gnu/packages/skribilo.scm
+++ b/gnu/packages/skribilo.scm
@@ -46,20 +46,21 @@
                                               (assoc-ref %outputs "out")
                                               "/share/guile/site/2.0"))
 
-       #:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; Make sure the 'skribilo' command gets to see
-                   ;; Guile-Reader, even if Guile-Reader is not in the search
-                   ;; path.
-                   (let ((reader (assoc-ref inputs "guile-reader")))
-                     (substitute* "src/skribilo.in"
-                       (("^exec (.*) -c" _ things)
-                        (string-append "exec " things
-                                       " -L " reader "/share/guile/site/2.0"
-                                       " -C " reader "/share/guile/site/2.0"
-                                       " -c")))))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Make sure the 'skribilo' command gets to see
+             ;; Guile-Reader, even if Guile-Reader is not in the search
+             ;; path.
+             (let ((reader (assoc-ref inputs "guile-reader")))
+               (substitute* "src/skribilo.in"
+                 (("^exec (.*) -c" _ things)
+                  (string-append "exec " things
+                                 " -L " reader "/share/guile/site/2.0"
+                                 " -C " reader "/share/guile/site/2.0"
+                                 " -c"))))
+             #t)))
 
        #:parallel-build? #f))
 
diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm
index f4a50ded2..a0d6c86df 100644
--- a/gnu/packages/smalltalk.scm
+++ b/gnu/packages/smalltalk.scm
@@ -60,14 +60,15 @@
     (inputs
      `(("zip" ,zip)))
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'fix-libc
-                 (lambda _
-                   (let ((libc (assoc-ref %build-inputs "libc")))
-                     (substitute* "libc.la.in"
-                       (("@LIBC_SO_NAME@") "libc.so")
-                       (("@LIBC_SO_DIR@")  (string-append libc "/lib")))))
-                %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-libc
+           (lambda _
+             (let ((libc (assoc-ref %build-inputs "libc")))
+               (substitute* "libc.la.in"
+                 (("@LIBC_SO_NAME@") "libc.so")
+                 (("@LIBC_SO_DIR@")  (string-append libc "/lib"))))
+             #t)))))
     (home-page "http://smalltalk.gnu.org/")
     (synopsis "Smalltalk environment")
     (description
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 1d3d1d367..15f475510 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -154,7 +154,7 @@ optimising the environment for the application in use and the task performed.")
                                          (assoc-ref %build-inputs "freetype")
                                          "/include/freetype2"))
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("freetype" ,freetype)
        ("libxft" ,libxft)
@@ -211,7 +211,7 @@ numbers of user-defined menu items efficiently.")
      '(#:tests? #f ; no tests
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("libx11" ,libx11)
        ("libxext" ,libxext)
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index de888891c..3f7deb71d 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -114,13 +114,14 @@
                (string-append "--exec-prefix=" out)
                (string-append "--mandir=" out "/share/man")))
 
-       #:phases (alist-cons-before
-                 'configure 'set-path-to-stty
-                 (lambda _
-                   (substitute* "configure"
-                     (("STTY_BIN=/bin/stty")
-                      (string-append "STTY_BIN=" (which "stty")))))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-path-to-stty
+           (lambda _
+             (substitute* "configure"
+               (("STTY_BIN=/bin/stty")
+                (string-append "STTY_BIN=" (which "stty"))))
+             #t)))
 
        #:test-target "test"))
     (home-page "http://expect.nist.gov/")
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index c3bf20360..5207bd241 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -56,12 +56,12 @@
                      "0kmgr5w3b1qwzxnsnw94q6rqs0hr8nbv9clf07ca2a2fyypx9kjk"))))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'configure 'pre-configure
-        (lambda _
-          (substitute* "src/applog.cpp"
-            (("^// TODO sc.*") "#include <sys/types.h>\n#include <sys/stat.h>\n")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* "src/applog.cpp"
+               (("^// TODO sc.*") "#include <sys/types.h>\n#include <sys/stat.h>\n"))
+             #t)))))
    (build-system gnu-build-system)
    (synopsis "(u)Common C++ framework for threaded applications")
    (description "GNU Common C++ is an portable, optimized class framework for
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index e8ae30cd6..479527a5f 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -96,15 +96,15 @@ to DOS format and vice versa.")
     (native-inputs `(("python" ,python-2)))
     (arguments
      '(#:phases
-       (alist-cons-before
-        'check 'pre-check
-        (lambda _
-          (substitute* "tests/setup.py"
-            (("([[:space:]]*)include_dirs=.*" all space)
-             (string-append all space "library_dirs=['../src/.libs'],\n")))
-          ;; The test extension 'Recode.so' lacks RUNPATH for 'librecode.so'.
-          (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/src/.libs")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             (substitute* "tests/setup.py"
+               (("([[:space:]]*)include_dirs=.*" all space)
+                (string-append all space "library_dirs=['../src/.libs'],\n")))
+             ;; The test extension 'Recode.so' lacks RUNPATH for 'librecode.so'.
+             (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/src/.libs"))
+             #t)))))
     (home-page "https://github.com/pinard/Recode")
     (synopsis "Text encoding converter")
     (description "The Recode library converts files between character sets and
@@ -207,10 +207,9 @@ encoding, supporting Unicode version 9.0.0.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _ (zero? (system* "autoreconf" "-vif")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _ (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index ba54d1d00..b90606ca7 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -38,16 +38,15 @@
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-       (alist-replace 'configure
-                      (lambda* (#:key outputs #:allow-other-keys)
-                        ;; This old `configure' script doesn't support
-                        ;; variables passed as arguments.
-                        (let ((out (assoc-ref outputs "out")))
-                          (setenv "CONFIG_SHELL" (which "bash"))
-                          (zero?
-                           (system* "./configure"
-                                    (string-append "--prefix=" out)))))
-                      %standard-phases)))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; This old `configure' script doesn't support
+             ;; variables passed as arguments.
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure" (string-append "--prefix=" out)))))))))
     (home-page "https://www.gnu.org/software/time/")
     (synopsis "Run a command, then display its resource usage")
     (description
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 1d5a1f161..93db56e26 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -134,13 +134,13 @@ rejects UDP traffic from the application you're using.")
        #:configure-flags (list (string-append "--sysconfdir="
                                               (assoc-ref %outputs "out")
                                               "/etc/privoxy"))
-       #:phases (alist-cons-after
-                 'unpack 'autoconf
-                 (lambda _
-                   ;; Unfortunately, this is not a tarball produced by
-                   ;; "make dist".
-                   (zero? (system* "autoreconf" "-vfi")))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoconf
+           (lambda _
+             ;; Unfortunately, this is not a tarball produced by
+             ;; "make dist".
+             (zero? (system* "autoreconf" "-vfi")))))
        #:tests? #f))
     (inputs
      `(("w3m" ,w3m)
diff --git a/gnu/packages/uucp.scm b/gnu/packages/uucp.scm
index 7bfe76365..f5d9c7005 100644
--- a/gnu/packages/uucp.scm
+++ b/gnu/packages/uucp.scm
@@ -35,18 +35,18 @@
                 "0b5nhl9vvif1w3wdipjsk8ckw49jj1w85xw1mmqi3zbcpazia306"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; The old 'configure' script doesn't support the arguments
-                   ;; that we pass by default.
-                   (setenv "CONFIG_SHELL" (which "sh"))
-                   (let ((out (assoc-ref outputs "out")))
-                     (zero? (system* "./configure"
-                                     (string-append "--prefix=" out)
-                                     (string-append "--infodir=" out
-                                                    "/share/info")))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; The old 'configure' script doesn't support the arguments
+             ;; that we pass by default.
+             (setenv "CONFIG_SHELL" (which "sh"))
+             (let ((out (assoc-ref outputs "out")))
+               (zero? (system* "./configure"
+                               (string-append "--prefix=" out)
+                               (string-append "--infodir=" out
+                                              "/share/info")))))))))
     (home-page "https://www.gnu.org/software/uucp/uucp.html")
     (synopsis "UUCP protocol implementation")
     (description
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 0a551c74f..19a5e24ed 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1405,11 +1405,10 @@ encapsulated.")
        ("libtool" ,libtool)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _
-          (zero? (system* "autoreconf" "-vif")))
-        %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _
+             (zero? (system* "autoreconf" "-vif")))))))))
 
 (define-public libdvdcss
   (package
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index b5fb39b95..df3fbd728 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -165,11 +165,11 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
            "--enable-nls"
            "--enable-ipv6"))
        #:tests? #f  ; no check target
-       #:phases (alist-replace
-                 'install
-                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
-                   (zero? (apply system* "make" "install-full" make-flags)))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key (make-flags '()) #:allow-other-keys)
+             (zero? (apply system* "make" "install-full" make-flags)))))))
     (synopsis "Text Web Browser")
     (description
      "Lynx is a fully-featured World Wide Web (WWW) client for users running
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 66183273e..6b4dbadb7 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -632,14 +632,13 @@ used to validate and fix HTML data.")
         ;; For the log file, etc.
         "--localstatedir=/var")
        #:phases
-       (alist-cons-before
-        'build 'pre-build
-        (lambda* (#:key inputs #:allow-other-keys #:rest args)
-          ;; Uncommenting the next two lines may assist in debugging
-          ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
-          ;; (setenv "XML_DEBUG_CATALOG" "1")
-          #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda* (#:key inputs #:allow-other-keys #:rest args)
+             ;; Uncommenting the next two lines may assist in debugging
+             ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
+             ;; (setenv "XML_DEBUG_CATALOG" "1")
+             #t)))))
     ;; All of the below are used to generate the documentation
     ;; (Should they be propagated inputs of asciidoc ??)
     (native-inputs `(("asciidoc" ,asciidoc)))
diff --git a/gnu/packages/wicd.scm b/gnu/packages/wicd.scm
index 9de956c6f..4b03c07bc 100644
--- a/gnu/packages/wicd.scm
+++ b/gnu/packages/wicd.scm
@@ -71,123 +71,121 @@
        ;; we can't easily make setup.py use setuptools.
        #:use-setuptools? #f
        #:phases
-       (alist-cons-before
-        'build 'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out"))
-                (python (assoc-ref inputs "python")))
-            (define (which* cmd)
-              (cond ((string=? cmd "ping")
-                     "/run/setuid-programs/ping")
-                    ((which cmd)
-                     => identity)
-                    (else
-                     (format (current-error-port)
-                             "WARNING: Unable to find absolute path for ~s~%"
-                             cmd)
-                     #f)))
-            (substitute* "setup.py"
-              ;; The handling of unrecognized distros in setup.py is
-              ;; broken.  Work around the problem.
-              (("\\('init=', " all)
-               (string-append "#" all))
-              ;; Inhibit attempts to install in /var or /etc.
-              (("\\(wpath\\.(log|etc|networks|.*scripts), " all)
-               (string-append "#" all)))
+       (modify-phases %standard-phases
+         (add-before 'build 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (python (assoc-ref inputs "python")))
+               (define (which* cmd)
+                 (cond ((string=? cmd "ping")
+                        "/run/setuid-programs/ping")
+                       ((which cmd)
+                        => identity)
+                       (else
+                        (format (current-error-port)
+                                "WARNING: Unable to find absolute path for ~s~%"
+                                cmd)
+                        #f)))
+               (substitute* "setup.py"
+                 ;; The handling of unrecognized distros in setup.py is
+                 ;; broken.  Work around the problem.
+                 (("\\('init=', " all)
+                  (string-append "#" all))
+                 ;; Inhibit attempts to install in /var or /etc.
+                 (("\\(wpath\\.(log|etc|networks|.*scripts), " all)
+                  (string-append "#" all)))
 
-            ;; Patch references to subprograms with absolute pathnames.
-            (substitute* "wicd/wnettools.py"
-              (("(misc\\.Run\\(\\[?[\"'])([^\"' ]*)" all pre cmd)
-               (string-append pre (which* cmd)))
-              (("(self\\._find_program_path|misc\\.find_path)\\([\"']([^\"']*)[\"']\\)"
-                all dummy cmd)
-               (let ((pathname (which* cmd)))
-                 (if pathname
-                     (string-append "'" pathname "'")
-                     "None")))
-              (("([\"'])(ifconfig|route|wpa_cli|wpa_supplicant|iwconfig|iwpriv|iwlist|ping)"
-                all open-quote cmd)
-               (string-append open-quote (which* cmd))))
+               ;; Patch references to subprograms with absolute pathnames.
+               (substitute* "wicd/wnettools.py"
+                 (("(misc\\.Run\\(\\[?[\"'])([^\"' ]*)" all pre cmd)
+                  (string-append pre (which* cmd)))
+                 (("(self\\._find_program_path|misc\\.find_path)\\([\"']([^\"']*)[\"']\\)"
+                   all dummy cmd)
+                  (let ((pathname (which* cmd)))
+                    (if pathname
+                        (string-append "'" pathname "'")
+                        "None")))
+                 (("([\"'])(ifconfig|route|wpa_cli|wpa_supplicant|iwconfig|iwpriv|iwlist|ping)"
+                   all open-quote cmd)
+                  (string-append open-quote (which* cmd))))
 
-            ;; setup.py cannot cope without LANG
-            (setenv "LANG" "C")
+               ;; setup.py cannot cope without LANG
+               (setenv "LANG" "C")
 
-            (let ((params
-                   (list
-                    (string-append "--python=" python "/bin/python")
-                    "--no-install-init"
-                    "--no-install-docs"
-                    "--no-install-acpi"
-                    "--no-install-pmutils"
-                    "--no-install-kde"
-                    "--no-install-gnome-shell-extensions"
+               (let ((params
+                      (list
+                       (string-append "--python=" python "/bin/python")
+                       "--no-install-init"
+                       "--no-install-docs"
+                       "--no-install-acpi"
+                       "--no-install-pmutils"
+                       "--no-install-kde"
+                       "--no-install-gnome-shell-extensions"
 
-                    "--distro=guixsd"
-                    "--wicdgroup=netdev"
-                    "--loggroup=root"
-                    "--logperms=0640"
+                       "--distro=guixsd"
+                       "--wicdgroup=netdev"
+                       "--loggroup=root"
+                       "--logperms=0640"
 
-                    ;; XXX setup.py configure asks us to pass --init=,
-                    ;; but if we do it says "no such option 'init'".
-                    ;; (string-append "--init=" out "/etc/init.d")
+                       ;; XXX setup.py configure asks us to pass --init=,
+                       ;; but if we do it says "no such option 'init'".
+                       ;; (string-append "--init=" out "/etc/init.d")
 
-                    (string-append "--initfile=" out "/etc/init.d/wicd")
-                    (string-append "--lib=" out "/lib/wicd")
-                    (string-append "--share=" out "/share/wicd")
+                       (string-append "--initfile=" out "/etc/init.d/wicd")
+                       (string-append "--lib=" out "/lib/wicd")
+                       (string-append "--share=" out "/share/wicd")
 
-                    "--etc=/etc/wicd"
-                    "--scripts=/etc/wicd/scripts"
-                    "--pmutils=/etc/pm-utils/sleep.d"
+                       "--etc=/etc/wicd"
+                       "--scripts=/etc/wicd/scripts"
+                       "--pmutils=/etc/pm-utils/sleep.d"
 
-                    (string-append "--encryption="
-                                   out "/etc/encryption/templates")
-                    (string-append "--bin=" out "/bin")
-                    (string-append "--sbin=" out "/sbin")
-                    (string-append "--daemon=" out "/share/wicd/daemon")
-                    (string-append "--backends=" out "/share/wicd/backends")
-                    (string-append "--curses=" out "/share/wicd/curses")
-                    (string-append "--gtk=" out "/share/wicd/gtk")
-                    (string-append "--cli=" out "/share/wicd/cli")
-                    (string-append "--gnome-shell-extensions="
-                                   out "/share/gnome-shell-extensions")
-                    (string-append "--icons=" out "/share/icons/hicolor")
-                    (string-append "--pixmaps=" out "/share/pixmaps")
-                    (string-append "--images=" out "/share/icons")
-                    (string-append "--dbus=" out "/etc/dbus-1/system.d")
-                    (string-append "--dbus-service="
-                                   out "/share/dbus-1/system-services")
-                    (string-append "--systemd=" out "/lib/systemd/system")
-                    (string-append "--logrotate=" out "/etc/logrotate.d")
-                    (string-append "--desktop=" out "/share/applications")
-                    (string-append "--translations=" out "/share/locale")
-                    (string-append "--autostart=" out "/etc/xdg/autostart")
-                    (string-append "--docdir=" out "/share/doc/wicd")
-                    (string-append "--mandir=" out "/share/man")
-                    (string-append "--kdedir=" out "/share/autostart"))))
-              (format #t
-                      "running ~s with command ~s and parameters ~s~%"
-                      "python setup.py" "configure" params)
-              (zero? (apply system* "python" "setup.py" "configure" params)))))
-        (alist-cons-after
-         'install 'post-install
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((out (assoc-ref outputs "out")))
-             ;; wicd's installer tries to put dhclient.conf.template.default
-             ;; in /etc/wicd/other, which is not available in the build
-             ;; environment, so here we install it manually in the output
-             ;; directory.
-             (let ((dest-dir (string-append out "/etc/wicd"))
-                   (name "dhclient.conf.template.default"))
-               (install-file (string-append "other/" name) dest-dir))
+                       (string-append "--encryption="
+                                      out "/etc/encryption/templates")
+                       (string-append "--bin=" out "/bin")
+                       (string-append "--sbin=" out "/sbin")
+                       (string-append "--daemon=" out "/share/wicd/daemon")
+                       (string-append "--backends=" out "/share/wicd/backends")
+                       (string-append "--curses=" out "/share/wicd/curses")
+                       (string-append "--gtk=" out "/share/wicd/gtk")
+                       (string-append "--cli=" out "/share/wicd/cli")
+                       (string-append "--gnome-shell-extensions="
+                                      out "/share/gnome-shell-extensions")
+                       (string-append "--icons=" out "/share/icons/hicolor")
+                       (string-append "--pixmaps=" out "/share/pixmaps")
+                       (string-append "--images=" out "/share/icons")
+                       (string-append "--dbus=" out "/etc/dbus-1/system.d")
+                       (string-append "--dbus-service="
+                                      out "/share/dbus-1/system-services")
+                       (string-append "--systemd=" out "/lib/systemd/system")
+                       (string-append "--logrotate=" out "/etc/logrotate.d")
+                       (string-append "--desktop=" out "/share/applications")
+                       (string-append "--translations=" out "/share/locale")
+                       (string-append "--autostart=" out "/etc/xdg/autostart")
+                       (string-append "--docdir=" out "/share/doc/wicd")
+                       (string-append "--mandir=" out "/share/man")
+                       (string-append "--kdedir=" out "/share/autostart"))))
+                 (format #t
+                         "running ~s with command ~s and parameters ~s~%"
+                         "python setup.py" "configure" params)
+                 (zero? (apply system* "python" "setup.py" "configure" params))))))
+         (add-after 'install 'post-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; wicd's installer tries to put dhclient.conf.template.default
+               ;; in /etc/wicd/other, which is not available in the build
+               ;; environment, so here we install it manually in the output
+               ;; directory.
+               (let ((dest-dir (string-append out "/etc/wicd"))
+                     (name "dhclient.conf.template.default"))
+                 (install-file (string-append "other/" name) dest-dir))
 
-             ;; Copy index.theme from hicolor-icon-theme.  This is needed to
-             ;; allow wicd-gtk to find its icons.
-             (let ((hicolor (assoc-ref inputs "hicolor-icon-theme"))
-                   (name "/share/icons/hicolor/index.theme"))
-               (install-file (string-append hicolor name)
-                             (string-append out "/share/icons/hicolor")))
-             #t))
-         %standard-phases))))
+               ;; Copy index.theme from hicolor-icon-theme.  This is needed to
+               ;; allow wicd-gtk to find its icons.
+               (let ((hicolor (assoc-ref inputs "hicolor-icon-theme"))
+                     (name "/share/icons/hicolor/index.theme"))
+                 (install-file (string-append hicolor name)
+                               (string-append out "/share/icons/hicolor")))
+               #t))))))
     (synopsis "Network connection manager")
     (description "Wicd is a network manager that aims to simplify wired and
 wireless networking.")
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 6e458bfde..0e9ec19b5 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -115,7 +115,7 @@ nested include statements).")
        ("xcb-util-keysyms" ,xcb-util-keysyms)
        ("xcb-util-wm" ,xcb-util-wm)))
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f  ; no check target
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 84794a05c..e6f6fb483 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -668,7 +668,7 @@ Guile will work for XBindKeys.")
        ("xcb-util-keysyms" ,xcb-util-keysyms)
        ("xcb-util-wm" ,xcb-util-wm)))
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f  ; no check target
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))))
@@ -775,7 +775,8 @@ within a single process.")
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no check target
-       #:phases (alist-delete 'configure %standard-phases) ; no configure script
+       ;; no configure script
+       #:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "MANDIR=/share/man/man1"
                           "CC=gcc")))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 35c425a89..664e8e592 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -114,17 +114,18 @@ Xfce Desktop Environment.")
     (arguments
      '(#:phases
        ;; Run check after install phase to test dbus activation.
-       (alist-cons-after
-        'install 'check
-        (lambda _
-          (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
-          ;; Run test-suite under a dbus session.
-          (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
-                  (string-append %output "/share"))
-          ;; For the missing '/etc/machine-id'.
-          (setenv "DBUS_FATAL_WARNINGS" "0");
-          (zero? (system* "dbus-launch" "make" "check")))
-        (alist-delete 'check %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda _
+             ;; xfconfd requires a writable HOME
+             (setenv "HOME" (getenv "TMPDIR"))
+             ;; Run test-suite under a dbus session.
+             (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
+                     (string-append %output "/share"))
+             ;; For the missing '/etc/machine-id'.
+             (setenv "DBUS_FATAL_WARNINGS" "0");
+             (zero? (system* "dbus-launch" "make" "check")))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
diff --git a/gnu/packages/xfig.scm b/gnu/packages/xfig.scm
index 2e65000eb..c2e0408bd 100644
--- a/gnu/packages/xfig.scm
+++ b/gnu/packages/xfig.scm
@@ -159,44 +159,43 @@ selected in various ways.  For text, 35 fonts are available.")
     (arguments
      `(#:tests? #f
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((imake (assoc-ref inputs "imake"))
-                (out   (assoc-ref outputs "out")))
-            (substitute* '("fig2dev/Imakefile"
-                           "transfig/Imakefile")
-              (("XCOMM (BINDIR = )[[:graph:]]*" _ front)
-               (string-append front out "/bin"))
-              (("XCOMM USEINLINE") "USEINLINE")
-              ;; The variable name is deceptive.  The directory is used as an
-              ;; installation path for bitmaps.
-              (("(XFIGLIBDIR =[[:blank:]]*)[[:graph:]]*" _ front)
-               (string-append front out "/lib"))
-              (("(XPMLIBDIR = )[[:graph:]]*" _ front)
-               (string-append front (assoc-ref inputs "libxpm") "/lib"))
-              (("(XPMINC = -I)[[:graph:]]*" _ front)
-               (string-append front (assoc-ref inputs "libxpm") "/include/X11"))
-              (("/usr/local/lib/fig2dev") (string-append out "/lib")))
-            ;; The -a argument is required in order to pick up the correct paths
-            ;; to several X header files.
-            (zero? (system* "xmkmf" "-a"))
-            (substitute* '("Makefile"
-                           "fig2dev/Makefile"
-                           "transfig/Makefile")
-              ;; These imake variables somehow remain undefined
-              (("DefaultGcc2[[:graph:]]*Opt") "-O2")
-              ;; Reset a few variable defaults that are set in imake templates
-              ((imake) out)
-              (("(MANPATH = )[[:graph:]]*" _ front)
-               (string-append front out "/share/man"))
-              (("(CONFDIR = )([[:graph:]]*)" _ front default)
-               (string-append front out default)))))
-        (alist-cons-after
-         'install 'install/doc
-         (lambda _
-           (zero? (system* "make" "install.man")))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((imake (assoc-ref inputs "imake"))
+                   (out   (assoc-ref outputs "out")))
+               (substitute* '("fig2dev/Imakefile"
+                              "transfig/Imakefile")
+                 (("XCOMM (BINDIR = )[[:graph:]]*" _ front)
+                  (string-append front out "/bin"))
+                 (("XCOMM USEINLINE") "USEINLINE")
+                 ;; The variable name is deceptive.  The directory is used as an
+                 ;; installation path for bitmaps.
+                 (("(XFIGLIBDIR =[[:blank:]]*)[[:graph:]]*" _ front)
+                  (string-append front out "/lib"))
+                 (("(XPMLIBDIR = )[[:graph:]]*" _ front)
+                  (string-append front (assoc-ref inputs "libxpm") "/lib"))
+                 (("(XPMINC = -I)[[:graph:]]*" _ front)
+                  (string-append front (assoc-ref inputs "libxpm") "/include/X11"))
+                 (("/usr/local/lib/fig2dev") (string-append out "/lib")))
+               ;; The -a argument is required in order to pick up the correct
+               ;; paths to several X header files.
+               (system* "xmkmf" "-a")
+               (substitute* '("Makefile"
+                              "fig2dev/Makefile"
+                              "transfig/Makefile")
+                 ;; These imake variables somehow remain undefined
+                 (("DefaultGcc2[[:graph:]]*Opt") "-O2")
+                 ;; Reset a few variable defaults that are set in imake templates
+                 ((imake) out)
+                 (("(MANPATH = )[[:graph:]]*" _ front)
+                  (string-append front out "/share/man"))
+                 (("(CONFDIR = )([[:graph:]]*)" _ front default)
+                  (string-append front out default)))
+               #t)))
+         (add-after 'install 'install/doc
+           (lambda _
+             (zero? (system* "make" "install.man")))))))
     (home-page "http://www.xfig.org/")
     (synopsis "Create portable LaTeX figures")
     (description
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index b50807702..04e210642 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -112,26 +112,25 @@
         ("xproto" ,xproto)))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'install 'install-data
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((cf-files (assoc-ref inputs "xorg-cf-files"))
-                (out (assoc-ref outputs "out"))
-                (unpack (assoc-ref %standard-phases 'unpack))
-                (patch-source-shebangs
-                 (assoc-ref %standard-phases 'patch-source-shebangs)))
-            (mkdir "xorg-cf-files")
-            (with-directory-excursion "xorg-cf-files"
-              (apply unpack (list #:source cf-files))
-              (apply patch-source-shebangs (list #:source cf-files))
-              (substitute* '("mingw.cf" "Imake.tmpl" "nto.cf" "os2.cf"
-                             "linux.cf" "Amoeba.cf" "cygwin.cf")
-                (("/bin/sh") (which "bash")))
-              (and (zero? (system* "./configure"
-                                   (string-append "SHELL=" (which "bash"))
-                                   (string-append "--prefix=" out)))
-                   (zero? (system* "make" "install"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'install-data
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((cf-files (assoc-ref inputs "xorg-cf-files"))
+                   (out (assoc-ref outputs "out"))
+                   (unpack (assoc-ref %standard-phases 'unpack))
+                   (patch-source-shebangs
+                    (assoc-ref %standard-phases 'patch-source-shebangs)))
+               (mkdir "xorg-cf-files")
+               (with-directory-excursion "xorg-cf-files"
+                 (apply unpack (list #:source cf-files))
+                 (apply patch-source-shebangs (list #:source cf-files))
+                 (substitute* '("mingw.cf" "Imake.tmpl" "nto.cf" "os2.cf"
+                                "linux.cf" "Amoeba.cf" "cygwin.cf")
+                   (("/bin/sh") (which "bash")))
+                 (and (zero? (system* "./configure"
+                                      (string-append "SHELL=" (which "bash"))
+                                      (string-append "--prefix=" out)))
+                      (zero? (system* "make" "install"))))))))))
     (home-page "http://www.x.org")
     (synopsis "Source code configuration and build system")
     (description
-- 
2.13.3





Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Tue, 01 Aug 2017 07:23:02 GMT) Full text and rfc822 format available.

Message #11 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Kei Kebreau <kei <at> openmailbox.org>
To: 27898 <at> debbugs.gnu.org
Cc: Kei Kebreau <kei <at> openmailbox.org>
Subject: [PATCH 2/2] gnu: Put autoconf-related phases immediately after the
 'unpack phase.
Date: Tue,  1 Aug 2017 03:21:53 -0400
* gnu/packages/audio.scm (audacity, rtmidi)[arguments]: Correct phases
accordingly.
* gnu/packages/bioinformatics.scm (mash, seek, vsearch, emboss,
htslib-for-sambamba)[arguments]: Likewise.
* gnu/packages/ci.scm (cuirass)[arguments]: Likewise.
* gnu/packages/compression.scm (minizip, xdelta)[arguments]: Likewise.
* gnu/packages/cpp.scm (libzen)[arguments]: Likewise.
* gnu/packages/crypto.scm (opendht)[arguments]: Likewise.
* gnu/packages/databases.scm (4store, mdbtools)[arguments]: Likewise.
* gnu/packages/debug.scm (stress-make)[arguments]: Likewise.
* gnu/packages/dns.scm (dnscrypt-proxy, dnscrypt-wrapper)[arguments]:
Likewise.
* gnu/packages/emacs.scm (emacs-pdf-tools)[arguments]: Likewise.
* gnu/packages/embedded.scm (libjaylink, openocd)[arguments]: Likewise.
* gnu/packages/engineering.scm (gerbv)[arguments]: Likewise.
* gnu/packages/erlang.scm (erlang)[arguments]: Likewise.
* gnu/packages/ftp.scm (weex)[arguments]: Likewise.
* gnu/packages/gnome.scm (dia)[arguments]: Likewise.
* gnu/packages/gnunet.scm (gnurl, guile-gnunet)[arguments]: Likewise.
* gnu/packages/gtk.scm (guile-rsvg, graphene)[arguments]: Likewise.
* gnu/packages/guile.scm (guildhall, guile-ics, guile-sqlite3)[arguments]:
Likewise.
* gnu/packages/ibus.scm (ibus-libpinyin)[arguments]: Likewise.
* gnu/packages/irc.scm (weechat)[arguments]: Likewise.
* gnu/packages/java.scm (classpath-devel)[arguments]: Likewise.
* gnu/packages/libreoffice.scm (libetonyek)[arguments]: Likewise.
* gnu/packages/libusb.scm (hidapi)[arguments]: Likewise.
* gnu/packages/linux.scm (gpm)[arguments]: Likewise.
* gnu/packages/logging.scm (glog)[arguments]: Likewise.
* gnu/packages/machine-learning.scm (ghmm)[arguments]: Likewise.
* gnu/packages/mail.scm (dovecot-trees, dovecot-libsodium-plugin, esmtp)
[arguments]: Likewise.
* gnu/packages/maths.scm (wxmaxima)[arguments]: Likewise.
* gnu/packages/messaging.scm (freetalk, libmesode, libstrophe)[arguments]:
Likewise.
* gnu/packages/microcom.scm (microcom)[arguments]: Likewise.
* gnu/packages/ocaml.scm (ocaml-ssl)[arguments]: Likewise.
* gnu/packages/parallel.scm (slurm)[arguments]: Likewise.
* gnu/packages/pdf.scm (libharu)[arguments]: Likewise.
* gnu/packages/samba.scm (cifs-utils)[arguments]: Likewise.
* gnu/packages/serialization.scm (msgpack)[arguments]: Likewise.
* gnu/packages/shells.scm (scsh)[arguments]: Likewise.
* gnu/packages/telephony.scm (libiax2)[arguments]: Likewise.
* gnu/packages/textutils.scm (dotconf)[arguments]: Likewise.
* gnu/packages/version-control.scm (findnewest)[arguments]: Likewise.
* gnu/packages/video.scm (vlc, libmediainfo, mediainfo)[arguments]: Likewise.
---
 gnu/packages/audio.scm            |  6 ++---
 gnu/packages/bioinformatics.scm   | 20 +++++++++-------
 gnu/packages/ci.scm               |  7 ++++--
 gnu/packages/compression.scm      |  4 ++--
 gnu/packages/cpp.scm              |  8 +++----
 gnu/packages/crypto.scm           |  2 +-
 gnu/packages/databases.scm        |  6 ++---
 gnu/packages/debug.scm            |  2 +-
 gnu/packages/dns.scm              |  4 ++--
 gnu/packages/emacs.scm            |  2 +-
 gnu/packages/embedded.scm         |  4 ++--
 gnu/packages/engineering.scm      |  2 +-
 gnu/packages/erlang.scm           |  8 +++++--
 gnu/packages/ftp.scm              |  2 +-
 gnu/packages/gnome.scm            |  2 +-
 gnu/packages/gnunet.scm           |  6 ++---
 gnu/packages/gtk.scm              |  6 ++---
 gnu/packages/guile.scm            | 16 ++++++-------
 gnu/packages/ibus.scm             |  4 ++--
 gnu/packages/irc.scm              |  6 +++--
 gnu/packages/java.scm             |  2 +-
 gnu/packages/libreoffice.scm      |  4 ++--
 gnu/packages/libusb.scm           |  2 +-
 gnu/packages/linux.scm            |  4 ++--
 gnu/packages/logging.scm          |  2 +-
 gnu/packages/machine-learning.scm |  8 +++----
 gnu/packages/mail.scm             | 12 +++++-----
 gnu/packages/maths.scm            | 49 +++++++++++++++++++--------------------
 gnu/packages/messaging.scm        | 10 ++++----
 gnu/packages/microcom.scm         |  2 +-
 gnu/packages/ocaml.scm            |  4 ++--
 gnu/packages/parallel.scm         |  4 ++--
 gnu/packages/pdf.scm              |  2 +-
 gnu/packages/samba.scm            |  2 +-
 gnu/packages/serialization.scm    |  2 +-
 gnu/packages/shells.scm           |  2 +-
 gnu/packages/telephony.scm        |  2 +-
 gnu/packages/textutils.scm        |  2 +-
 gnu/packages/version-control.scm  |  2 +-
 gnu/packages/video.scm            | 18 ++++++--------
 40 files changed, 128 insertions(+), 124 deletions(-)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e756fbf7c..08095e16d 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -328,7 +328,7 @@ engineers, musicians, soundtrack editors and composers.")
        #:phases
        (modify-phases %standard-phases
          ;; FFmpeg is only detected if autoreconf runs.
-         (add-before 'configure 'autoreconf
+         (add-after 'unpack 'autoreconf
            (lambda _
              (zero? (system* "autoreconf" "-vfi")))))
        ;; The test suite is not "well exercised" according to the developers,
@@ -1975,8 +1975,8 @@ tempo and pitch of an audio recording independently of one another.")
     (arguments
      `(#:tests? #f ;no "check" target
        #:phases (modify-phases %standard-phases
-                  (add-before
-                   'configure 'autoconf
+                  (add-after
+                   'unpack 'autoconf
                    (lambda _ (zero? (system* "autoreconf" "-vfi"))))
                   (add-before
                    'build 'fix-makefile
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 02250dfaf..d205e296f 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -3444,7 +3444,7 @@ sequences).")
                (("^#include \"kseq\\.h\"")
                 "#include \"htslib/kseq.h\""))
              #t))
-         (add-before 'configure 'autoconf
+         (add-after 'unpack 'autoconf
            (lambda _ (zero? (system* "autoconf")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -4479,9 +4479,11 @@ distribution, coverage uniformity, strand specificity, etc.")
                        "Data2DB"
                        "PCL2Bin")))
            (modify-phases %standard-phases
-             (add-before 'configure 'bootstrap
+             (add-after 'unpack 'bootstrap
                (lambda _
-                 (zero? (system* "bash" "gen_auto"))))
+                 (substitute* "gen_tools_am"
+                   (("/usr/bin/env perl") (which "perl")))
+                 (zero? (system* "sh" "gen_auto"))))
              (add-after 'build 'build-additional-tools
                (lambda* (#:key make-flags #:allow-other-keys)
                  (every (lambda (dir)
@@ -6095,8 +6097,8 @@ track.  The database is exposed as a @code{TxDb} object.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autogen
-                     (lambda _ (zero? (system* "autoreconf" "-vif")))))))
+         (add-after 'unpack 'autogen
+           (lambda _ (zero? (system* "autoreconf" "-vif")))))))
     (inputs
      `(("zlib" ,zlib)
        ("bzip2" ,bzip2)
@@ -8274,6 +8276,8 @@ the available RAM.")
                             (assoc-ref %build-inputs "libharu")))
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'autogen
+           (lambda _ (zero? (system* "autoreconf" "-vif"))))
          (add-after 'unpack 'fix-checks
            (lambda _
              ;; The PNGDRIVER tests check for the presence of libgd, libpng
@@ -8291,9 +8295,7 @@ AM_CONDITIONAL(AMPNG, true)"))
              ;; looking for updates will not work.
              (substitute* "Makefile.am"
                (("\\$\\(bindir\\)/embossupdate") ""))
-             #t))
-         (add-before 'configure 'autogen
-           (lambda _ (zero? (system* "autoreconf" "-vif")))))))
+             #t)))))
     (inputs
      `(("perl" ,perl)
        ("libpng" ,libpng)
@@ -9191,7 +9193,7 @@ global-scaling and full-quantile normalization.")
        (substitute-keyword-arguments (package-arguments htslib)
          ((#:phases phases)
           `(modify-phases  ,phases
-             (add-before 'configure 'bootstrap
+             (add-after 'unpack 'bootstrap
                (lambda _
                  (zero? (system* "autoreconf" "-vif"))))))))
       (native-inputs
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index e2cb712bf..32e7e6e16 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -215,8 +215,11 @@ their dependencies.")
                (substitute* "Makefile.am"
                  (("tests/repo.scm \\\\") "\\"))
                #t))
-           (add-before 'configure 'bootstrap
-             (lambda _ (zero? (system* "sh" "bootstrap"))))
+           (add-after 'disable-repo-tests 'bootstrap
+             (lambda _
+               (substitute* "build-aux/git-version-gen"
+                 (("/bin/sh") (which "sh")))
+               (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/compression.scm b/gnu/packages/compression.scm
index 2a9ccd167..a28a31572 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -114,7 +114,7 @@ in compression.")
        (modify-phases %standard-phases
          (add-after 'unpack 'enter-source
            (lambda _ (chdir "contrib/minizip") #t))
-         (add-before 'configure 'autoreconf
+         (add-after 'enter-source 'autoreconf
            (lambda _
              (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
@@ -960,7 +960,7 @@ respectively, based on the reference implementation from Google.")
        (modify-phases %standard-phases
          (add-after 'unpack 'enter-build-directory
            (lambda _ (chdir "xdelta3")))
-         (add-before 'configure 'autoconf
+         (add-after 'enter-build-directory 'autoconf
            (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
     (home-page "http://xdelta.com")
     (synopsis "Delta encoder for binary files")
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index da192553a..a1289ec21 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -45,12 +45,10 @@
      '(#:phases
        ;; build scripts not in root of archive
        (modify-phases %standard-phases
-         (add-before 'configure 'pre-configure
+         (add-after 'unpack 'autogen
            (lambda _
-             (chdir "Project/GNU/Library")))
-         (add-before 'configure 'autogen
-           (lambda _
-             (zero? (system* "./autogen.sh")))))))
+             (chdir "Project/GNU/Library")
+             (zero? (system* "sh" "autogen.sh")))))))
     (home-page "https://github.com/MediaArea/ZenLib")
     (synopsis "C++ utility library")
     (description "ZenLib is a C++ utility library.  It includes classes for handling
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index d02bc20f2..fa8ecf831 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -160,7 +160,7 @@ OpenBSD tool of the same name.")
     (arguments
      `(#:configure-flags '("--disable-tools" "--disable-python")
        #:phases (modify-phases %standard-phases
-                  (add-before 'configure 'autoconf
+                  (add-after 'unpack 'autoconf
                     (lambda _
                       (zero? (system* "autoreconf" "-vfi")))))))
     (home-page "https://github.com/savoirfairelinux/opendht/")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 655c6db18..4d231a045 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -114,9 +114,9 @@
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'generate-configure
+         (add-after 'unpack 'autogen
            (lambda _
-             (zero? (system* "./autogen.sh")))))))
+             (zero? (system* "sh" "autogen.sh")))))))
     ;; http://www.4store.org has been down for a while now.
     (home-page "https://github.com/garlik/4store")
     (synopsis "Clustered RDF storage and query engine")
@@ -1559,7 +1559,7 @@ for ODBC.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autoreconf
+         (add-after 'unpack 'autoreconf
            (lambda _
              (zero? (system* "autoreconf" "-vfi")))))))
     (home-page "http://mdbtools.sourceforge.net/")
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 1dab0085c..017e81656 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -300,7 +300,7 @@ down the road.")
                (zero? (system* "tar" "cJf" "./make.tar.xz"
                                (string-append "make-"
                                               ,(package-version gnu-make))))))
-           (add-before 'configure 'bootstrap
+           (add-after 'unpack 'bootstrap
              (lambda _
                (zero? (system* "autoreconf" "-vfi")))))))
       (home-page "https://github.com/losalamos/stress-make")
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 64fdc9c3e..ce2f4d81b 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -181,7 +181,7 @@ high-volume and high-reliability applications. The name BIND stands for
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autoreconf
+         (add-after 'unpack 'autoreconf
            (lambda _
              ;; Re-generate build files due to unbundling ltdl.
              ;; TODO: Prevent generating new libltdl and building it.
@@ -229,7 +229,7 @@ servers is included, and an up-to-date version is available at
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'create-configure
+         (add-after 'unpack 'create-configure
            (lambda _
              (zero? (system* "make" "configure")))))))
     (native-inputs
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index b77abc778..11eebc063 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1274,7 +1274,7 @@ single buffer.")
          ;; Build server side using 'gnu-build-system'.
          (add-after 'unpack 'enter-server-dir
            (lambda _ (chdir "server") #t))
-         (add-before 'configure 'autogen
+         (add-after 'enter-server-dir 'autogen
            (lambda _
              (zero? (system* "bash" "autogen.sh"))))
 
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index e509647ea..d3bd99274 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -316,7 +316,7 @@ languages are C and C++.")
       (arguments
        `(#:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'autoreconf
+           (add-after 'unpack 'autoreconf
              (lambda _
                (zero? (system* "autoreconf" "-vfi")))))))
       (home-page "http://repo.or.cz/w/libjaylink.git")
@@ -400,7 +400,7 @@ language.")
                         "presto" "openjtag")))
          #:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'autoreconf
+           (add-after 'unpack 'autoreconf
              (lambda _
                (zero? (system* "autoreconf" "-vfi")))))))
       (home-page "http://openocd.org")
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 28d9a718e..1d133b966 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -483,7 +483,7 @@ ready for production.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autoconf
+         (add-after 'unpack 'autoconf
           (lambda _
             ;; Build rules contain references to Russian translation, but the
             ;; needed files are missing; see
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index a400e712d..519100849 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -124,6 +124,12 @@
                  (("\\{H,Mi,S\\} = time\\(\\),")
                   (date->string source-date-epoch
                                 "{H,Mi,S} = {~H,~M,~S},"))))))
+         (add-after 'unpack 'autoconf
+           (lambda _
+             (substitute* '("erts/autoconf/config.guess"
+                            "erts/autoconf/install-sh")
+               (("/bin/sh") (which "sh")))
+             (zero? (system* "sh" "otp_build" "autoconf"))))
          (add-after 'patch-source-shebangs 'patch-source-env
            (lambda _
              (let ((escripts
@@ -143,8 +149,6 @@
          (add-before 'configure 'set-erl-top
            (lambda _
              (setenv "ERL_TOP" (getcwd))))
-         (add-before 'configure 'autoconf
-           (lambda _ (zero? (system* "./otp_build" "autoconf"))))
          (add-after 'install 'patch-erl
            ;; This only works after install.
            (lambda _
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index 49e721499..5563b6473 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -159,7 +159,7 @@ FTP browser, as well as non-interactive commands such as 'ncftpput' and
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'bootstrap
+         (add-after 'unpack 'bootstrap
            (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
     (home-page "http://weex.sourceforge.net/")
     (synopsis "Non-interactive client for FTP synchronization")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index f40381498..7f5fadb79 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -310,7 +310,7 @@ either on a local, or remote machine via a number of methods.")
       (arguments
        `(#:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'run-autogen
+           (add-after 'unpack 'run-autogen
              (lambda _
                (system* "sh" "autogen.sh"))))))
       (home-page "https://wiki.gnome.org/Apps/Dia")
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 9ca2d9502..6902461e4 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -234,10 +234,10 @@ and support for SSL3 and TLS.")
               (rename-file (string-append out "/share/man/man3")
                            (string-append doc "/share/man/man3"))
               #t)))
-        (add-before 'configure 'autoconf
+        (add-after 'unpack 'autoconf
           ;; Clear artifacts left (shebangs) from release preparation.
           (lambda _
-            (zero? (system* "./buildconf"))))
+            (zero? (system* "sh" "buildconf"))))
         (replace 'check
           (lambda _
             ;; It is unclear why test1026 fails, however the content of it
@@ -345,7 +345,7 @@ kinds of basic applications for the foundation of a GNU internet.")
       (build-system gnu-build-system)
       (arguments
        '(#:phases (modify-phases %standard-phases
-                    (add-before 'configure 'bootstrap
+                    (add-after 'unpack 'bootstrap
                       (lambda _
                         (zero? (system* "autoreconf" "-vfi")))))))
       (native-inputs `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 11e2ace98..12319ac76 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -839,7 +839,7 @@ exceptions, macros, and a dynamic programming environment.")
       (build-system gnu-build-system)
       (arguments
        `(#:phases (modify-phases %standard-phases
-                    (add-before 'configure 'bootstrap
+                    (add-after 'unpack 'bootstrap
                       (lambda _
                         (zero? (system* "autoreconf" "-vfi")))))))
       (native-inputs `(("pkg-config" ,pkg-config)
@@ -1464,9 +1464,9 @@ Parcellite and adds bugfixes and features.")
      `(#:configure-flags '("--enable-introspection=yes")
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autogen
+         (add-after 'unpack 'autogen
            (lambda _
-             (zero? (system* "./autogen.sh")))))))
+             (zero? (system* "sh" "autogen.sh")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("which" ,which)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index f377d83b1..85482b865 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -353,7 +353,7 @@ AM_SCM_LOG_FLAGS =  --no-auto-compile -s")
                  ;; reasons.  It does not fail when run outside of Guix.
                  (("tests/database.scm") ""))
                #t))
-           (add-before 'configure 'autogen
+           (add-after 'fix-bug-22 'autogen
              (lambda _
                (zero? (system* "sh" "autogen.sh")))))))
       (inputs
@@ -616,12 +616,12 @@ format is also supported.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (add-before 'configure 'autoreconf
-                              (lambda _
-                                ;; Repository comes with a broken symlink
-                                (delete-file "README")
-                                (symlink "README.org" "README")
-                                (zero? (system* "autoreconf" "-fi")))))))
+                  (add-after 'unpack 'autoreconf
+                    (lambda _
+                      ;; Repository comes with a broken symlink
+                      (delete-file "README")
+                      (symlink "README.org" "README")
+                      (zero? (system* "autoreconf" "-fi")))))))
     (native-inputs
      `(("autoconf" ,(autoconf-wrapper))
        ("automake" ,automake)
@@ -1088,7 +1088,7 @@ Guile's foreign function interface.")
          ("sqlite" ,sqlite)))
       (arguments
        '(#:phases (modify-phases %standard-phases
-                    (add-before 'configure 'autoreconf
+                    (add-after 'unpack 'autoreconf
                       (lambda _
                         (zero? (system* "autoreconf" "-vfi"))))
                     (add-before 'build 'set-sqlite3-file-name
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index 2200b6663..4c0d6e219 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -148,7 +148,7 @@ may also simplify input method development.")
    (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autogen
+         (add-after 'unpack 'autogen
           (lambda _ (and (zero? (system* "intltoolize"))
                          (zero? (system* "autoreconf" "-vif")))))
          (add-after 'wrap-program 'wrap-with-additional-paths
@@ -204,7 +204,7 @@ ZhuYin (Bopomofo) input method based on libpinyin for IBus.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autogen
+         (add-after 'unpack 'autogen
            (lambda _ (zero? (system* "autoreconf" "-vif"))))
          (add-after 'unpack 'unpack-model
            (lambda* (#:key inputs #:allow-other-keys)
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 1d6ac82e5..b38336c46 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -180,9 +180,11 @@ SILC and ICB protocols via plugins.")
                                 "--with-tclconfig="
                                 (assoc-ref %build-inputs "tcl") "/lib"))
        #:phases (modify-phases %standard-phases
-                  (add-before 'configure 'autogen
+                  (add-after 'unpack 'autogen
                     (lambda _
-                      (zero? (system* "./autogen.sh"))))
+                      (substitute* "version.sh"
+                        (("/bin/sh") (which "sh")))
+                      (zero? (system* "sh" "autogen.sh"))))
                   (add-after 'install 'wrap
                     (lambda* (#:key inputs outputs #:allow-other-keys)
                       (let ((out (assoc-ref outputs "out"))
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 5744db6eb..a4200e4de 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -684,7 +684,7 @@ the standard javac executable.  The tool runs on JamVM instead of SableVM.")))
                "--disable-gjdoc")
          #:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'bootstrap
+           (add-after 'unpack 'bootstrap
              (lambda _
                (zero? (system* "autoreconf" "-vif"))))
            (add-after 'unpack 'remove-unsupported-annotations
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index f7775ff4a..000396100 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -362,8 +362,8 @@ CorelDRAW documents of all versions.")
     (arguments
      `(#:configure-flags '("--with-mdds=1.2")
        #:phases (modify-phases %standard-phases
-                  (add-before 'configure 'autoreconf
-                              (lambda _ (system* "autoreconf"))))))
+                  (add-after 'unpack 'autoreconf
+                    (lambda _ (system* "autoreconf"))))))
     (native-inputs
      `(("cppunit" ,cppunit)
        ("doxygen" ,doxygen)
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index ed97ed9de..f1d75220a 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -332,7 +332,7 @@ devices.")
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'bootstrap
+         (add-after 'unpack 'bootstrap
            (lambda _
              (zero? (system* "autoreconf" "-vfi")))))))
     (inputs
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 7f44ea789..4fff74c34 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -3066,11 +3066,11 @@ write access to exFAT devices.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (add-before 'configure 'bootstrap
+                  (add-after 'unpack 'bootstrap
                     (lambda _
                       ;; The tarball was not generated with 'make dist' so we
                       ;; need to bootstrap things ourselves.
-                      (and (zero? (system* "./autogen.sh"))
+                      (and (zero? (system* "sh" "autogen.sh"))
                            (begin
                              (patch-makefile-SHELL "Makefile.include.in")
                              #t)))))
diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm
index eecfe4558..deaaffd31 100644
--- a/gnu/packages/logging.scm
+++ b/gnu/packages/logging.scm
@@ -75,7 +75,7 @@ staying as close to their API as is reasonable.")
        ("libtool" ,libtool)))
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (add-before 'configure 'add-automake-files
+                  (add-after 'unpack 'add-automake-files
                     (lambda _
                       ;; The 'test-driver' file is a dangling symlink to
                       ;; /usr/share/automake; replace it.  We can't just run
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 91fab8ccf..134303362 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -142,6 +142,9 @@ classification.")
          (modify-phases %standard-phases
            (add-after 'unpack 'enter-dir
              (lambda _ (chdir "ghmm") #t))
+           (add-after 'enter-dir 'autogen
+             (lambda _
+               (zero? (system* "bash" "./autogen.sh"))))
            (delete 'check)
            (add-after 'install 'check
              (assoc-ref %standard-phases 'check))
@@ -188,10 +191,7 @@ classification.")
                   (string-append indent
                                  "@unittest.skip(\"Disabled by Guix\")\n"
                                  line)))
-               #t))
-           (add-before 'configure 'autogen
-             (lambda _
-               (zero? (system* "bash" "./autogen.sh")))))))
+               #t)))))
       (inputs
        `(("python" ,python-2) ; only Python 2 is supported
          ("libxml2" ,libxml2)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index af8690dda..c1350cc99 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1169,9 +1169,9 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
                                               "/lib/dovecot"))
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autogen
+         (add-after 'unpack 'autogen
            (lambda _
-             (zero? (system* "./autogen.sh")))))))
+             (zero? (system* "sh" "autogen.sh")))))))
     (home-page "https://0xacab.org/riseuplabs/trees")
     (synopsis "NaCL-based Dovecot email storage encryption plugin")
     (description
@@ -1225,9 +1225,9 @@ using lidsodium sealed boxes.
                                                 "/lib/dovecot"))
          #:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'autogen
+           (add-after 'unpack 'autogen
              (lambda _
-               (zero? (system* "./autogen.sh")))))))
+               (zero? (system* "sh" "autogen.sh")))))))
       (home-page "https://github.com/LuckyFellow/dovecot-libsodium-plugin")
       (synopsis "Libsodium password hashing schemes plugin for Dovecot")
       (description
@@ -1506,8 +1506,8 @@ program's primary purpose.")
        (file-name (string-append name "-" version "-checkout"))))
     (arguments
      `(#:phases (modify-phases %standard-phases
-                  (add-before
-                   'configure 'autoconf
+                  (add-after
+                   'unpack 'autoconf
                    (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
     (build-system gnu-build-system)
     (native-inputs
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 31ed4a49d..8655dd7c8 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -2174,31 +2174,30 @@ point numbers.")
        ("gtk+" ,gtk+)
        ("shared-mime-info" ,shared-mime-info)))
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-before
-                   'configure 'autoconf
-                   (lambda _
-                     (zero? (system* "./bootstrap"))))
-                  (add-after
-                   'install 'wrap-program
-                   (lambda* (#:key inputs outputs #:allow-other-keys)
-                     (wrap-program (string-append (assoc-ref outputs "out")
-                                                  "/bin/wxmaxima")
-                       `("PATH" ":" prefix
-                         (,(string-append (assoc-ref inputs "maxima")
-                                          "/bin")))
-                       ;; For GtkFileChooserDialog.
-                       `("GSETTINGS_SCHEMA_DIR" =
-                         (,(string-append (assoc-ref inputs "gtk+")
-                                          "/share/glib-2.0/schemas")))
-                       `("XDG_DATA_DIRS" ":" prefix
-                         (;; Needed by gdk-pixbuf to know supported icon formats.
-                          ,(string-append
-                            (assoc-ref inputs "shared-mime-info") "/share")
-                          ;; The default icon theme of GTK+.
-                          ,(string-append
-                            (assoc-ref inputs "adwaita-icon-theme") "/share"))))
-                     #t)))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoconf
+           (lambda _
+             (zero? (system* "sh" "bootstrap"))))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (wrap-program (string-append (assoc-ref outputs "out")
+                                          "/bin/wxmaxima")
+               `("PATH" ":" prefix
+                 (,(string-append (assoc-ref inputs "maxima")
+                                  "/bin")))
+               ;; For GtkFileChooserDialog.
+               `("GSETTINGS_SCHEMA_DIR" =
+                 (,(string-append (assoc-ref inputs "gtk+")
+                                  "/share/glib-2.0/schemas")))
+               `("XDG_DATA_DIRS" ":" prefix
+                 (;; Needed by gdk-pixbuf to know supported icon formats.
+                  ,(string-append
+                    (assoc-ref inputs "shared-mime-info") "/share")
+                  ;; The default icon theme of GTK+.
+                  ,(string-append
+                    (assoc-ref inputs "adwaita-icon-theme") "/share"))))
+             #t)))))
     (home-page "https://andrejv.github.io/wxmaxima/")
     (synopsis "Graphical user interface for the Maxima computer algebra system")
     (description
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index adb7b938f..23eedac71 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1208,7 +1208,7 @@ support, and more.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autogen
+         (add-after 'unpack 'autogen
            (lambda _
              (zero? (system* "sh" "autogen.sh"))))
          ;; For 'system' commands in Scheme code.
@@ -1261,9 +1261,9 @@ is also scriptable and extensible via Guile.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'bootstrap
+         (add-after 'unpack 'bootstrap
            (lambda _
-             (zero? (system* "./bootstrap.sh")))))))
+             (zero? (system* "sh" "bootstrap.sh")))))))
     (inputs
      `(("expat" ,expat)
        ("openssl" ,openssl)))
@@ -1296,9 +1296,9 @@ manual SSL certificate verification.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'bootstrap
+         (add-after 'unpack 'bootstrap
            (lambda _
-             (zero? (system* "./bootstrap.sh")))))))
+             (zero? (system* "sh" "bootstrap.sh")))))))
     (inputs
      `(("expat" ,expat)
        ("openssl" ,openssl)))
diff --git a/gnu/packages/microcom.scm b/gnu/packages/microcom.scm
index cfa2518f1..afadbecf1 100644
--- a/gnu/packages/microcom.scm
+++ b/gnu/packages/microcom.scm
@@ -42,7 +42,7 @@
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'bootstrap
+         (add-after 'unpack 'bootstrap
            (lambda _
              (zero? (system* "autoreconf" "-i")))))))
     (inputs `(("readline" ,readline)))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 43bbdcd6e..ecf113925 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -1591,9 +1591,9 @@ lets the client choose the concrete timeline.")
                  #:make-flags (list "OCAMLFIND_LDCONF=ignore")
                  #:phases
                  (modify-phases %standard-phases
-                   (add-before 'configure 'bootstrap
+                   (add-after 'unpack 'bootstrap
                      (lambda* (#:key #:allow-other-keys)
-                       (system* "./bootstrap")
+                       (system* "sh" "bootstrap")
                        (substitute* "src/OCamlMakefile"
                          (("/bin/sh") (which "bash")))
                        (substitute* "configure"
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 179fa7ed3..e0e6bba7b 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -136,8 +136,8 @@ and they are executed on lists of files, hosts, users or other items.")
             (string-append "--with-ssl=" (assoc-ref %build-inputs "openssl")))
       #:phases
       (modify-phases %standard-phases
-       (add-before
-        'configure 'autogen
+       (add-after
+        'unpack 'autogen
         (lambda _ (zero? (system* "autoconf"))))))) ; configure.ac was patched
    (home-page "http://slurm.schedmd.com/")
    (synopsis "Workload manager for cluster computing")
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 20dfdafb9..59ed691ec 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -263,7 +263,7 @@ Poppler PDF rendering library.")
                            (assoc-ref %build-inputs "libpng")))
       #:phases
       (modify-phases %standard-phases
-        (add-before 'configure 'autogen
+        (add-after 'unpack 'autogen
           (lambda _ (zero? (system* "autoreconf" "-vif")))))))
    (inputs
     `(("zlib" ,zlib)
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 4a7880cfe..2d0f78016 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -71,7 +71,7 @@
      `(#:phases
        (modify-phases %standard-phases
          ;; The 6.7 tarball is missing ‘install.sh’. Create it.
-         (add-before 'configure 'autoreconf
+         (add-after 'unpack 'autoreconf
            (lambda _
              (zero? (system* "autoreconf" "-i"))))
          (add-before 'configure 'set-root-sbin
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 3994191bd..3743ca8f3 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -127,7 +127,7 @@ such as compact binary encodings, XML, or JSON.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autoconf
+         (add-after 'unpack 'autoconf
            (lambda _
              (system* "autoreconf" "-vfi"))))))
     (home-page "http://www.msgpack.org")
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 8d2a957ea..d918c091d 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -430,7 +430,7 @@ use of experts and novices alike.")
                  (delete-file-recursively "rx")
                  (symlink rxpath "rx"))
                #t))
-           (add-before 'configure 'autoreconf
+           (add-after 'unpack 'autoreconf
              (lambda _
                (zero? (system* "autoreconf")))))))
       (inputs
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 5207bd241..5df5e9e4a 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -272,7 +272,7 @@ and a supporting cryptographic kernel.")
          ("libtool" ,libtool)))
       (arguments
        `(#:phases (modify-phases %standard-phases
-                    (add-before 'configure 'autoconf
+                    (add-after 'unpack 'autoconf
                       (lambda _
                         (zero? (system* "autoreconf" "-vfi")))))))
       (home-page "https://gitlab.savoirfairelinux.com/sflphone/libiax2")
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 479527a5f..45cef19d0 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -576,7 +576,7 @@ categories.")
      `(#:tests? #f ; FIXME maketest.sh does not work.
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autoreconf
+         (add-after 'unpack 'autoreconf
            (lambda _
              (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 9667b2f3e..75d7eba20 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1227,7 +1227,7 @@ output of the 'git' command.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (add-before 'configure 'bootstrap
+                  (add-after 'unpack 'bootstrap
                     (lambda _
                       (zero? (system* "autoreconf" "-vfi")))))))
     (native-inputs `(("autoconf" ,autoconf)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 19a5e24ed..1f0467b1e 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -840,7 +840,7 @@ audio/video codec library.")
 
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'bootstrap
+         (add-after 'unpack 'bootstrap
            (lambda _ (zero? (system* "sh" "bootstrap"))))
          (add-before 'bootstrap 'fix-livemedia-utils-prefix
            (lambda* (#:key inputs #:allow-other-keys)
@@ -2258,12 +2258,10 @@ practically any type of media.")
        #:phases
        ;; build scripts not in root of archive
        (modify-phases %standard-phases
-         (add-before 'configure 'pre-configure
+         (add-after 'unpack 'autogen
            (lambda _
-             (chdir "Project/GNU/Library")))
-         (add-before 'configure 'autogen
-           (lambda _
-             (zero? (system* "./autogen.sh")))))))
+             (chdir "Project/GNU/Library")
+             (zero? (system* "sh" "autogen.sh")))))))
     (home-page "https://mediaarea.net/en/MediaInfo")
     (synopsis "Library for retrieving media metadata")
     (description "MediaInfo is a library used for retrieving technical
@@ -2316,12 +2314,10 @@ MPEG-2, MPEG-4, DVD (VOB)...
        #:phases
        ;; build scripts not in root of archive
        (modify-phases %standard-phases
-         (add-before 'configure 'pre-configure
-           (lambda _
-             (chdir "Project/GNU/CLI")))
-         (add-before 'configure 'autogen
+         (add-after 'unpack 'autogen
            (lambda _
-             (zero? (system* "./autogen.sh")))))))
+             (chdir "Project/GNU/CLI")
+             (zero? (system* "sh" "autogen.sh")))))))
     (home-page "https://mediaarea.net/en/MediaInfo")
     (synopsis "Utility for reading media metadata")
     (description "MediaInfo is a utility used for retrieving technical
-- 
2.13.3





Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 19:13:01 GMT) Full text and rfc822 format available.

Message #14 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Cc: Kei Kebreau <kei <at> openmailbox.org>
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Wed, 02 Aug 2017 21:12:09 +0200
[Message part 1 (text/plain, inline)]
Kei Kebreau <kei <at> openmailbox.org> writes:

> * gnu/packages/admin.scm (mingetty, clusterssh, sudo, wpa-supplicant-minimal,
> wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
> 'modify-phases' syntax.
> * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
> * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
> * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
> lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
> zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
> * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
> * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
> flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
> * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
> * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
> * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
> * gnu/packages/conky.scm (conky)[arguments]: Likewise.
> * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
> * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
> * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
> * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
> * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
> * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
> * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
> * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
> * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
> * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
> * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
> * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
> * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
> * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
> * gnu/packages/gl.scm (glew)[arguments]: Likewise.
> * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
> libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
> * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
> * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
> * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
> * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present, python2-pycairo)
> [arguments]: Likewise.
> * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
> * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
> * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
> * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
> [arguments]: Likewise.
> * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
> * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
> * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
> * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
> unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
> module-init-tools)[arguments]: Likewise.
> * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
> * gnu/packages/lout.scm (lout)[arguments]: Likewise.
> * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
> * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
> * gnu/packages/mail.scm (exim)[arguments]: Likewise.
> * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
> * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
> suitesparse)[arguments]: Likewise.
> * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
> * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
> * gnu/packages/music.scm (solfege)[arguments]: Likewise.
> * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
> * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
> Likewise.
> * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
> zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
> * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
> Likewise.
> * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
> * gnu/packages/popt.scm (popt)[arguments]: Likewise.
> * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
> Likewise.
> * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
> * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
> python-sqlalchemy, python-docopt)[arguments]: Likewise.
> * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
> * gnu/packages/regex.scm (tre)[arguments]: Likewise.
> * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
> * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
> * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
> * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
> * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
> * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
> * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
> * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
> * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
> * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
> * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
> * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
> Likewise.
> * gnu/packages/time.scm (time)[arguments]: Likewise.
> * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
> * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
> * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
> * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
> * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
> * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
> * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
> * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
> * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
> * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
> * gnu/packages/xorg.scm (imake)[arguments]: Likewise.
> ---
>  gnu/packages/admin.scm            | 294 ++++++++++++++---------------
>  gnu/packages/algebra.scm          |  31 ++--
>  gnu/packages/apr.scm              |  25 ++-
>  gnu/packages/audio.scm            | 193 +++++++++----------
>  gnu/packages/backup.scm           |  33 ++--
>  gnu/packages/bioinformatics.scm   | 250 +++++++++++++------------
>  gnu/packages/bittorrent.scm       |  33 ++--
>  gnu/packages/cdrom.scm            |   2 +-
>  gnu/packages/compression.scm      |  16 +-
>  gnu/packages/conky.scm            |  31 ++--
>  gnu/packages/databases.scm        | 102 +++++-----
>  gnu/packages/debug.scm            |  70 +++----
>  gnu/packages/display-managers.scm |  22 +--
>  gnu/packages/dns.scm              |   2 +-
>  gnu/packages/docbook.scm          |  26 +--
>  gnu/packages/emacs.scm            |  74 ++++----
>  gnu/packages/engineering.scm      |  43 +++--
>  gnu/packages/firmware.scm         |  48 ++---
>  gnu/packages/flashing-tools.scm   |  21 +--
>  gnu/packages/fltk.scm             |  42 ++---
>  gnu/packages/freedesktop.scm      |  33 ++--
>  gnu/packages/gd.scm               |  19 +-
>  gnu/packages/gimp.scm             |  30 +--
>  gnu/packages/gkrellm.scm          |   4 +-
>  gnu/packages/gl.scm               |   2 +-
>  gnu/packages/glib.scm             |  33 ++--
>  gnu/packages/gnome.scm            | 145 +++++++--------
>  gnu/packages/gprolog.scm          |  17 +-
>  gnu/packages/gps.scm              |  19 +-
>  gnu/packages/graphics.scm         |  13 +-
>  gnu/packages/gtk.scm              |  80 ++++----
>  gnu/packages/guile-wm.scm         |  81 ++++----
>  gnu/packages/guile.scm            |  36 ++--
>  gnu/packages/hugs.scm             |  61 +++---
>  gnu/packages/hurd.scm             |  60 +++---
>  gnu/packages/image-viewers.scm    |  14 +-
>  gnu/packages/libcanberra.scm      |  18 +-
>  gnu/packages/libsigsegv.scm       |  13 +-
>  gnu/packages/linux.scm            | 379 +++++++++++++++++++-------------------
>  gnu/packages/lisp.scm             |  61 +++---
>  gnu/packages/lout.scm             | 142 +++++++-------
>  gnu/packages/lua.scm              |   2 +-
>  gnu/packages/machine-learning.scm |  88 +++++----
>  gnu/packages/mail.scm             |  90 ++++-----
>  gnu/packages/man.scm              |   4 +-
>  gnu/packages/maths.scm            | 119 ++++++------
>  gnu/packages/messaging.scm        |  27 ++-
>  gnu/packages/mp3.scm              |  87 ++++-----
>  gnu/packages/music.scm            | 102 +++++-----
>  gnu/packages/noweb.scm            |  79 ++++----
>  gnu/packages/patchutils.scm       | 120 ++++++------
>  gnu/packages/pdf.scm              |  69 +++----
>  gnu/packages/perl.scm             |  31 ++--
>  gnu/packages/photo.scm            |  15 +-
>  gnu/packages/popt.scm             |  17 +-
>  gnu/packages/pretty-print.scm     |  65 +++----
>  gnu/packages/pumpio.scm           |  32 ++--
>  gnu/packages/python.scm           |  47 +++--
>  gnu/packages/rdf.scm              |  40 ++--
>  gnu/packages/regex.scm            |  20 +-
>  gnu/packages/rrdtool.scm          |  19 +-
>  gnu/packages/ruby.scm             |  40 ++--
>  gnu/packages/sawfish.scm          |  50 ++---
>  gnu/packages/scheme.scm           | 134 +++++++-------
>  gnu/packages/sdl.scm              |  46 ++---
>  gnu/packages/serveez.scm          |  15 +-
>  gnu/packages/skribilo.scm         |  29 +--
>  gnu/packages/smalltalk.scm        |  17 +-
>  gnu/packages/suckless.scm         |   4 +-
>  gnu/packages/tcl.scm              |  15 +-
>  gnu/packages/telephony.scm        |  12 +-
>  gnu/packages/textutils.scm        |  25 ++-
>  gnu/packages/time.scm             |  19 +-
>  gnu/packages/tor.scm              |  14 +-
>  gnu/packages/uucp.scm             |  24 +--
>  gnu/packages/video.scm            |   9 +-
>  gnu/packages/web-browsers.scm     |  10 +-
>  gnu/packages/web.scm              |  15 +-
>  gnu/packages/wicd.scm             | 214 +++++++++++----------
>  gnu/packages/wm.scm               |   2 +-
>  gnu/packages/xdisorg.scm          |   5 +-
>  gnu/packages/xfce.scm             |  23 +--
>  gnu/packages/xfig.scm             |  75 ++++----
>  gnu/packages/xorg.scm             |  39 ++--
>  84 files changed, 2253 insertions(+), 2274 deletions(-)

Wow! That is a lot of code to review at once. Can you split this into
maybe one patch per file? I guess some can be consolidated, but we
should try to make each patch easily digestible both for current and
future code reviewers. Hopefully we can alternate on the LGTMs.

It would be good to have this as a "slow-rolling" change on 'master' as
well since it will likely cause a lot of rebuilds.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 19:34:01 GMT) Full text and rfc822 format available.

Message #17 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Cc: Kei Kebreau <kei <at> openmailbox.org>
Subject: Re: [bug#27898] [PATCH 2/2] gnu: Put autoconf-related phases
 immediately	after the 'unpack phase.
Date: Wed, 02 Aug 2017 21:33:01 +0200
[Message part 1 (text/plain, inline)]
Kei Kebreau <kei <at> openmailbox.org> writes:

> * gnu/packages/audio.scm (audacity, rtmidi)[arguments]: Correct phases
> accordingly.
> * gnu/packages/bioinformatics.scm (mash, seek, vsearch, emboss,
> htslib-for-sambamba)[arguments]: Likewise.
> * gnu/packages/ci.scm (cuirass)[arguments]: Likewise.
> * gnu/packages/compression.scm (minizip, xdelta)[arguments]: Likewise.
> * gnu/packages/cpp.scm (libzen)[arguments]: Likewise.
> * gnu/packages/crypto.scm (opendht)[arguments]: Likewise.
> * gnu/packages/databases.scm (4store, mdbtools)[arguments]: Likewise.
> * gnu/packages/debug.scm (stress-make)[arguments]: Likewise.
> * gnu/packages/dns.scm (dnscrypt-proxy, dnscrypt-wrapper)[arguments]:
> Likewise.
> * gnu/packages/emacs.scm (emacs-pdf-tools)[arguments]: Likewise.
> * gnu/packages/embedded.scm (libjaylink, openocd)[arguments]: Likewise.
> * gnu/packages/engineering.scm (gerbv)[arguments]: Likewise.
> * gnu/packages/erlang.scm (erlang)[arguments]: Likewise.
> * gnu/packages/ftp.scm (weex)[arguments]: Likewise.
> * gnu/packages/gnome.scm (dia)[arguments]: Likewise.
> * gnu/packages/gnunet.scm (gnurl, guile-gnunet)[arguments]: Likewise.
> * gnu/packages/gtk.scm (guile-rsvg, graphene)[arguments]: Likewise.
> * gnu/packages/guile.scm (guildhall, guile-ics, guile-sqlite3)[arguments]:
> Likewise.
> * gnu/packages/ibus.scm (ibus-libpinyin)[arguments]: Likewise.
> * gnu/packages/irc.scm (weechat)[arguments]: Likewise.
> * gnu/packages/java.scm (classpath-devel)[arguments]: Likewise.
> * gnu/packages/libreoffice.scm (libetonyek)[arguments]: Likewise.
> * gnu/packages/libusb.scm (hidapi)[arguments]: Likewise.
> * gnu/packages/linux.scm (gpm)[arguments]: Likewise.
> * gnu/packages/logging.scm (glog)[arguments]: Likewise.
> * gnu/packages/machine-learning.scm (ghmm)[arguments]: Likewise.
> * gnu/packages/mail.scm (dovecot-trees, dovecot-libsodium-plugin, esmtp)
> [arguments]: Likewise.
> * gnu/packages/maths.scm (wxmaxima)[arguments]: Likewise.
> * gnu/packages/messaging.scm (freetalk, libmesode, libstrophe)[arguments]:
> Likewise.
> * gnu/packages/microcom.scm (microcom)[arguments]: Likewise.
> * gnu/packages/ocaml.scm (ocaml-ssl)[arguments]: Likewise.
> * gnu/packages/parallel.scm (slurm)[arguments]: Likewise.
> * gnu/packages/pdf.scm (libharu)[arguments]: Likewise.
> * gnu/packages/samba.scm (cifs-utils)[arguments]: Likewise.
> * gnu/packages/serialization.scm (msgpack)[arguments]: Likewise.
> * gnu/packages/shells.scm (scsh)[arguments]: Likewise.
> * gnu/packages/telephony.scm (libiax2)[arguments]: Likewise.
> * gnu/packages/textutils.scm (dotconf)[arguments]: Likewise.
> * gnu/packages/version-control.scm (findnewest)[arguments]: Likewise.
> * gnu/packages/video.scm (vlc, libmediainfo, mediainfo)[arguments]: Likewise.

Phew! This too will cause a lot of rebuilds, but I guess we could put it
on 'staging'. It would have to be committed just before starting it to
reduce the amount of merge conflicts.

That said, I'm not sure how necessary this change is, but I don't have a
strong argument against it. Other opinions welcome!

Maybe we could add an '#:autoreconf?' parameter to gnu-build-system,
which runs `autoreconf -vif` in a phase and automatically pulls in
automake and autoconf (and probably also libtool). Thoughts?
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 19:42:02 GMT) Full text and rfc822 format available.

Message #20 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Wed, 2 Aug 2017 15:41:48 -0400
[Message part 1 (text/plain, inline)]
On Wed, Aug 02, 2017 at 09:12:09PM +0200, Marius Bakke wrote:
> Kei Kebreau <kei <at> openmailbox.org> writes:
> 
> > * gnu/packages/admin.scm (mingetty, clusterssh, sudo, wpa-supplicant-minimal,
> > wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
> > 'modify-phases' syntax.
> > * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
> > * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
> > * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
> > lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
> > zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
> > * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
> > * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
> > flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
> > * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
> > * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
> > * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
> > * gnu/packages/conky.scm (conky)[arguments]: Likewise.
> > * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
> > * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
> > * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
> > * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
> > * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
> > * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
> > * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
> > * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
> > * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
> > * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
> > * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
> > * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
> > * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
> > * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
> > * gnu/packages/gl.scm (glew)[arguments]: Likewise.
> > * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
> > libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
> > * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
> > * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
> > * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
> > * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present, python2-pycairo)
> > [arguments]: Likewise.
> > * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
> > * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
> > * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
> > * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
> > [arguments]: Likewise.
> > * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
> > * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
> > * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
> > * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
> > unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
> > module-init-tools)[arguments]: Likewise.
> > * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
> > * gnu/packages/lout.scm (lout)[arguments]: Likewise.
> > * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
> > * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
> > * gnu/packages/mail.scm (exim)[arguments]: Likewise.
> > * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
> > * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
> > suitesparse)[arguments]: Likewise.
> > * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
> > * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
> > * gnu/packages/music.scm (solfege)[arguments]: Likewise.
> > * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
> > * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
> > Likewise.
> > * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
> > zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
> > * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
> > Likewise.
> > * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
> > * gnu/packages/popt.scm (popt)[arguments]: Likewise.
> > * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
> > Likewise.
> > * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
> > * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
> > python-sqlalchemy, python-docopt)[arguments]: Likewise.
> > * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
> > * gnu/packages/regex.scm (tre)[arguments]: Likewise.
> > * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
> > * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
> > * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
> > * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
> > * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
> > * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
> > * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
> > * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
> > * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
> > * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
> > * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
> > * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
> > Likewise.
> > * gnu/packages/time.scm (time)[arguments]: Likewise.
> > * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
> > * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
> > * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
> > * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
> > * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
> > * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
> > * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
> > * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
> > * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
> > * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
> > * gnu/packages/xorg.scm (imake)[arguments]: Likewise.
> > ---
> >  gnu/packages/admin.scm            | 294 ++++++++++++++---------------
> >  gnu/packages/algebra.scm          |  31 ++--
> >  gnu/packages/apr.scm              |  25 ++-
> >  gnu/packages/audio.scm            | 193 +++++++++----------
> >  gnu/packages/backup.scm           |  33 ++--
> >  gnu/packages/bioinformatics.scm   | 250 +++++++++++++------------
> >  gnu/packages/bittorrent.scm       |  33 ++--
> >  gnu/packages/cdrom.scm            |   2 +-
> >  gnu/packages/compression.scm      |  16 +-
> >  gnu/packages/conky.scm            |  31 ++--
> >  gnu/packages/databases.scm        | 102 +++++-----
> >  gnu/packages/debug.scm            |  70 +++----
> >  gnu/packages/display-managers.scm |  22 +--
> >  gnu/packages/dns.scm              |   2 +-
> >  gnu/packages/docbook.scm          |  26 +--
> >  gnu/packages/emacs.scm            |  74 ++++----
> >  gnu/packages/engineering.scm      |  43 +++--
> >  gnu/packages/firmware.scm         |  48 ++---
> >  gnu/packages/flashing-tools.scm   |  21 +--
> >  gnu/packages/fltk.scm             |  42 ++---
> >  gnu/packages/freedesktop.scm      |  33 ++--
> >  gnu/packages/gd.scm               |  19 +-
> >  gnu/packages/gimp.scm             |  30 +--
> >  gnu/packages/gkrellm.scm          |   4 +-
> >  gnu/packages/gl.scm               |   2 +-
> >  gnu/packages/glib.scm             |  33 ++--
> >  gnu/packages/gnome.scm            | 145 +++++++--------
> >  gnu/packages/gprolog.scm          |  17 +-
> >  gnu/packages/gps.scm              |  19 +-
> >  gnu/packages/graphics.scm         |  13 +-
> >  gnu/packages/gtk.scm              |  80 ++++----
> >  gnu/packages/guile-wm.scm         |  81 ++++----
> >  gnu/packages/guile.scm            |  36 ++--
> >  gnu/packages/hugs.scm             |  61 +++---
> >  gnu/packages/hurd.scm             |  60 +++---
> >  gnu/packages/image-viewers.scm    |  14 +-
> >  gnu/packages/libcanberra.scm      |  18 +-
> >  gnu/packages/libsigsegv.scm       |  13 +-
> >  gnu/packages/linux.scm            | 379 +++++++++++++++++++-------------------
> >  gnu/packages/lisp.scm             |  61 +++---
> >  gnu/packages/lout.scm             | 142 +++++++-------
> >  gnu/packages/lua.scm              |   2 +-
> >  gnu/packages/machine-learning.scm |  88 +++++----
> >  gnu/packages/mail.scm             |  90 ++++-----
> >  gnu/packages/man.scm              |   4 +-
> >  gnu/packages/maths.scm            | 119 ++++++------
> >  gnu/packages/messaging.scm        |  27 ++-
> >  gnu/packages/mp3.scm              |  87 ++++-----
> >  gnu/packages/music.scm            | 102 +++++-----
> >  gnu/packages/noweb.scm            |  79 ++++----
> >  gnu/packages/patchutils.scm       | 120 ++++++------
> >  gnu/packages/pdf.scm              |  69 +++----
> >  gnu/packages/perl.scm             |  31 ++--
> >  gnu/packages/photo.scm            |  15 +-
> >  gnu/packages/popt.scm             |  17 +-
> >  gnu/packages/pretty-print.scm     |  65 +++----
> >  gnu/packages/pumpio.scm           |  32 ++--
> >  gnu/packages/python.scm           |  47 +++--
> >  gnu/packages/rdf.scm              |  40 ++--
> >  gnu/packages/regex.scm            |  20 +-
> >  gnu/packages/rrdtool.scm          |  19 +-
> >  gnu/packages/ruby.scm             |  40 ++--
> >  gnu/packages/sawfish.scm          |  50 ++---
> >  gnu/packages/scheme.scm           | 134 +++++++-------
> >  gnu/packages/sdl.scm              |  46 ++---
> >  gnu/packages/serveez.scm          |  15 +-
> >  gnu/packages/skribilo.scm         |  29 +--
> >  gnu/packages/smalltalk.scm        |  17 +-
> >  gnu/packages/suckless.scm         |   4 +-
> >  gnu/packages/tcl.scm              |  15 +-
> >  gnu/packages/telephony.scm        |  12 +-
> >  gnu/packages/textutils.scm        |  25 ++-
> >  gnu/packages/time.scm             |  19 +-
> >  gnu/packages/tor.scm              |  14 +-
> >  gnu/packages/uucp.scm             |  24 +--
> >  gnu/packages/video.scm            |   9 +-
> >  gnu/packages/web-browsers.scm     |  10 +-
> >  gnu/packages/web.scm              |  15 +-
> >  gnu/packages/wicd.scm             | 214 +++++++++++----------
> >  gnu/packages/wm.scm               |   2 +-
> >  gnu/packages/xdisorg.scm          |   5 +-
> >  gnu/packages/xfce.scm             |  23 +--
> >  gnu/packages/xfig.scm             |  75 ++++----
> >  gnu/packages/xorg.scm             |  39 ++--
> >  84 files changed, 2253 insertions(+), 2274 deletions(-)
> 
> Wow! That is a lot of code to review at once. Can you split this into
> maybe one patch per file? I guess some can be consolidated, but we
> should try to make each patch easily digestible both for current and
> future code reviewers. Hopefully we can alternate on the LGTMs.

I agree, wow! Thanks for this. It should help new Schemers to feel more
comfortable editing packages.

This might be annoying but it should wait until after the core-updates
branch is done and merged into the master branch. I want to minimize the
number of merge conflicts because they are 1) annoying and 2) relatively
opaque when reading the Git history. Marius's suggestion is another good
one, and would help with issues like that.

But if we were to wait until after core-updates and push it as one
commit, I wouldn't mind. It's up to the two of you and everyone else :)
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 19:46:02 GMT) Full text and rfc822 format available.

Message #23 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 2/2] gnu: Put autoconf-related phases
 immediately	after the 'unpack phase.
Date: Wed, 2 Aug 2017 15:45:15 -0400
[Message part 1 (text/plain, inline)]
On Wed, Aug 02, 2017 at 09:33:01PM +0200, Marius Bakke wrote:
> Kei Kebreau <kei <at> openmailbox.org> writes:

[... move autoconf phases ...]

> Phew! This too will cause a lot of rebuilds, but I guess we could put it
> on 'staging'. It would have to be committed just before starting it to
> reduce the amount of merge conflicts.

Agreed

> That said, I'm not sure how necessary this change is, but I don't have a
> strong argument against it. Other opinions welcome!

I guess there is a correct ordering and an incorrect ordering, depending
on whether or not these phases should happen before or after the shebang
patching phases. Does it work if it happens before the shebangs are
patched?

> Maybe we could add an '#:autoreconf?' parameter to gnu-build-system,
> which runs `autoreconf -vif` in a phase and automatically pulls in
> automake and autoconf (and probably also libtool). Thoughts?

Interesting!
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 20:09:02 GMT) Full text and rfc822 format available.

Message #26 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Leo Famulari <leo <at> famulari.name>
Cc: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Wed, 02 Aug 2017 22:08:18 +0200
[Message part 1 (text/plain, inline)]
Leo Famulari <leo <at> famulari.name> writes:

> On Wed, Aug 02, 2017 at 09:12:09PM +0200, Marius Bakke wrote:
>> Kei Kebreau <kei <at> openmailbox.org> writes:
>> 
>> > * gnu/packages/admin.scm (mingetty, clusterssh, sudo, wpa-supplicant-minimal,
>> > wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
>> > 'modify-phases' syntax.
>> > * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
>> > * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
>> > * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
>> > lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
>> > zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
>> > * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
>> > * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
>> > flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
>> > * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
>> > * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
>> > * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
>> > * gnu/packages/conky.scm (conky)[arguments]: Likewise.
>> > * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
>> > * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
>> > * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
>> > * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
>> > * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
>> > * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
>> > * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
>> > * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
>> > * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
>> > * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
>> > * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
>> > * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
>> > * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
>> > * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
>> > * gnu/packages/gl.scm (glew)[arguments]: Likewise.
>> > * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
>> > libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
>> > * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
>> > * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
>> > * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
>> > * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present, python2-pycairo)
>> > [arguments]: Likewise.
>> > * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
>> > * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
>> > * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
>> > * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
>> > [arguments]: Likewise.
>> > * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
>> > * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
>> > * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
>> > * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
>> > unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
>> > module-init-tools)[arguments]: Likewise.
>> > * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
>> > * gnu/packages/lout.scm (lout)[arguments]: Likewise.
>> > * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
>> > * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
>> > * gnu/packages/mail.scm (exim)[arguments]: Likewise.
>> > * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
>> > * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
>> > suitesparse)[arguments]: Likewise.
>> > * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
>> > * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
>> > * gnu/packages/music.scm (solfege)[arguments]: Likewise.
>> > * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
>> > * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
>> > Likewise.
>> > * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
>> > zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
>> > * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
>> > Likewise.
>> > * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
>> > * gnu/packages/popt.scm (popt)[arguments]: Likewise.
>> > * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
>> > Likewise.
>> > * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
>> > * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
>> > python-sqlalchemy, python-docopt)[arguments]: Likewise.
>> > * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
>> > * gnu/packages/regex.scm (tre)[arguments]: Likewise.
>> > * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
>> > * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
>> > * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
>> > * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
>> > * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
>> > * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
>> > * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
>> > * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
>> > * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
>> > * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
>> > * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
>> > * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
>> > Likewise.
>> > * gnu/packages/time.scm (time)[arguments]: Likewise.
>> > * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
>> > * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
>> > * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
>> > * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
>> > * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
>> > * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
>> > * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
>> > * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
>> > * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
>> > * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
>> > * gnu/packages/xorg.scm (imake)[arguments]: Likewise.
>> > ---
>> >  gnu/packages/admin.scm            | 294 ++++++++++++++---------------
>> >  gnu/packages/algebra.scm          |  31 ++--
>> >  gnu/packages/apr.scm              |  25 ++-
>> >  gnu/packages/audio.scm            | 193 +++++++++----------
>> >  gnu/packages/backup.scm           |  33 ++--
>> >  gnu/packages/bioinformatics.scm   | 250 +++++++++++++------------
>> >  gnu/packages/bittorrent.scm       |  33 ++--
>> >  gnu/packages/cdrom.scm            |   2 +-
>> >  gnu/packages/compression.scm      |  16 +-
>> >  gnu/packages/conky.scm            |  31 ++--
>> >  gnu/packages/databases.scm        | 102 +++++-----
>> >  gnu/packages/debug.scm            |  70 +++----
>> >  gnu/packages/display-managers.scm |  22 +--
>> >  gnu/packages/dns.scm              |   2 +-
>> >  gnu/packages/docbook.scm          |  26 +--
>> >  gnu/packages/emacs.scm            |  74 ++++----
>> >  gnu/packages/engineering.scm      |  43 +++--
>> >  gnu/packages/firmware.scm         |  48 ++---
>> >  gnu/packages/flashing-tools.scm   |  21 +--
>> >  gnu/packages/fltk.scm             |  42 ++---
>> >  gnu/packages/freedesktop.scm      |  33 ++--
>> >  gnu/packages/gd.scm               |  19 +-
>> >  gnu/packages/gimp.scm             |  30 +--
>> >  gnu/packages/gkrellm.scm          |   4 +-
>> >  gnu/packages/gl.scm               |   2 +-
>> >  gnu/packages/glib.scm             |  33 ++--
>> >  gnu/packages/gnome.scm            | 145 +++++++--------
>> >  gnu/packages/gprolog.scm          |  17 +-
>> >  gnu/packages/gps.scm              |  19 +-
>> >  gnu/packages/graphics.scm         |  13 +-
>> >  gnu/packages/gtk.scm              |  80 ++++----
>> >  gnu/packages/guile-wm.scm         |  81 ++++----
>> >  gnu/packages/guile.scm            |  36 ++--
>> >  gnu/packages/hugs.scm             |  61 +++---
>> >  gnu/packages/hurd.scm             |  60 +++---
>> >  gnu/packages/image-viewers.scm    |  14 +-
>> >  gnu/packages/libcanberra.scm      |  18 +-
>> >  gnu/packages/libsigsegv.scm       |  13 +-
>> >  gnu/packages/linux.scm            | 379 +++++++++++++++++++-------------------
>> >  gnu/packages/lisp.scm             |  61 +++---
>> >  gnu/packages/lout.scm             | 142 +++++++-------
>> >  gnu/packages/lua.scm              |   2 +-
>> >  gnu/packages/machine-learning.scm |  88 +++++----
>> >  gnu/packages/mail.scm             |  90 ++++-----
>> >  gnu/packages/man.scm              |   4 +-
>> >  gnu/packages/maths.scm            | 119 ++++++------
>> >  gnu/packages/messaging.scm        |  27 ++-
>> >  gnu/packages/mp3.scm              |  87 ++++-----
>> >  gnu/packages/music.scm            | 102 +++++-----
>> >  gnu/packages/noweb.scm            |  79 ++++----
>> >  gnu/packages/patchutils.scm       | 120 ++++++------
>> >  gnu/packages/pdf.scm              |  69 +++----
>> >  gnu/packages/perl.scm             |  31 ++--
>> >  gnu/packages/photo.scm            |  15 +-
>> >  gnu/packages/popt.scm             |  17 +-
>> >  gnu/packages/pretty-print.scm     |  65 +++----
>> >  gnu/packages/pumpio.scm           |  32 ++--
>> >  gnu/packages/python.scm           |  47 +++--
>> >  gnu/packages/rdf.scm              |  40 ++--
>> >  gnu/packages/regex.scm            |  20 +-
>> >  gnu/packages/rrdtool.scm          |  19 +-
>> >  gnu/packages/ruby.scm             |  40 ++--
>> >  gnu/packages/sawfish.scm          |  50 ++---
>> >  gnu/packages/scheme.scm           | 134 +++++++-------
>> >  gnu/packages/sdl.scm              |  46 ++---
>> >  gnu/packages/serveez.scm          |  15 +-
>> >  gnu/packages/skribilo.scm         |  29 +--
>> >  gnu/packages/smalltalk.scm        |  17 +-
>> >  gnu/packages/suckless.scm         |   4 +-
>> >  gnu/packages/tcl.scm              |  15 +-
>> >  gnu/packages/telephony.scm        |  12 +-
>> >  gnu/packages/textutils.scm        |  25 ++-
>> >  gnu/packages/time.scm             |  19 +-
>> >  gnu/packages/tor.scm              |  14 +-
>> >  gnu/packages/uucp.scm             |  24 +--
>> >  gnu/packages/video.scm            |   9 +-
>> >  gnu/packages/web-browsers.scm     |  10 +-
>> >  gnu/packages/web.scm              |  15 +-
>> >  gnu/packages/wicd.scm             | 214 +++++++++++----------
>> >  gnu/packages/wm.scm               |   2 +-
>> >  gnu/packages/xdisorg.scm          |   5 +-
>> >  gnu/packages/xfce.scm             |  23 +--
>> >  gnu/packages/xfig.scm             |  75 ++++----
>> >  gnu/packages/xorg.scm             |  39 ++--
>> >  84 files changed, 2253 insertions(+), 2274 deletions(-)
>> 
>> Wow! That is a lot of code to review at once. Can you split this into
>> maybe one patch per file? I guess some can be consolidated, but we
>> should try to make each patch easily digestible both for current and
>> future code reviewers. Hopefully we can alternate on the LGTMs.
>
> I agree, wow! Thanks for this. It should help new Schemers to feel more
> comfortable editing packages.
>
> This might be annoying but it should wait until after the core-updates
> branch is done and merged into the master branch. I want to minimize the
> number of merge conflicts because they are 1) annoying and 2) relatively
> opaque when reading the Git history. Marius's suggestion is another good
> one, and would help with issues like that.
>
> But if we were to wait until after core-updates and push it as one
> commit, I wouldn't mind. It's up to the two of you and everyone else :)

Yeah I guess the squashed patch is okay. If we delay the patches until
after 'staging' and 'python-updates' as well, no merge will be
necessary. But it won't be a pretty cherry-pick either, by then.

I don't really have a strong opinion either way. But I'd hate to the one
resolving potentially 100s of merge conflicts at once ;-) Cherry-picking
at least restricts the set of conflicts to these changes.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 20:32:02 GMT) Full text and rfc822 format available.

Message #29 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Kei Kebreau <kei <at> openmailbox.org>
To: Leo Famulari <leo <at> famulari.name>
Cc: Marius Bakke <mbakke <at> fastmail.com>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 2/2] gnu: Put autoconf-related phases
 immediately	after the 'unpack phase.
Date: Wed, 02 Aug 2017 16:31:08 -0400
[Message part 1 (text/plain, inline)]
Leo Famulari <leo <at> famulari.name> writes:

> On Wed, Aug 02, 2017 at 09:33:01PM +0200, Marius Bakke wrote:
>> Kei Kebreau <kei <at> openmailbox.org> writes:
>
> [... move autoconf phases ...]
>
>> Phew! This too will cause a lot of rebuilds, but I guess we could put it
>> on 'staging'. It would have to be committed just before starting it to
>> reduce the amount of merge conflicts.
>
> Agreed
>
>> That said, I'm not sure how necessary this change is, but I don't have a
>> strong argument against it. Other opinions welcome!
>
> I guess there is a correct ordering and an incorrect ordering, depending
> on whether or not these phases should happen before or after the shebang
> patching phases. Does it work if it happens before the shebangs are
> patched?
>

What does the "it" in "does it work" mean here? If you mean the
builds themselves, then no. Success isn't guaranteed because the
configure scripts might not be patched, as the patching phases are
finished before the "build" phases. This change ensures that the
"patch-usr-bin-file" phase can operate on generated configure scripts if
necessary:

https://lists.gnu.org/archive/html/guix-devel/2017-07/msg00124.html

>> Maybe we could add an '#:autoreconf?' parameter to gnu-build-system,
>> which runs `autoreconf -vif` in a phase and automatically pulls in
>> automake and autoconf (and probably also libtool). Thoughts?
>
> Interesting!

I agree. It would cut down on repetitive, common code and potential for
"autoreconf-ing" incorrectly.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 20:40:02 GMT) Full text and rfc822 format available.

Message #32 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Kei Kebreau <kei <at> openmailbox.org>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: 27898 <at> debbugs.gnu.org, Leo Famulari <leo <at> famulari.name>
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Wed, 02 Aug 2017 16:38:36 -0400
[Message part 1 (text/plain, inline)]
Marius Bakke <mbakke <at> fastmail.com> writes:

> Leo Famulari <leo <at> famulari.name> writes:
>
>> On Wed, Aug 02, 2017 at 09:12:09PM +0200, Marius Bakke wrote:
>>> Kei Kebreau <kei <at> openmailbox.org> writes:
>>> 
>>> > * gnu/packages/admin.scm (mingetty, clusterssh, sudo,
>>> > wpa-supplicant-minimal,
>>> > wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
>>> > 'modify-phases' syntax.
>>> > * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
>>> > * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
>>> > * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
>>> > lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
>>> > zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
>>> > * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
>>> > * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
>>> > flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
>>> > * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
>>> > * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
>>> > * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
>>> > * gnu/packages/conky.scm (conky)[arguments]: Likewise.
>>> > * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
>>> > * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
>>> > * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
>>> > * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
>>> > * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
>>> > * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
>>> > * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
>>> > * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
>>> > * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
>>> > * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
>>> > * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
>>> > * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
>>> > * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
>>> > * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
>>> > * gnu/packages/gl.scm (glew)[arguments]: Likewise.
>>> > * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
>>> > libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
>>> > * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
>>> > * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
>>> > * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
>>> > * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present,
>>> > python2-pycairo)
>>> > [arguments]: Likewise.
>>> > * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
>>> > * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
>>> > * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
>>> > * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
>>> > [arguments]: Likewise.
>>> > * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
>>> > * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
>>> > * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
>>> > * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
>>> > unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
>>> > module-init-tools)[arguments]: Likewise.
>>> > * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
>>> > * gnu/packages/lout.scm (lout)[arguments]: Likewise.
>>> > * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
>>> > * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
>>> > * gnu/packages/mail.scm (exim)[arguments]: Likewise.
>>> > * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
>>> > * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
>>> > suitesparse)[arguments]: Likewise.
>>> > * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
>>> > * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
>>> > * gnu/packages/music.scm (solfege)[arguments]: Likewise.
>>> > * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
>>> > * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
>>> > Likewise.
>>> > * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
>>> > zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
>>> > * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
>>> > Likewise.
>>> > * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
>>> > * gnu/packages/popt.scm (popt)[arguments]: Likewise.
>>> > * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
>>> > Likewise.
>>> > * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
>>> > * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
>>> > python-sqlalchemy, python-docopt)[arguments]: Likewise.
>>> > * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
>>> > * gnu/packages/regex.scm (tre)[arguments]: Likewise.
>>> > * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
>>> > * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
>>> > * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
>>> > * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
>>> > * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
>>> > * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
>>> > * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
>>> > * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
>>> > * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
>>> > * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
>>> > * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
>>> > * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
>>> > Likewise.
>>> > * gnu/packages/time.scm (time)[arguments]: Likewise.
>>> > * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
>>> > * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
>>> > * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
>>> > * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
>>> > * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
>>> > * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
>>> > * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
>>> > * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
>>> > * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
>>> > * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
>>> > * gnu/packages/xorg.scm (imake)[arguments]: Likewise.
>>> > ---
>>> >  gnu/packages/admin.scm            | 294 ++++++++++++++---------------
>>> >  gnu/packages/algebra.scm          |  31 ++--
>>> >  gnu/packages/apr.scm              |  25 ++-
>>> >  gnu/packages/audio.scm            | 193 +++++++++----------
>>> >  gnu/packages/backup.scm           |  33 ++--
>>> >  gnu/packages/bioinformatics.scm   | 250 +++++++++++++------------
>>> >  gnu/packages/bittorrent.scm       |  33 ++--
>>> >  gnu/packages/cdrom.scm            |   2 +-
>>> >  gnu/packages/compression.scm      |  16 +-
>>> >  gnu/packages/conky.scm            |  31 ++--
>>> >  gnu/packages/databases.scm        | 102 +++++-----
>>> >  gnu/packages/debug.scm            |  70 +++----
>>> >  gnu/packages/display-managers.scm |  22 +--
>>> >  gnu/packages/dns.scm              |   2 +-
>>> >  gnu/packages/docbook.scm          |  26 +--
>>> >  gnu/packages/emacs.scm            |  74 ++++----
>>> >  gnu/packages/engineering.scm      |  43 +++--
>>> >  gnu/packages/firmware.scm         |  48 ++---
>>> >  gnu/packages/flashing-tools.scm   |  21 +--
>>> >  gnu/packages/fltk.scm             |  42 ++---
>>> >  gnu/packages/freedesktop.scm      |  33 ++--
>>> >  gnu/packages/gd.scm               |  19 +-
>>> >  gnu/packages/gimp.scm             |  30 +--
>>> >  gnu/packages/gkrellm.scm          |   4 +-
>>> >  gnu/packages/gl.scm               |   2 +-
>>> >  gnu/packages/glib.scm             |  33 ++--
>>> >  gnu/packages/gnome.scm            | 145 +++++++--------
>>> >  gnu/packages/gprolog.scm          |  17 +-
>>> >  gnu/packages/gps.scm              |  19 +-
>>> >  gnu/packages/graphics.scm         |  13 +-
>>> >  gnu/packages/gtk.scm              |  80 ++++----
>>> >  gnu/packages/guile-wm.scm         |  81 ++++----
>>> >  gnu/packages/guile.scm            |  36 ++--
>>> >  gnu/packages/hugs.scm             |  61 +++---
>>> >  gnu/packages/hurd.scm             |  60 +++---
>>> >  gnu/packages/image-viewers.scm    |  14 +-
>>> >  gnu/packages/libcanberra.scm      |  18 +-
>>> >  gnu/packages/libsigsegv.scm       |  13 +-
>>> >  gnu/packages/linux.scm | 379
>>> > +++++++++++++++++++-------------------
>>> >  gnu/packages/lisp.scm             |  61 +++---
>>> >  gnu/packages/lout.scm             | 142 +++++++-------
>>> >  gnu/packages/lua.scm              |   2 +-
>>> >  gnu/packages/machine-learning.scm |  88 +++++----
>>> >  gnu/packages/mail.scm             |  90 ++++-----
>>> >  gnu/packages/man.scm              |   4 +-
>>> >  gnu/packages/maths.scm            | 119 ++++++------
>>> >  gnu/packages/messaging.scm        |  27 ++-
>>> >  gnu/packages/mp3.scm              |  87 ++++-----
>>> >  gnu/packages/music.scm            | 102 +++++-----
>>> >  gnu/packages/noweb.scm            |  79 ++++----
>>> >  gnu/packages/patchutils.scm       | 120 ++++++------
>>> >  gnu/packages/pdf.scm              |  69 +++----
>>> >  gnu/packages/perl.scm             |  31 ++--
>>> >  gnu/packages/photo.scm            |  15 +-
>>> >  gnu/packages/popt.scm             |  17 +-
>>> >  gnu/packages/pretty-print.scm     |  65 +++----
>>> >  gnu/packages/pumpio.scm           |  32 ++--
>>> >  gnu/packages/python.scm           |  47 +++--
>>> >  gnu/packages/rdf.scm              |  40 ++--
>>> >  gnu/packages/regex.scm            |  20 +-
>>> >  gnu/packages/rrdtool.scm          |  19 +-
>>> >  gnu/packages/ruby.scm             |  40 ++--
>>> >  gnu/packages/sawfish.scm          |  50 ++---
>>> >  gnu/packages/scheme.scm           | 134 +++++++-------
>>> >  gnu/packages/sdl.scm              |  46 ++---
>>> >  gnu/packages/serveez.scm          |  15 +-
>>> >  gnu/packages/skribilo.scm         |  29 +--
>>> >  gnu/packages/smalltalk.scm        |  17 +-
>>> >  gnu/packages/suckless.scm         |   4 +-
>>> >  gnu/packages/tcl.scm              |  15 +-
>>> >  gnu/packages/telephony.scm        |  12 +-
>>> >  gnu/packages/textutils.scm        |  25 ++-
>>> >  gnu/packages/time.scm             |  19 +-
>>> >  gnu/packages/tor.scm              |  14 +-
>>> >  gnu/packages/uucp.scm             |  24 +--
>>> >  gnu/packages/video.scm            |   9 +-
>>> >  gnu/packages/web-browsers.scm     |  10 +-
>>> >  gnu/packages/web.scm              |  15 +-
>>> >  gnu/packages/wicd.scm             | 214 +++++++++++----------
>>> >  gnu/packages/wm.scm               |   2 +-
>>> >  gnu/packages/xdisorg.scm          |   5 +-
>>> >  gnu/packages/xfce.scm             |  23 +--
>>> >  gnu/packages/xfig.scm             |  75 ++++----
>>> >  gnu/packages/xorg.scm             |  39 ++--
>>> >  84 files changed, 2253 insertions(+), 2274 deletions(-)
>>> 
>>> Wow! That is a lot of code to review at once. Can you split this into
>>> maybe one patch per file? I guess some can be consolidated, but we
>>> should try to make each patch easily digestible both for current and
>>> future code reviewers. Hopefully we can alternate on the LGTMs.

One patch per file seems reasonable.

>>
>> I agree, wow! Thanks for this. It should help new Schemers to feel more
>> comfortable editing packages.
>>
>> This might be annoying but it should wait until after the core-updates
>> branch is done and merged into the master branch. I want to minimize the
>> number of merge conflicts because they are 1) annoying and 2) relatively
>> opaque when reading the Git history. Marius's suggestion is another good
>> one, and would help with issues like that.
>>
>> But if we were to wait until after core-updates and push it as one
>> commit, I wouldn't mind. It's up to the two of you and everyone else :)
>
> Yeah I guess the squashed patch is okay. If we delay the patches until
> after 'staging' and 'python-updates' as well, no merge will be
> necessary. But it won't be a pretty cherry-pick either, by then.
>
> I don't really have a strong opinion either way. But I'd hate to the one
> resolving potentially 100s of merge conflicts at once ;-) Cherry-picking
> at least restricts the set of conflicts to these changes.

Delaying the packages is fine as long as necessary to get bigger and
more difficult updates done first. It's a relatively simple change for
most packages, so coming back to it after a while shouldn't be too bad
(in theory).
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 22:45:02 GMT) Full text and rfc822 format available.

Message #35 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Kei Kebreau <kei <at> openmailbox.org>
Cc: Marius Bakke <mbakke <at> fastmail.com>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 2/2] gnu: Put autoconf-related phases
 immediately	after the 'unpack phase.
Date: Wed, 2 Aug 2017 18:44:16 -0400
[Message part 1 (text/plain, inline)]
On Wed, Aug 02, 2017 at 04:31:08PM -0400, Kei Kebreau wrote:
> Leo Famulari <leo <at> famulari.name> writes:
> > I guess there is a correct ordering and an incorrect ordering, depending
> > on whether or not these phases should happen before or after the shebang
> > patching phases. Does it work if it happens before the shebangs are
> > patched?
> 
> What does the "it" in "does it work" mean here? If you mean the
> builds themselves, then no. Success isn't guaranteed because the
> configure scripts might not be patched, as the patching phases are
> finished before the "build" phases. This change ensures that the
> "patch-usr-bin-file" phase can operate on generated configure scripts if
> necessary:
> 
> https://lists.gnu.org/archive/html/guix-devel/2017-07/msg00124.html

I'm sorry for sending that confusing sentence! You interpreted it
correctly. Thank for the clarification!
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 22:47:03 GMT) Full text and rfc822 format available.

Message #38 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Wed, 2 Aug 2017 18:46:14 -0400
[Message part 1 (text/plain, inline)]
On Wed, Aug 02, 2017 at 10:08:18PM +0200, Marius Bakke wrote:
> Leo Famulari <leo <at> famulari.name> writes:
> > I agree, wow! Thanks for this. It should help new Schemers to feel more
> > comfortable editing packages.
> >
> > This might be annoying but it should wait until after the core-updates
> > branch is done and merged into the master branch. I want to minimize the
> > number of merge conflicts because they are 1) annoying and 2) relatively
> > opaque when reading the Git history. Marius's suggestion is another good
> > one, and would help with issues like that.
> >
> > But if we were to wait until after core-updates and push it as one
> > commit, I wouldn't mind. It's up to the two of you and everyone else :)
> 
> Yeah I guess the squashed patch is okay. If we delay the patches until
> after 'staging' and 'python-updates' as well, no merge will be
> necessary. But it won't be a pretty cherry-pick either, by then.

True, we should not wait *too* long. I think that doing it after
core-updates and before staging and python-updates could be good
compromise, because those branches touch a relatively small number of
modules. WDYT?

> I don't really have a strong opinion either way. But I'd hate to the one
> resolving potentially 100s of merge conflicts at once ;-) Cherry-picking
> at least restricts the set of conflicts to these changes.

OTOH, if Kei doesn't have an unsquashed version of this patch, it will
be annoying to split it up :)
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 22:55:01 GMT) Full text and rfc822 format available.

Message #41 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Leo Famulari <leo <at> famulari.name>
Cc: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Thu, 03 Aug 2017 00:54:13 +0200
[Message part 1 (text/plain, inline)]
Leo Famulari <leo <at> famulari.name> writes:

> On Wed, Aug 02, 2017 at 10:08:18PM +0200, Marius Bakke wrote:
>> Leo Famulari <leo <at> famulari.name> writes:
>> > I agree, wow! Thanks for this. It should help new Schemers to feel more
>> > comfortable editing packages.
>> >
>> > This might be annoying but it should wait until after the core-updates
>> > branch is done and merged into the master branch. I want to minimize the
>> > number of merge conflicts because they are 1) annoying and 2) relatively
>> > opaque when reading the Git history. Marius's suggestion is another good
>> > one, and would help with issues like that.
>> >
>> > But if we were to wait until after core-updates and push it as one
>> > commit, I wouldn't mind. It's up to the two of you and everyone else :)
>> 
>> Yeah I guess the squashed patch is okay. If we delay the patches until
>> after 'staging' and 'python-updates' as well, no merge will be
>> necessary. But it won't be a pretty cherry-pick either, by then.
>
> True, we should not wait *too* long. I think that doing it after
> core-updates and before staging and python-updates could be good
> compromise, because those branches touch a relatively small number of
> modules. WDYT?

I think the least painful path is:

* Merge 'core-updates'.
* Merge to 'staging'.
* <apply these commits>
* Branch 'python-updates' from staging.
* Build staging.

Sounds good? :-)

>> I don't really have a strong opinion either way. But I'd hate to the one
>> resolving potentially 100s of merge conflicts at once ;-) Cherry-picking
>> at least restricts the set of conflicts to these changes.
>
> OTOH, if Kei doesn't have an unsquashed version of this patch, it will
> be annoying to split it up :)

Yeah.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Wed, 02 Aug 2017 23:07:01 GMT) Full text and rfc822 format available.

Message #44 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Leo Famulari <leo <at> famulari.name>
Cc: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Thu, 03 Aug 2017 01:06:05 +0200
[Message part 1 (text/plain, inline)]
Marius Bakke <mbakke <at> fastmail.com> writes:

> Leo Famulari <leo <at> famulari.name> writes:
>
>> On Wed, Aug 02, 2017 at 10:08:18PM +0200, Marius Bakke wrote:
>>> Leo Famulari <leo <at> famulari.name> writes:
>>> > I agree, wow! Thanks for this. It should help new Schemers to feel more
>>> > comfortable editing packages.
>>> >
>>> > This might be annoying but it should wait until after the core-updates
>>> > branch is done and merged into the master branch. I want to minimize the
>>> > number of merge conflicts because they are 1) annoying and 2) relatively
>>> > opaque when reading the Git history. Marius's suggestion is another good
>>> > one, and would help with issues like that.
>>> >
>>> > But if we were to wait until after core-updates and push it as one
>>> > commit, I wouldn't mind. It's up to the two of you and everyone else :)
>>> 
>>> Yeah I guess the squashed patch is okay. If we delay the patches until
>>> after 'staging' and 'python-updates' as well, no merge will be
>>> necessary. But it won't be a pretty cherry-pick either, by then.
>>
>> True, we should not wait *too* long. I think that doing it after
>> core-updates and before staging and python-updates could be good
>> compromise, because those branches touch a relatively small number of
>> modules. WDYT?
>
> I think the least painful path is:
>
> * Merge 'core-updates'.
> * Merge to 'staging'.
> * <apply these commits>
> * Branch 'python-updates' from staging.
> * Build staging.
>
> Sounds good? :-)

Actually we probably should swap 2 and 3 if we can take the rebuild hit
on 'master'. I don't know how many rebuilds this will cause, but I guess
as long as it's in the three-digit range it should not take too long.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Sun, 27 Aug 2017 10:45:02 GMT) Full text and rfc822 format available.

Message #47 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Cc: Kei Kebreau <kei <at> openmailbox.org>
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Sun, 27 Aug 2017 12:44:51 +0200
[Message part 1 (text/plain, inline)]
Kei Kebreau <kei <at> openmailbox.org> writes:

> * gnu/packages/admin.scm (mingetty, clusterssh, sudo, wpa-supplicant-minimal,
> wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
> 'modify-phases' syntax.
> * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
> * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
> * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
> lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
> zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
> * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
> * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
> flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
> * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
> * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
> * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
> * gnu/packages/conky.scm (conky)[arguments]: Likewise.
> * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
> * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
> * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
> * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
> * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
> * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
> * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
> * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
> * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
> * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
> * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
> * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
> * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
> * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
> * gnu/packages/gl.scm (glew)[arguments]: Likewise.
> * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
> libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
> * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
> * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
> * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
> * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present, python2-pycairo)
> [arguments]: Likewise.
> * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
> * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
> * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
> * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
> [arguments]: Likewise.
> * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
> * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
> * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
> * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
> unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
> module-init-tools)[arguments]: Likewise.
> * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
> * gnu/packages/lout.scm (lout)[arguments]: Likewise.
> * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
> * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
> * gnu/packages/mail.scm (exim)[arguments]: Likewise.
> * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
> * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
> suitesparse)[arguments]: Likewise.
> * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
> * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
> * gnu/packages/music.scm (solfege)[arguments]: Likewise.
> * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
> * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
> Likewise.
> * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
> zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
> * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
> Likewise.
> * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
> * gnu/packages/popt.scm (popt)[arguments]: Likewise.
> * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
> Likewise.
> * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
> * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
> python-sqlalchemy, python-docopt)[arguments]: Likewise.
> * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
> * gnu/packages/regex.scm (tre)[arguments]: Likewise.
> * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
> * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
> * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
> * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
> * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
> * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
> * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
> * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
> * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
> * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
> * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
> * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
> Likewise.
> * gnu/packages/time.scm (time)[arguments]: Likewise.
> * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
> * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
> * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
> * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
> * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
> * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
> * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
> * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
> * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
> * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
> * gnu/packages/xorg.scm (imake)[arguments]: Likewise.

Hello Kei!

'core-updates' is now merged.  Let's try to get this patch in.

I've read through the changed variables and think we can handle it on
'master', except 'bdb-5.3' which will have to wait until the next
'core-updates' cycle.  Can you double check that this won't cause more
than a few hundred rebuilds?

Thanks!
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Sun, 27 Aug 2017 10:49:02 GMT) Full text and rfc822 format available.

Message #50 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Kei Kebreau <kei <at> openmailbox.org>, 27898 <at> debbugs.gnu.org
Cc: Kei Kebreau <kei <at> openmailbox.org>
Subject: Re: [bug#27898] [PATCH 2/2] gnu: Put autoconf-related phases
 immediately	after the 'unpack phase.
Date: Sun, 27 Aug 2017 12:48:22 +0200
[Message part 1 (text/plain, inline)]
Kei Kebreau <kei <at> openmailbox.org> writes:

> * gnu/packages/audio.scm (audacity, rtmidi)[arguments]: Correct phases
> accordingly.
> * gnu/packages/bioinformatics.scm (mash, seek, vsearch, emboss,
> htslib-for-sambamba)[arguments]: Likewise.
> * gnu/packages/ci.scm (cuirass)[arguments]: Likewise.
> * gnu/packages/compression.scm (minizip, xdelta)[arguments]: Likewise.
> * gnu/packages/cpp.scm (libzen)[arguments]: Likewise.
> * gnu/packages/crypto.scm (opendht)[arguments]: Likewise.
> * gnu/packages/databases.scm (4store, mdbtools)[arguments]: Likewise.
> * gnu/packages/debug.scm (stress-make)[arguments]: Likewise.
> * gnu/packages/dns.scm (dnscrypt-proxy, dnscrypt-wrapper)[arguments]:
> Likewise.
> * gnu/packages/emacs.scm (emacs-pdf-tools)[arguments]: Likewise.
> * gnu/packages/embedded.scm (libjaylink, openocd)[arguments]: Likewise.
> * gnu/packages/engineering.scm (gerbv)[arguments]: Likewise.
> * gnu/packages/erlang.scm (erlang)[arguments]: Likewise.
> * gnu/packages/ftp.scm (weex)[arguments]: Likewise.
> * gnu/packages/gnome.scm (dia)[arguments]: Likewise.
> * gnu/packages/gnunet.scm (gnurl, guile-gnunet)[arguments]: Likewise.
> * gnu/packages/gtk.scm (guile-rsvg, graphene)[arguments]: Likewise.
> * gnu/packages/guile.scm (guildhall, guile-ics, guile-sqlite3)[arguments]:
> Likewise.
> * gnu/packages/ibus.scm (ibus-libpinyin)[arguments]: Likewise.
> * gnu/packages/irc.scm (weechat)[arguments]: Likewise.
> * gnu/packages/java.scm (classpath-devel)[arguments]: Likewise.
> * gnu/packages/libreoffice.scm (libetonyek)[arguments]: Likewise.
> * gnu/packages/libusb.scm (hidapi)[arguments]: Likewise.
> * gnu/packages/linux.scm (gpm)[arguments]: Likewise.
> * gnu/packages/logging.scm (glog)[arguments]: Likewise.
> * gnu/packages/machine-learning.scm (ghmm)[arguments]: Likewise.
> * gnu/packages/mail.scm (dovecot-trees, dovecot-libsodium-plugin, esmtp)
> [arguments]: Likewise.
> * gnu/packages/maths.scm (wxmaxima)[arguments]: Likewise.
> * gnu/packages/messaging.scm (freetalk, libmesode, libstrophe)[arguments]:
> Likewise.
> * gnu/packages/microcom.scm (microcom)[arguments]: Likewise.
> * gnu/packages/ocaml.scm (ocaml-ssl)[arguments]: Likewise.
> * gnu/packages/parallel.scm (slurm)[arguments]: Likewise.
> * gnu/packages/pdf.scm (libharu)[arguments]: Likewise.
> * gnu/packages/samba.scm (cifs-utils)[arguments]: Likewise.
> * gnu/packages/serialization.scm (msgpack)[arguments]: Likewise.
> * gnu/packages/shells.scm (scsh)[arguments]: Likewise.
> * gnu/packages/telephony.scm (libiax2)[arguments]: Likewise.
> * gnu/packages/textutils.scm (dotconf)[arguments]: Likewise.
> * gnu/packages/version-control.scm (findnewest)[arguments]: Likewise.
> * gnu/packages/video.scm (vlc, libmediainfo, mediainfo)[arguments]: Likewise.

Same with this.  Looks okay for 'master', but please double check before
pushing.  TIA!
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Mon, 28 Aug 2017 18:17:02 GMT) Full text and rfc822 format available.

Message #53 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Kei Kebreau <kkebreau <at> posteo.net>
To: 27898 <at> debbugs.gnu.org
Cc: mbakke <at> fastmail.com
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Mon, 28 Aug 2017 14:06:23 -0400
[Message part 1 (text/plain, inline)]
> Kei Kebreau <kei <at> openmailbox.org> writes:
> 
>> * gnu/packages/admin.scm (mingetty, clusterssh, sudo, wpa-supplicant-minimal,
>> wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
>> 'modify-phases' syntax.
>> * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
>> * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
>> * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
>> lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
>> zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
>> * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
>> * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
>> flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
>> * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
>> * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
>> * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
>> * gnu/packages/conky.scm (conky)[arguments]: Likewise.
>> * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
>> * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
>> * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
>> * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
>> * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
>> * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
>> * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
>> * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
>> * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
>> * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
>> * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
>> * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
>> * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
>> * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
>> * gnu/packages/gl.scm (glew)[arguments]: Likewise.
>> * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
>> libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
>> * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
>> * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
>> * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
>> * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present, python2-pycairo)
>> [arguments]: Likewise.
>> * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
>> * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
>> * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
>> * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
>> [arguments]: Likewise.
>> * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
>> * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
>> * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
>> * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
>> unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
>> module-init-tools)[arguments]: Likewise.
>> * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
>> * gnu/packages/lout.scm (lout)[arguments]: Likewise.
>> * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
>> * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
>> * gnu/packages/mail.scm (exim)[arguments]: Likewise.
>> * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
>> * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
>> suitesparse)[arguments]: Likewise.
>> * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
>> * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
>> * gnu/packages/music.scm (solfege)[arguments]: Likewise.
>> * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
>> * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
>> Likewise.
>> * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
>> zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
>> * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
>> Likewise.
>> * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
>> * gnu/packages/popt.scm (popt)[arguments]: Likewise.
>> * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
>> Likewise.
>> * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
>> * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
>> python-sqlalchemy, python-docopt)[arguments]: Likewise.
>> * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
>> * gnu/packages/regex.scm (tre)[arguments]: Likewise.
>> * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
>> * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
>> * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
>> * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
>> * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
>> * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
>> * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
>> * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
>> * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
>> * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
>> * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
>> * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
>> Likewise.
>> * gnu/packages/time.scm (time)[arguments]: Likewise.
>> * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
>> * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
>> * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
>> * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
>> * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
>> * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
>> * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
>> * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
>> * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
>> * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
>> * gnu/packages/xorg.scm (imake)[arguments]: Likewise.
> 
> Hello Kei!
> 
> 'core-updates' is now merged.  Let's try to get this patch in.
> 
> I've read through the changed variables and think we can handle it on
> 'master', except 'bdb-5.3' which will have to wait until the next
> 'core-updates' cycle.  Can you double check that this won't cause more
> than a few hundred rebuilds?
> 
> Thanks!

How does 1301 rebuilds sound?

P.S. It seems that I have to type the patch a second time, so it may be
a while until I am able to push to master.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Mon, 28 Aug 2017 20:50:02 GMT) Full text and rfc822 format available.

Message #56 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Kei Kebreau <kkebreau <at> posteo.net>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Mon, 28 Aug 2017 22:49:01 +0200
[Message part 1 (text/plain, inline)]
Kei Kebreau <kkebreau <at> posteo.net> writes:

>> Kei Kebreau <kei <at> openmailbox.org> writes:
>> 
>>> * gnu/packages/admin.scm (mingetty, clusterssh, sudo, wpa-supplicant-minimal,
>>> wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
>>> 'modify-phases' syntax.
>>> * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
>>> * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
>>> * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
>>> lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
>>> zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
>>> * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
>>> * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
>>> flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
>>> * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
>>> * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
>>> * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
>>> * gnu/packages/conky.scm (conky)[arguments]: Likewise.
>>> * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
>>> * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
>>> * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
>>> * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
>>> * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
>>> * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
>>> * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
>>> * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
>>> * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
>>> * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
>>> * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
>>> * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
>>> * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
>>> * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
>>> * gnu/packages/gl.scm (glew)[arguments]: Likewise.
>>> * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
>>> libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
>>> * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
>>> * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
>>> * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
>>> * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present, python2-pycairo)
>>> [arguments]: Likewise.
>>> * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
>>> * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
>>> * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
>>> * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
>>> [arguments]: Likewise.
>>> * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
>>> * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
>>> * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
>>> * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
>>> unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
>>> module-init-tools)[arguments]: Likewise.
>>> * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
>>> * gnu/packages/lout.scm (lout)[arguments]: Likewise.
>>> * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
>>> * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
>>> * gnu/packages/mail.scm (exim)[arguments]: Likewise.
>>> * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
>>> * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
>>> suitesparse)[arguments]: Likewise.
>>> * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
>>> * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
>>> * gnu/packages/music.scm (solfege)[arguments]: Likewise.
>>> * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
>>> * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
>>> Likewise.
>>> * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
>>> zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
>>> * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
>>> Likewise.
>>> * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
>>> * gnu/packages/popt.scm (popt)[arguments]: Likewise.
>>> * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
>>> Likewise.
>>> * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
>>> * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
>>> python-sqlalchemy, python-docopt)[arguments]: Likewise.
>>> * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
>>> * gnu/packages/regex.scm (tre)[arguments]: Likewise.
>>> * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
>>> * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
>>> * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
>>> * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
>>> * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
>>> * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
>>> * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
>>> * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
>>> * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
>>> * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
>>> * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
>>> * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
>>> Likewise.
>>> * gnu/packages/time.scm (time)[arguments]: Likewise.
>>> * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
>>> * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
>>> * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
>>> * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
>>> * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
>>> * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
>>> * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
>>> * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
>>> * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
>>> * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
>>> * gnu/packages/xorg.scm (imake)[arguments]: Likewise.
>> 
>> Hello Kei!
>> 
>> 'core-updates' is now merged.  Let's try to get this patch in.
>> 
>> I've read through the changed variables and think we can handle it on
>> 'master', except 'bdb-5.3' which will have to wait until the next
>> 'core-updates' cycle.  Can you double check that this won't cause more
>> than a few hundred rebuilds?
>> 
>> Thanks!
>
> How does 1301 rebuilds sound?

I think that will take several days (~week?) to complete, so it should
be done on 'staging' so that users are not left without binary
substitutes for very long.

But then, we are probably facing a weeks worth of merge conflicts.

> P.S. It seems that I have to type the patch a second time, so it may be
> a while until I am able to push to master.

I would assume `git cherry-pick` could resolve most hunks, no?  Files
with many conflicts may be easier to reset to their original state and
redo.

If you do have to redo large parts of it, maybe we could do it in 3-4
batches and keep an eye on Hydra in between?  It would cause some extra
rebuilds, but I suspect it's the least painful option.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Mon, 28 Aug 2017 23:02:01 GMT) Full text and rfc822 format available.

Message #59 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Kei Kebreau <kkebreau <at> posteo.net>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Mon, 28 Aug 2017 19:00:48 -0400
[Message part 1 (text/plain, inline)]
Marius Bakke <mbakke <at> fastmail.com> writes:

> Kei Kebreau <kkebreau <at> posteo.net> writes:
>
>>> Kei Kebreau <kei <at> openmailbox.org> writes:
>>> 
>>>> * gnu/packages/admin.scm (mingetty, clusterssh, sudo,
>>>> wpa-supplicant-minimal,
>>>> wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
>>>> 'modify-phases' syntax.
>>>> * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
>>>> * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
>>>> * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
>>>> lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
>>>> zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
>>>> * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
>>>> * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
>>>> flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
>>>> * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
>>>> * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
>>>> * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
>>>> * gnu/packages/conky.scm (conky)[arguments]: Likewise.
>>>> * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
>>>> * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
>>>> * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
>>>> * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
>>>> * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
>>>> * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
>>>> * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
>>>> * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
>>>> * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
>>>> * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
>>>> * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
>>>> * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
>>>> * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
>>>> * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
>>>> * gnu/packages/gl.scm (glew)[arguments]: Likewise.
>>>> * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
>>>> libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
>>>> * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
>>>> * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
>>>> * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
>>>> * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present,
>>>> python2-pycairo)
>>>> [arguments]: Likewise.
>>>> * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
>>>> * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
>>>> * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
>>>> * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
>>>> [arguments]: Likewise.
>>>> * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
>>>> * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
>>>> * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
>>>> * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
>>>> unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
>>>> module-init-tools)[arguments]: Likewise.
>>>> * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
>>>> * gnu/packages/lout.scm (lout)[arguments]: Likewise.
>>>> * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
>>>> * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
>>>> * gnu/packages/mail.scm (exim)[arguments]: Likewise.
>>>> * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
>>>> * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
>>>> suitesparse)[arguments]: Likewise.
>>>> * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
>>>> * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
>>>> * gnu/packages/music.scm (solfege)[arguments]: Likewise.
>>>> * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
>>>> * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
>>>> Likewise.
>>>> * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
>>>> zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
>>>> * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
>>>> Likewise.
>>>> * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
>>>> * gnu/packages/popt.scm (popt)[arguments]: Likewise.
>>>> * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
>>>> Likewise.
>>>> * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
>>>> * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
>>>> python-sqlalchemy, python-docopt)[arguments]: Likewise.
>>>> * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
>>>> * gnu/packages/regex.scm (tre)[arguments]: Likewise.
>>>> * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
>>>> * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
>>>> * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
>>>> * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
>>>> * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
>>>> * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
>>>> * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
>>>> * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
>>>> * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
>>>> * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
>>>> * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
>>>> * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
>>>> Likewise.
>>>> * gnu/packages/time.scm (time)[arguments]: Likewise.
>>>> * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
>>>> * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
>>>> * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
>>>> * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
>>>> * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
>>>> * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
>>>> * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
>>>> * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
>>>> * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
>>>> * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
>>>> * gnu/packages/xorg.scm (imake)[arguments]: Likewise.
>>> 
>>> Hello Kei!
>>> 
>>> 'core-updates' is now merged.  Let's try to get this patch in.
>>> 
>>> I've read through the changed variables and think we can handle it on
>>> 'master', except 'bdb-5.3' which will have to wait until the next
>>> 'core-updates' cycle.  Can you double check that this won't cause more
>>> than a few hundred rebuilds?
>>> 
>>> Thanks!
>>
>> How does 1301 rebuilds sound?
>
> I think that will take several days (~week?) to complete, so it should
> be done on 'staging' so that users are not left without binary
> substitutes for very long.
>
> But then, we are probably facing a weeks worth of merge conflicts.
>
>> P.S. It seems that I have to type the patch a second time, so it may be
>> a while until I am able to push to master.
>
> I would assume `git cherry-pick` could resolve most hunks, no?  Files
> with many conflicts may be easier to reset to their original state and
> redo.
>

Maybe if my commits were split up? I have to read about
`git cherry-pick`.

> If you do have to redo large parts of it, maybe we could do it in 3-4
> batches and keep an eye on Hydra in between?  It would cause some extra
> rebuilds, but I suspect it's the least painful option.

That could work. I'll see if I can have things sorted by tomorrow and
we'll go from there.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Thu, 31 Aug 2017 13:00:02 GMT) Full text and rfc822 format available.

Message #62 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Kei Kebreau <kkebreau <at> posteo.net>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Thu, 31 Aug 2017 08:59:21 -0400
[Message part 1 (text/plain, inline)]
Kei Kebreau <kkebreau <at> posteo.net> writes:

> Marius Bakke <mbakke <at> fastmail.com> writes:
>
>> Kei Kebreau <kkebreau <at> posteo.net> writes:
>>
>>>> Kei Kebreau <kei <at> openmailbox.org> writes:
>>>> 
>>>>> * gnu/packages/admin.scm (mingetty, clusterssh, sudo,
>>>>> wpa-supplicant-minimal,
>>>>> wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
>>>>> 'modify-phases' syntax.
>>>>> * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
>>>>> * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
>>>>> * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
>>>>> lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
>>>>> zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
>>>>> * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
>>>>> * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
>>>>> flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
>>>>> * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
>>>>> * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
>>>>> * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
>>>>> * gnu/packages/conky.scm (conky)[arguments]: Likewise.
>>>>> * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
>>>>> * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
>>>>> * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
>>>>> * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
>>>>> * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
>>>>> * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
>>>>> * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
>>>>> * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
>>>>> * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
>>>>> * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
>>>>> * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
>>>>> * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
>>>>> * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
>>>>> * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
>>>>> * gnu/packages/gl.scm (glew)[arguments]: Likewise.
>>>>> * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
>>>>> libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
>>>>> * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
>>>>> * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
>>>>> * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
>>>>> * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present,
>>>>> python2-pycairo)
>>>>> [arguments]: Likewise.
>>>>> * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
>>>>> * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
>>>>> * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
>>>>> * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
>>>>> [arguments]: Likewise.
>>>>> * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
>>>>> * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
>>>>> * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
>>>>> * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
>>>>> unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
>>>>> module-init-tools)[arguments]: Likewise.
>>>>> * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
>>>>> * gnu/packages/lout.scm (lout)[arguments]: Likewise.
>>>>> * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
>>>>> * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
>>>>> * gnu/packages/mail.scm (exim)[arguments]: Likewise.
>>>>> * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
>>>>> * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
>>>>> suitesparse)[arguments]: Likewise.
>>>>> * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
>>>>> * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
>>>>> * gnu/packages/music.scm (solfege)[arguments]: Likewise.
>>>>> * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
>>>>> * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
>>>>> Likewise.
>>>>> * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
>>>>> zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
>>>>> * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
>>>>> Likewise.
>>>>> * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
>>>>> * gnu/packages/popt.scm (popt)[arguments]: Likewise.
>>>>> * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
>>>>> Likewise.
>>>>> * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
>>>>> * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
>>>>> python-sqlalchemy, python-docopt)[arguments]: Likewise.
>>>>> * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
>>>>> * gnu/packages/regex.scm (tre)[arguments]: Likewise.
>>>>> * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
>>>>> * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
>>>>> * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
>>>>> * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
>>>>> * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
>>>>> * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
>>>>> * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
>>>>> * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
>>>>> * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
>>>>> * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
>>>>> * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
>>>>> * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
>>>>> Likewise.
>>>>> * gnu/packages/time.scm (time)[arguments]: Likewise.
>>>>> * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
>>>>> * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
>>>>> * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
>>>>> * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
>>>>> * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
>>>>> * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
>>>>> * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
>>>>> * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
>>>>> * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
>>>>> * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
>>>>> * gnu/packages/xorg.scm (imake)[arguments]: Likewise.
>>>> 
>>>> Hello Kei!
>>>> 
>>>> 'core-updates' is now merged.  Let's try to get this patch in.
>>>> 
>>>> I've read through the changed variables and think we can handle it on
>>>> 'master', except 'bdb-5.3' which will have to wait until the next
>>>> 'core-updates' cycle.  Can you double check that this won't cause more
>>>> than a few hundred rebuilds?
>>>> 
>>>> Thanks!
>>>
>>> How does 1301 rebuilds sound?
>>
>> I think that will take several days (~week?) to complete, so it should
>> be done on 'staging' so that users are not left without binary
>> substitutes for very long.
>>
>> But then, we are probably facing a weeks worth of merge conflicts.
>>
>>> P.S. It seems that I have to type the patch a second time, so it may be
>>> a while until I am able to push to master.
>>
>> I would assume `git cherry-pick` could resolve most hunks, no?  Files
>> with many conflicts may be easier to reset to their original state and
>> redo.
>>
>
> Maybe if my commits were split up? I have to read about
> `git cherry-pick`.
>
>> If you do have to redo large parts of it, maybe we could do it in 3-4
>> batches and keep an eye on Hydra in between?  It would cause some extra
>> rebuilds, but I suspect it's the least painful option.
>
> That could work. I'll see if I can have things sorted by tomorrow and
> we'll go from there.

The patches are in working order. The first patch would cause 1200
rebuilds, but the second would only cause 128 rebuilds. Should I work on
splitting up the first patch into pieces that Hydra can handle under its
current load?
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Thu, 31 Aug 2017 17:00:02 GMT) Full text and rfc822 format available.

Message #65 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Kei Kebreau <kkebreau <at> posteo.net>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Thu, 31 Aug 2017 18:59:44 +0200
[Message part 1 (text/plain, inline)]
Kei Kebreau <kkebreau <at> posteo.net> writes:

> Kei Kebreau <kkebreau <at> posteo.net> writes:
>
>> Marius Bakke <mbakke <at> fastmail.com> writes:
>>
>>> Kei Kebreau <kkebreau <at> posteo.net> writes:
>>>
>>>>> Kei Kebreau <kei <at> openmailbox.org> writes:
>>>>> 
>>>>>> * gnu/packages/admin.scm (mingetty, clusterssh, sudo,
>>>>>> wpa-supplicant-minimal,
>>>>>> wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
>>>>>> 'modify-phases' syntax.
>>>>>> * gnu/packages/algebra.scm (arb)[arguments]: Likewise.
>>>>>> * gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
>>>>>> * gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
>>>>>> lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
>>>>>> zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
>>>>>> * gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
>>>>>> * gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
>>>>>> flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
>>>>>> * gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
>>>>>> * gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
>>>>>> * gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
>>>>>> * gnu/packages/conky.scm (conky)[arguments]: Likewise.
>>>>>> * gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
>>>>>> * gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
>>>>>> * gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
>>>>>> * gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
>>>>>> * gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
>>>>>> * gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
>>>>>> * gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
>>>>>> * gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
>>>>>> * gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
>>>>>> * gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
>>>>>> * gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
>>>>>> * gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
>>>>>> * gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
>>>>>> * gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
>>>>>> * gnu/packages/gl.scm (glew)[arguments]: Likewise.
>>>>>> * gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
>>>>>> libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
>>>>>> * gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
>>>>>> * gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
>>>>>> * gnu/packages/graphics.scm (agg)[arguments]: Likewise.
>>>>>> * gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present,
>>>>>> python2-pycairo)
>>>>>> [arguments]: Likewise.
>>>>>> * gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
>>>>>> * gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
>>>>>> * gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
>>>>>> * gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
>>>>>> [arguments]: Likewise.
>>>>>> * gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
>>>>>> * gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
>>>>>> * gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
>>>>>> * gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
>>>>>> unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
>>>>>> module-init-tools)[arguments]: Likewise.
>>>>>> * gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
>>>>>> * gnu/packages/lout.scm (lout)[arguments]: Likewise.
>>>>>> * gnu/packages/lua.scm (luajit)[arguments]: Likewise.
>>>>>> * gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
>>>>>> * gnu/packages/mail.scm (exim)[arguments]: Likewise.
>>>>>> * gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
>>>>>> * gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
>>>>>> suitesparse)[arguments]: Likewise.
>>>>>> * gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
>>>>>> * gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
>>>>>> * gnu/packages/music.scm (solfege)[arguments]: Likewise.
>>>>>> * gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
>>>>>> * gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
>>>>>> Likewise.
>>>>>> * gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
>>>>>> zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
>>>>>> * gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
>>>>>> Likewise.
>>>>>> * gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
>>>>>> * gnu/packages/popt.scm (popt)[arguments]: Likewise.
>>>>>> * gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
>>>>>> Likewise.
>>>>>> * gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
>>>>>> * gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
>>>>>> python-sqlalchemy, python-docopt)[arguments]: Likewise.
>>>>>> * gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
>>>>>> * gnu/packages/regex.scm (tre)[arguments]: Likewise.
>>>>>> * gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
>>>>>> * gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
>>>>>> * gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
>>>>>> * gnu/packages/scheme.scm (racket)[arguments]: Likewise.
>>>>>> * gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
>>>>>> * gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
>>>>>> * gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
>>>>>> * gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
>>>>>> * gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
>>>>>> * gnu/packages/tcl.scm (expect)[arguments]: Likewise.
>>>>>> * gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
>>>>>> * gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
>>>>>> Likewise.
>>>>>> * gnu/packages/time.scm (time)[arguments]: Likewise.
>>>>>> * gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
>>>>>> * gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
>>>>>> * gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
>>>>>> * gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
>>>>>> * gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
>>>>>> * gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
>>>>>> * gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
>>>>>> * gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
>>>>>> * gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
>>>>>> * gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
>>>>>> * gnu/packages/xorg.scm (imake)[arguments]: Likewise.
>>>>> 
>>>>> Hello Kei!
>>>>> 
>>>>> 'core-updates' is now merged.  Let's try to get this patch in.
>>>>> 
>>>>> I've read through the changed variables and think we can handle it on
>>>>> 'master', except 'bdb-5.3' which will have to wait until the next
>>>>> 'core-updates' cycle.  Can you double check that this won't cause more
>>>>> than a few hundred rebuilds?
>>>>> 
>>>>> Thanks!
>>>>
>>>> How does 1301 rebuilds sound?
>>>
>>> I think that will take several days (~week?) to complete, so it should
>>> be done on 'staging' so that users are not left without binary
>>> substitutes for very long.
>>>
>>> But then, we are probably facing a weeks worth of merge conflicts.
>>>
>>>> P.S. It seems that I have to type the patch a second time, so it may be
>>>> a while until I am able to push to master.
>>>
>>> I would assume `git cherry-pick` could resolve most hunks, no?  Files
>>> with many conflicts may be easier to reset to their original state and
>>> redo.
>>>
>>
>> Maybe if my commits were split up? I have to read about
>> `git cherry-pick`.
>>
>>> If you do have to redo large parts of it, maybe we could do it in 3-4
>>> batches and keep an eye on Hydra in between?  It would cause some extra
>>> rebuilds, but I suspect it's the least painful option.
>>
>> That could work. I'll see if I can have things sorted by tomorrow and
>> we'll go from there.
>
> The patches are in working order. The first patch would cause 1200
> rebuilds, but the second would only cause 128 rebuilds. Should I work on
> splitting up the first patch into pieces that Hydra can handle under its
> current load?

I'm not actually sure what's best here.  It may be easiest to just throw
them both at 'staging' and accept the (hopefully few) merge conflicts.

Ludo, any preference?

If we're going staging, let's try to coordinate it so that we can start
it shortly after adding them.  Maybe midnight tomorrow or Saturday UTC?
I have a few other updates in my queue that haven't been pushed yet.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Fri, 01 Sep 2017 08:19:02 GMT) Full text and rfc822 format available.

Message #68 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: Kei Kebreau <kkebreau <at> posteo.net>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Fri, 01 Sep 2017 10:17:54 +0200
Hello,

Marius Bakke <mbakke <at> fastmail.com> skribis:

> Kei Kebreau <kkebreau <at> posteo.net> writes:

[...]

>> The patches are in working order. The first patch would cause 1200
>> rebuilds, but the second would only cause 128 rebuilds. Should I work on
>> splitting up the first patch into pieces that Hydra can handle under its
>> current load?
>
> I'm not actually sure what's best here.  It may be easiest to just throw
> them both at 'staging' and accept the (hopefully few) merge conflicts.
>
> Ludo, any preference?

The one that causes 128 rebuilds could go to ‘master’ (which is a good
thing: we won’t have conflicts with this part of the changes.)

The rest could go to ‘staging’ I suppose.

> If we're going staging, let's try to coordinate it so that we can start
> it shortly after adding them.  Maybe midnight tomorrow or Saturday UTC?
> I have a few other updates in my queue that haven't been pushed yet.

Sounds reasonable to me.  I’ll let you coordinate.  :-)

Thanks for taking care of this!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Mon, 04 Sep 2017 04:14:02 GMT) Full text and rfc822 format available.

Message #71 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Kei Kebreau <kkebreau <at> posteo.net>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: Marius Bakke <mbakke <at> fastmail.com>, 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Mon, 04 Sep 2017 00:13:32 -0400
[Message part 1 (text/plain, inline)]
ludo <at> gnu.org (Ludovic Courtès) writes:

> Hello,
>
> Marius Bakke <mbakke <at> fastmail.com> skribis:
>
>> Kei Kebreau <kkebreau <at> posteo.net> writes:
>
> [...]
>
>>> The patches are in working order. The first patch would cause 1200
>>> rebuilds, but the second would only cause 128 rebuilds. Should I work on
>>> splitting up the first patch into pieces that Hydra can handle under its
>>> current load?
>>
>> I'm not actually sure what's best here.  It may be easiest to just throw
>> them both at 'staging' and accept the (hopefully few) merge conflicts.
>>
>> Ludo, any preference?
>
> The one that causes 128 rebuilds could go to ‘master’ (which is a good
> thing: we won’t have conflicts with this part of the changes.)

I've committed the 128-rebuild patch to the master branch.

>
> The rest could go to ‘staging’ I suppose.
>
>> If we're going staging, let's try to coordinate it so that we can start
>> it shortly after adding them.  Maybe midnight tomorrow or Saturday UTC?
>> I have a few other updates in my queue that haven't been pushed yet.
>
> Sounds reasonable to me.  I’ll let you coordinate.  :-)
>

Marius, send me an email when you're ready!

> Thanks for taking care of this!
>

:-)

> Ludo’.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#27898; Package guix-patches. (Mon, 04 Sep 2017 20:38:01 GMT) Full text and rfc822 format available.

Message #74 received at 27898 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Kei Kebreau <kkebreau <at> posteo.net>, Ludovic Courtès
 <ludo <at> gnu.org>
Cc: 27898 <at> debbugs.gnu.org
Subject: Re: [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
Date: Mon, 04 Sep 2017 22:37:46 +0200
[Message part 1 (text/plain, inline)]
Kei Kebreau <kkebreau <at> posteo.net> writes:

>> The rest could go to ‘staging’ I suppose.
>>
>>> If we're going staging, let's try to coordinate it so that we can start
>>> it shortly after adding them.  Maybe midnight tomorrow or Saturday UTC?
>>> I have a few other updates in my queue that haven't been pushed yet.
>>
>> Sounds reasonable to me.  I’ll let you coordinate.  :-)
>>
>
> Marius, send me an email when you're ready!

Ready when you are!  I just merged in 'master' so it should be good to
go.  I'll have a look at the rebuild count of the patch and see if
there's a lot of overlap with dbus and/or util-linux and possibly revert
those before starting Hydra.
[signature.asc (application/pgp-signature, inline)]

Reply sent to Ricardo Wurmus <rekado <at> elephly.net>:
You have taken responsibility. (Thu, 19 Oct 2017 03:18:02 GMT) Full text and rfc822 format available.

Notification sent to Kei Kebreau <kei <at> openmailbox.org>:
bug acknowledged by developer. (Thu, 19 Oct 2017 03:18:03 GMT) Full text and rfc822 format available.

Message #79 received at 27898-done <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: Kei Kebreau <kei <at> openmailbox.org>
Cc: 27898-done <at> debbugs.gnu.org
Subject: Re: [bug#27898] Clean-up of package phases
Date: Thu, 19 Oct 2017 01:29:15 +0200
Kei Kebreau <kei <at> openmailbox.org> writes:

> These patches address some issues with our package definitions, as
> partially discussed with Mark on guix-devel. I believe I've corrected
> all the cases that are fit for Guix's master branch.

Looks like this has already been pushed to the repository, so I’m
closing this now.

Thanks!

-- 
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net






bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 16 Nov 2017 12:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 160 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.