Error during the build: `Idris2-0.7.0/build/exec/idris2:A:h/idris2_app/idris2-boot.so: no such file or directory` (wrong path?)
This is probably something local, but I don't know what may fail here:
---> Building idris2
Executing: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0" && /usr/bin/make -w bootstrap SCHEME=scheme CC="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14" CXX="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cxx/opt/local/bin/g++-mp-14" OBJC="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/objc/opt/local/bin/gcc-mp-14" OBJCXX="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/objcxx/opt/local/bin/g++-mp-14" FC="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/fc/opt/local/bin/gfortran-mp-14" F77="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/f77/opt/local/bin/gfortran-mp-14" F90="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/f90/opt/local/bin/gfortran-mp-14" INSTALL="/usr/bin/install -c"
make: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0'
make[1]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support'
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/c'
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/c'
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/c'
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o getline.o getline.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o idris_directory.o idris_directory.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o idris_file.o idris_file.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o idris_memory.o idris_memory.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o idris_net.o idris_net.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o idris_signal.o idris_signal.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o idris_support.o idris_support.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o idris_system.o idris_system.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o idris_term.o idris_term.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o idris_util.o idris_util.c
ar rc libidris2_support.a getline.o idris_directory.o idris_file.o idris_memory.o idris_net.o idris_signal.o idris_support.o idris_system.o idris_term.o idris_util.o
ranlib libidris2_support.a
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -shared -o libidris2_support.dylib getline.o idris_directory.o idris_file.o idris_memory.o idris_net.o idris_signal.o idris_support.o idris_system.o idris_term.o idris_util.o -L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/c'
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/refc'
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/refc'
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/refc'
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o buffer.o buffer.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o casts.o casts.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o clock.o clock.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o conCaseHelper.o conCaseHelper.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o mathFunctions.o mathFunctions.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o memoryManagement.o memoryManagement.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o prim.o prim.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o refc_util.o refc_util.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o runtime.o runtime.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o stringOps.o stringOps.c
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14 -Wall -Wall -Wall -Os -arch ppc -fPIC -fPIC -fPIC -O2 -I/opt/local/include -c -o threads.o threads.c
ar rc libidris2_refc.a buffer.o casts.o clock.o conCaseHelper.o mathFunctions.o memoryManagement.o prim.o refc_util.o runtime.o stringOps.o threads.o
ranlib libidris2_refc.a
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/refc'
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/chez'
# start library header
echo "(library (support) (export" > support-sep.ss
# print the list of exports
cat support.ss \
| sed -n 's|(define (\?\([^ )]*\).*|\1|p' \
>> support-sep.ss
echo ") (import (chezscheme))" >> support-sep.ss
# copy the code
cat support.ss >> support-sep.ss
# close the bracket
echo ") ; end of (library)" >> support-sep.ss
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support/chez'
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/support'
mkdir -p bootstrap-build/idris2_app
cp support/c/libidris2_support.dylib bootstrap-build/idris2_app/
sed 's/libidris2_support.so/libidris2_support.dylib/g; s|__PREFIX__|/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/bootstrap-build|g' \
bootstrap/idris2_app/idris2.ss \
> bootstrap-build/idris2_app/idris2-boot.ss
/bin/sh ./bootstrap-stage1-chez.sh
Bootstrapping SCHEME=scheme IDRIS2_VERSION=0.7.0
Building idris2-boot from idris2-boot.ss
compiling idris2_app/idris2-boot.ss with output to idris2_app/idris2-boot.so
IDRIS2_CG="chez" /bin/sh ./bootstrap-stage2.sh
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/bootstrap-build
make[1]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0'
make -C libs/prelude IDRIS2=/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/build/exec/idris2 IDRIS2_INC_CGS=chez IDRIS2_PATH="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/libs/prelude/build/ttc:/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/libs/base/build/ttc:/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/libs/linear/build/ttc:/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/libs/network/build/ttc:/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/libs/contrib/build/ttc:/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/libs/test/build/ttc:"
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/libs/prelude'
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/build/exec/idris2 --build prelude.ipkg
Exception in load: failed for /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/build/exec/idris2:A:h/idris2_app/idris2-boot.so: no such file or directory
make[2]: *** [all] Error 255
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/libs/prelude'
make[1]: *** [prelude] Error 2
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0'
make: *** [bootstrap] Error 2
make: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0'
Command failed: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0" && /usr/bin/make -w bootstrap SCHEME=scheme CC="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cc/opt/local/bin/gcc-mp-14" CXX="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/cxx/opt/local/bin/g++-mp-14" OBJC="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/objc/opt/local/bin/gcc-mp-14" OBJCXX="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/objcxx/opt/local/bin/g++-mp-14" FC="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/fc/opt/local/bin/gfortran-mp-14" F77="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/f77/opt/local/bin/gfortran-mp-14" F90="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/compwrap/f90/opt/local/bin/gfortran-mp-14" INSTALL="/usr/bin/install -c"
Exit code: 2
So the build complains it cannot find
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/build/exec/idris2:A:h/idris2_app/idris2-boot.so`.
The lib is built, but the correct path is
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_idris2/idris2/work/Idris2-0.7.0/build/exec/idris2_app/idris2-boot.so
What is injecting this odd idris2:A:h? Portfile does not add anything of this kind.
PPCSnowLeopardPorts
Just curious: Are you running Snow Leopard on PowerPC hardware?
Real questions:
- I see mentions of MacPort, are you building from source, pack, homebrew, or from macport?
- Do any of the alternatives work? or do they fail in the same way?
- I suspect this is a platform-specific issue, much like sed vs gsed, are you using gnu coreutils?
@andrevidela Thank you for responding! It was fast :)
Yeah, I build from MacPorts’s port (well, I have added it to MacPorts): https://github.com/macports/macports-ports/blob/a1e0942d737abc9daff03d67744865aa1131c8b3/lang/idris2/Portfile
I had it building earlier on PowerPC, so the arch is not a problem, but coreutils have been updated since then, I think. I can try switching to other version, coreutils is a small thing to rebuild.
The aim is to have the port working, also homebrew is broken on legacy macOS, so not an option anyway. And indeed, this is SL on PowerPC.
I had it building earlier on PowerPC, so the arch is not a problem
So it works locally but not through macport?
So it works locally but not through macport?
No, it worked via MacPorts (including on macOS powerpc), but on this installation it does not now. There is no problem with the port in principle, I just need to figure out what fails in this instance. Maybe the build picks a wrong sed.
The startup script for idris looks like:
#!/bin/sh
# @generated by Idris 0.7.0-fc3d2a04d, Chez backend
set -e # exit on any error
if [ "$(uname)" = Darwin ]; then
DIR=$(zsh -c 'printf %s "$0:A:h"' "$0")
else
DIR=$(dirname "$(readlink -f -- "$0")")
fi
export LD_LIBRARY_PATH="$DIR/idris2_app:$LD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH="$DIR/idris2_app:$DYLD_LIBRARY_PATH"
export IDRIS2_INC_SRC="$DIR/idris2_app"
"$DIR/idris2_app/idris2.so" "$@"
That's generated in src/Compiler/Scheme/Chez.idr. I believe the :A:h is supposed to take absolute path and then the directory part. My wild guess would be that you've maybe got a zsh that is too old, or something not zsh that is pretending to be zsh.
@dunhamsteve You must be right. This is a system bash, while on another installation where it worked fine it was zsh. I do not remember which version (away from the machine), but I have modern ones via MacPorts, so it is easy to switch to a desired shell.
Perhaps I need to implement that in portfile logic though, otherwise people may get these random obscure failures.
Thank you for pointing this!
BTW it failed to build on 4 macOS versions on buildbots, could be the same issue: https://ports.macports.org/port/idris2/details (logs are gone)
This is the fix (to add into the portfile):
if {${os.platform} eq "darwin" && ${os.major} < 11} {
depends_build-append \
port:zsh
build.env-append \
SHELL=${prefix}/bin/zsh
}
Closing, thank you very much.
OMG, somehow I lost my patch and got the same error with 0.8.0 now.
oh boy
@andrevidela It still works with zsh, so if no plans to fix it for old bash, we can close this issue. Since modern zsh is available on legacy macOS, this is just a matter of an extra build dependency.