From 06770da4b30810ef9bb177b478660ab5afca7273 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 7 Jul 2026 15:17:16 +0200 Subject: [PATCH] Dev/fix workflow cmake cache (#1484) * Validate restored apt packages in CI before CMake configuration Add checks for cached apt dependencies to catch incomplete installations. A temporary Ubuntu mirror/package index mismatch caused apt installation to fail, but the failure was not detected before CMake ran. * continue on error uncommented to see that it actually restores the previous step. The previous commit was to check the error message on failure to install the packages * repair didnt run earlier.. checking on condition from custom message * Remove redundant HDF5 verification step from CI. And fix broken repairs half configured dependenceies before reinstalling requested packages * fix the simulator tests workflow for the same reason as previous commit (not failing for actual failure to restore installation from cache) * removed redundant checks for repair as we are not repairing anymore * use a different cache (changing version) * changing ubuntu back to 22 instead of 24 (latest) because of 'E: Failed to fetch mirror+file:/etc/apt/apt-mirrors.txt/pool/main/c/curl/libcurl4-openssl-dev_8.5.0-2ubuntu10.9_amd64.deb 404 Not Found' * cache at specific version * version typo * go back to original version number (was changed earlier to create a new cache everytime) * added the other yaml * minor, but recreating new caches with v1.0 version --- .github/workflows/cmake.yaml | 33 +++++++++++++++++++++++++++++++- .github/workflows/run_tests.yaml | 28 ++++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yaml b/.github/workflows/cmake.yaml index d3eeee0bd..99db098d8 100644 --- a/.github/workflows/cmake.yaml +++ b/.github/workflows/cmake.yaml @@ -21,11 +21,42 @@ jobs: cache: 'pip' - run: pip install pytest numpy colorama - - uses: awalsh128/cache-apt-pkgs-action@latest + # using a stable action version instead of latest to create/restore cache for now + - uses: awalsh128/cache-apt-pkgs-action@v1.6.1 with: packages: libhdf5-dev qtbase5-dev qt5-qmake libqt5svg5-dev libpng-dev libtiff-dev libfmt-dev version: 1.0 + # verify packages restored from cache are installed. + # This catches incomplete apt installs after cache restore. + - name: Verify apt packages + id: verify_packages + run: | + failed="" + + for pkg in \ + libhdf5-dev \ + qtbase5-dev \ + qt5-qmake \ + libqt5svg5-dev \ + libpng-dev \ + libtiff-dev \ + libfmt-dev + do + if ! dpkg -s "$pkg" >/dev/null 2>&1; then + echo "Missing: $pkg" + failed="$failed $pkg" + fi + done + + + if [ -n "$failed" ]; then + echo "Missing packages after cache restore: $failed. Try deleting the cache and rerunning the workflow." + exit 1 + else + echo "All apt packages are installed" + fi + - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 96d04205e..138d32e7e 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -20,11 +20,37 @@ jobs: cache: 'pip' - run: pip install pytest numpy colorama pyzmq - - uses: awalsh128/cache-apt-pkgs-action@latest + # using a stable action version instead of latest to create/restore cache for now + - uses: awalsh128/cache-apt-pkgs-action@v1.6.1 with: packages: libhdf5-dev libfmt-dev version: 1.0 + # verify packages restored from cache are installed. + # This catches incomplete apt installs after cache restore. + - name: Verify apt packages + id: verify_packages + run: | + failed="" + + for pkg in \ + libhdf5-dev \ + libfmt-dev + do + if ! dpkg -s "$pkg" >/dev/null 2>&1; then + echo "Missing: $pkg" + failed="$failed $pkg" + fi + done + + if [ -n "$failed" ]; then + echo "Missing packages after cache restore: $failed. Try deleting the cache and rerunning the workflow." + exit 1 + else + echo "All apt packages are installed" + fi + + - name: Configure CMake run: | cmake -B ${{github.workspace}}/build \