-
Notifications
You must be signed in to change notification settings - Fork 552
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' into feature/point_cloud_generator
- Loading branch information
Showing
47 changed files
with
3,561 additions
and
218 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
|
||
# Note: | ||
# - libpointmatch cmake install require that the README.md file exist in the docker image | ||
# - libpointmatcher-CI doc related step require that .svg, .png and .md be copied in the docker image | ||
|
||
# Graphic/image related | ||
*.svg | ||
*.svgz | ||
*.png | ||
*.drawio | ||
|
||
# Text related | ||
|
||
# Files | ||
|
||
|
||
# Directories | ||
drawio/* | ||
visual/* | ||
|
||
# IDE | ||
.run/* |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,321 @@ | ||
name: Compile python package | ||
|
||
on: | ||
push: | ||
branches: [master, feature/github-release] | ||
tags: | ||
- '[0-9]+.[0-9]+.[0-9]+' | ||
pull_request: | ||
branches: [master, develop] | ||
workflow_dispatch: | ||
|
||
env: | ||
BOOST_MAJOR_VERSION: '1' | ||
BOOST_MINOR_VERSION: '80' | ||
BOOST_PATCH_VERSION: '0' | ||
LIBNABO_VERSION: '1.0.7' | ||
PYBIND11_VERSION: 'v2.10.2' | ||
BOOST_INSTALL_PATH: ${{ github.workspace }}/.tmp/boost/install | ||
BOOST_SRC_DIR: ${{ github.workspace }}/.tmp/boost | ||
LIBNABO_INSTALL_PATH: ${{ github.workspace }}/.tmp/libnabo-build/install | ||
LIBNABO_SRC_DIR: ${{ github.workspace }}/.tmp/libnabo | ||
PYBIND11_INSTALL_PATH: ${{ github.workspace }}/.tmp/pybind11-build/install | ||
PYBIND11_SRC_DIR: ${{ github.workspace }}/.tmp/pybind11 | ||
PYTHON_WHEEL_DIR: ${{ github.workspace }}/.tmp/python-wheel | ||
VCPKG_DEFAULT_BINARY_CACHE: '${{ github.workspace }}/.tmp/bin-cache' | ||
CMAKE_BUILD_PARALLEL_LEVEL: 2 | ||
BUILD_DIR: ${{ github.workspace }}/build | ||
|
||
jobs: | ||
compile-python-package: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
python_version: ['3.8', '3.9', '3.10', '3.11'] | ||
os: | ||
# - windows-2019 cannot compile on Windows | ||
# (!) TODO: The workflow contains code for Windows building, but we cannot compile it with MS MPI. Changes in the source code are needed. | ||
|
||
- ubuntu-20.04 | ||
|
||
permissions: | ||
contents: write | ||
|
||
runs-on: ${{ matrix.os }} | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Make temp dir | ||
run: mkdir ${{ github.workspace }}/.tmp | ||
|
||
- name: Init base env variable on Linux | ||
if: ${{ runner.os == 'Linux' }} | ||
run: | | ||
echo "BOOST_DIR=boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}" >> $GITHUB_ENV | ||
echo "BOOST_VERSION=${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}" >> $GITHUB_ENV | ||
- name: Init env variable on Linux | ||
if: ${{ runner.os == 'Linux' }} | ||
run: | | ||
echo "BOOST_ARCHIVE_NAME=${{ env.BOOST_DIR }}.7z" >> $GITHUB_ENV | ||
- name: Init base env variable on Windows | ||
if: ${{ runner.os == 'Windows' }} | ||
run: | | ||
echo "BOOST_DIR=boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}" | Out-File -FilePath $env:GITHUB_ENV -Append | ||
echo "BOOST_VERSION=${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}" | Out-File -FilePath $env:GITHUB_ENV -Append | ||
- name: Init env variable on Windows | ||
if: ${{ runner.os == 'Windows' }} | ||
run: | | ||
echo "BOOST_ARCHIVE_NAME=${{ env.BOOST_DIR }}.zip" | Out-File -FilePath $env:GITHUB_ENV -Append | ||
- name: Cache boost | ||
id: cache-boost | ||
if: ${{ runner.os == 'Linux' }} | ||
uses: actions/cache@v3 | ||
with: | ||
path: ${{ env.BOOST_INSTALL_PATH }} | ||
key: ${{ runner.os }}-boost-cache-${{ env.BOOST_VERSION }}-python-${{ matrix.python_version }} | ||
|
||
- name: Cache libnabo | ||
id: cache-libnabo | ||
uses: actions/cache@v3 | ||
with: | ||
path: ${{ env.LIBNABO_INSTALL_PATH }} | ||
key: ${{ runner.os }}-libnabo-cache-${{ env.LIBNABO_VERSION }} | ||
|
||
- name: Cache binary vcpkg | ||
if: ${{ runner.os == 'Windows' }} | ||
id: cache-vcpkg | ||
uses: actions/cache@v3 | ||
with: | ||
path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }} | ||
key: ${{ runner.os }}-vcpkg-cache-${{ matrix.python_version }} | ||
|
||
- name: Cache pybind11 | ||
id: cache-pybind11 | ||
uses: actions/cache@v3 | ||
with: | ||
path: ${{ env.PYBIND11_INSTALL_PATH }} | ||
key: ${{ runner.os }}-pybind11-cache--${{ env.PYBIND11_VERSION }}-python-${{ matrix.python_version }} | ||
|
||
- name: Make dirs on Linux | ||
if: ${{ runner.os == 'Linux' }} | ||
run: | | ||
mkdir -p ${{ env.BOOST_SRC_DIR }} | ||
mkdir -p ${{ env.LIBNABO_SRC_DIR }} | ||
mkdir -p ${{ env.PYBIND11_SRC_DIR }} | ||
mkdir -p ${{ env.BOOST_INSTALL_PATH }} | ||
mkdir -p ${{ env.PYBIND11_INSTALL_PATH }} | ||
mkdir -p ${{ env.LIBNABO_INSTALL_PATH }} | ||
mkdir -p ${{ env.VCPKG_DEFAULT_BINARY_CACHE }} | ||
- name: Make dirs on Windows | ||
if: ${{ runner.os == 'Windows' }} | ||
run: | | ||
mkdir -Force ${{ env.BOOST_SRC_DIR }} | ||
mkdir -Force ${{ env.LIBNABO_SRC_DIR }} | ||
mkdir -Force ${{ env.PYBIND11_SRC_DIR }} | ||
mkdir -Force ${{ env.BOOST_INSTALL_PATH }} | ||
mkdir -Force ${{ env.PYBIND11_INSTALL_PATH }} | ||
mkdir -Force ${{ env.LIBNABO_INSTALL_PATH }} | ||
mkdir -Force ${{ env.VCPKG_DEFAULT_BINARY_CACHE }} | ||
- name: Install dependencies on Linux | ||
if: ${{ runner.os == 'Linux' }} | ||
run: | | ||
sudo apt update | ||
sudo apt install -y --no-install-recommends g++ \ | ||
gcc \ | ||
make \ | ||
libeigen3-dev \ | ||
ninja-build \ | ||
catch \ | ||
libomp-dev \ | ||
wget | ||
- name: Install MS MPI | ||
if: ${{ runner.os == 'Windows' }} | ||
working-directory: ${{ runner.temp }} | ||
run: | | ||
Invoke-WebRequest https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisetup.exe -OutFile ./msmpisetup.exe | ||
Start-Process -Wait -FilePath ./msmpisetup.exe -ArgumentList "-unattend","-log","./log.txt" -NoNewWindow | ||
cat ./log.txt | ||
- name: Set up Python ${{ matrix.python_version }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python_version }} | ||
cache: 'pip' | ||
|
||
- name: Install required dependencies for Python | ||
run: | | ||
python -m pip install -U 'pip>=23.0' | ||
pip install 'numpy>=1.20' wheel 'setuptools>=61.0' 'build~=0.10' | ||
- name: Install dependencies on Windows | ||
if: ${{ runner.os == 'Windows' }} | ||
run: | | ||
vcpkg install eigen3:x64-windows-static ` | ||
libopenmpt:x64-windows ` | ||
boost-mpi:x64-windows-static ` | ||
boost-thread:x64-windows-static ` | ||
boost-filesystem:x64-windows-static ` | ||
boost-system:x64-windows-static ` | ||
boost-program-options:x64-windows-static ` | ||
boost-date-time:x64-windows-static ` | ||
boost-chrono:x64-windows-static ` | ||
boost-regex[icu]:x64-windows-static ` | ||
boost-assign:x64-windows-static ` | ||
boost-timer:x64-windows-static ` | ||
--clean-after-build | ||
- name: Download boost ${{ env.BOOST_VERSION }} on Linux | ||
if: ${{ steps.cache-boost.outputs.cache-hit != 'true' && runner.os == 'Linux' }} | ||
working-directory: ${{ env.BOOST_SRC_DIR }} | ||
run: | | ||
wget --no-verbose https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_VERSION }}/source/${{ env.BOOST_ARCHIVE_NAME }} | ||
7z -y x ${{ env.BOOST_ARCHIVE_NAME }} | ||
rm ${{ env.BOOST_ARCHIVE_NAME }} | ||
- name: Configure static boost on Linux | ||
if: ${{ steps.cache-boost.outputs.cache-hit != 'true' && runner.os == 'Linux' }} | ||
working-directory: ${{ env.BOOST_SRC_DIR }}/${{ env.BOOST_DIR }} | ||
run: | | ||
./bootstrap.sh --with-libraries=thread,filesystem,system,program_options,date_time,chrono --with-icu --prefix=${{ env.BOOST_INSTALL_PATH }} | ||
./b2 cxxflags=-fPIC cflags=-fPIC link=static install | ||
- name: Download source code libnabo ${{ env.LIBNABO_VERSION }} | ||
if: steps.cache-libnabo.outputs.cache-hit != 'true' | ||
working-directory: ${{ env.LIBNABO_SRC_DIR }} | ||
run: | | ||
git clone -b ${{ env.LIBNABO_VERSION }} --single-branch https://github.com/ethz-asl/libnabo.git | ||
- name: Install libnabo ${{ env.LIBNABO_VERSION }} on Windows | ||
if: ${{ steps.cache-libnabo.outputs.cache-hit != 'true' && runner.os == 'Windows' }} | ||
working-directory: ${{ env.LIBNABO_SRC_DIR }} | ||
run: | | ||
cd libnabo | ||
cmake -A x64 ` | ||
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" ` | ||
-DCMAKE_INSTALL_PREFIX=${{ env.LIBNABO_INSTALL_PATH }} ` | ||
-DCMAKE_BUILD_TYPE=RelWithDebInfo ` | ||
-DUSE_OPEN_MP:BOOL=ON ` | ||
-S . -B ./build | ||
cmake --build ./build --target install | ||
cd - | ||
rm -r ./libnabo/build | ||
- name: Install libnabo ${{ env.LIBNABO_VERSION }} on Linux | ||
if: ${{ steps.cache-libnabo.outputs.cache-hit != 'true' && runner.os == 'Linux' }} | ||
working-directory: ${{ env.LIBNABO_SRC_DIR }} | ||
run: | | ||
cd libnabo | ||
cmake -GNinja \ | ||
-DBOOST_ROOT=${{ env.BOOST_INSTALL_PATH }} \ | ||
-DCMAKE_INSTALL_PREFIX=${{ env.LIBNABO_INSTALL_PATH }} \ | ||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||
-DUSE_OPEN_MP:BOOL=ON \ | ||
-S . -B ./build | ||
cmake --build ./build --target install | ||
cd - | ||
rm -r ./libnabo/build | ||
- name: Download source code pybind11 ${{ env.PYBIND11_VERSION }} | ||
if: steps.cache-pybind11.outputs.cache-hit != 'true' | ||
working-directory: ${{ env.PYBIND11_SRC_DIR }} | ||
run: | | ||
git clone -b ${{ env.PYBIND11_VERSION }} --single-branch https://github.com/pybind/pybind11.git | ||
- name: Install pybind11 ${{ env.PYBIND11_VERSION }} on Linux | ||
working-directory: ${{ env.PYBIND11_SRC_DIR }} | ||
if: ${{ steps.cache-pybind11.outputs.cache-hit != 'true' && runner.os == 'Linux' }} | ||
run: | | ||
cd pybind11 | ||
cmake -GNinja \ | ||
-DCMAKE_INSTALL_PREFIX=${{ env.PYBIND11_INSTALL_PATH }} \ | ||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||
-DPYBIND11_TEST:BOOL=OFF \ | ||
-S . -B ./build | ||
cmake --build ./build --target install | ||
rm -r ./build | ||
- name: Install pybind11 ${{ env.PYBIND11_VERSION }} on Windows | ||
working-directory: ${{ env.PYBIND11_SRC_DIR }} | ||
if: ${{ steps.cache-pybind11.outputs.cache-hit != 'true' && runner.os == 'Windows' }} | ||
run: | | ||
cd pybind11 | ||
cmake -A x64 ` | ||
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" ` | ||
-DCMAKE_INSTALL_PREFIX=${{ env.PYBIND11_INSTALL_PATH }} ` | ||
-DCMAKE_BUILD_TYPE=RelWithDebInfo ` | ||
-DPYBIND11_TEST:BOOL=OFF ` | ||
-S . -B ./build | ||
cmake --build ./build --target install | ||
rm -r ./build | ||
- name: Compile libpointmatcher on Linux | ||
if: runner.os == 'Linux' | ||
run: | | ||
cmake \ | ||
-DBOOST_ROOT:PATH=${{ env.BOOST_INSTALL_PATH }} \ | ||
-DLIBNABO_INSTALL_DIR=${{ env.LIBNABO_INSTALL_PATH }} \ | ||
-Dpybind11_DIR=${{ env.PYBIND11_INSTALL_PATH }}/share/cmake/pybind11 \ | ||
-DBUILD_PYTHON_MODULE:BOOL=ON \ | ||
-DUSE_OPEN_MP:BOOL=ON \ | ||
-DBoost_USE_STATIC_LIBS:BOOL=ON \ | ||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||
-S . -B ${{ env.BUILD_DIR }} | ||
sudo cmake --build ${{ env.BUILD_DIR }} --target install | ||
- name: Compile libpointmatcher on Windows | ||
if: runner.os == 'Windows' | ||
env: | ||
PYTHON_PACKAGE_NAME: pypointmatcher | ||
run: | | ||
cmake -A x64 ` | ||
-DCMAKE_TOOLCHAIN_FILE:FILEPATH="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" ` | ||
-DLIBNABO_INSTALL_DIR:PATH="${{ env.LIBNABO_INSTALL_PATH }}" ` | ||
-Dpybind11_DIR:PATH="${{ env.PYBIND11_INSTALL_PATH }}/share/cmake/pybind11" ` | ||
-DBUILD_PYTHON_MODULE:BOOL=ON ` | ||
-DBoost_USE_STATIC_LIBS:BOOL=ON ` | ||
-DPYTHON_INSTALL_TARGET:PATH="./python/${{ env.PYTHON_PACKAGE_NAME }}" ` | ||
-DVCPKG_TARGET_TRIPLET="x64-windows-static" ` | ||
-DUSE_OPEN_MP:BOOL=ON ` | ||
-DCMAKE_BUILD_TYPE="RelWithDebInfo" ` | ||
-S . -B ${{ env.BUILD_DIR }} | ||
cmake --build ${{ env.BUILD_DIR }} --target install | ||
- name: Build python wheel | ||
working-directory: ./python | ||
run: | | ||
python -m build --wheel --no-isolation --outdir ${{ env.PYTHON_WHEEL_DIR }} | ||
- name: Install package | ||
working-directory: ./python | ||
run: | | ||
pip install ${{ env.PYTHON_WHEEL_DIR }}/*.whl | ||
- name: Test import | ||
working-directory: ${{ runner.temp }} | ||
run: python -c "from pypointmatcher import *" | ||
|
||
- name: Upload python wheel | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: libpointmatcher python ${{ matrix.python_version }} wheel | ||
path: ${{ env.PYTHON_WHEEL_DIR }}/*.whl | ||
if-no-files-found: error | ||
retention-days: 10 | ||
|
||
- uses: ncipollo/release-action@v1 | ||
if: github.ref_type == 'tag' | ||
with: | ||
artifacts: "${{ env.PYTHON_WHEEL_DIR }}/*.whl" | ||
prerelease: true | ||
allowUpdates: true | ||
generateReleaseNotes: true | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,3 +5,6 @@ | |
*.cur_trans | ||
build | ||
.ipynb_checkpoints/ | ||
|
||
dist/ | ||
*.so |
Oops, something went wrong.