Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .gitlab/jobs-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,6 @@ cray_update_tpls:
extends: [.cray_resource2, .update_tpls]
needs: [toss_update_tpls]

# ------------------------------------------------------------------------------
# UPDATE PERM JOBS

shared_tpls_update_permissions:
extends: [.toss_resource_general, .toss_update_permissions]

# ------------------------------------------------------------------------------
# PROD BUILD JOBS

Expand Down
31 changes: 11 additions & 20 deletions .gitlab/scripts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,27 +35,29 @@
- ci-dir.txt
- job-name.txt

.build_job:
script:
- CI_BUILD_DIR=$(cat ci-dir.txt)
- cd $CI_BUILD_DIR && cat job-name.txt
- ./$SCRIPT_DIR/devtools/host-config-build.py --no-clean --build --ctest --nprocs $NPROC --host-config gitlab.cmake -DSPHERAL_ENABLE_TIMERS=ON $EXTRA_CMAKE_ARGS

.build:
extends: [.retry_rule]
stage: build_and_install
variables:
GIT_STRATEGY: none
script:
- CI_BUILD_DIR=$(cat ci-dir.txt)
- cd $CI_BUILD_DIR && cat job-name.txt
- ./$SCRIPT_DIR/devtools/host-config-build.py --no-clean --build --ctest --nprocs $NPROC --host-config gitlab.cmake -DSPHERAL_ENABLE_TIMERS=ON $EXTRA_CMAKE_ARGS
- !reference [.build_job, script]
artifacts:
paths:
- ci-dir.txt
- job-name.txt

.build_and_test:
extends: [.build]
after_script:
- CI_BUILD_DIR=$(cat ci-dir.txt)
- cd $CI_BUILD_DIR && cat job-name.txt

- ./build_gitlab/install/bin/spheral -c "import $SPHERAL_MODULE"
script:
- !reference [.build_job, script]
- $RUN_CMD -n 1 ./build_gitlab/install/bin/spheral -c "import $SPHERAL_MODULE"
artifacts:
paths:
- ci-dir.txt
Expand Down Expand Up @@ -134,20 +136,9 @@
- !reference [.merge_pr_rule, rules]
- if: '$CI_COMMIT_MESSAGE =~ /update-tpls/'
script:
- umask 027
- ./$SCRIPT_DIR/devtools/tpl-manager.py --update-upstream

.toss_update_permissions:
stage: update_permissions
variables:
GIT_STRATEGY: none
rules:
- !reference [.merge_pr_rule, rules]
- if: '$CI_COMMIT_MESSAGE =~ /update-tpls/'
script:
- ml load mpifileutils
- $RUN_CMD -n $NPROC dchmod --mode go+rx $UPSTREAM_DIR
dependencies: []

# ------------------------------------------------------------------------------
# Production Installation scripts
# ------------------------------------------------------------------------------
Expand Down
11 changes: 11 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,31 @@ Notable changes include:
so there is no user interface impact.
* Added update-tpls commit message trigger.
* Spheral mpi python interface ensures proper allocation calls are used on Flux machines to avoid strange hangs that can occur if running outside of allocations.
* tpl-manager.py updates:
* Added --no-upstream option for when on LC machines but cannot access upstream.
* Added --dry-run option for testing purposes.
* Performance testing and CI improvements:
* Structure for performance tests is different, with the tests themselves set in a perf_tests.py file and run_perf.py runs the perf tests using ATS.
* The cleanup old directories job is now a scheduled pipelines that runs weekly.
* The performance tests and deploy jobs are now scheduled pipelines that run on a schedule.
* Gitlab pages now uses Plotly for interactive visualizations.
* Gathering of performance data for the deploy stage is now parallelized over ranks and threads.
* Merges to develop will create installs to a shared directory for use by the performance testing scripts.
* Added umask command for updating upstreams and removed separate job to update permissions.
* Build and test job now fails if import of Spheral module fails.
* Builds and installs are cleaner:
* Rpaths are no longer overwritten, allowing things set in the Spack host config file to be used.
* Spheral libraries are only installed once now and a Spheral.pth with a relative path to the install lib is used in the virtual python environment.
* Updated build system support spack v1.
* Updated TPL Manager to support spack v1.1.0.
* Updated CI to support python v3.12 and Ubuntu 24.04.
* Added actual Spheral release versions and TPL conditions to Spheral package.
* Added more system libraries to make building on LC faster.
* TPL updates:
* LEOS updated from 8.4.2 to 8.5.2.
* ROCM version updated from 6.2.0 to 6.4.3.
* Boost updated from 1.85 to 1.87 to prepare for using Clang 20 eventually.
* CHAI, Umpire, and RAJA updated to 2025.12.0.

