|
name: Linux |
|
on: |
|
workflow_dispatch: |
|
pull_request: |
|
push: |
|
branches: [master] |
|
concurrency: |
|
group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }} |
|
cancel-in-progress: true |
|
defaults: |
|
run: |
|
shell: bash -e -l {0} |
|
jobs: |
|
build: |
|
runs-on: ubuntu-24.04 |
|
name: ${{ matrix.sys.compiler }} ${{ matrix.sys.version }} |
|
strategy: |
|
fail-fast: false |
|
matrix: |
|
sys: |
|
- {compiler: gcc, version: '11'} |
|
- {compiler: gcc, version: '12'} |
|
- {compiler: gcc, version: '13'} |
|
- {compiler: gcc, version: '14'} |
|
- {compiler: clang, version: '17'} |
|
- {compiler: clang, version: '18'} |
|
- {compiler: clang, version: '19'} |
|
- {compiler: clang, version: '20'} |
|
|
|
steps: |
|
- name: Install GCC |
|
if: matrix.sys.compiler == 'gcc' |
|
uses: egor-tensin/setup-gcc@v1 |
|
with: |
|
version: ${{matrix.sys.version}} |
|
platform: x64 |
|
|
|
- name: Install LLVM and Clang |
|
if: matrix.sys.compiler == 'clang' |
|
run: | |
|
wget https://apt.llvm.org/llvm.sh |
|
chmod +x llvm.sh |
|
sudo ./llvm.sh ${{matrix.sys.version}} |
|
sudo apt-get install -y clang-tools-${{matrix.sys.version}} |
|
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${{matrix.sys.version}} 200 |
|
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{matrix.sys.version}} 200 |
|
sudo update-alternatives --install /usr/bin/clang-scan-deps clang-scan-deps /usr/bin/clang-scan-deps-${{matrix.sys.version}} 200 |
|
sudo update-alternatives --set clang /usr/bin/clang-${{matrix.sys.version}} |
|
sudo update-alternatives --set clang++ /usr/bin/clang++-${{matrix.sys.version}} |
|
sudo update-alternatives --set clang-scan-deps /usr/bin/clang-scan-deps-${{matrix.sys.version}} |
|
|
|
- name: Checkout code |
|
uses: actions/checkout@v3 |
|
|
|
- name: Set conda environment |
|
uses: mamba-org/setup-micromamba@v1 |
|
with: |
|
environment-file: environment-dev.yml |
|
cache-environment: true |
|
|
|
- name: Configure using CMake |
|
run: cmake -G Ninja -Bbuild -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DPYTHON_EXECUTABLE=`which python` -DDOWNLOAD_GTEST=ON $(Build.SourcesDirectory) |
|
|
|
- name: Install |
|
working-directory: build |
|
run: cmake --install . |
|
|
|
- name: Build |
|
working-directory: build |
|
run: cmake --build . --target test_xtensor_python --parallel 8 |
|
|
|
- name: Run tests (C++) |
|
working-directory: build/test |
|
run: ./test_xtensor_python |
|
|
|
- name: Run tests (Python) |
|
run: pytest -s |
|
|
|
- name: Example - readme 1 |
|
working-directory: docs/source/examples/readme_example_1 |
|
run: | |
|
cmake -Bbuild -DPython_EXECUTABLE=`which python` |
|
cd build |
|
cmake --build . |
|
cp ../example.py . |
|
python example.py |
|
|
|
- name: Example - copy \'cast\' |
|
working-directory: docs/source/examples/copy_cast |
|
run: | |
|
cmake -Bbuild -DPython_EXECUTABLE=`which python` |
|
cd build |
|
cmake --build . |
|
cp ../example.py . |
|
python example.py |
|
|
|
- name: Example - SFINAE |
|
working-directory: docs/source/examples/sfinae |
|
run: | |
|
cmake -Bbuild -DPython_EXECUTABLE=`which python` |
|
cd build |
|
cmake --build . |
|
cp ../example.py . |
|
python example.py |