Skip to content
Open
Show file tree
Hide file tree
Changes from 99 commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
f253021
Fix .gitignore excluding .pipelines/install-scripts/
lorisercole Aug 21, 2026
6646398
Add centralized BLAS++/LAPACK++ install scripts
lorisercole Aug 21, 2026
13547d1
Add pipeline-facing install_cpp_dependencies.sh
lorisercole Aug 21, 2026
1570c8f
Refactor devcontainer install_cpp_dependencies.sh to reuse centralize…
lorisercole Aug 21, 2026
7af6c66
Add ExaChem/TAMM build script and source patches
lorisercole Aug 21, 2026
ef9ccd0
Wire ExaChem build into GHA build-and-test.yaml (Linux only)
lorisercole Aug 21, 2026
d478abb
Trim verbose comments in centralized install scripts
lorisercole Aug 21, 2026
f3c4930
Add TAMM/ExaChem to cgmanifest.json
lorisercole Aug 21, 2026
ac5bddb
Move ExaChem build script to .pipelines/install-scripts and resolve v…
lorisercole Aug 21, 2026
f47a398
Point GHA workflow at moved ExaChem install script
lorisercole Aug 21, 2026
791b473
Fix bash syntax error in install_exachem.sh
lorisercole Aug 21, 2026
8973b48
Fix BLAS++ vendor default on macOS
lorisercole Aug 21, 2026
0f3a317
Build TAMM/ExaChem with Makefiles generator, not Ninja
lorisercole Aug 21, 2026
a896727
Point TAMM's Eigen3 dependency at the apt-installed libeigen3-dev
lorisercole Aug 21, 2026
5f8f9fc
Fix SIGPIPE abort in Eigen3Config.cmake discovery
lorisercole Aug 21, 2026
370d4c5
Seed Eigen3 into INSTALL_PREFIX instead of using a plain -DEigen3_DIR…
lorisercole Aug 21, 2026
8492b22
Fix off-by-one path bug in Eigen3 prefix computation
lorisercole Aug 21, 2026
bc3e886
Update vcpkg baseline commit
lorisercole Aug 24, 2026
33cd2a6
Rename install_cpp_dependencies.sh to install-cpp-deps.sh and make BL…
lorisercole Aug 24, 2026
cf80a98
Update comments referencing renamed install scripts
lorisercole Aug 24, 2026
83be759
Update GHA workflow for renamed install scripts
lorisercole Aug 24, 2026
803c464
Move OS-aware BLAS_VENDOR default from install-cpp-deps.sh to the GHA…
lorisercole Aug 24, 2026
fef93fe
Remove unnecessary Free up disk space step
lorisercole Aug 24, 2026
f24789d
Merge ExaChem install into the C++ dependencies step and cache them t…
lorisercole Aug 24, 2026
c6d0808
Install ExaChem/TAMM into CPP_DEPS_PREFIX to let CMSB reuse existing …
lorisercole Aug 24, 2026
8d474c5
Seed numactl (numa.h + libnuma.so) into INSTALL_PREFIX for CMSB reuse
lorisercole Aug 24, 2026
9848673
Update LD_LIBRARY_PATH to include lib64 for ExaChem dependencies and …
lorisercole Aug 24, 2026
62e8671
Document the dependency list in install-cpp-deps.sh's docstring
lorisercole Aug 24, 2026
960cff9
Revert: keep ExaChem/TAMM in its own EXACHEM_INSTALL_PREFIX
lorisercole Aug 24, 2026
84dcef6
Pass -DCMSB_DEBUG_CMAKE=OFF so TAMM's CMSB reuses system BLAS/LAPACK
lorisercole Aug 24, 2026
eeda909
Silence GNU tar's unknown-keyword warning when extracting LibInt2
lorisercole Aug 24, 2026
b850cdd
Revert -DCMSB_DEBUG_CMAKE=OFF: breaks GlobalArrays' hard BLAS_Externa…
lorisercole Aug 24, 2026
857feb4
Trim comment on tar warning silencing
lorisercole Aug 24, 2026
7e52424
Patch CMSB to reuse system BLAS/LAPACK instead of rebuilding
lorisercole Aug 24, 2026
37f2c67
Revert "Patch CMSB to reuse system BLAS/LAPACK instead of rebuilding"
lorisercole Aug 24, 2026
e4e269f
Document second CMSB blocker found while investigating BLAS reuse
lorisercole Aug 24, 2026
93bc051
Patch CMSB's BLAS/LAPACK resolution only, reuse system OpenBLAS
lorisercole Aug 24, 2026
e60b101
Temporarily split C++ deps and ExaChem caching for faster debugging
lorisercole Aug 24, 2026
d17084b
Point CMSB at CPP_DEPS_PREFIX for SPDLOG/EcpInt reuse too
lorisercole Aug 24, 2026
96d90c2
Revert SPDLOG/EcpInt ROOT fix: breaks ExaChem's consumption of tamm-c…
lorisercole Aug 24, 2026
671d156
Patch CMSB to reuse system spdlog/EcpInt too (candidate for upstreaming)
lorisercole Aug 24, 2026
734f346
Patch CMSB to reuse system nlohmann_json (NJSON) too
lorisercole Aug 24, 2026
c7c6636
Don't reuse system nlohmann_json: apt version is API-incompatible
lorisercole Aug 24, 2026
dad8ff1
Build nlohmann_json 3.12.0 explicitly, remove apt's incompatible one
lorisercole Aug 25, 2026
49fcc9d
Merge the 3 CMSB dependency-reuse patches into one
lorisercole Aug 25, 2026
308e7b1
Build GoogleTest and Catch2 explicitly, cache alongside other C++ deps
lorisercole Aug 25, 2026
63a5ef4
Scope ExaChem PATH/LD_LIBRARY_PATH to the "Run Python tests" step only
lorisercole Aug 25, 2026
444f62e
Remove useless free up disk space step
lorisercole Aug 25, 2026
752f186
Re-merge C++ dependencies and ExaChem install/cache steps
lorisercole Aug 25, 2026
4c2350e
Bump Catch2 to v3.3.2 in cgmanifest.json, matching what's built
lorisercole Aug 25, 2026
35bb4ec
Hardcode TAMM/ExaChem commits in install-exachem.sh, drop from cgmani…
lorisercole Aug 25, 2026
d0b1c25
Pin CMSB and enforce hard-fail on reuse for spdlog/EcpInt/NJSON
lorisercole Aug 25, 2026
15ab964
Reuse numactl in CMSB too, matching qaml's pipeline
lorisercole Aug 25, 2026
f793c67
Fix numactl reuse: Findnumactl default-path fallback, not ROOT-forwar…
lorisercole Aug 26, 2026
a6a515e
ADO: change image defaults
lorisercole Aug 26, 2026
83b33c3
Add ExaChem build/test support to ADO python-wheels pipeline (Linux x…
lorisercole Aug 26, 2026
8a25344
Gate Build_windows_x86_64_deps/Build_linux_x86_64_exachem on matrix m…
lorisercole Aug 26, 2026
a0e2da1
ADO: default network policy changed - avoid warning
lorisercole Aug 26, 2026
a058905
Fix ExaChem BLIS+LibFLAME linker conflict (multiple definition of LAP…
lorisercole Aug 26, 2026
0a13c06
Trim comment verbosity from ExaChem BLIS/LAPACK fix
lorisercole Aug 26, 2026
25ba040
Fix LAPACK_PREFERENCE_LIST forwarding: use bundle_cmake_list, not bun…
lorisercole Aug 26, 2026
79c71cd
Fix GlobalArrays transitive LAPACK conflict (BLIS+libFLAME)
lorisercole Aug 26, 2026
5b4d9cd
Fix GA LAPACK_PREFERENCE_LIST guard: two overwrites, not one
lorisercole Aug 26, 2026
fae1ec8
Fix GA install_linalg_modules() missing FindFLAME.cmake
lorisercole Aug 26, 2026
f98f85f
Remove ExaChem build step's automatic retry
lorisercole Aug 26, 2026
ebea29f
Fix GA install_linalg_modules() missing FindFLAME.cmake
lorisercole Aug 26, 2026
0ced97c
Fix ExaChem artifact download path (1ES PT input runs before checkout)
lorisercole Aug 27, 2026
1f59d9e
Smoke test: print ldd output, run a minimal ExaChem example
lorisercole Aug 27, 2026
fbce579
simplify test-pip-wheels
lorisercole Aug 27, 2026
aefe657
Build GlobalArrays ourselves (real .patch, not a live CMSB PATCH_COMM…
lorisercole Aug 27, 2026
0df477f
Fix GHA regression: GA build requires LINALG_PREFIX to exist
lorisercole Aug 27, 2026
dfad775
Fix ExaChem runtime deps check in test-pip-wheels.sh
lorisercole Aug 27, 2026
bf21b80
Fix stale cache key on test-with-qdk-branch job; correct ExaChem comment
lorisercole Aug 27, 2026
b7f2b2f
Document that cmsb patch fix #1 (BLAS/LAPACK) is currently unexercised
lorisercole Aug 27, 2026
873549f
install-exachem.sh: fix idempotency/cleanup gaps, document pin govern…
lorisercole Aug 27, 2026
7ad74df
Make linux_x86_64 dependsOn condition explicit, not an implicit else
lorisercole Aug 27, 2026
c356a60
Remove Free up disk space step from ADO build-pip-wheels.yml
lorisercole Aug 27, 2026
d9e0717
Make test-with-qdk-branch reuse the coverage job's build instead of r…
lorisercole Aug 27, 2026
dab0b07
Remove stale TODO about gating ExaChem behind run_slow_tests
lorisercole Aug 27, 2026
d16f52e
Simplify comments: state the reason, not implementation minutiae
lorisercole Aug 27, 2026
29230ed
Fix test-with-qdk-branch: restore executable bit lost by download-art…
lorisercole Aug 27, 2026
edb9dc0
Track GlobalArrays/TAMM/ExaChem/CMSB in cgmanifest.json
lorisercole Aug 27, 2026
a6efa5a
Read TAMM/ExaChem/CMSB/GlobalArrays pins from cgmanifest.json
lorisercole Aug 27, 2026
e20ff79
Address Copilot PR review findings
lorisercole Aug 27, 2026
0243e7e
Merge remote-tracking branch 'origin/main' into ler/feat/exachem-ci
lorisercole Aug 31, 2026
459c794
Centralize install-script helpers; shallow-fetch pins; verify Libint …
lorisercole Aug 31, 2026
d7f0598
Merge remote-tracking branch 'origin/main' into new
lorisercole Aug 31, 2026
836d0ee
Merge remote-tracking branch 'origin/main' into ler/feat/exachem-ci
lorisercole Sep 1, 2026
6c5426b
Win ARM GHA: adjust memory-aware parallelism to avoi error C1060 (com…
lorisercole Sep 1, 2026
88d808a
Fix ExaChem artifact download clobbered by checkout relocation
lorisercole Sep 1, 2026
9c16c19
Hardcode BLIS/libflame versions; read HDF5 pin from cgmanifest.json
lorisercole Sep 1, 2026
6dae570
Include dockerImage in ExaChem's cache key
lorisercole Sep 1, 2026
1f5cb79
Forward BUILD_TYPE to install-blaspp.sh/install-lapackpp.sh
lorisercole Sep 1, 2026
55686d2
Prefer sha1sum over shasum; fix LD_LIBRARY_PATH trailing colon
lorisercole Sep 1, 2026
0b2633c
Drop exachem-libint2-deprecated.patch (obsolete since Libint 2.13.1)
lorisercole Sep 1, 2026
79d4c4a
Prefer sha256sum over shasum in install-blis.sh/install-libflame.sh […
lorisercole Sep 1, 2026
91b0ede
Add exachem-libint2-datadir.patch: DATADIR->LIBINT_DATADIR rename
lorisercole Sep 1, 2026
d41ebc3
Enforce memory-aware build parallelism for Linux and Windows jobs to …
lorisercole Sep 1, 2026
7667b0f
Unify install-cpp-deps.sh parallelism with the pipeline's memory-awar…
lorisercole Sep 1, 2026
7269520
Raise memory-aware build parallelism budget from 7 to 8 GB/job
lorisercole Sep 1, 2026
b929d0a
update parallelism
lorisercole Sep 1, 2026
6d8cb00
Merge remote-tracking branch 'origin/main' into ler/feat/exachem-ci
lorisercole Sep 2, 2026
db74eec
Include common.sh in C++ deps/ExaChem cache keys
lorisercole Sep 2, 2026
281ebc2
Scope memory-aware JOBS to the ExaChem/C++ deps build step only
lorisercole Sep 2, 2026
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
92 changes: 11 additions & 81 deletions .devcontainer/scripts/install_cpp_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ fi
CGMANIFEST="$1"
MACIS_CGMANIFEST="$2"

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PIPELINE_INSTALL_SCRIPTS="$(cd "${SCRIPT_DIR}/../../.pipelines/install-scripts" && pwd)"
source "${PIPELINE_INSTALL_SCRIPTS}/common.sh"

if [[ ! -f "$CGMANIFEST" ]]; then
echo "Error: cgmanifest.json not found at $CGMANIFEST"
exit 1
Expand All @@ -37,7 +41,9 @@ BUILD_DIR="${BUILD_DIR:-/tmp/qdk_deps_build}"
INSTALL_PREFIX="${INSTALL_PREFIX:-/usr/local}"
BUILD_TYPE="${BUILD_TYPE:-Release}"
BUILD_SHARED_LIBS="${BUILD_SHARED_LIBS:-OFF}" # Default to static

MARCH="${MARCH:-native}"
BLAS_VENDOR="${BLAS_VENDOR:-openblas}" # matches the OpenBLAS the devcontainer installs via apt (see Dockerfile)
LIBINT_JOBS=${LIBINT_JOBS:-4} # Limit libint build jobs to 4 due to high memory usage
KEEP_BUILD_DIR="${KEEP_BUILD_DIR:-0}"

PARALLELISM_HELPER="/usr/local/share/qdk/parallelism.sh"
Expand Down Expand Up @@ -66,54 +72,6 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
MAC_BUILD="ON"
fi

# Helper function to extract commit hash from cgmanifest by repository URL pattern
get_commit_hash() {
local manifest="$1"
local repo_pattern="$2"
python3 -c "
import json
with open('$manifest') as f:
data = json.load(f)
for reg in data['registrations']:
comp = reg['component']
if comp['type'] == 'git' and '$repo_pattern' in comp['git'].get('repositoryUrl', ''):
print(comp['git']['commitHash'].strip())
break
"
}

# Helper function to extract tag from cgmanifest by repository URL pattern
get_tag() {
local manifest="$1"
local repo_pattern="$2"
python3 -c "
import json
with open('$manifest') as f:
data = json.load(f)
for reg in data['registrations']:
comp = reg['component']
if comp['type'] == 'git' and '$repo_pattern' in comp['git'].get('repositoryUrl', ''):
print(comp['git'].get('tag', ''))
break
"
}

# Helper function to get download URL for "other" type components
get_download_url() {
local manifest="$1"
local name="$2"
python3 -c "
import json
with open('$manifest') as f:
data = json.load(f)
for reg in data['registrations']:
comp = reg['component']
if comp['type'] == 'other' and comp['other'].get('name') == '$name':
print(comp['other']['downloadUrl'])
break
"
}

# Read versions from cpp cgmanifest
SPDLOG_COMMIT=$(get_commit_hash "$CGMANIFEST" "gabime/spdlog")
if [[ -z "$SPDLOG_COMMIT" ]]; then
Expand Down Expand Up @@ -186,44 +144,16 @@ make install
cd "$BUILD_DIR"
rm -rf spdlog

# Install blaspp
# Install blaspp / lapackpp
echo "=== Installing blaspp ==="
git clone https://github.com/icl-utk-edu/blaspp.git blaspp
cd blaspp
git checkout "$BLASPP_COMMIT"
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
-DCMAKE_INSTALL_PREFIX="$INSTALL_PREFIX" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DBUILD_TESTING=OFF \
-DBUILD_SHARED_LIBS="$BUILD_SHARED_LIBS"
make -j"$JOBS"
make install
cd "$BUILD_DIR"
rm -rf blaspp
bash "${PIPELINE_INSTALL_SCRIPTS}/install-blaspp.sh" "$INSTALL_PREFIX" "$BLASPP_COMMIT" "$BLAS_VENDOR" "$MARCH" "$BUILD_SHARED_LIBS" "$BUILD_TYPE"

# Install lapackpp
echo "=== Installing lapackpp ==="
git clone https://github.com/icl-utk-edu/lapackpp.git lapackpp
cd lapackpp
git checkout "$LAPACKPP_COMMIT"
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
-DCMAKE_INSTALL_PREFIX="$INSTALL_PREFIX" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DBUILD_TESTING=OFF \
-DBUILD_SHARED_LIBS="$BUILD_SHARED_LIBS"
make -j"$JOBS"
make install
cd "$BUILD_DIR"
rm -rf lapackpp
bash "${PIPELINE_INSTALL_SCRIPTS}/install-lapackpp.sh" "$INSTALL_PREFIX" "$LAPACKPP_COMMIT" "$MARCH" "$BUILD_SHARED_LIBS" "$BUILD_TYPE"

# Install libint2
echo "=== Installing libint2 ==="
LIBINT_TARBALL=$(basename "$LIBINT_URL")
wget -q "$LIBINT_URL"
LIBINT_TARBALL=$(download_and_verify "$CGMANIFEST" "Libint") || exit 1
tar xzf "$LIBINT_TARBALL"
# The tarball extracts to a single top-level libint-* directory; detect it dynamically.
# Find the actual extracted directory (excluding macOS metadata files starting with ._)
Expand Down
Loading
Loading