diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 52feea3701708dc1eec38bff1672ee1d44b8a38d..bc21c9f1f965888a1074ad57fe9c2a08f4e938c0 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -804,13 +804,10 @@ (define-public soundtouch
        ("file" ,file)))
     (arguments
      '(#:phases
-       (alist-cons-before
-        'configure 'bootstrap
+       (alist-cons-after
+        'unpack 'bootstrap
         (lambda _
-          (unless (zero? (system* "sh" "bootstrap"))
-            (error "bootstrap failed"))
-          (substitute* '("configure")
-            (("/usr/bin/file") "file")))
+          (zero? (system* "sh" "bootstrap")))
         %standard-phases)))
     (home-page "http://www.surina.net/soundtouch/")
     (synopsis
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index f4d7ac974824fc0f51f5b963b9a8b171a78d350f..b2a151a68e9c71391a84fc9e341a5805d23f5b77 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -309,8 +309,8 @@ (define-public emacs-w3m
                               out "/share/images/emacs-w3m")))
        #:tests? #f  ; no check target
        #:phases
-       (alist-cons-before
-        'configure 'pre-configure
+       (alist-cons-after
+        'unpack 'autoconf
         (lambda _
           (zero? (system* "autoconf")))
         (alist-cons-before
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 14f42a9236ac4fcb658d43ac35933cbb02ab2acc..52e34e516f1502af01c4247c53365e68b41cab09 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -278,8 +278,8 @@ (define-public libuninameslist
                      ("automake" ,automake)
                      ("libtool" ,libtool)))
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'bootstrap
+     `(#:phases (alist-cons-after
+                 'unpack 'bootstrap
                  (lambda _
                    (zero? (system* "autoreconf" "-vi")))
                  %standard-phases)))
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index 64892bf87859294a3766af281931c98e8f5a8202..2afae3f302895801abb90435de088b19cd8cbe82 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -73,12 +73,12 @@ (define-public libuv
                 "1ys2wlypdbv59yywn91d5vl329z50mi7ivi3fj5rjm4mr9g3wnmr"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'autogen
+     '(#:phases (alist-cons-after
+                 'unpack 'autogen
                  (lambda _
                    ;; Fashionable people don't run 'make dist' these days, so
                    ;; we need to do that ourselves.
-                   (zero? (system* "./autogen.sh")))
+                   (zero? (system* "sh" "autogen.sh")))
                  %standard-phases)
 
        ;; XXX: Some tests want /dev/tty, attempt to make connections, etc.
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 4fe6f887cf9be03fa1cd5bf162292b2b4aa973b5..b7eedc6be2766e185582e725ffedfa74fc531887 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1005,8 +1005,8 @@ (define-public bridge-utils
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)))
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'bootstrap
+     '(#:phases (alist-cons-after
+                 'unpack 'bootstrap
                  (lambda _
                    (zero? (system* "autoreconf" "-vf")))
                  %standard-phases)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index dc33c8cbd38f41506d50d8203fd524e9c9e42956..17988cc4f903f862247394af1c2a20edb357b3cc 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
@@ -432,14 +432,11 @@ (define-public libetpan
      `(("curl" ,curl)
        ("expat" ,expat)))
     (arguments
-      '(#:phases (alist-cons-before
-                  'configure 'autogen
+      '(#:phases (alist-cons-after
+                  'unpack 'autogen
                   (lambda _
-                    (system* "./autogen.sh")) ;; Note: this fails because the
-                         ;; generated configure script uses /bin/sh. It is
-                         ;; replaced in the configure phase by the correct
-                         ;; value. TODO: replace the configure phase by the
-                         ;; autogen phase and have the SHELL variable be replaced
+                    (setenv "NOCONFIGURE" "true")
+                    (zero? (system* "sh" "autogen.sh")))
                   %standard-phases)
         #:configure-flags
         '("--disable-static" "--disable-db")))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 97e96c712f0a09fb0f02b5937abb80be65d246ae..65b4e9b55bc956a9fc8961cbcceee033130a639d 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -156,15 +156,15 @@ (define guix-devel
       (arguments
        (substitute-keyword-arguments (package-arguments guix-0.8.1)
          ((#:phases phases)
-          `(alist-cons-before
-            'configure 'bootstrap
+          `(alist-cons-after
+            'unpack 'bootstrap
             (lambda _
               ;; Make sure 'msgmerge' can modify the PO files.
               (for-each (lambda (po)
                           (chmod po #o666))
                         (find-files "." "\\.po$"))
 
-              (zero? (system* "./bootstrap")))
+              (zero? (system* "sh" "bootstrap")))
             ,phases))))
       (native-inputs
        `(("autoconf" ,(autoconf-wrapper))
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 5102ebe921625509c70c227847986671355e74e5..8edc2f46fc7319d9e028af30e43ed7c96a57788c 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -140,9 +140,9 @@ (define-public lrdf
                    (substitute* "examples/Makefile.am"
                      (("instances_test remove_test") "instances_test")
                      (("\\$\\(TESTS\\) remove_test") "$(TESTS)")))
-                 (alist-cons-before
-                  'configure 'autoreconf
-                  (lambda* (#:key inputs #:allow-other-keys)
+                 (alist-cons-after
+                  'remove-out-of-tree-references 'autoreconf
+                  (lambda _
                     (zero? (system* "autoreconf" "-vfi")))
                   %standard-phases))))
     (inputs
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index db0415adbf4b17b0fdb0804d6ae15e7533279dc6..73becbba92862099f400f99508c161724336a64e 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -99,8 +99,8 @@ (define-public privoxy
        #:configure-flags (list (string-append "--sysconfdir="
                                               (assoc-ref %outputs "out")
                                               "/etc/privoxy"))
-       #:phases (alist-cons-before
-                 'configure 'autoconf
+       #:phases (alist-cons-after
+                 'unpack 'autoconf
                  (lambda _
                    ;; Unfortunately, this is not a tarball produced by
                    ;; "make dist".
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 5296c43c53d54a853c6b5a5ee57e5d5a982603c7..f0f974661b2678bc1122e9f611c1e580d7f1bdee 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
@@ -258,18 +258,11 @@ (define-public libpsl
                      ("which"    ,which)
                      ("libtool"  ,libtool)))
     (arguments
-     `(#:phases (alist-cons-before
-                 'bootstrap 'fix-autogen-shebang
+     `(#:phases (alist-cons-after
+                 'unpack 'bootstrap
                  (lambda _
-                   (substitute* "autogen.sh"
-                     ;; Removing -e as it causes the whole script to fail when
-                     ;; `which gtkdocize` fails.
-                     (("# !/bin/sh -e") (string-append "#!" (which "sh")))))
-                 (alist-cons-before
-                  'patch-usr-bin-file 'bootstrap
-                  (lambda _
-                    (zero? (system* "./autogen.sh")))
-                  %standard-phases))))
+                   (zero? (system* "sh" "autogen.sh")))
+                 %standard-phases)))
     (home-page "https://github.com/rockdaboot/libpsl")
     (synopsis "C library for the Publix Suffix List")
     (description