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 ;; 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