Conversation
|
Hi @haampie! I noticed that the following package(s) don't yet have maintainers:
Are you interested in adopting any of these package(s)? If so, simply add the following to the package class: maintainers("haampie")If not, could you contact the developers of this package and see if they are interested? You can quickly see who has worked on a package with $ spack blame muslThank you for your help! Please don't add maintainers without their consent. You don't have to be a Spack expert or package developer in order to be a "maintainer," it just gives us a list of users willing to review PRs or debug issues relating to this package. A package can have multiple maintainers; just add a list of GitHub handles of anyone who wants to volunteer. |
|
With respect to:
This is working, provided we add / inject For instance, on:
and using: packages:
glibc:
externals:
- spec: "glibc@=2.31"
prefix: /usr I get the following for: $ spack solve zlib-ng |
|
Right, my original idea was to make it an automatic external |
77ef36f to
3807d28
Compare
3807d28 to
78149ea
Compare
534ed4b to
19d2c2c
Compare
|
The last commit (19d2c2c) gives a fully working GCC, but we still need some tightening for other compilers. Anyhow, to try the new feature: $ spack mirror add devtools https://raw.githubusercontent.com/alalazo/test-buildcaches/main/devtools
$ spack buildcache keys -it
$ spack env activate --temp
$ spack add hdf5~mpi
$ spack concretize --reuse -fOn my platform:
This reuses a bunch of nodes from the buildcache that has |
This comment was marked as outdated.
This comment was marked as outdated.
not sure what that is about. One (Have a hard time reducing it to mwe...) |
The issue was that the libc was not "reused". Fixed in b049375 |
9110e83 to
7432e05
Compare
Some logic to detect what libc the c / cxx compilers use by default, based on `-dynamic-linker`. The function `compiler.default_libc()` returns a `Spec` of the form `glibc@x.y` or `musl@x.y` with the `external_path` property set. The idea is this can be injected as a dependency. If we can't run the dynamic linker directly, fall back to `ldd` relative to the prefix computed from `ld.so.`
This commit differentiate linux from other platforms by using libc compatibility as a criterion for deciding which buildcaches / binaries can be reused. Other platforms still use OS compatibility. On linux a libc is injected by all compilers as an implicit external, and the compatibility criterion is that a libc is compatible with all other libcs with the same name and a version that is lesser or equal. Some concretization unit tests use libc when run on linux.
7432e05 to
11eb4b7
Compare
|
To sum up the relocation struggles:
One way or another we get the interpreter path, and add a replacement |
|
@spackbot run pipeline |
|
I've started that pipeline for you! |
|
One test in pipelines took more than 6 hrs. I guess we need to put a timeout on tests. |
|
We decided to stick with exact prefix match for now so that reuse between nix / gentoo prefix and classical distros isn't possible. That makes the scope of this pr a bit smaller. |

TODO:
libcautomatic externallibca virtual, makegcc-runtimedepend onlibcosmatch rules onlinuxlinuxstill work correctlyPT_INTERPloader path relocation