Open Chrismarsh opened 3 weeks ago
/cc @haampie in case you have an idea?
The logs look incomplete, can you share the bits where the error happens?
Notice that ld
is never used to create static libraries
I'm getting the ld
usage from
ld: -rpath can only be used when creating a dynamic final linked image
I am confused though. This log is from last night when I was hitting this while building an env. Thus, I made my PR. This morning I went to generate a new log and building the static library worked. How is that possible?
Wild. I had to rebuild a bunch of libraries and I ran into this again spack-build-01-autoreconf-out.txt spack-build-02-configure-out.txt spack-build-03-build-out.txt spack-build-env-mods.txt spack-build-env.txt spack-build-out.txt spack-configure-args.txt
@skosukhin This is the issue I am seeing that motivated https://github.com/spack/spack/pull/45925
spack -d install
logs
spack-cc-parallel-netcdf-iobthja.in.log
spack-cc-parallel-netcdf-iobthja.out.log
Ah. I specify an extra rpath in my compilers.yaml
compilers:
- compiler:
spec: apple-clang@=15.0.0
paths:
cc: /usr/bin/clang
cxx: /usr/bin/clang++
f77: /Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/bin/gfortran
fc: /Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/bin/gfortran
flags:
ldflags: "-ld_classic"
operating_system: sonoma
target: aarch64
modules: []
environment: {}
extra_rpaths: [/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/lib]
to work around this issue https://github.com/spack/spack/issues/45479. In the last line of the out.log
[ccld] /usr/bin/clang++ -Wl,-headerpad_max_install_names -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/pmix-5.0.2-ykn62tawvtumje372h3n3m7is6mwwiam/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libevent-2.1.12-zvyk7d6vz2r6vdcxckfthaoqr5zeyu4q/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openssl-3.3.1-5rjne4lzjg4khii4vick2kd63hkqbe75/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/hwloc-2.11.1-yaguxr62mdwddktr7givoemi6zjmgccg/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libxml2-2.10.3-kqgaqfgc5k2dv4xbil5gtzccpuhpvajq/include/libxml2 -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libxml2-2.10.3-kqgaqfgc5k2dv4xbil5gtzccpuhpvajq/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/xz-5.4.6-v5efqvigsi4tyu7r3t5ab3ribd7rsbst/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/zlib-1.3.1-flrk3ecpvdwc36ebmjgumqrasn7rzk7k/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/ncurses-6.5-injc6ig3zwzoumui3kop6vvj7x674l2v/include -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libiconv-1.17-wsnd3wa5h5zopiuzq6p34yirs4ukjogk/include -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/pmix-5.0.2-ykn62tawvtumje372h3n3m7is6mwwiam/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libevent-2.1.12-zvyk7d6vz2r6vdcxckfthaoqr5zeyu4q/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openssl-3.3.1-5rjne4lzjg4khii4vick2kd63hkqbe75/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/hwloc-2.11.1-yaguxr62mdwddktr7givoemi6zjmgccg/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libxml2-2.10.3-kqgaqfgc5k2dv4xbil5gtzccpuhpvajq/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/xz-5.4.6-v5efqvigsi4tyu7r3t5ab3ribd7rsbst/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/zlib-1.3.1-flrk3ecpvdwc36ebmjgumqrasn7rzk7k/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/ncurses-6.5-injc6ig3zwzoumui3kop6vvj7x674l2v/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libiconv-1.17-wsnd3wa5h5zopiuzq6p34yirs4ukjogk/lib -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/lib -Wl,-rpath,/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/lib -r -keep_private_externs -nostdlib -o .libs/libpnetcdf.4.dylib-master.o -Wl,-force_load -Wl,../dispatchers/.libs/libdispatchers.a -Wl,-force_load -Wl,../drivers/common/.libs/libcommon.a -Wl,-force_load -Wl,../drivers/ncmpio/.libs/libncmpio.a -Wl,-force_load -Wl,../binding/cxx/.libs/libcxx.a -Wl,-force_load -Wl,../binding/f77/.libs/libf77.a -Wl,-force_load -Wl,../binding/f90/.libs/libf90.a -lmpi -ld_classic
you can see that rpath being added, causing the issue.
I also note that the -ld_classic
flag is not correctly handled either. In the 2nd to last line, the cc step is correctly adding Wl,
prefix:
[cc] [...] -Wl,-flat_namespace -Wl,-ld_classic
but on the [ccld] step it is incorrectly escaped
[ccld] [...] -Wl,-force_load -Wl,../binding/f90/.libs/libf90.a -lmpi -ld_classic
In the env I see:
SPACK_COMPILER_EXTRA_RPATHS=/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/lib; export SPACK_COMPILER_EXTRA_RPATHS
and in this section
https://github.com/spack/spack/blob/develop/lib/spack/env/cc#L875-L880
the extra rpath is added unconditionally to the ccld step as
https://github.com/spack/spack/blob/develop/lib/spack/env/cc#L432
isn't being triggered despite -r
being present. Thus the problem.
@haampie I'm wondering if you have any insight in how to fix this?
I traced through the cc wrapper to try to figure out where this was getting injected from.
1 arg_list
occurs on line 910 https://github.com/spack/spack/blob/develop/lib/spack/env/cc#L909
2 arg_list
occurs on line 940 https://github.com/spack/spack/blob/develop/lib/spack/env/cc#L940
3 arg_list
occurs on line 977 https://github.com/spack/spack/blob/develop/lib/spack/env/cc#L977
$@=-r -keep_private_externs -nostdlib -o .libs/libpnetcdf.4.dylib-master.o -Wl,-force_load,../dispatchers/.libs/libdispatchers.a -Wl,-force_load,../drivers/common/.libs/libcommon.a -Wl,-force_load,../drivers/ncmpio/.libs/libncmpio.a -Wl,-force_load,../binding/cxx/.libs/libcxx.a -Wl,-force_load,../binding/f77/.libs/libf77.a -Wl,-force_load,../binding/f90/.libs/libf90.a -I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/include -L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/lib -Wl,-rpath,/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/lib -lmpi
--- add_rpaths=false ----
--- 1 args_list=-Wl,-headerpad_max_install_names
--- 2 args_list=-Wl,-headerpad_max_install_names-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/pmix-5.0.2-ykn62tawvtumje372h3n3m7is6mwwiam/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libevent-2.1.12-zvyk7d6vz2r6vdcxckfthaoqr5zeyu4q/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openssl-3.3.1-5rjne4lzjg4khii4vick2kd63hkqbe75/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/hwloc-2.11.1-yaguxr62mdwddktr7givoemi6zjmgccg/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libxml2-2.10.3-kqgaqfgc5k2dv4xbil5gtzccpuhpvajq/include/libxml2-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libxml2-2.10.3-kqgaqfgc5k2dv4xbil5gtzccpuhpvajq/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/xz-5.4.6-v5efqvigsi4tyu7r3t5ab3ribd7rsbst/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/zlib-1.3.1-flrk3ecpvdwc36ebmjgumqrasn7rzk7k/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/ncurses-6.5-injc6ig3zwzoumui3kop6vvj7x674l2v/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libiconv-1.17-wsnd3wa5h5zopiuzq6p34yirs4ukjogk/include-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/pmix-5.0.2-ykn62tawvtumje372h3n3m7is6mwwiam/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libevent-2.1.12-zvyk7d6vz2r6vdcxckfthaoqr5zeyu4q/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openssl-3.3.1-5rjne4lzjg4khii4vick2kd63hkqbe75/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/hwloc-2.11.1-yaguxr62mdwddktr7givoemi6zjmgccg/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libxml2-2.10.3-kqgaqfgc5k2dv4xbil5gtzccpuhpvajq/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/xz-5.4.6-v5efqvigsi4tyu7r3t5ab3ribd7rsbst/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/zlib-1.3.1-flrk3ecpvdwc36ebmjgumqrasn7rzk7k/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/ncurses-6.5-injc6ig3zwzoumui3kop6vvj7x674l2v/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libiconv-1.17-wsnd3wa5h5zopiuzq6p34yirs4ukjogk/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/lib
spack_flags_spack_store_rpath_dirs_list=
spack_store_rpath_dirs_list=/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/lib
spack_flags_rpath_dirs_list=
rpath_dirs_list=
spack_flags_system_rpath_dirs_list=
system_rpath_dirs_list=
other_args_list=-r-keep_private_externs-nostdlib-o.libs/libpnetcdf.4.dylib-master.o-Wl,-force_load-Wl,../dispatchers/.libs/libdispatchers.a-Wl,-force_load-Wl,../drivers/common/.libs/libcommon.a-Wl,-force_load-Wl,../drivers/ncmpio/.libs/libncmpio.a-Wl,-force_load-Wl,../binding/cxx/.libs/libcxx.a-Wl,-force_load-Wl,../binding/f77/.libs/libf77.a-Wl,-force_load-Wl,../binding/f90/.libs/libf90.a-lmpi
spack_flags_other_args_list=-ld_classic
libs_list=
--- 3 args_list=-Wl,-headerpad_max_install_names-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/pmix-5.0.2-ykn62tawvtumje372h3n3m7is6mwwiam/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libevent-2.1.12-zvyk7d6vz2r6vdcxckfthaoqr5zeyu4q/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openssl-3.3.1-5rjne4lzjg4khii4vick2kd63hkqbe75/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/hwloc-2.11.1-yaguxr62mdwddktr7givoemi6zjmgccg/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libxml2-2.10.3-kqgaqfgc5k2dv4xbil5gtzccpuhpvajq/include/libxml2-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libxml2-2.10.3-kqgaqfgc5k2dv4xbil5gtzccpuhpvajq/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/xz-5.4.6-v5efqvigsi4tyu7r3t5ab3ribd7rsbst/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/zlib-1.3.1-flrk3ecpvdwc36ebmjgumqrasn7rzk7k/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/ncurses-6.5-injc6ig3zwzoumui3kop6vvj7x674l2v/include-I/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libiconv-1.17-wsnd3wa5h5zopiuzq6p34yirs4ukjogk/include-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openmpi-5.0.5-a7kzum6q5prcztolnupihfcbsoi6xdm6/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/pmix-5.0.2-ykn62tawvtumje372h3n3m7is6mwwiam/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libevent-2.1.12-zvyk7d6vz2r6vdcxckfthaoqr5zeyu4q/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/openssl-3.3.1-5rjne4lzjg4khii4vick2kd63hkqbe75/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/hwloc-2.11.1-yaguxr62mdwddktr7givoemi6zjmgccg/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libxml2-2.10.3-kqgaqfgc5k2dv4xbil5gtzccpuhpvajq/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/xz-5.4.6-v5efqvigsi4tyu7r3t5ab3ribd7rsbst/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/zlib-1.3.1-flrk3ecpvdwc36ebmjgumqrasn7rzk7k/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/ncurses-6.5-injc6ig3zwzoumui3kop6vvj7x674l2v/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/libiconv-1.17-wsnd3wa5h5zopiuzq6p34yirs4ukjogk/lib-L/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/lib-Wl,-rpath,/Users/cbm038/Documents/science/code/spack/opt/spack/darwin-sonoma-m1/apple-clang-15.0.0/gcc-14.1.0-457tpmpyozjdws6hjoppm7a7tuyixiuj/lib-r-keep_private_externs-nostdlib-o.libs/libpnetcdf.4.dylib-master.o-Wl,-force_load-Wl,../dispatchers/.libs/libdispatchers.a-Wl,-force_load-Wl,../drivers/common/.libs/libcommon.a-Wl,-force_load-Wl,../drivers/ncmpio/.libs/libncmpio.a-Wl,-force_load-Wl,../binding/cxx/.libs/libcxx.a-Wl,-force_load-Wl,../binding/f77/.libs/libf77.a-Wl,-force_load-Wl,../binding/f90/.libs/libf90.a-lmpi-ld_classic
I assume this occurs at a higher level than then compiler wrapper, but the extra rpath comes in as a -Wl,-rpath
. Thus, this arg gets stored into return_spack_store_rpath_dirs_list
, via parse_Wl
, and ultimately into spack_store_rpath_dirs_list
(which you can see in the trace above). This ends up unconditionally added to the args_list
in ccld
mode:
https://github.com/spack/spack/blob/develop/lib/spack/env/cc#L948
I have a PR that I've tested that resolves this rpath problem. I'm not at all sure if it is the spackthonic way of doing things, so I am very open to comments on it.
Steps to reproduce
When creating a static library on macos using apple-clang, spack passes the entire
-rpath
to the linker. However apple-clang's ld cannot handle this:And example of this behaviour is
parallel-netcdf-1.12.3
where-rpath
is passed told
as it tries to create a static library:Error message
No response
Information on your system
General information
spack debug report
and reported the version of Spack/Python/Platform