GNU bug report logs -
#79044
Autoconf-bundled macro uses /bin/sh, breaking builds that do autoreconf
Previous Next
Full log
View this message in rfc822 format
[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)]
[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)]
[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.