Skip to content

Initial merge with xeus-clang-repl #280

Initial merge with xeus-clang-repl

Initial merge with xeus-clang-repl #280

Workflow file for this run

name: CI
on:
workflow_dispatch:
pull_request:
branches:
- main
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
unix:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- name: ubu22
os: ubuntu-22.04
- name: ubu22-analyzers
os: ubuntu-22.04
coverage: true
extra_cmake_flags: -DCMAKE_BUILD_TYPE=Debug
- name: osx13-x86
os: macos-13
- name: osx14-arm
os: macos-14
steps:
- uses: actions/checkout@v3
- name: install mamba
uses: mamba-org/provision-with-micromamba@main
with:
environment-file: environment-dev.yml
environment-name: xeus-cpp
- name: install cxx compiler
shell: bash -l {0}
run: |
$HOME/micromamba-bin/micromamba install cxx-compiler -c conda-forge -y
- name: cmake configure
shell: bash -l {0}
run: |
mkdir -p build
cd build
cmake .. \
-DCMAKE_PREFIX_PATH=$CONDA_PREFIX \
-DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \
-DXEUS_CPP_ENABLE_CODE_COVERAGE=${{ matrix.coverage }} \
${{ matrix.extra_cmake_flags }}
- name: build
shell: bash -l {0}
run: |
cd build
make -j8
- name: install
shell: bash -l {0}
run: |
cd build
make install
- name: Test xeus-cpp C++
shell: bash -l {0}
run: |
cd build/test
export CPLUS_INCLUDE_PATH=$CONDA_PREFIX/include:$CONDA_BUILD_SYSROOT:$CONDA_BUILD_SYSROOT/..:$CONDA_BUILD_SYSROOT/../x86_64-conda-linux-gnu/include/c++/12.3.0:$CONDA_BUILD_SYSROOT/../x86_64-conda-linux-gnu/include/c++/12.3.0/include:$CONDA_BUILD_SYSROOT/../include:$CONDA_BUILD_SYSROOT/usr/include:/home/runner/micromamba-root/envs/xeus-cpp/bin/../lib/gcc/x86_64-conda-linux-gnu/12.3.0/include:/home/runner/micromamba-root/envs/xeus-cpp/bin/../lib/gcc/x86_64-conda-linux-gnu/12.3.0/include-fixed:/home/runner/micromamba-root/envs/xeus-cpp/bin/../lib/gcc/x86_64-conda-linux-gnu/12.3.0/../../../../x86_64-conda-linux-gnu/include:/home/runner/micromamba-root/envs/xeus-cpp/bin/../x86_64-conda-linux-gnu/sysroot/usr/include
./test_xeus_cpp
timeout-minutes: 4
- name: test
shell: bash -l {0}
run: |
$CONDA_PREFIX/bin/pytest test --reruns 5
- name: Prepare code coverage report
if: ${{ success() && (matrix.coverage == true) }}
shell: bash -l {0}
run: |
# Create lcov report
# Find the current compiler version.
CC=$(realpath `which c++`)
vers="${CC##*-}"
sudo apt install lcov
# capture coverage info
lcov --directory build/ --capture --output-file coverage.info --gcov-tool $CONDA_PREFIX/bin/gcov
lcov --remove coverage.info '/usr/*' "${HOME}"'/.cache/*' ${{ github.workspace }}'/llvm-project/*' ${{ github.workspace }}'/test/*' --output-file coverage.info
# output coverage data for debugging (optional)
lcov --list coverage.info
- name: Upload to codecov.io
if: ${{ success() && (matrix.coverage == true) }}
uses: codecov/codecov-action@v3
with:
file: ./coverage.info
- name: Setup tmate session
if: ${{ failure() && runner.debug }}
uses: mxschmitt/action-tmate@v3
# When debugging increase to a suitable value!
timeout-minutes: 30
win:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ windows-2022]
steps:
- uses: actions/checkout@v3
- name: install mamba
uses: mamba-org/provision-with-micromamba@main
with:
environment-file: environment-dev.yml
environment-name: xeus-cpp
- name: micromamba shell hook
shell: powershell
run: |
micromamba shell hook -s cmd.exe -p C:\Users\runneradmin\micromamba-root
- name: cmake configure
shell: cmd
run: |
call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-cpp
mkdir -p build
cd build
cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DXEUS_BUILD_TESTS=ON -DDEPENDENCY_SEARCH_PREFIX="%CONDA_PREFIX%\Library" -DCMAKE_PREFIX_PATH="%CONDA_PREFIX%\Library" -DCMAKE_INSTALL_PREFIX="%CONDA_PREFIX%"
- name: build
shell: cmd
run: |
call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-cpp
cd build
set CL=/MP
nmake install
emscripten_wasm:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
emsdk_ver: ["3.1.45"]
steps:
- uses: actions/checkout@v3
- name: Install mamba
uses: mamba-org/provision-with-micromamba@main
with:
environment-file: environment-wasm-build.yml
environment-name: xeus-cpp-wasm-build
- name: Setup emsdk
shell: bash -l {0}
run: |
emsdk install ${{matrix.emsdk_ver}}
- name: Build xeus-cpp
shell: bash -l {0}
run: |
emsdk activate ${{matrix.emsdk_ver}}
source $CONDA_EMSDK_DIR/emsdk_env.sh
micromamba create -f environment-wasm-host.yml --platform=emscripten-wasm32
mkdir build
pushd build
export EMPACK_PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-cpp-wasm-build
export PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-cpp-wasm-host
export CMAKE_PREFIX_PATH=$PREFIX
export CMAKE_SYSTEM_PREFIX_PATH=$PREFIX
emcmake cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=$PREFIX \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DXEUS_CPP_EMSCRIPTEN_WASM_BUILD=ON \
-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \
..
EMCC_CFLAGS='-sERROR_ON_UNDEFINED_SYMBOLS=0' emmake make -j5
- name: Setup tmate session
if: ${{ failure() && runner.debug }}
uses: mxschmitt/action-tmate@v3
# When debugging increase to a suitable value!
timeout-minutes: 30