Skip to content

Wasm fix

Wasm fix #308

Workflow file for this run

name: CI
on:
workflow_dispatch:
push:
branches:
- main
pull_request:
branches:
- main
defaults:
run:
shell: bash -l {0}
jobs:
test-unix:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-22.04, macos-11, macos-12]
build_type: [static_build, shared_build]
steps:
- uses: actions/checkout@v2
- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v1
- name: install mamba
uses: mamba-org/provision-with-micromamba@main
with:
environment-file: environment-dev.yml
environment-name: xeus-python
- name: Make build directory
run: mkdir build
- name: Static build option
if: matrix.build_type == 'static_build'
run: |
CMAKE_EXTRA_ARGS="$CMAKE_EXTRA_ARGS -DXPYT_BUILD_SHARED=OFF -DXPYT_USE_SHARED_XEUS_PYTHON=OFF"
echo "CMAKE_EXTRA_ARGS=$CMAKE_EXTRA_ARGS" >> $GITHUB_ENV
- name: Shared build option
if: matrix.build_type == 'shared_build'
run: |
CMAKE_EXTRA_ARGS="$CMAKE_EXTRA_ARGS -DXPYT_BUILD_STATIC=OFF"
echo "CMAKE_EXTRA_ARGS=$CMAKE_EXTRA_ARGS" >> $GITHUB_ENV
- name: cmake configure
run: |
cmake .. \
-D CMAKE_PREFIX_PATH=$CONDA_PREFIX \
-D CMAKE_INSTALL_PREFIX=$CONDA_PREFIX \
-D CMAKE_INSTALL_LIBDIR=lib \
-D PYTHON_EXECUTABLE=`which python` \
-D XPYT_BUILD_TESTS=ON \
-D CMAKE_C_COMPILER=$CC \
-D CMAKE_CXX_COMPILER=$CXX \
${{ env.CMAKE_EXTRA_ARGS }}
working-directory: build
- name: Install
run: make -j ${{ steps.cpu-cores.outputs.count }} install
working-directory: build
- name: Print version
run: xpython --version
#- name: Test xeus-python C++
# run: ./test_xeus_python
# timeout-minutes: 4
# working-directory: build/test
- name: Test xeus-python Python
run: pytest . -vvv
test-win:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-2019, windows-2022]
build_type: [static_build, shared_build]
steps:
- uses: actions/checkout@v2
- name: install mamba
uses: mamba-org/provision-with-micromamba@main
with:
environment-file: environment-dev.yml
environment-name: xeus-python
- name: micromamba shell hook
shell: powershell
run: |
micromamba shell hook -s cmd.exe -p C:\Users\runneradmin\micromamba-root
- name: Make build directory
run: mkdir build
- name: Static build option
if: matrix.build_type == 'static_build'
run: |
CMAKE_EXTRA_ARGS="$CMAKE_EXTRA_ARGS -DXPYT_BUILD_SHARED=OFF -DXPYT_USE_SHARED_XEUS_PYTHON=OFF"
echo "CMAKE_EXTRA_ARGS=$CMAKE_EXTRA_ARGS" >> $GITHUB_ENV
- name: Shared build option
if: matrix.build_type == 'shared_build'
run: |
CMAKE_EXTRA_ARGS="$CMAKE_EXTRA_ARGS -DXPYT_BUILD_STATIC=OFF"
echo "CMAKE_EXTRA_ARGS=$CMAKE_EXTRA_ARGS" >> $GITHUB_ENV
- name: cmake configure
shell: cmd
run: |
call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-python
cmake .. ^
-GNinja ^
-DCMAKE_BUILD_TYPE=Release ^
-DXPYT_BUILD_TESTS=ON ^
-DCMAKE_INSTALL_PREFIX="%CONDA_PREFIX%\Library" ^
-DXEXTRA_JUPYTER_DATA_DIR=%CONDA_PREFIX%\share\jupyter ^
-DXPYT_BUILD_XPYTHON_EXTENSION=ON ^
-DXEUS_PYTHONHOME_RELPATH=..\\ ^
-DCMAKE_CXX_FLAGS=/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING ^
${{ env.CMAKE_EXTRA_ARGS }}
working-directory: build
- name: build
shell: cmd
run: |
call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-python
set CL=/MP
ninja install
working-directory: build
- name: Test xeus-python C++
shell: cmd /C call {0}
run: |
micromamba activate xeus-python
test_xeus_python
timeout-minutes: 4
working-directory: build/test
- name: Test xeus-python Python
shell: cmd
run: |
call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-python
pytest . -vvv
test-wasm:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
emsdk_ver: ["3.1.45"]
steps:
- uses: actions/checkout@v2
- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v1
- name: Install mamba
uses: mamba-org/provision-with-micromamba@main
with:
environment-file: environment-wasm-build.yml
environment-name: xeus-python-wasm-build
- name: "setup emsdk"
shell: bash -l {0}
run: |
micromamba activate xeus-python-wasm-build
cd $HOME
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install ${{ matrix.emsdk_ver }}
./emsdk activate ${{ matrix.emsdk_ver }}
- name: Build and pack xeus-python
run: |
micromamba activate xeus-python-wasm-build
$HOME/emsdk/emsdk activate ${{matrix.emsdk_ver}}
source $HOME/emsdk/emsdk_env.sh
micromamba create -f environment-wasm-host.yml --platform=emscripten-wasm32
mkdir build
pushd build
export PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-python-wasm-host
export CMAKE_PREFIX_PATH=$PREFIX
export CMAKE_SYSTEM_PREFIX_PATH=$PREFIX
# remove all the fake pythons binaries
rm -f $PREFIX/bin/python*
emcmake cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \
-DXPYT_EMSCRIPTEN_WASM_BUILD=ON \
..
make -j5
popd
# Patch output
python wasm_patches/patch_it.py
- uses: actions/upload-artifact@v2
with:
name: xeus-python-wasm
path: |
build/xpython_wasm.js
build/xpython_wasm.wasm