Version v2025.12.0 -- Release date 2025-12-19
==============================================
Expand Down
26 changes: 21 additions & 5 deletions scripts/devtools/tpl-manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,14 @@ def parse_args(self):
help="Skip downloading Spack repo.")
parser.add_argument("--ci-run", action="store_true",
help="For use by the CI only. Must set a --spec.")
parser.add_argument("--no-upstream", action="store_true",
Comment thread
ldowen marked this conversation as resolved.
help="Use if on LC machines but cannot access the upstream.")
parser.add_argument("--dry-run", action="store_true",
help="Use to do everything but actually install. For testing purposes.")
parser.add_argument("--id", type=str, default=None,
help="ID string to postfix an initconfig file.")
parser.add_argument("--debug-build", action="store_true",
help="Adds the --keep-stage flag to spack for doing debug builds of TPLs")
parser.add_argument("--dev-pkg", action="store_true",
help="Tells tpl-manager to use the dev_pkg environment. "+\
"Assumes TPLs are for buildcache creation if no --spec is provided. "+\
Expand Down Expand Up @@ -288,6 +292,8 @@ def activate_spack_env(self):
from spack import environment
self.spack_env = environment.Environment(self.env_dir)
environment.activate(self.spack_env)
repo_cmd = SpackCommand("repo")
repo_cmd(*["update"])
else:
# Otherwise, check if environment has been created
arch_cmd = SpackCommand("arch")
Expand All @@ -309,9 +315,7 @@ def concretize_spec(self, check_spec):
else:
print("Concretizing environment")

with self.spack_env.write_transaction():
conc_spec = self.spack_env.concretize(force=force_conc)
self.spack_env.write()
conc_spec = self.do_concretize(force_conc)
Comment thread
mcfadden8 marked this conversation as resolved.

if conc_spec:
print("Concretized specs")
Expand All @@ -330,6 +334,15 @@ def concretize_spec(self, check_spec):
specs = self.spack_env.concrete_roots()
self.print_specs(specs)

def do_concretize(self, force_conc):
if (self.args.no_upstream):
spack.config.set("upstreams", {"spheral_shared": {"install_tree": {}}})
print("WARNING: Modifying local Spack files, do not commit these changes.")
Comment thread
ldowen marked this conversation as resolved.
with self.spack_env.write_transaction():
conc_spec = self.spack_env.concretize(force=force_conc)
self.spack_env.write()
return conc_spec

def install_and_config(self):
"Install TPLs and create host config file for given spec"
spec = self.args.spec
Expand All @@ -356,6 +369,10 @@ def install_and_config(self):
unsigned=True,
**default_install_args)
else:
if (self.args.debug_build):
default_install_args.update(dict(keep_stage=True))
if (self.args.dry_run):
default_install_args.update(dict(fake=True))
self.spack_env.install_specs([self.spack_spec], **default_install_args)
if (self.args.ci_run):
shutil.copyfile(host_config_file, "gitlab.cmake")
Expand Down Expand Up @@ -406,15 +423,14 @@ def __init__(self):
if self.args.update_upstream:
upstream_dir = spack.config.get("upstreams:spheral_shared:install_tree")
spack.config.set("config", {"install_tree": {"root": str(upstream_dir), "padded_length": 0}})
print("WARNING: Modifying local Spack files, do not commit these changes")
print("WARNING: Modifying local Spack files, do not commit these changes.")
with self.spack_env.manifest.use_config():
print(spack.config.get("config:install_tree"))
print(f"Installing to {upstream_dir}")
# Pass None so it installs TPLs for all specs
self.spack_env.install_all(install_deps=True, install_package=False, fail_fast=True)
# Equivalent of running spack reindex
spack.store.STORE.reindex()
print("WARNING: Be sure to update permissions and groups on upstream.")
else:
self.spack_env.install_specs(None, **default_install_args)

Expand Down
2 changes: 1 addition & 1 deletion scripts/spack/configs/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ repos:
builtin:
destination: $spack/../packages
git: "https://github.com/spack/spack-packages.git"
commit: 0f833a16999a012153c040c26c98256c14a1a4fd
commit: a251c075e32d54b77c283538b45e9327e88f02d2
44 changes: 32 additions & 12 deletions scripts/spack/configs/toss_4_x86_64_ib/packages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@ packages:
pil: [py-pillow]
jpeg: [libjpeg]
zlib-api: [zlib]
permissions:
read: group
write: group
group: sduser
gcc:
externals:
- spec: gcc@10.3.1 languages:='c,c++,fortran'
Expand Down Expand Up @@ -75,8 +71,8 @@ packages:
# ------ SYSTEM LIBS -------
ncurses:
externals:
- spec: ncurses@5.9
prefix: /usr
- spec: ncurses@6.1.20180224+termlib abi=6
prefix: /usr/lib64
buildable: false
autoconf:
externals:
Expand Down Expand Up @@ -168,15 +164,39 @@ packages:
- spec: fontconfig@2.13.1
prefix: /usr
buildable: false


#---- Extension Dependencies

libxml2:
externals:
- spec: libxml2@3.4.2
prefix: /usr/lib64
buildable: false
libpciaccess:
externals:
- spec: libpciaccess@0.14
prefix: /usr/lib64
buildable: false
libbsd:
externals:
- spec: libbsd@0.12.2
prefix: /usr/lib64
buildable: false
libmd:
externals:
- spec: libmd@1.1.0
prefix: /usr/lib64
buildable: false
libxcrypt:
externals:
- spec: libxcrypt@4.1.1
prefix: /lib64
buildable: false
hwloc:
externals:
- spec: hwloc@5.7.5
prefix: /usr
- spec: hwloc@2.12.2
prefix: /usr/lib64/hwloc
buildable: false

#---- Extension Dependencies

netlib-lapack:
buildable: false
externals:
Expand Down
Loading
Loading