GNU bug report logs - #79044
Autoconf-bundled macro uses /bin/sh, breaking builds that do autoreconf

Previous Next

Package: guix;

Reported by: "W. Kosior" <koszko <at> koszko.org>

Date: Fri, 18 Jul 2025 11:44:02 UTC

Severity: normal

Done: "W. Kosior" <koszko <at> koszko.org>

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: "W. Kosior" <koszko <at> koszko.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#79044: closed (Autoconf-bundled macro uses /bin/sh, breaking
 builds that do autoreconf)
Date: Fri, 18 Jul 2025 14:22:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Fri, 18 Jul 2025 16:21:29 +0200
with message-id <20250718162129.3830de31.koszko <at> koszko.org>
and subject line Re: Autoconf-bundled macro uses /bin/sh, breaking builds that do autoreconf
has caused the debbugs.gnu.org bug report #79044,
regarding Autoconf-bundled macro uses /bin/sh, breaking builds that do autoreconf
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
79044: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=79044
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: "W. Kosior" <koszko <at> koszko.org>
To: bug-guix <at> gnu.org
Subject: Autoconf-bundled macro uses /bin/sh, breaking builds that do
 autoreconf
Date: Fri, 18 Jul 2025 13:43:10 +0200
[Message part 3 (text/plain, inline)]
Hi Guix,

file `share/autoconf/autoconf/erlang.m4' in Autoconf package contains
definitions allowing configure-time tests using Erlang.  The piece of
code responsible for generating a `conftest' script adds a shebang with
`#!/bin/sh':

--8<---------------cut here---------------start------------->8---
# AC_LANG(Erlang)
# ---------------
AC_LANG_DEFINE([Erlang], [erl], [ERL], [ERLC], [],
[ac_ext=erl
: ${ac_objext=o}
ac_compile='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&AS_MESSAGE_LOG_FD && ln -sf conftest.beam conftest.$ac_objext'
ac_link='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&AS_MESSAGE_LOG_FD && echo "[#]!/bin/sh" > conftest$ac_exeext && AS_ECHO(["\"$ERL\" -run conftest start -run init stop -noshell"]) >> conftest$ac_exeext && chmod +x conftest$ac_exeext'
])
--8<---------------cut here---------------end--------------->8---

This could make sense if the Autoconf from Guix were to be used for
generating a `configure' script to be run on other system.  But if
a script with `#!/bin/sh' is created during a Guix package build, this
is wrong.

Here's an error I got due to this when working on a recipe for Erlang
HTTP server, Yaws:

--8<---------------cut here---------------start------------->8---
[...]
checking for ct_run... /gnu/store/briw8s44c7w2lj3qwz3w2x4c0gpgpkn8-erlang-27.3.4/bin/ct_run
checking for erlc... /gnu/store/briw8s44c7w2lj3qwz3w2x4c0gpgpkn8-erlang-27.3.4/bin/erlc
checking for erl... /gnu/store/briw8s44c7w2lj3qwz3w2x4c0gpgpkn8-erlang-27.3.4/bin/erl
checking for Erlang/OTP root directory... configure: error: in `/tmp/guix-build-erlang-yaws-2.2.0.drv-0/source':                                   
configure: error: test Erlang program execution failed
See `config.log' for more details
error: in phase 'configure': uncaught exception:
%exception #<&invoke-error program: "/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash" arguments: ("./configure" "CONFIG_SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash" "SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash" "--prefix=/gnu/store/12731cvmcwr0f2cgjy87bx6k1cg5nlqb-erlang-yaws-2.2.0" "--enable-fast-install" "--build=x86_64-unknown-linux-gnu" "--enable-deterministic-build") exit-status: 1 term-signal: #f stop-signal: #f> 
phase `configure' failed after 4.1 seconds
command "/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash" "./configure" "CONFIG_SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash" "SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash" "--prefix=/gnu/store/12731cvmcwr0f2cgjy87bx6k1cg5nlqb-erlang-yaws-2.2.0" "--enable-fast-install" "--build=x86_64-unknown-linux-gnu" "--enable-deterministic-build" failed with status 1
build process 4 exited with status 256
--8<---------------cut here---------------end--------------->8---

Btw, until someone fixes it, here's a hackish workaround for any1 who
hits this issue while working on some Erlang software recipe:

--8<---------------cut here---------------start------------->8---
;; Copyright 2025 W. Kosior <koszko <at> koszko.org>
;; SPDX-License-Identifier: CC0-1.0
(add-before 'configure 'hack-to-avoid-/bin/sh
  (lambda _
    (mkdir-p "/tmp/hack-to-avoid-bin-sh")
    (with-output-to-file "/tmp/hack-to-avoid-bin-sh/chmod"
      (lambda _
        (display "
if [ \"$1\" = +x ] &&
   [ -f \"$2\" ] &&
   [ \"$(head -1 \"$2\")\" = '#!/bin/sh' ]; then
    sed -i 's,^#!/bin/sh,,' \"$2\"
fi
exec $(command -v chown | sed 's,chown$,chmod,') \"$@\"
")
        (chmod (current-output-port) #o777)))
    (setenv "PATH" (format #f "/tmp/hack-to-avoid-bin-sh:~a"
                           (getenv "PATH")))))
--8<---------------cut here---------------end--------------->8---

Best!
Wojtek

--
W. Kosior

website: https://koszko.org/koszko.html
fediverse: https://friendica.me/profile/koszko/profile
PGP fingerprint: E972 7060 E3C5 637C 8A4F  4B42 4BC5 221C 5A79 FD1A
[Message part 4 (application/pgp-signature, inline)]
[Message part 5 (message/rfc822, inline)]
From: "W. Kosior" <koszko <at> koszko.org>
To: 79044-close <at> debbugs.gnu.org
Subject: Re: Autoconf-bundled macro uses /bin/sh, breaking builds that do
 autoreconf
Date: Fri, 18 Jul 2025 16:21:29 +0200
[Message part 6 (text/plain, inline)]
Oops, I was pretty lame today.  In a recipe, this is actually more
simply fixable with

--8<---------------cut here---------------start------------->8---
(add-before 'configure 'avoid-/bin/sh
  (lambda _
    (substitute* "configure" (("#!/bin/sh") ""))))
--8<---------------cut here---------------end--------------->8---

and one package seems to already be doing sth similar.  I am not sure
this warrants a bug report, then.  Sorry for the nuisance :)

Best,
Wojtek
[Message part 7 (application/pgp-signature, inline)]

This bug report was last modified 22 days ago.

Previous Next


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