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>

To reply to this bug, email your comments to 79044 AT debbugs.gnu.org.
There is no need to reopen the bug first.

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

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


Report forwarded to bug-guix <at> gnu.org:
bug#79044; Package guix. (Fri, 18 Jul 2025 11:44:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to "W. Kosior" <koszko <at> koszko.org>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Fri, 18 Jul 2025 11:44:03 GMT) Full text and rfc822 format available.

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

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 1 (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 2 (application/pgp-signature, inline)]

Reply sent to "W. Kosior" <koszko <at> koszko.org>:
You have taken responsibility. (Fri, 18 Jul 2025 14:22:02 GMT) Full text and rfc822 format available.

Notification sent to "W. Kosior" <koszko <at> koszko.org>:
bug acknowledged by developer. (Fri, 18 Jul 2025 14:22:02 GMT) Full text and rfc822 format available.

Message #10 received at 79044-close <at> debbugs.gnu.org (full text, mbox):

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 1 (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 2 (application/pgp-signature, inline)]

This bug report was last modified today.

Previous Next


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