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 \