Subject: [bug#46564] [PATCH core-updates]: Use autoconf-wrapper instead of autoconf

From: Maxime Devos <[email-masked]>
Date: Mon, 22 Feb 2021 18:23:32 +0100

Hi,

On Sun, 2021-02-21 at 23:05 +0100, Ludovic Courtès wrote:
> [...]
> 
> Maxime Devos <[email-masked]> skribis:
> 
> > This patch replaces autoconf with autoconf-wrapped in the native-inputs
> > almost everywhere (except for some packages in
> > gnu/packages/autotools.scm).  As this would cause many rebuilds, this
> > patch targets the "core-updates" branch and not "master".
> 
> OK.

The revised patch targets master, as less packages were changed
(changing the definition of libuv should be done on core-updates).

> > A wine package has autoconf in the inputs instead of native-inputs,
> > I wonder if that's intentional or a bug?  I left that package untouched
> > for now.
> 
> I think that’s a bug.
> 
> > Why this change? [...]
> Yeah, I’m not sure this is a worthy goal.
> 
> > Why not?
> [...]
> Yeah.  I would be in favor of unifying things the other way around:
> using ‘autoconf’ instead of ‘autoconf-wrapper’ everywhere.  Since
> there’s the ‘patch-shebangs’ phase, we don’t need ‘autoconf-wrapper’.

I've attached a patch that unifies things the other way around.

> There’s one exception I think: Automake.  This one needs
> ‘autoconf-wrapper’ so it can actually run its test suite.  Perhaps
> Libtool too.

Some other packages fail to build without autoconf-wrapper as well.
Some packages run './configure' from 'autogen.sh' or from the Makefile.
I added a little explanation to each package that actually needs
autoconf-wrapper, and discouraged new uses of autoconf-wrapper with
a comment next to the definition of autoconf-wrapper.

WDYT?

Maxime.
From d42be9473bac6b8bcfe17a37c92f2481cb2198fb Mon Sep 17 00:00:00 2001
From: Maxime Devos <[email-masked]>
Date: Mon, 22 Feb 2021 16:43:10 +0100
Subject: [PATCH] gnu: Use autoconf instead of autoconf-wrapper when possible.

This should reduce confusion on when to use the "autoconf"
package and when to use "autoconf-wrapper" instead in
package definitions.

Fixes: <https://issues.guix.gnu.org/46564>

* gnu/packages/autotools.scm (autoconf-wrapper):
  advise to use the "autoconf" package instead where
  possible.
* gnu/packages/game-development.scm (tsukundere)[native-inputs]:
  use "autoconf" instead of "autoconf-wrapper".
* gnu/packages/gimp.scm
  (glimpse)[native-inputs]: likewise.
  (gimp-resynthesizer)[native-inputs]: add comment on why
  "autoconf-wrapper" is used.
* gnu/packages/gnunet.scm (gnunet)[native-inputs]:
  use "autoconf" instead of "autoconf-wrapper".
* gnu/packages/gnupg.scm (signing-party)[native-inputs]:
  add comment on why "autoconf-wrapper" is used.
* gnu/packages/guile-xyz.scm
  (guile-bash,guile-filesystem,guile-ics,guile-udev)[native-inputs]:
  use "autoconf" instead of "autoconf-wrapper".
* gnu/packages/libevent.scm (libuv)[native-inputs]: indicates
  "autoconf-wrapper" needs to be replaced with "autoconf"
  on core-updates.
* gnu/packages/logging.scm (glog)[native-inputs]: use "autoconf"
  instead of "autoconf-wrapper".
* gnu/packages/mail.scm (libetpan)[native-inputs]: likewise.
* gnu/packages/mate.scm
  (mate-icon-theme-faenza)[native-inputs]: add comment on why
  "autoconf-wrapper" is used.
  (mate-screensaver)[native-inputs]: use "autoconf" instead of
  "autoconf-wrapper".
* gnu/packages/package-management.scm (guix)[native-inputs]: likewise.
* gnu/packages/sawfish.scm (librep)[native-inputs]: likewise.
* gnu/packages/video.scm (motion)[native-inputs]: likewise.
* gnu/packages/zile.scm (zile)[native-inputs]: likewise.
---
 gnu/packages/autotools.scm          | 2 ++
 gnu/packages/game-development.scm   | 2 +-
 gnu/packages/gimp.scm               | 4 +++-
 gnu/packages/gnunet.scm             | 2 +-
 gnu/packages/gnupg.scm              | 2 ++
 gnu/packages/guile-xyz.scm          | 8 ++++----
 gnu/packages/libevent.scm           | 1 +
 gnu/packages/logging.scm            | 2 +-
 gnu/packages/mail.scm               | 2 +-
 gnu/packages/mate.scm               | 4 +++-
 gnu/packages/package-management.scm | 2 +-
 gnu/packages/sawfish.scm            | 2 +-
 gnu/packages/video.scm              | 2 +-
 gnu/packages/zile.scm               | 2 +-
 14 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index 09f4bf4122..452749828a 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -267,6 +267,8 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
     ;; Do not show it in the UI since it's meant for internal use.
     (properties '((hidden? . #t)))))
 
+;; Only use this package when autoconf is not usable,
+;; see <https://issues.guix.gnu.org/46564#1>.
 (define-public autoconf-wrapper
   (make-autoconf-wrapper autoconf))
 
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 92c3da92ab..18b4358887 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -529,7 +529,7 @@ clone.")
                    all)))
                #t))))))
     (native-inputs
-     `(("autoconf" ,autoconf-wrapper)
+     `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("guile" ,guile-3.0)
        ("pkg-config" ,pkg-config)
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 4d229a1fd9..5e61091f22 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -518,6 +518,8 @@ MyPaint.")
                (mkdir-p target)
                #t))))))
     (native-inputs
+     ;; avoid ./autogen.sh: ./configure: /bin/sh: bad interpreter:
+     ;; No such file or directory
      `(("autoconf" ,autoconf-wrapper)
        ("automake" ,automake)
        ("glib" ,glib "bin")                       ; glib-gettextize
@@ -590,7 +592,7 @@ transferring the style of an image.")
                    (format port "for dir in '~a'.split(':'):~%" pythonpath)
                    (format port "    site.addsitedir(dir)~%")))))))))
     (native-inputs
-     `(("autoconf" ,autoconf-wrapper)
+     `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("gtk-doc" ,gtk-doc)
        ("intltool" ,intltool)
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 80e4aba29b..d261f42dcc 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -368,7 +368,7 @@ kinds of basic applications for the foundation of a GNU internet.")
                   "0nqc18jh9j30y4l6yh6j35byfg6qalq7yr3frv9rk10qa041c2sv"))))
       (build-system gnu-build-system)
       (native-inputs `(("pkg-config" ,pkg-config)
-                       ("autoconf" ,autoconf-wrapper)
+                       ("autoconf" ,autoconf)
                        ("automake" ,automake)))
       (inputs `(("guile" ,guile-2.0)
                 ("gnunet" ,gnunet)))
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 18fc76ef35..20fc264659 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -695,6 +695,8 @@ PGP keysigning parties.")
                 "1aig5ssabzbk4mih7xd04vgr931bw0flbi8dz902wlr610gyv5s5"))))
     (build-system gnu-build-system)
     (native-inputs
+     ;; autoconf-wrapper is required due to the non-standard
+     ;; 'configure phase.
      `(("autoconf" ,autoconf-wrapper)
        ("automake" ,automake)))
     (inputs `(("perl" ,perl)
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 8d9126df44..c4c8a04b5c 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -367,7 +367,7 @@ dictionary and suggesting spelling corrections.")
                (string-append "--libdir=" (assoc-ref %outputs "out")
                               "/lib/bash"))))
       (native-inputs `(("pkg-config" ,pkg-config)
-                       ("autoconf" ,autoconf-wrapper)
+                       ("autoconf" ,autoconf)
                        ("automake" ,automake)
                        ("libtool" ,libtool)
                        ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
@@ -642,7 +642,7 @@ is not available for Guile 2.0.")
                 "1shmkc0y9r2sj3kw7hrsnamnp7y8xifkhf3m3rnfxczqg63k67vy"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf-wrapper)
+     `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("pkg-config" ,pkg-config)
        ("texinfo" ,texinfo)))
@@ -1697,7 +1697,7 @@ provides tight coupling to Guix.")
                   #t))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf-wrapper)
+     `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("texinfo" ,texinfo)
        ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
@@ -1830,7 +1830,7 @@ users and in some situations.")
                 "1l6csncjqnx58c6c3wdl7rshnhk4pzhjq2q8lnkg483564s9w5py"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf-wrapper)
+     `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("gettext" ,gettext-minimal)
        ("libtool" ,libtool)
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index dab574a155..7109d9a88d 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -115,6 +115,7 @@ limited support for fork events.")
      '(#:configure-flags '("--disable-static")
        ;; XXX: Some tests want /dev/tty, attempt to make connections, etc.
        #:tests? #f))
+    ;; TODO replace with autoconf on core-updates
     (native-inputs `(("autoconf" ,autoconf-wrapper)
                      ("automake" ,automake)
                      ("libtool" ,libtool)
diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm
index 87283f3752..eafc23b2e6 100644
--- a/gnu/packages/logging.scm
+++ b/gnu/packages/logging.scm
@@ -99,7 +99,7 @@ staying as close to their API as is reasonable.")
                       #t)))))
     (native-inputs
      `(("perl" ,perl)                             ;for tests
-       ("autoconf" ,autoconf-wrapper)
+       ("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool" ,libtool)))
     (synopsis "C++ logging library")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 2bd376a1a1..bb021fad0d 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1474,7 +1474,7 @@ useful features.")
              (sha256
                (base32 "0g7an003simfdn7ihg9yjv7hl2czsmjsndjrp39i7cad8icixscn"))))
     (build-system gnu-build-system)
-    (native-inputs `(("autoconf" ,autoconf-wrapper)
+    (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)
                      ("libtool" ,libtool)
                      ("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index a9635d90fe..fbb1a74d09 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -176,6 +176,8 @@ actions.")
              (setenv "CONFIG_SHELL" (which "sh"))
              (invoke "sh" "autogen.sh"))))))
     (native-inputs
+     ;; autoconf-wrapper is required due to the non-standard
+     ;; 'autoconf phase.
      `(("autoconf" ,autoconf-wrapper)
        ("automake" ,automake)
        ("intltool" ,intltool)
@@ -1201,7 +1203,7 @@ Re-decorates windows on un-maximise.
                (("dbus-1") ""))))))))
     (native-inputs
      `(("automake" ,automake)
-       ("autoconf" ,autoconf-wrapper)
+       ("autoconf" ,autoconf)
        ("gettext" ,gettext-minimal)
        ("intltool" ,intltool)
        ("mate-common" ,mate-common)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 9fb8c40a31..9e498fbe29 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -377,7 +377,7 @@ $(prefix)/etc/init.d\n")))
                        ;; XXX: Keep the development inputs here even though
                        ;; they're unnecessary, just so that 'guix environment
                        ;; guix' always contains them.
-                       ("autoconf" ,autoconf-wrapper)
+                       ("autoconf" ,autoconf)
                        ("automake" ,automake)
                        ("gettext" ,gettext-minimal)
                        ("texinfo" ,texinfo)
diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm
index 26d8eba3b6..4162fe43cd 100644
--- a/gnu/packages/sawfish.scm
+++ b/gnu/packages/sawfish.scm
@@ -53,7 +53,7 @@
      `(("makeinfo"   ,texinfo)
        ("pkg-config" ,pkg-config)
 
-       ("autoconf" ,autoconf-wrapper)
+       ("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool"  ,libtool)))
     (inputs
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 029b5b6ebb..b78874ae18 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -4244,7 +4244,7 @@ It counts more than 100 plugins.")
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf-wrapper)
+     `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("gettext" ,gettext-minimal)
        ("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/zile.scm b/gnu/packages/zile.scm
index 6169815520..c28bc1bdd1 100644
--- a/gnu/packages/zile.scm
+++ b/gnu/packages/zile.scm
@@ -120,7 +120,7 @@ default Emacs configuration, but it carries a much lighter feature set.")
          ,@(package-inputs zile)))
       (native-inputs
        `(("m4" ,m4)                               ;for 'bootstrap'
-         ("autoconf" ,autoconf-wrapper)
+         ("autoconf" ,autoconf)
          ("automake" ,automake)
 
          ;; For some reason, 'bootstrap' insists on having these.
-- 
2.30.0