PawseySC / pawsey-spack-config

Automated deployment system for the scientific software stack in use at Pawsey
BSD 3-Clause "New" or "Revised" License
4 stars 9 forks source link

Allows project-wide installations to be seen by user-private Spack runs. #284

Closed dipietrantonio closed 2 months ago

dipietrantonio commented 3 months ago

Previously, user-private Spack installations could not use project-wide installations as dependencies because they were not seen. In other words, the project-wide installation directory was not set as upstream.

Fixes #278

dipietrantonio commented 3 months ago

For testing purposes, I installed aoflagger and dependencies project-wide, then tried to spack find aoflagger with the user-private Spack configuration. I get the following warnings, and then aoflagger is found. However, during concretisation, a-flagged is marked as not installed. Investigating the issue..

cdipietrantonio@nid002608:/scratch/pawsey0001/cdipietrantonio/test-spack-env/2024.05-upstreams/spack> spack find -p aoflagger
==> Warning: Missing dependency not in database: wcslib/5tjew72 needs cfitsio-rvvpkwk
==> Warning: Missing dependency not in database: wcslib/5tjew72 needs flex-pvnk535
==> Warning: Missing dependency not in database: wcslib/5tjew72 needs gmake-yrxsuab
==> Warning: Missing dependency not in database: casacore/bqesihi needs bison-b5jlog4
==> Warning: Missing dependency not in database: casacore/bqesihi needs cfitsio-rvvpkwk
==> Warning: Missing dependency not in database: casacore/bqesihi needs cmake-4dc67mz
==> Warning: Missing dependency not in database: casacore/bqesihi needs fftw-t6emoos
==> Warning: Missing dependency not in database: casacore/bqesihi needs flex-pvnk535
==> Warning: Missing dependency not in database: casacore/bqesihi needs gmake-yrxsuab
==> Warning: Missing dependency not in database: casacore/bqesihi needs gsl-xcwhuj4
==> Warning: Missing dependency not in database: casacore/bqesihi needs openblas-n2a4fbq
==> Warning: Missing dependency not in database: casacore/bqesihi needs readline-mhb24t7
==> Warning: Missing dependency not in database: ninja/dgidhhd needs python-4ysxrvu
==> Warning: Missing dependency not in database: ninja/dgidhhd needs re2c-7o5mmff
==> Warning: Missing dependency not in database: py-setuptools/73a5ggj needs py-pip-dwy4vuc
==> Warning: Missing dependency not in database: py-setuptools/73a5ggj needs python-4ysxrvu
==> Warning: Missing dependency not in database: py-wheel/vrc3mhr needs py-pip-dwy4vuc
==> Warning: Missing dependency not in database: py-wheel/vrc3mhr needs python-4ysxrvu
==> Warning: Missing dependency not in database: py-flit-core/5blfuj5 needs py-pip-dwy4vuc
==> Warning: Missing dependency not in database: py-flit-core/5blfuj5 needs python-4ysxrvu
==> Warning: Missing dependency not in database: py-cython/qmv34dt needs py-pip-dwy4vuc
==> Warning: Missing dependency not in database: py-cython/qmv34dt needs python-4ysxrvu
==> Warning: Missing dependency not in database: py-packaging/bgmc3zj needs py-pip-dwy4vuc
==> Warning: Missing dependency not in database: py-packaging/bgmc3zj needs python-4ysxrvu
==> Warning: Missing dependency not in database: py-pyproject-metadata/6eo5bmw needs py-pip-dwy4vuc
==> Warning: Missing dependency not in database: py-pyproject-metadata/6eo5bmw needs python-4ysxrvu
==> Warning: Missing dependency not in database: py-numpy/xmxbryf needs openblas-n2a4fbq
==> Warning: Missing dependency not in database: py-numpy/xmxbryf needs pkg-config-37yzqz4
==> Warning: Missing dependency not in database: py-numpy/xmxbryf needs py-pip-dwy4vuc
==> Warning: Missing dependency not in database: py-numpy/xmxbryf needs python-4ysxrvu
==> Warning: Missing dependency not in database: boost/5rd2p6s needs cray-mpich-kh6qs7k
==> Warning: Missing dependency not in database: boost/5rd2p6s needs python-4ysxrvu
==> Warning: Missing dependency not in database: aoflagger/stm5baw needs cfitsio-rvvpkwk
==> Warning: Missing dependency not in database: aoflagger/stm5baw needs cmake-4dc67mz
==> Warning: Missing dependency not in database: aoflagger/stm5baw needs fftw-t6emoos
==> Warning: Missing dependency not in database: aoflagger/stm5baw needs gmake-yrxsuab
==> Warning: Missing dependency not in database: aoflagger/stm5baw needs hdf5-po7buln
==> Warning: Missing dependency not in database: aoflagger/stm5baw needs libpng-6kxxfq2
==> Warning: Missing dependency not in database: aoflagger/stm5baw needs libxml2-qriixhd
==> Warning: Missing dependency not in database: aoflagger/stm5baw needs lua-uwvcejy
==> Warning: Failed to initialize repository: '/software/projects/$PAWSEY_PROJECT/$USER/setonix/2024.05-upstreams/spack_repo'.
  No repo.yaml found in '/software/projects/$PAWSEY_PROJECT/$USER/setonix/2024.05-upstreams/spack_repo'
  To remove the bad repository, run this command:
      spack repo rm /software/projects/$PAWSEY_PROJECT/$USER/setonix/2024.05-upstreams/spack_repo
