Skip to content

Add pixi support

Add pixi support #2432

Workflow file for this run

name: CI - Linux via APT
on:
push:
paths-ignore:
- doc/**
- .gitlab-ci.yml
- .gitignore
- '*.md'
- CITATION.*
- COPYING.LESSER
- colcon.pkg
- .pre-commit-config.yaml
- CHANGELOG.md
pull_request:
paths-ignore:
- doc/**
- .gitlab-ci.yml
- .gitignore
- '*.md'
- CITATION.*
- COPYING.LESSER
- colcon.pkg
- .pre-commit-config.yaml
- CHANGELOG.md
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
container: ${{ matrix.container }}
strategy:
matrix:
container: ['ubuntu:20.04', 'ubuntu:22.04', 'ubuntu:24.04']
env:
CCACHE_BASEDIR: ${GITHUB_WORKSPACE}
CCACHE_DIR: ${GITHUB_WORKSPACE}/.ccache
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 5
steps:
- name: Setup Container
run: |
apt update && DEBIAN_FRONTEND="noninteractive" apt install -y sudo lsb-release gnupg2 cmake git python3
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Setup ccache
uses: actions/cache@v4
with:
path: .ccache
save-always: true
key: ccache-linux-${{ matrix.container }}-${{ github.sha }}
restore-keys: ccache-linux-${{ matrix.container }}-
# extract branch name
- name: Get branch name (merge)
if: github.event_name != 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV
# extract branch name on pull request
- name: Get branch name (pull request)
if: github.event_name == 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF})" >> $GITHUB_ENV
# print branch name
- name: Debug
run: echo ${{ env.BRANCH_NAME }}
- name: Register robotpkg
run: |
sh -c "echo \"deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg\" >> /etc/apt/sources.list "
apt-key adv --fetch-keys http://robotpkg.openrobots.org/packages/debian/robotpkg.key
- name: Set and install dependencies
run: |
rm -rf /usr/local/share/boost/1.69.0
export PYTHON3_VERSION=$(python3 -c "import sys; print(str(sys.version_info.major)+str(sys.version_info.minor))")
export APT_DEPENDENCIES="doxygen \
ccache \
curl \
cppcheck \
libomp-dev \
libomp5 \
libboost-system-dev \
libboost-test-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libeigen3-dev \
liburdfdom-dev \
texlive-font-utils \
libboost-python-dev \
python3-numpy \
python3-matplotlib \
robotpkg-py${PYTHON3_VERSION}-eigenpy \
robotpkg-py${PYTHON3_VERSION}-hpp-fcl \
robotpkg-py${PYTHON3_VERSION}-casadi"
echo $APT_DEPENDENCIES
apt-get update -qq
DEBIAN_FRONTEND="noninteractive" apt-get install -qq ${APT_DEPENDENCIES}
- name: Free disk space
run: |
apt clean
df -h
- name: Run cmake
run: |
# Add cloned repo to safe.directory, since it was not cloned by the container
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git submodule update --init
export PATH=$PATH:/opt/openrobots/bin
export PYTHON3_DOT_VERSION=$(python3 -c "import sys; print(str(sys.version_info.major)+'.'+str(sys.version_info.minor))")
export PYTHONPATH=${PYTHONPATH}:/opt/openrobots/lib/python$PYTHON3_DOT_VERSION/site-packages
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openrobots/lib:/usr/local/lib:/usr/lib:/usr/lib/x86_64-linux-gnu
mkdir build
cd build
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=Debug \
-DBUILD_WITH_COLLISION_SUPPORT=ON \
-DBUILD_ADVANCED_TESTING=OFF \
-DBUILD_WITH_CASADI_SUPPORT=ON \
-DPYTHON_EXECUTABLE=$(which python3) \
-DBUILD_WITH_OPENMP_SUPPORT=ON \
-DINSTALL_DOCUMENTATION=ON \
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/.github/workflows/cmake/linux-debug-toolchain.cmake
make -j2
make -j2 build_tests
export CTEST_OUTPUT_ON_FAILURE=1
make test
sudo make install
- name: Test packaging
run: |
export PATH=$PATH:/opt/openrobots/bin
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/openrobots/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openrobots/lib:/usr/local/lib:/usr/lib:/usr/lib/x86_64-linux-gnu
cd ./unittest/packaging/cmake
mkdir build
cd build
export CMAKE_PREFIX_PATH=/usr/local
# Test CMake module packaging
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DPYTHON_EXECUTABLE=$(which python3)
make -j2
./run_rnea
./load_urdf
# Test pkg-config packaging
cd ../../pkgconfig
mkdir build
cd build
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DPYTHON_EXECUTABLE=$(which python3)
make -j2
./run_rnea
./load_urdf
# Test FetchContent packaging
cd ../../external
export PINOCCHIO_GIT_REPOSITORY="file://"$GITHUB_WORKSPACE
#export PINOCCHIO_GIT_REPOSITORY=$(git remote get-url origin)
export PINOCCHIO_GIT_TAG="test-external-"$(git rev-parse --short HEAD)
git tag $PINOCCHIO_GIT_TAG
mkdir build
cd build
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DPYTHON_EXECUTABLE=$(which python3)
make -j2
./run_rnea
./load_urdf
# Test CMake module packaging and pinocchio_header target
cd ../../pinocchio_header
mkdir build
cd build
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DPYTHON_EXECUTABLE=$(which python3)
make -j2
./run_fk
- name: Uninstall project
run: |
cd build
sudo make uninstall
check:
if: always()
name: check-linux-apt
needs:
- build
runs-on: Ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}