fix github action #241
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: CI | |
on: | |
workflow_dispatch: | |
push: | |
branches-ignore: | |
- 'test' | |
pull_request: | |
env: | |
CMAKE_VERSION: 3.22.3 | |
OMP_NUM_THREADS: 1 | |
jobs: | |
standard: | |
if: ${{ true }} | |
strategy: | |
fail-fast: false | |
matrix: | |
runs-on: [ubuntu-latest] | |
python: | |
- 3.7 | |
- 3.8 | |
- 3.9 | |
- '3.10' | |
include: | |
- test_install: false | |
- test_bdist_wheel: false | |
- python: 3.9 | |
test_install: true | |
VENV_PYTHON_TEST_PKGS: | |
- python: 3.8 | |
test_bdist_wheel: true | |
name: "Python ${{ matrix.python }} • ${{ matrix.runs-on }} • x64" | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
if: env.ACT != 'true' | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/*¨ | |
- name: Setup Python ${{ matrix.python }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
cache: 'pip' | |
- name: Prepare env | |
run: | | |
python3 -m pip install -U wheel build | |
sudo apt-get update && sudo apt-get install -y libboost-filesystem-dev --no-install-recommends | |
if [ ! "$(cat /etc/os-release | grep VERSION_ID | cut -d= -f2 | tr -d '"')" == "20.04" ]; then | |
sudo apt-get install -y glibc-tools --no-install-recommends | |
fi | |
- name: Setup CCache | |
uses: hendrikmuhs/ccache-action@v1.2.5 | |
with: | |
key: ${{ matrix.runs-on }}-python-${{ matrix.python }}-ccache | |
max-size: 75M | |
- name: Cache CMake installer | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh | |
key: cmake-${{ env.CMAKE_VERSION }} | |
- name: Install latest CMake | |
run: | | |
if [ ! -e cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh ]; then | |
url_base='https://github.com/Kitware/CMake/releases/download' | |
wget ${url_base}/v${{ env.CMAKE_VERSION }}/cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh | |
fi | |
sudo bash cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh --skip-license --prefix=/usr/local | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: >- | |
${{ matrix.runs-on }}-python-${{ matrix.python }}-python-venv | |
-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: >- | |
${{ matrix.runs-on }}-python-${{ matrix.python }}-third-party-libs-${{ hashFiles('third_party/**') }} | |
-${{ secrets.cache_ver }} | |
- name: Configure | |
run: | | |
./build_locally.sh --debug-cmake --ccache --no-gitee --debug \ | |
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install" \ | |
--cmake-no-registry \ | |
-- -DPython_FIND_UNVERSIONED_NAMES:STRING='FIRST' | |
- name: Build | |
run: ./build_locally.sh --debug-cmake --ccache | |
- name: Install | |
run: ./build_locally.sh --install # NB: no need to pass the other parameters | |
# ------------------------------------------------------------------------ | |
- name: Run C++ tests | |
run: | | |
cd build | |
catchsegv ctest --output-on-failure | |
# ------------------------------------------------------------------------ | |
- name: Test (setup.py) installation | |
if: matrix.test_bdist_wheel | |
env: | |
VENV_PYTHON_TEST_PKGS: ${{ matrix.VENV_PYTHON_TEST_PKGS }} | |
run: | | |
./build.sh --debug-cmake \ | |
--fast-build --no-build-isolation --no-delocate --ccache --cmake-no-registry --no-gitee | |
# ============================================================================ | |
macos: | |
if: ${{ true }} | |
runs-on: macos-11 | |
name: "MacOS 11 • ${{ matrix.xcode }} • x64" | |
env: | |
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" | |
CC: /usr/bin/clang | |
CXX: /usr/bin/clang++ | |
strategy: | |
fail-fast: false | |
matrix: | |
xcode: | |
- "Xcode_11.7" # Not available on macos-12 | |
- "Xcode_12.4" # Not available on macos-12 | |
- "Xcode_12.5.1" # Not available on macos-12 | |
# - "Xcode_13.0" # Not available on macos-12 | |
- "Xcode_13.1" | |
- "Xcode_13.2.1" | |
# - "Xcode_13.3.1" # macos-12 only | |
# - "Xcode_13.4.1" # macos-12 only | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
if: env.ACT != 'true' | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/*¨ | |
- name: Setup Python ${{ matrix.python }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
cache: 'pip' | |
- name: Prepare env | |
run: | | |
python3 -m pip install -U wheel build | |
brew install libomp ccache | |
- name: Setup CCache | |
uses: hendrikmuhs/ccache-action@v1.2.5 | |
with: | |
key: macos-${{ matrix.xcode }}-ccache | |
max-size: 75M | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: macos-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: macos-${{ matrix.xcode }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Configure | |
run: >- | |
./build_locally.sh --debug-cmake --ccache --only-pytest --no-gitee --debug | |
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install" | |
--cmake-no-registry | |
- name: Build | |
run: ./build_locally.sh --debug-cmake --ccache | |
- name: Install | |
run: ./build_locally.sh --install # NB: no need to pass the other parameters | |
- name: Run C++ tests | |
run: | | |
cd build | |
ctest --output-on-failure | |
# ============================================================================ | |
gcc: | |
if: ${{ true }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
gcc: | |
- 7 # C++17 earliest version | |
- 8 | |
- 9 | |
- 10 | |
- 11 | |
- 12 | |
name: "GCC ${{ matrix.gcc }} • x64" | |
container: "gcc:${{ matrix.gcc }}" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git config --global --add safe.directory /__w/mindquantum/mindquantum | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Prepare env | |
run: > | |
apt-get update && apt-get install -y python3-dev python3-pip python3-setuptools python3-wheel python3-venv | |
libboost-filesystem-dev gdb --no-install-recommends | |
- name: Setup CCache | |
uses: hendrikmuhs/ccache-action@v1.2.5 | |
with: | |
key: gcc-${{ matrix.gcc }}-ccache | |
max-size: 75M | |
- name: Cache CMake installer | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh | |
key: cmake-${{ env.CMAKE_VERSION }} | |
- name: Install latest CMake | |
run: | | |
if [ ! -e cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh ]; then | |
url_base='https://github.com/Kitware/CMake/releases/download' | |
wget ${url_base}/v${{ env.CMAKE_VERSION }}/cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh | |
fi | |
bash cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh --skip-license --prefix=/usr/local | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: >- | |
gcc-${{ matrix.gcc }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }} | |
-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: gcc-${{ matrix.gcc }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Configure | |
run: >- | |
./build_locally.sh --debug-cmake --ccache --only-pytest --no-gitee --debug | |
--configure-only -c --logging --clean-3rdparty --prefix="${{ github.workspace }}/install" | |
--cmake-no-registry -- -DENABLE_STACK_PROTECTION=ON | |
- name: Build | |
run: ./build_locally.sh --debug-cmake --ccache | |
- name: Install | |
run: ./build_locally.sh --install # NB: no need to pass the other parameters | |
- name: Run debugger in case of failure | |
if: ${{ failure() }} | |
run: | | |
cd build | |
ctest --output-on-failure > ctest_output.txt || true | |
sed -e '1,/The following tests FAILED:/ d' ctest_output.txt \ | |
| cut -d '-' -f2 \ | |
| sed -e 's/ (SEGFAULT)//' -e 's/ *$//g' -e 's/^ *//g' > failed_tests.txt | |
ctest -V -N \ | |
| grep 'Test command' \ | |
| cut -d ':' -f3 \ | |
| sed -e 's/ *$//g' -e 's/^ *//g' > test_commands.txt | |
while read name; do | |
echo "Processing $name" | |
cmd=$(grep "$name" test_commands.txt) | |
if [ -z "$cmd" ]; then | |
echo " -> skipping because cannot find command in command list!" | |
continue | |
fi | |
# lines are of the form /path/to/test/executable "Some Filter" | |
program=$(echo "$cmd" \ | |
| cut -d'"' -f1\ | |
| sed -e 's/ *$//g' -e 's/^ *//g') | |
args=$(echo "$cmd" \ | |
| sed -e "s|$program||" -e 's/ *$//g' -e 's/^ *//g') | |
if [ -z "$program" ]; then | |
echo " -> skipping because cannot extract program from command line!" | |
continue | |
elif [ ! -x "$program" ]; then | |
echo " -> skipping because program is not an executable! ($program)" | |
continue | |
fi | |
gdb --batch -ex 'run' -ex 'thread apply all bt' -ex 'quit' --args "$program" "$args" | |
# lldb --batch -o "file $program" -o "run $args" -k 'bt all' -o 'quit' | |
done < failed_tests.txt | |
- name: Save tests executable in case of failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-executables-gcc-${{ matrix.gcc }} | |
retention-days: 5 | |
path: | | |
build/tests | |
!build/tests/**/Makefile | |
!build/tests/**/*.* | |
# ============================================================================ | |
clang: | |
if: ${{ true }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
clang: | |
- 7 | |
- 8 | |
- 9 | |
- 10 # first version for full C++17 support (with patches) | |
- 11 | |
- 12 | |
- 13 | |
- 14 | |
env: | |
CC: clang | |
CXX: clang++ | |
name: "Clang ${{ matrix.clang }} • x64" | |
container: "silkeh/clang:${{ matrix.clang }}" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install git | |
run: | | |
apt-get update && apt-get install -y git | |
- name: install libomp-${{ matrix.clang }}-dev | |
run: | | |
apt-get update && apt-get install -y libomp-${{ matrix.clang }}-dev | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
ls -alth | |
# pwd | |
# git config --global --add safe.directory /__w/mindquantum/mindquantum | |
# git fetch --prune --unshallow | |
# git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Prepare env | |
run: > | |
apt-get update && apt-get install -y python3-dev python3-pip python3-setuptools python3-wheel python3-venv | |
gdb --no-install-recommends | |
- name: Setup CCache | |
uses: hendrikmuhs/ccache-action@v1.2.5 | |
with: | |
key: clang-${{ matrix.clang }}-ccache | |
max-size: 75M | |
- name: Cache CMake installer | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh | |
key: cmake-${{ env.CMAKE_VERSION }} | |
- name: Install latest CMake | |
run: | | |
if [ ! -e cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh ]; then | |
url_base='https://github.com/Kitware/CMake/releases/download' | |
wget ${url_base}/v${{ env.CMAKE_VERSION }}/cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh | |
fi | |
bash cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh --skip-license --prefix=/usr/local | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: >- | |
clang-${{ matrix.clang }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }} | |
-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: clang-${{ matrix.clang }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Configure (Clang) | |
if: matrix.clang != '8' | |
run: >- | |
./build_locally.sh --debug-cmake --ccache --only-pytest --no-gitee --debug | |
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install" | |
--cmake-no-registry -- -DENABLE_STACK_PROTECTION=ON | |
# Due to compiler segmentation fault with Clang 8 in debug mode | |
- name: Configure (Clang 8) | |
if: matrix.clang == '8' | |
run: >- | |
./build_locally.sh --debug-cmake --ccache --only-pytest --no-gitee | |
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install" | |
--cmake-no-registry -- -DENABLE_STACK_PROTECTION=ON | |
- name: Build | |
run: ./build_locally.sh --debug-cmake --ccache | |
- name: Install | |
run: ./build_locally.sh --install # NB: no need to pass the other parameters | |
- name: Run C++ tests | |
run: | | |
cd build | |
catchsegv ctest --output-on-failure | |
- name: Run debugger in case of failure | |
if: ${{ failure() }} | |
run: | | |
cd build | |
ctest --output-on-failure > ctest_output.txt || true | |
sed -e '1,/The following tests FAILED:/ d' ctest_output.txt \ | |
| cut -d '-' -f2 \ | |
| sed -e 's/ (SEGFAULT)//' -e 's/ *$//g' -e 's/^ *//g' > failed_tests.txt | |
ctest -V -N \ | |
| grep 'Test command' \ | |
| cut -d ':' -f3 \ | |
| sed -e 's/ *$//g' -e 's/^ *//g' > test_commands.txt | |
while read name; do | |
echo "Processing $name" | |
cmd=$(grep "$name" test_commands.txt) | |
if [ -z "$cmd" ]; then | |
echo " -> skipping because cannot find command in command list!" | |
continue | |
fi | |
# lines are of the form /path/to/test/executable "Some Filter" | |
program=$(echo "$cmd" \ | |
| cut -d'"' -f1\ | |
| sed -e 's/ *$//g' -e 's/^ *//g') | |
args=$(echo "$cmd" \ | |
| sed -e "s|$program||" -e 's/ *$//g' -e 's/^ *//g') | |
if [ -z "$program" ]; then | |
echo " -> skipping because cannot extract program from command line!" | |
continue | |
fi | |
gdb --batch -ex 'run' -ex 'thread apply all bt' -ex 'quit' --args "$program" "$args" | |
# lldb --batch -o "file $program" -o "run $args" -k 'bt all' -o 'quit' | |
done < failed_tests.txt | |
- name: Save tests executable in case of failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-executables-clang-${{ matrix.clang }} | |
retention-days: 5 | |
path: | | |
build/tests | |
!build/tests/**/Makefile | |
!build/tests/**/*.* | |
# ============================================================================ | |
msvc: | |
if: ${{ true }} | |
runs-on: windows-latest | |
name: "MSVC • x64" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Enable Developer Command Prompt | |
uses: ilammy/msvc-dev-cmd@v1.12.0 | |
- name: Install Scoop && Scoop packages | |
run: | | |
iwr -useb get.scoop.sh -outfile 'install.ps1' | |
.\install.ps1 -RunAsAdmin | |
Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH | |
scoop install ccache | |
- name: Get Date | |
id: get-date | |
shell: bash | |
run: echo "date=$(date -Iseconds)" >> $GITHUB_OUTPUT | |
- name: Restore cache for CCache | |
if: env.ACT != 'true' | |
id: ccache-cache | |
uses: martijnhols/actions-cache/restore@v3.0.11b | |
with: | |
path: ccache | |
key: msvc-ccache-${{ steps.get-date.outputs.date }} | |
restore-keys: msvc-ccache- | |
- name: Configure CCache | |
run: | | |
ccache --set-config=cache_dir="$PWD/ccache" | |
ccache --set-config=max_size=250M | |
ccache --set-config=compression=true | |
ccache -pz | |
ccache -sv | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: msvc-python-venv-${{ hashFiles('build_locally.ps1', 'scripts/build/**.ps1') }}-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: msvc-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Configure | |
env: | |
CC: cl | |
CXX: cl | |
run: >- | |
./build_locally.ps1 -DebugCmake -Ninja -CCache -OnlyPytest -NoGitee | |
-ConfigureOnly -C -Clean3rdParty -Prefix "${{ github.workspace }}/install" | |
-CMakeNoRegistry | |
-DUSE_PARALLEL_STL=OFF | |
- name: Build | |
run: ./build_locally.ps1 -DebugCmake -Ninja -CCache | |
- name: Install | |
run: ./build_locally.ps1 -Install | |
# - name: Run C++ tests | |
# run: | | |
# cd build | |
# ctest --output-on-failure | |
- name: Print CCache statistics | |
run: | | |
ccache -sv | |
- name: Save cache for CCache | |
if: env.ACT != 'true' | |
uses: martijnhols/actions-cache/save@v3.0.11b | |
with: | |
path: ccache | |
key: msvc-ccache-${{ steps.get-date.outputs.date }} | |
# ============================================================================ | |
clang-cl: | |
if: ${{ true }} | |
runs-on: windows-latest | |
name: "Clang-Cl • x64" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Enable Developer Command Prompt | |
uses: ilammy/msvc-dev-cmd@v1.12.0 | |
- name: Install Scoop && Scoop packages | |
run: | | |
iwr -useb get.scoop.sh -outfile 'install.ps1' | |
.\install.ps1 -RunAsAdmin | |
Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH | |
scoop install ccache | |
- name: Get Date | |
id: get-date | |
shell: bash | |
run: echo "date=$(date -Iseconds)" >> $GITHUB_OUTPUT | |
- name: Restore cache for CCache | |
if: env.ACT != 'true' | |
id: ccache-cache | |
uses: martijnhols/actions-cache/restore@v3.0.11b | |
with: | |
path: ccache | |
key: clang-cl-ccache-${{ steps.get-date.outputs.date }} | |
restore-keys: clang-cl-ccache- | |
- name: Configure CCache | |
run: | | |
ccache --set-config=cache_dir="$PWD/ccache" | |
ccache --set-config=max_size=70M | |
ccache --set-config=compression=true | |
ccache -pz | |
ccache -sv | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: > | |
clang-cl-python-venv-${{ hashFiles('build_locally.ps1', 'scripts/build/**.ps1') }}-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: clang-cl-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Configure | |
env: | |
CC: clang-cl | |
CXX: clang-cl | |
run: >- | |
./build_locally.ps1 -DebugCmake -Ninja -CCache -OnlyPytest -NoGitee | |
-ConfigureOnly -C -Clean3rdParty -Prefix "${{ github.workspace }}/install" | |
-CMakeNoRegistry -Verbose | |
-DUSE_PARALLEL_STL=OFF | |
- name: Build | |
run: ./build_locally.ps1 -DebugCmake -Ninja -CCache -Verbose | |
- name: Install | |
run: ./build_locally.ps1 -Install | |
- name: Run C++ tests | |
run: | | |
cd build | |
ctest --output-on-failure | |
- name: Print CCache statistics | |
run: | | |
ccache -sv | |
- name: Save cache for CCache | |
if: env.ACT != 'true' | |
uses: martijnhols/actions-cache/save@v3.0.11b | |
with: | |
path: ccache | |
key: clang-cl-ccache-${{ steps.get-date.outputs.date }} | |
# ============================================================================ | |
mingw64: | |
if: ${{ true }} | |
runs-on: windows-2022 | |
strategy: | |
fail-fast: false | |
name: "MINGW64 • x64" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
# - name: Setup CCache | |
# uses: hendrikmuhs/ccache-action@v1.2.5 | |
# with: | |
# key: mingw64-ccache | |
# max-size: 75M | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: >- | |
mingw64-python-venv-${{ hashFiles('build_locally.ps1', 'scripts/build/**.ps1') }}-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: mingw64-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Set up MinGW64 | |
uses: egor-tensin/setup-mingw@v2 | |
id: mingw64-setup | |
continue-on-error: true | |
with: | |
platform: x64 | |
- name: Setup CC and CXX | |
if: steps.mingw64-setup.outcome == 'success' | |
env: | |
CC: ${{ steps.mingw64-setup.outputs.gcc }} | |
CXX: ${{ steps.mingw64-setup.outputs.gxx }} | |
run: | | |
"CC='$Env:CC'" >> $Env:GITHUB_ENV | |
"CXX='$Env:CXX'" >> $Env:GITHUB_ENV | |
- name: Set up MinGW64 (2nd try) | |
uses: egor-tensin/setup-mingw@v2 | |
if: steps.mingw64-setup.outcome == 'failure' | |
id: mingw64-setup-2 | |
continue-on-error: false | |
with: | |
platform: x64 | |
- name: Setup CC and CXX | |
if: steps.mingw64-setup-2.outcome == 'success' | |
env: | |
CC: ${{ steps.mingw64-setup-2.outputs.gcc }} | |
CXX: ${{ steps.mingw64-setup-2.outputs.gxx }} | |
run: | | |
"CC='$Env:CC'" >> $Env:GITHUB_ENV | |
"CXX='$Env:CXX'" >> $Env:GITHUB_ENV | |
- name: Configure | |
run: >- | |
./build_locally.ps1 -DebugCmake -Ninja -OnlyPytest -NoGitee | |
-ConfigureOnly -C -Clean3rdParty -Prefix "${{ github.workspace }}/install" | |
-CMakeNoRegistry | |
--% -G "MinGW Makefiles" -DUSE_PARALLEL_STL=OFF | |
- name: Build | |
run: ./build_locally.ps1 -DebugCmake -Ninja | |
- name: Install | |
run: ./build_locally.ps1 -Install | |
- name: Run C++ tests | |
run: | | |
cd build | |
ctest --output-on-failure | |
# ============================================================================ | |
msys2: | |
if: ${{ true }} | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- msystem: MINGW64 | |
installdeps: >- | |
git | |
patch | |
make | |
mingw-w64-x86_64-toolchain | |
mingw-w64-x86_64-cmake | |
mingw-w64-x86_64-ccache | |
mingw-w64-x86_64-gmp | |
mingw-w64-x86_64-boost | |
mingw-w64-x86_64-python | |
mingw-w64-x86_64-python-pip | |
CC: gcc | |
CXX: g++ | |
- msystem: CLANG64 | |
installdeps: >- | |
git | |
patch | |
make | |
mingw-w64-clang-x86_64-toolchain | |
mingw-w64-clang-x86_64-cmake | |
mingw-w64-clang-x86_64-ccache | |
mingw-w64-clang-x86_64-gmp | |
mingw-w64-clang-x86_64-boost | |
mingw-w64-clang-x86_64-python | |
mingw-w64-clang-x86_64-python-pip | |
CC: clang | |
CXX: clang++ | |
- msystem: UCRT64 | |
installdeps: >- | |
git | |
patch | |
make | |
mingw-w64-ucrt-x86_64-toolchain | |
mingw-w64-ucrt-x86_64-cmake | |
mingw-w64-ucrt-x86_64-ccache | |
mingw-w64-ucrt-x86_64-gmp | |
mingw-w64-ucrt-x86_64-boost | |
mingw-w64-ucrt-x86_64-python | |
mingw-w64-ucrt-x86_64-python-pip | |
CC: gcc | |
CXX: g++ | |
name: "MSYS2 ${{ matrix.msystem }} • x64" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Setup MSYS | |
uses: msys2/setup-msys2@v2 | |
with: | |
install: ${{ matrix.installdeps }} | |
msystem: ${{ matrix.msystem }} | |
path-type: strict | |
update: false | |
- name: Get Date | |
id: get-date | |
shell: msys2 {0} | |
run: echo "date=$(date -Iseconds)" >> $GITHUB_OUTPUT | |
- name: Restore cache for CCache | |
if: env.ACT != 'true' && matrix.msystem != 'MSYS' | |
id: ccache-cache | |
uses: martijnhols/actions-cache/restore@v3.0.11b | |
with: | |
path: ccache | |
key: msys2-${{ matrix.msystem }}-ccache-${{ steps.get-date.outputs.date }} | |
restore-keys: msys2-${{ matrix.msystem }}-ccache- | |
- name: Configure CCache | |
shell: msys2 {0} | |
run: | | |
which ccache | |
ccache --help | |
ccache --set-config=cache_dir="$PWD/ccache" | |
ccache --set-config=max_size=75M | |
ccache --set-config=compression=true | |
ccache -pz | |
ccache -sv | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: >- | |
msys2-${{ matrix.msystem }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }} | |
-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: msys2-${{ matrix.msystem }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Configure | |
shell: msys2 {0} | |
env: | |
CC: ${{ matrix.CC }} | |
CXX: ${{ matrix.CXX }} | |
run: >- | |
./build_locally.sh --debug-cmake --ccache -v --only-pytest --no-gitee | |
--configure-only -c --clean-3rdparty --prefix="$PWD/install" | |
--cmake-no-registry | |
-- -G "MSYS Makefiles" | |
- name: Build | |
shell: msys2 {0} | |
env: | |
CC: ${{ matrix.CC }} | |
CXX: ${{ matrix.CXX }} | |
run: ./build_locally.sh --debug-cmake --ccache | |
- name: Install | |
shell: msys2 {0} | |
env: | |
CC: ${{ matrix.CC }} | |
CXX: ${{ matrix.CXX }} | |
run: ./build_locally.sh --install | |
- name: Print CCache statistics | |
shell: msys2 {0} | |
run: | | |
ccache -sv | |
- name: Save cache for CCache | |
if: env.ACT != 'true' | |
uses: martijnhols/actions-cache/save@v3.0.11b | |
with: | |
path: ccache | |
key: msys2-${{ matrix.msystem }}-ccache-${{ steps.get-date.outputs.date }} | |
# ============================================================================ | |
cygwin: | |
if: ${{ true }} | |
runs-on: windows-latest | |
name: "Cygwin • x64" | |
env: | |
CYGWIN_NOWINPATH: 1 # only have cygwin's executables on PATH | |
CHERE_INVOKING: 1 # prevent profile script to change directory | |
CCACHE_VERSION: 4.6.1 | |
steps: | |
- run: git config --global core.autocrlf input | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Setup Cygwin | |
uses: cygwin/cygwin-install-action@v3 | |
id: setup-cygwin | |
continue-on-error: true | |
with: | |
packages: >- | |
cygwin cygwin-devel | |
autoconf automake coreutils m4 make cmake patch git | |
gawk sed libtool gettext wget curl grep dos2unix | |
gzip bzip2 tar xz | |
binutils gcc-core gcc-g++ | |
libgmp-devel libzstd-devel | |
python3 python3-devel python3-pip python3-virtualenv | |
- name: Setup Cygwin (2nd try) | |
uses: cygwin/cygwin-install-action@v3 | |
if: steps.setup-cygwin.outcome == 'failure' | |
with: | |
packages: >- | |
cygwin cygwin-devel | |
autoconf automake coreutils m4 make cmake patch git | |
gawk sed libtool gettext wget curl grep dos2unix | |
gzip bzip2 tar xz | |
binutils gcc-core gcc-g++ | |
libgmp-devel libzstd-devel | |
python3 python3-devel python3-pip python3-virtualenv | |
- name: Get Date | |
id: get-date | |
shell: bash --login -eo pipefail -o igncr {0} | |
run: echo "date=$(date -Iseconds)" >> $GITHUB_OUTPUT | |
- name: Restore cache for CCache | |
if: env.ACT != 'true' | |
id: ccache-cache | |
uses: martijnhols/actions-cache/restore@v3.0.11b | |
with: | |
path: ccache | |
key: cygwin-ccache-${{ steps.get-date.outputs.date }} | |
restore-keys: cygwin-ccache- | |
- name: Install CCache | |
shell: bash --login -eo pipefail -o igncr {0} | |
run: | | |
export PATH="$PATH:$PWD/ccache/bin" | |
if ! command -v ccache >/dev/null 2>&1 || [[ \ | |
"$(ccache --version | head -1)" != "ccache version ${CCACHE_VERSION}" ]]; then | |
echo "Building CCache ${CCACHE_VERSION} from source" | |
wget https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}.tar.gz | |
tar xf ccache-${CCACHE_VERSION}.tar.gz | |
cmake -S ccache-${CCACHE_VERSION} -B ccache-${CCACHE_VERSION}/build \ | |
-DENABLE_TESTING=OFF -DENABLE_DOCUMENTATION=OFF \ | |
-DCCACHE_DEV_MODE=OFF -DHIREDIS_FROM_INTERNET=ON \ | |
-DHAVE_ASM_SSE41=OFF -DHAVE_ASM_AVX2=OFF -DHAVE_ASM_AVX512=OFF \ | |
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$PWD/ccache" | |
make -C ccache-${CCACHE_VERSION}/build -j$(nproc) install VERBOSE=1 | |
else | |
echo 'Skip building CCcache' | |
fi | |
- name: Configure CCache | |
shell: bash --login -eo pipefail -o igncr {0} | |
run: | | |
export PATH="$PATH:$PWD/ccache/bin" | |
ccache --set-config=cache_dir="$PWD/ccache" | |
ccache --set-config=max_size=75M | |
ccache --set-config=compression=true | |
ccache -pz | |
ccache -sv | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: cygwin-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: cygwin-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Configure | |
env: | |
PATH: C:\cygwin\bin | |
shell: bash --login -eo pipefail -o igncr {0} | |
run: | | |
export PATH="$PATH:$PWD/ccache/bin" | |
./build_locally.sh --debug-cmake --ccache -v --only-pytest --no-gitee \ | |
--configure-only -c --clean-3rdparty --prefix=$PWD/install \ | |
--cmake-no-registry | |
${{ matrix.cmake_generator }} | |
- name: Build | |
shell: bash --login -eo pipefail -o igncr {0} | |
run: | | |
export PATH="$PATH:$PWD/ccache/bin" | |
./build_locally.sh --debug-cmake --ccache | |
- name: Install | |
shell: bash --login -eo pipefail -o igncr {0} | |
run: ./build_locally.sh --install | |
- name: Run C++ tests | |
run: | | |
cd build | |
ctest --output-on-failure | |
- name: Print CCache statistics | |
shell: bash --login -eo pipefail -o igncr {0} | |
run: | | |
export PATH="$PATH:$PWD/ccache/bin" | |
ccache -sv | |
- name: Save cache for CCache | |
if: env.ACT != 'true' | |
uses: martijnhols/actions-cache/save@v3.0.11b | |
with: | |
path: ccache | |
key: cygwin-ccache-${{ steps.get-date.outputs.date }} | |
- name: Restore PATH for git | |
run: Add-Content -Path $env:GITHUB_PATH -Value "C:\Program Files\Git\bin" | |
# ============================================================================ | |
cuda: | |
if: ${{ true }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
cuda: | |
- 11.0.3-devel-ubuntu20.04 | |
- 11.1.1-devel-ubuntu20.04 | |
- 11.8.0-devel-ubuntu22.04 | |
name: "CUDA ${{ matrix.cuda }} • x64" | |
container: "nvidia/cuda:${{ matrix.cuda }}" | |
steps: | |
- name: Install and setup Git | |
run: | | |
apt-get update && apt-get upgrade -y | |
DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata | |
apt-get install -y software-properties-common | |
add-apt-repository -y ppa:git-core/ppa | |
apt-get update && apt-get install -y git | |
git config --global --add safe.directory $PWD | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Install Python | |
run: >- | |
apt-get install -y python3-dev python3-pip python3-setuptools python3-wheel | |
python3-venv --no-install-recommends | |
- name: Prepare env | |
run: >- | |
apt-get install -y autoconf automake binutils coreutils m4 gawk libtool gettext wget curl | |
--no-install-recommends | |
- name: Setup CCache | |
uses: hendrikmuhs/ccache-action@v1.2.5 | |
with: | |
key: cuda-${{ matrix.cuda }}-ccache | |
max-size: 75M | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: >- | |
cuda-${{ matrix.cuda }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }} | |
-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: cuda-${{ matrix.cuda }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Configure | |
run: >- | |
./build_locally.sh --debug-cmake --gpu --ccache --only-pytest --no-gitee | |
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install" | |
--cmake-no-registry | |
- name: Build | |
run: ./build_locally.sh --debug-cmake --gpu --ccache | |
- name: Install | |
run: ./build_locally.sh --install | |
- name: Run C++ tests | |
run: | | |
make -C build test | |
# ============================================================================ | |
nvhpc: | |
if: ${{ true }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
nvhpc: | |
- 21.5-devel-cuda11.3 | |
- 22.3-devel-cuda11.6 | |
env: | |
CC: gcc | |
CXX: g++ | |
name: "NVHPC ${{ matrix.nvhpc }} • x64" | |
container: "nvcr.io/nvidia/nvhpc:${{ matrix.nvhpc }}-ubuntu20.04" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Prepare env | |
run: > | |
apt-get update && apt-get install -y python3-dev python3-pip python3-setuptools python3-wheel python3-venv | |
libboost-filesystem-dev --no-install-recommends | |
- name: Setup CCache | |
uses: hendrikmuhs/ccache-action@v1.2.5 | |
with: | |
key: nvhpc-${{ matrix.nvhpc }}-ccache | |
max-size: 75M | |
- name: Cache CMake installer | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh | |
key: cmake-${{ env.CMAKE_VERSION }} | |
- name: Install latest CMake | |
run: | | |
if [ ! -e cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh ]; then | |
url_base='https://github.com/Kitware/CMake/releases/download' | |
wget ${url_base}/v${{ env.CMAKE_VERSION }}/cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh | |
fi | |
bash cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh --skip-license --prefix=/usr/local | |
- name: Cache Python virtualenv | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: venv | |
key: >- | |
nvhpc-${{ matrix.nvhpc }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }} | |
-${{ secrets.cache_ver }} | |
- name: Cache compiled third-party libraries | |
if: env.ACT != 'true' | |
uses: actions/cache@v3 | |
with: | |
path: build/.mqlibs | |
key: nvhpc-${{ matrix.nvhpc }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }} | |
- name: Configure | |
run: >- | |
./build_locally.sh --debug-cmake --gpu --ccache --only-pytest --no-gitee | |
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install" | |
--cmake-no-registry | |
- name: Build | |
run: ./build_locally.sh --debug-cmake --gpu --ccache | |
- name: Install | |
run: ./build_locally.sh --install | |
- name: Run C++ tests | |
run: | | |
cd build | |
catchsegv ctest --output-on-failure | |
# ============================================================================ | |
# NB: Disabled due to compilation error in tweedledum library | |
# intel: | |
# runs-on: ubuntu-latest | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# - name: ICX-ICPX | |
# cc: icx | |
# cxx: icpx | |
# apt_pkg: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic | |
# - name: DPC++ | |
# cc: dpcpp | |
# cxx: dpcpp | |
# apt_pkg: intel-oneapi-compiler-dpcpp-cpp | |
# name: "Intel ${{ matrix.name }} • x64" | |
# env: | |
# CC: ${{ matrix.cc }} | |
# CXX: ${{ matrix.cxx }} | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - name: Get history and tags for SCM versioning to work | |
# run: | | |
# git fetch --prune --unshallow | |
# git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
# - name: Setup Intel APT | |
# run: | | |
# wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | |
# sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | |
# echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
# sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/oneAPI.list" -o APT::Get::List-Cleanup="0" | |
# - name: Prepare env | |
# run: > | |
# apt-get update && apt-get install -y python3-dev python3-pip | |
# python3-setuptools python3-wheel python3-venv | |
# ${{ matrix.apt_pkg }} | |
# --no-install-recommends | |
# - name: Setup CCache | |
# uses: hendrikmuhs/ccache-action@v1.2.5 | |
# with: | |
# key: nvhpc-${{ matrix.nvhpc }}-ccache | |
# max-size: 75M | |
# - name: Cache Python virtualenv | |
# if: env.ACT != 'true' | |
# uses: actions/cache@v3 | |
# with: | |
# path: venv | |
# key: intel-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}-${{ secrets.cache_ver }} | |
# - name: Cache compiled third-party libraries | |
# if: env.ACT != 'true' | |
# uses: actions/cache@v3 | |
# with: | |
# path: build/.mqlibs | |
# key: >- | |
# intel-${{ matrix.cc }}-${{ matrix.cxx }}-clang-third-party-libs-${{ hashFiles('third_party/**') }} | |
# -${{ secrets.cache_ver }} | |
# - name: Configure | |
# run: | | |
# source /opt/intel/oneapi/compiler/latest/env/vars.sh | |
# if [ -f /opt/intel/oneapi/tbb/latest/env/vars.sh ]; then | |
# source /opt/intel/oneapi/tbb/latest/env/vars.sh | |
# fi | |
# ./build_locally.sh --debug-cmake --gpu --no-gitee \ | |
# --configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install" | |
# - name: Build | |
# run: | | |
# source /opt/intel/oneapi/compiler/latest/env/vars.sh | |
# if [ -f /opt/intel/oneapi/tbb/latest/env/vars.sh ]; then | |
# source /opt/intel/oneapi/tbb/latest/env/vars.sh | |
# fi | |
# ./build_locally.sh --debug-cmake --gpu | |
# - name: Install | |
# run: ./build_locally.sh --install |