-- linux-sles15-zen3 / gcc@12.2.0 -------------------------------
aoflagger@3.4.0  /software/projects/pawsey0001/setonix/2024.05-upstreams/software/linux-sles15-zen3/gcc-12.2.0/aoflagger-3.4.0-stm5bawaknrkavlgqtr4o7sehygyye7y
==> 1 installed package
dipietrantonio commented 3 months ago

The above issue was caused by the order in which upstreams were listed (see here). Fixed in commit ebaf

dipietrantonio commented 3 months ago

Tested by installing half of htop dependencies under pawsey0001 (for instance, python/3.11.6 and perl/5.38.0) and then installing htop in my own directory within pawsey0001:

[+] /software/projects/pawsey0001/cdipietrantonio/setonix/2024.05-upstreams/software/linux-sles15-zen3/gcc-12.2.0/libtool-2.4.7-kwhzyrgzetakjj5pd7pnbc7yzbxvx7b4
[+] /software/projects/pawsey0001/setonix/2024.05-upstreams/software/linux-sles15-zen3/gcc-12.2.0/perl-5.38.0-y5lorqyxvq67ccyrtghhrbfig5zb3hc6
[+] /software/projects/pawsey0001/setonix/2024.05-upstreams/software/linux-sles15-zen3/gcc-12.2.0/python-3.11.6-4ysxrvuaor6iljintmzcazlkfcokwnes
==> Installing htop-3.2.2-kkx6bsvuyjydzzwubz2nlmcgzeymhotv [30/30]
==> No binary for htop-3.2.2-kkx6bsvuyjydzzwubz2nlmcgzeymhotv found: installing from source
==> Fetching https://mirror.spack.io/_source-cache/archive/38/3829c742a835a0426db41bb039d1b976420c21ec65e93b35cd9bfd2d57f44ac8.tar.gz
==> No patches needed for htop
==> htop: Executing phase: 'autoreconf'
==> htop: Executing phase: 'configure'
==> htop: Executing phase: 'build'
==> htop: Executing phase: 'install'
==> htop: Successfully installed htop-3.2.2-kkx6bsvuyjydzzwubz2nlmcgzeymhotv
  Stage: 1.11s.  Autoreconf: 3.02s.  Configure: 7.39s.  Build: 1.42s.  Install: 0.16s.  Post-install: 0.34s.  Total: 14.10s
[+] /software/projects/pawsey0001/cdipietrantonio/setonix/2024.05-upstreams/software/linux-sles15-zen3/gcc-12.2.0/htop-3.2.2-kkx6bsvuyjydzzwubz2nlmcgzeymhotv

This patch is working and ready for review!

dipietrantonio commented 3 months ago

This change will also mean that user-private installations will be subject to changes made by other people in the same group. We should put a warning in the docs. However, this can reduce the inode count on /software