Closed dingp closed 2 years ago
Trying this layout under: /cvmfs/dunedaq-development.opensciencegrid.org/sandbox
.
Changing the layout a little bit:
spack-repos/externals
subdirectory is replaced by spack-externals
;spack-repos/packages
no longer exists as it only serves as templates. After today's weekly SW Coordination discussion, we agreed on the following layout of spack related elements on cvmfs:
/cvmfs/dunedaq.opensciencegrid.org/
This is the repo where frozen releases will be put under.
spack-installation
contains the spack
tool itself and packages installed via it;spack-externals
contains the dune-externals
spack repo;spack-releases
contains the release related files, including:
dbt-setttings
file if required by the spack flavored dbt.:green_heart: All things related to spack will be put under directories with leading spack-
in the names. So they are totally decoupled from existing UPS releases. :green_heart:
├── products # UPS related, can be retired after fully transitioned to spack
├── pypi-repo
├── releases # UPS related, can be retired after fully transitioned to spack
├── setup_dunedaq.sh
├── spack-externals
├── spack-installation
├── spack-releases
└── tools
/cvmfs/dunedaq-development.opensciencegrid.org/
This is the repo where nightly releases will be put under. Spack installation here will use the spack in the main repo as upstream spack instance, so that the external dependencies can be re-used.
spack-installation
contain the tool itself and packages installed via spack. In this case, the packages will be DAQ packages only, as the external dependencies are brought in from the main repo;spack-nightly
will be equivalent to spack-releases
in the main repo; it contains the nightly releases. The contents of each nightly releases are similar to those frozen releases too;├── nightly # UPS related, can be retired after fully transitioned to spack
├── products # UPS related, can be retired after fully transitioned to spack
├── sandbox
├── spack-installation
└── spack-nightly
One possible major change of layout for discussion:
While testing with multiple nightly releases, I found spack makes containerizing single release (frozen or nightly) harder than expected since it put packages from different releases all under opt/spack
.
Spack itself maintains a database (in json format) of packages installed in it. For two nightly releases, that db in json is a ~10,000 line-file (and nightly instances only contains DAQ pacakges). It’s doable to play with that json db, and only pick packages in a release based on the namespace
identifier, similar adding new nightly releases built by CI jobs. However, it will certainly be error-prone, as this is not something spack supports natively (combining/separating packages of different instances).
A proposal is to make dedicated spack instances for different releases and additionally the externals
will have its own instance which is used by release instances.
dunedaq-externals
dunedaq-externals
as upstream instance;dunedaq-externals
as upstream instance.spack-installation
subdirectory will be totally absorbed into spack-release
or spack-nightly
spack-externals
will get reorganized, as it will actually be the spack instance other than the spack repo only.The cvmfs sandbox deployment has been prepared and deployed to cvmfs. Details of the preparation can be found in: #130.
@jcfreeman2 Instructions to use these spack releases is posted here.
The production deployment has been published to cvmfs.
It has been recreated with a SL7 container (previously CS8 container). CS8 has a newer glibc version. The pre-built release made on CS8 is not backward compatible.
The following pieces related to spack managed releases will need to be deployed to cvmfs:
spack
tool itself;A proposal of the cvmfs layout is:
spack
itself is under/cvmfs/dunedaq.opensciencegrid.org/tools/spack/
, and with sub-directories for different versions; just the way as what we do fordbt
;/cvmfs/dunedaq.opensciencegrid.org/spack-repos/externals
for the repository of externals packages;/cvmfs/dunedaq.opensciencegrid.org/spack-repos/packages
for the repository template of DAQ packages;/cvmfs/dunedaq.opensciencegrid.org/releases/<Release_Name>/spack-repo
for the actual repository of DAQ packages of each release.Since
spack
likes to manage the installation of packages and environments under$spack
(spack root), and it provides theview
tool to view those packages, it is easier to have item 5, 6, 7 under spack root (/cvmfs/dunedaq.opensciencegrid.org/tools/spack/vX.X.X
).When we advance to a new spack version, the new version can "import" the older version as "upstream" spack instance, so all of the packages installed by the older spack become available with the newer spack.
For the nightly release, we will use the
spack
for frozen releases in thedunedaq
cvmfs repo as the upstream installation, so that the externals can be reused. The layout of nightly release can be the following:spack
itself is under/cvmfs/dunedaq-development.opensciencegrid.org/tools/spack/vX.X.X
, inside with the installation of DAQ packages may live;/cvmfs/dunedaq-development.opensciencegrid.org/nightly/<Nightly_Release_Name>/spack-repo
for the nightly releases' spack repo.