You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently we have a single install_tree for all software in Prerelease and Release.
Due to the large amount of Prereleases locking the install_tree, and the possibility that a closed PR may clean up packages that are currently being installed somewhere else in the install_tree, we should consider splitting the install locations.
The Possibilities
Split install_trees down repository lines - $spack/../release/ACCESS-OM3, $spack/../release/model-tools, etc. This would still mean that closed PRs may still clean up packages that are currently needed by other PRs, but there will be far less DB locking. However, reuse will be down unless we use other install_trees as upstreams.
Split install_trees down a repositories PR lines - $spack/../release/ACCESS-OM3/pr123 for Prerelease, and for Release, either:
$spack/../release/ACCESS-OM3/2026.01.000 (each install_tree would be a Release)
$spack/../release/ACCESS-OM3 (each install_tree is just a model, like in the first solution
Things to be careful of
install_trees will almost-certainly need to be injected at the environment level. What does this mean for the ukmo-restricted-scope in spack-config, which is currently a static $spack/../restricted/ukmo/release? It would most likely need to be removed and injected at the environment level instead.
There will be less reuse of existing packages as there is a smaller pool of packages in the install_tree, unless we have a bunch of upstreams. But then we're back in the same boat of upstreams having packages cleaned up potentially mid-install.
However, binary buildcaches step around this issue by being globally-accessible, but don't affect concretization decisions. So it would be essentially 'by chance' that there is reuse in this way.
Modulefiles, our favourite. Our module magic would need to updated to search a wider variety of install_trees. But, (at least in the case of PR-based install_tree splitting), we would delete the un-needed modulefiles by deleting the install_tree - see ci-closed.yml Doesn't Clean Up Modulefiles #155.
See previous issue #255
Background
Currently we have a single
install_treefor all software in Prerelease and Release.Due to the large amount of Prereleases locking the
install_tree, and the possibility that a closed PR may clean up packages that are currently being installed somewhere else in theinstall_tree, we should consider splitting the install locations.The Possibilities
install_trees down repository lines -$spack/../release/ACCESS-OM3,$spack/../release/model-tools, etc. This would still mean that closed PRs may still clean up packages that are currently needed by other PRs, but there will be far less DB locking. However, reuse will be down unless we use otherinstall_treesas upstreams.install_trees down a repositories PR lines -$spack/../release/ACCESS-OM3/pr123for Prerelease, and for Release, either:$spack/../release/ACCESS-OM3/2026.01.000(eachinstall_treewould be a Release)$spack/../release/ACCESS-OM3(eachinstall_treeis just a model, like in the first solutionThings to be careful of
install_trees will almost-certainly need to be injected at the environment level. What does this mean for theukmo-restricted-scopeinspack-config, which is currently a static$spack/../restricted/ukmo/release? It would most likely need to be removed and injected at the environment level instead.install_tree, unless we have a bunch of upstreams. But then we're back in the same boat of upstreams having packages cleaned up potentially mid-install.install_trees. But, (at least in the case of PR-basedinstall_treesplitting), we would delete the un-needed modulefiles by deleting theinstall_tree- seeci-closed.ymlDoesn't Clean Up Modulefiles #155.Pinging @harshula (as we were discussing
install_trees) and @aidanheerdegen for comment.