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 bug report
#79044: Autoconf-bundled macro uses /bin/sh, breaking builds that do autoreconf
which was filed against the guix package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 79044 <at> debbugs.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)]
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 4 (application/pgp-signature, inline)]
[Message part 5 (message/rfc822, inline)]
[Message part 6 (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 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.