As the number of different versions of software in a stage grows, it may be beneficial to redeploy stages into a new directory to keep the Spack database lean and fast to query.
To redeploy a stage and all its dependents, visit our Deployment Jenkins Overview, and click the button labelled "Run". The following dialog should appear:
Ensure that the following items are changed:
-
The checkbox
REDEPLOYshould be checked.This will deploy into the specified folder (see next item), and after successful deployment reset the
latestsymlink to said folder. Future deployment runs will then use the new deployment by default. -
The date field should have
latestreplaced with an actual date like2020-04-01.The deployment resolves the symlink
latestto the last redeployment. If this field is not set to an actual date, no new deployment will be created, but the latest deployment will be updated. -
Select the appropriate stage to redeploy.
Note that the content of the earlier stages, e.g.,
compilers,tools, evolves only slowly, and redeployment should only be done infrequent.
Merge the most recent release branch into our develop, i.e., upstream's
release/v0.15. Resolve merge conflicts by consulting vanilla checkouts
of our own develop and upstream's release branch.
Before building the merged branch, the following steps should be taken:
-
Update the compilers where necessary! This involves updating the following files:
deploy/configs/packages.yaml(compiler preferences at the end of the file)deploy/packages/compilers.yamldeploy/packages/toolchains.yaml
-
Update the Python version, if desired. This will affect the following files:
deploy/packages/toolchains.yamldeploy/packages/external-libraries.yamldeploy/packages/python-packages.yaml
-
Grep through the files in the
deploydirectory to ensure that no old compiler or Python versions are referenced anywhere! -
Temporarily modify the
deploy/Jenkinsfileto build the right branch into a new directory:- The function
deployment_directorycan be modified to return a temporary deployment root. - The default value for the branch/
sha1to build should be modified to point to the merged branch instead ofdevelop. - The pipeline steps to check out Spack should be modified to grab the
merged branch instead of
develop.
- The function
Copy the mirror data for proprietary tarballs into the new deployment root. Otherwise, the building of PGI may fail, and Intel® compilers will take a long time to download.
Create a new Jenkins plan to build the merged branch. Customarily,
hpc.spack-deployment-clone may still be around; if this is not the case,
ask Core Services to clone the hpc.spack-deployment plan. In the
configuration of the plan, make sure that the "Pipeline" configuration
setting "Branches to build" is updated to the merged branch.
Said plan may now be triggered, any build failure should be resolved. Use
the pull_env.sh script to investigate failures locally, e.g. with the
following command if the merged branch is built into a directory called
merge under the current Jenkins plan root:
$ eval $(spack/deploy/pull_env.sh merge compilers)
The above command will attempt to re-create an environment very similar
(note: not identical) to what bbprelman uses when building within
Jenkins. Within this environment, one can reproduce the commands used in
deploy/deploy.lib to handle the build, e.g.:
$ spack spec -I $(<$HOME/specs.txt)
The directory created (equivalent to ${HOME} in the modified shell)
should be deleted once investigations are concluded.
