GNU bug report logs -
#79044
Autoconf-bundled macro uses /bin/sh, breaking builds that do autoreconf
Previous Next
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.
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):
[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):
[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.