Skip to content

Fix AdaptiveBeamController potential segfault on MouseEvent if number of device is null #322

Fix AdaptiveBeamController potential segfault on MouseEvent if number of device is null

Fix AdaptiveBeamController potential segfault on MouseEvent if number of device is null #322

Workflow file for this run

name: CI
on:
workflow_dispatch:
pull_request:
push:
jobs:
build-and-test:
name: Run on ${{ matrix.os }} with SOFA ${{ matrix.sofa_branch }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, macos-11, windows-2019]
sofa_branch: [master]
steps:
- name: (Mac) Workaround for homebrew
shell: bash
if: runner.os == 'macOS'
run: |
rm -f /usr/local/bin/2to3
rm -f /usr/local/bin/idle3
rm -f /usr/local/bin/pydoc3
rm -f /usr/local/bin/python3
rm -f /usr/local/bin/python3-config
rm -f /usr/local/bin/2to3-3.11
rm -f /usr/local/bin/idle3.11
rm -f /usr/local/bin/pydoc3.11
rm -f /usr/local/bin/python3.11
rm -f /usr/local/bin/python3.11-config
rm -f /usr/local/bin/python3.11-config
rm -f /usr/local/bin/go
rm -f /usr/local/bin/gofmt
- name: Setup SOFA and environment
id: sofa
uses: sofa-framework/sofa-setup-action@v4
with:
sofa_root: ${{ github.workspace }}/sofa
sofa_version: ${{ matrix.sofa_branch }}
sofa_scope: 'standard'
- name: Checkout source code
uses: actions/checkout@v2
with:
path: ${{ env.WORKSPACE_SRC_PATH }}
- name: Build and install
shell: bash
run: |
if [[ "$RUNNER_OS" == "Windows" ]]; then
cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \
&& cd /d $WORKSPACE_BUILD_PATH \
&& cmake \
-GNinja \
-DCMAKE_PREFIX_PATH="$SOFA_ROOT/lib/cmake" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \
../src \
&& ninja install"
else
cd "$WORKSPACE_BUILD_PATH"
ccache -z
cmake \
-GNinja \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_PREFIX_PATH=$SOFA_ROOT/lib/cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \
../src
ninja install
echo ${CCACHE_BASEDIR}
ccache -s
fi
- name: Create artifact
uses: actions/upload-artifact@v2
with:
name: BeamAdapter_${{ steps.sofa.outputs.run_branch }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }}
path: ${{ env.WORKSPACE_INSTALL_PATH }}
- name: Install artifact
uses: actions/download-artifact@v2
with:
name: BeamAdapter_${{ steps.sofa.outputs.run_branch }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }}
path: ${{ env.WORKSPACE_ARTIFACT_PATH }}
- name: Set env vars for tests
shell: bash
run: |
# Set env vars for tests
if [[ "$RUNNER_OS" == "Windows" ]]; then
echo "$WORKSPACE_ARTIFACT_PATH/lib" >> $GITHUB_PATH
echo "$WORKSPACE_ARTIFACT_PATH/bin" >> $GITHUB_PATH
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/bin" | tee -a $GITHUB_ENV
else
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/lib" | tee -a $GITHUB_ENV
fi
if [[ "$RUNNER_OS" == "macOS" ]]; then
echo "DYLD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$DYLD_LIBRARY_PATH" | tee -a $GITHUB_ENV
fi
if [[ "$RUNNER_OS" == "Linux" ]]; then
echo "LD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$LD_LIBRARY_PATH" | tee -a $GITHUB_ENV
fi
# - name: Check environment for tests
# shell: bash
# run: |
# echo '------ ls -la "$WORKSPACE_SRC_PATH" ------'
# ls -la "$WORKSPACE_SRC_PATH"
# echo '------ ls -la "$WORKSPACE_BUILD_PATH" ------'
# ls -la "$WORKSPACE_BUILD_PATH"
# echo '------ ls -la "$WORKSPACE_INSTALL_PATH" ------'
# ls -la "$WORKSPACE_INSTALL_PATH"
# echo '------ ls -la "$WORKSPACE_ARTIFACT_PATH" ------'
# ls -la "$WORKSPACE_ARTIFACT_PATH"
# echo '----------------------'
# echo "SOFA_ROOT = $SOFA_ROOT"
- name: Run BeamAdapter_test
if: always()
shell: bash
run: |
chmod +x $WORKSPACE_BUILD_PATH/bin/BeamAdapter_test${{ steps.sofa.outputs.exe }}
cd $WORKSPACE_BUILD_PATH
./bin/BeamAdapter_test${{ steps.sofa.outputs.exe }}
- name: Fetch, install and run Regression_test
if: always()
shell: bash
run: |
if [[ "$RUNNER_OS" != "macOS" ]]; then
# Get regression from github releases
mkdir -p "${{ runner.temp }}/regression_tmp/install"
curl --output "${{ runner.temp }}/regression_tmp/${RUNNER_OS}.zip" -L https://github.com/sofa-framework/regression/releases/download/release-master/Regression_test_master_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${RUNNER_OS}.zip
unzip -qq "${{ runner.temp }}/regression_tmp/${RUNNER_OS}.zip" -d "${{ runner.temp }}/regression_tmp/install"
# Install it in the SOFA bin directory
$SUDO mv "${{ runner.temp }}"/regression_tmp/install/Regression_*/bin/* "${SOFA_ROOT}/bin"
chmod +x ${SOFA_ROOT}/bin/Regression_test${{ steps.sofa.outputs.exe }}
# Setup mandatory env vars
export REGRESSION_SCENES_DIR="${WORKSPACE_SRC_PATH}/examples"
export REGRESSION_REFERENCES_DIR="${WORKSPACE_SRC_PATH}/regression/references"
# Run regression test bench
${SOFA_ROOT}/bin/Regression_test${{ steps.sofa.outputs.exe }}
else
echo "Regression tests are not supported on the CI for macOS yet (TODO)"
fi
deploy:
name: Deploy artifacts
if: always() && startsWith(github.ref, 'refs/heads/') # we are on a branch (not a PR)
needs: [build-and-test]
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Get artifacts
uses: actions/download-artifact@v2
with:
path: artifacts
- name: Zip artifacts
shell: bash
run: |
cd $GITHUB_WORKSPACE/artifacts
for artifact in *; do
zip $artifact.zip -r $artifact/*
done
- name: Upload release
uses: softprops/action-gh-release@v1
with:
name: ${{ github.ref_name }}
tag_name: release-${{ github.ref_name }}
fail_on_unmatched_files: true
files: |
artifacts/BeamAdapter_*_Linux.zip
artifacts/BeamAdapter_*_Windows.zip
artifacts/BeamAdapter_*_macOS.zip