Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
d7891ea
remove duplicated EIGENPY_STRINGIZE macro
ahoarau Dec 11, 2025
81510e3
update pre-commit and switch to gersemi
ahoarau Dec 11, 2025
2d8f082
update clang-format to c++17
ahoarau Dec 11, 2025
3fe00a8
fwd.hpp: remove space in user-defined litteral
ahoarau Dec 11, 2025
73985ba
ignore more stuff
ahoarau Dec 11, 2025
6c2b41d
add gersemi config
ahoarau Dec 11, 2025
d609c3e
remove submodules
ahoarau Dec 11, 2025
17dc6d1
rename main.cpp to bindings.cpp
ahoarau Dec 11, 2025
84a5e56
remove custom python init file
ahoarau Dec 11, 2025
7b1036b
update pixi.toml tasks
ahoarau Dec 11, 2025
76f7779
separate cpp and python tests, and generate variants
ahoarau Dec 11, 2025
a563812
rewrite CMake files with JRL CMake Modules v2
ahoarau Dec 11, 2025
7ac1f4d
intregrate get-jrl-cmakemodules.cmake
ahoarau Dec 12, 2025
3a21055
update jrl url to point to fork
ahoarau Dec 15, 2025
e3fbb2c
require jrl-cmakemodules version 2.0.0
ahoarau Dec 16, 2025
b1a0d31
include stubs pyi files in the installation
ahoarau Dec 16, 2025
e9217c8
ros-ci: add verbosity
ahoarau Dec 17, 2025
9aeb376
changelog: add jrl v2 entry
ahoarau Dec 17, 2025
a81417f
add Copyright 2025-2026 Inria
ahoarau Dec 17, 2025
f41b8ad
remove the boost 1.90 restriction
ahoarau Dec 17, 2025
2d23171
remove unused options
ahoarau Dec 17, 2025
a147ff0
put back the CNRS copyright
ahoarau Dec 21, 2025
21a5f63
update get-jrl-cmakemodules to display debug info
ahoarau Dec 21, 2025
ad54eb7
ci: upgrade ci workflows
ahoarau Dec 21, 2025
b178695
unittests: fix pythonpath
ahoarau Dec 22, 2025
d54b652
ci: use ${{ github.workspace }}
ahoarau Dec 22, 2025
fbf70c7
c: add check configs
ahoarau Dec 23, 2025
9c94fc8
ci: change default path
ahoarau Dec 23, 2025
a537e4d
pixi.toml: remove cmake profiling
ahoarau Jan 6, 2026
6773e71
ci: enable ros ci cache and prerelease
ahoarau Jan 6, 2026
f0a36d1
rosci: configure cache
ahoarau Jan 8, 2026
4c84995
cmake: set min to 3.22
ahoarau Jan 9, 2026
69fc264
cmake: use jrl_find_python
ahoarau Jan 9, 2026
ffea32c
cmake: generate stubs with GENERATE_PYTHON_STUBS condition
ahoarau Jan 9, 2026
0da51b4
cmake: install missing EigenBase header
ahoarau Jan 9, 2026
6a28c43
ci: disable nix tmp
ahoarau Jan 9, 2026
70467c7
gersemi: add back specific definitions
ahoarau Jan 9, 2026
4425f8b
cmake: remove extra pythonpath
ahoarau Jan 9, 2026
f615983
cmake: reformat with updated gersemirc
ahoarau Jan 9, 2026
fb2f9a1
ci: disable pixi explicit cache
ahoarau Jan 9, 2026
a29e585
ci: build verbose and limit to 2 cpu
ahoarau Jan 9, 2026
178fcaa
ci: relax pixi cache
ahoarau Jan 9, 2026
a6ced57
ci: enable testing
ahoarau Jan 9, 2026
d9df997
ci: build in debug
ahoarau Jan 9, 2026
45b2bb6
ci: update cache keys
ahoarau Jan 9, 2026
1566dc8
cmake: replace jrl_find_package with jrl_check_python_module for scipy
ahoarau Jan 10, 2026
0d2d834
generate generated tests in the build folder
ahoarau Jan 11, 2026
3f4a0db
remove clang-format ignore
ahoarau Jan 11, 2026
75446bc
cmake: update jrl_boostpy_add_stubs api
ahoarau Jan 12, 2026
095c191
cmake: add jrl_generate_ros2_package_files
ahoarau Jan 13, 2026
bef6b7f
cmake: generate ros2 python package files with condiition
ahoarau Jan 13, 2026
33e2131
ci: apt update before install
ahoarau Feb 6, 2026
8c490fd
ci: apt update before install
ahoarau Feb 6, 2026
1a75903
rosci: do not use prerelease
ahoarau Feb 9, 2026
2f8cae2
cmake: update the get-jrl messages
ahoarau Feb 11, 2026
0ddd8dc
cmake: require jrl >=1.2 to get the jrl-v2
ahoarau Feb 16, 2026
fe26706
cmake: update python and nanobind min required
ahoarau Feb 16, 2026
7e979c5
pixi: update min python version
ahoarau Feb 16, 2026
66b5735
pixi: add cxx-compiler to pixi-build feature
ahoarau Feb 17, 2026
8eff752
cmake: include project version in config header generation
ahoarau Feb 20, 2026
b97a147
pixi: update lock file
ahoarau Apr 15, 2026
9ac408d
pre-commit: change to gersemi precommit repo
ahoarau Apr 15, 2026
f8cd863
pixi: update lock file
ahoarau May 11, 2026
0519a1d
ci: update ros-i
ahoarau May 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
BasedOnStyle: Google
SortIncludes: false
Standard: Cpp11
Standard: c++17
4 changes: 4 additions & 0 deletions .gersemirc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
definitions: [./CMakeLists.txt, ./unittest, ./python]
line_length: 100
indent: 2
warn_about_unknown_commands: false
72 changes: 44 additions & 28 deletions .github/workflows/jrl-cmakemodules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,46 +5,62 @@ on:
branches:
- devel
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
- "doc/**"
- ".gitlab-ci.yml"
- ".gitignore"
- "*.md"
- "LICENSE"
- "colcon.pkg"
- ".pre-commit-config.yaml"
pull_request:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
- "doc/**"
- ".gitlab-ci.yml"
- ".gitignore"
- "*.md"
- "LICENSE"
- "colcon.pkg"
- ".pre-commit-config.yaml"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
with-submodules:
name: Check configuration with git submodules
standard-config:
name: Use standard configuration (fetchcontent)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: true
- run: sudo apt install libboost-all-dev libeigen3-dev python3-numpy python3-scipy
- run: cmake .

- run: sudo apt-get update && sudo apt-get install -y libboost-all-dev libeigen3-dev python3-numpy python3-scipy
- run: cmake -B build -S .

without-submodules:
name: Check configuration without git submodules
local-config:
name: Use JRL_CMAKEMODULES_SOURCE_DIR on the cmd line
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: false
path: eigenpy
- run: sudo apt install libboost-all-dev libeigen3-dev python3-numpy python3-scipy
- run: cmake -B build -S eigenpy
- run: grep -qvz CMAKE_PROJECT_VERSION:STATIC=0.0 build/CMakeCache.txt
repository: ahoarau/jrl-cmakemodules

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update after jrl-next release

ref: jrl-next
path: ${{ github.workspace }}/jrl-cmakemodules
- uses: actions/checkout@v6
with:
path: ${{ github.workspace }}/eigenpy
- run: sudo apt-get update && sudo apt-get install -y libboost-all-dev libeigen3-dev python3-numpy python3-scipy
- run: cmake -B build -S ${{ github.workspace }}/eigenpy -DJRL_CMAKEMODULES_SOURCE_DIR="${{ github.workspace }}/jrl-cmakemodules"

check:
if: always()
name: Check JRL Configs

needs:
- standard-config
- local-config

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) }}
95 changes: 61 additions & 34 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -1,63 +1,90 @@
name: CI - Linux via APT
name: CI - Linux (APT)

on:
push:
branches:
- devel
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
- "doc/**"
- ".gitlab-ci.yml"
- ".gitignore"
- "*.md"
- "LICENSE"
- "colcon.pkg"
- ".pre-commit-config.yaml"
pull_request:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
- "doc/**"
- ".gitlab-ci.yml"
- ".gitignore"
- "*.md"
- "LICENSE"
- "colcon.pkg"
- ".pre-commit-config.yaml"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
name: "Test python ${{ matrix.python }} on ${{ matrix.ubuntu }}.04"
runs-on: "ubuntu-${{ matrix.ubuntu }}.04"
ubuntu:
name: CI - ${{ matrix.os }} - ${{ matrix.build_type }} (APT)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python: [3]
ubuntu: [22, 24]
os: [ubuntu-22.04, ubuntu-24.04]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use docker container ubuntu:22.04 and `ubuntu:24.04' instead of Github image to have right package version.

build_type: [Release, Debug]
env:
CCACHE_BASEDIR: ${{ github.workspace }}
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 6
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
steps:
- uses: actions/checkout@v6
- name: Setup ccache
uses: actions/cache@v4
with:
submodules: 'true'
- run: |
sudo apt-get update
sudo apt-get install cmake libboost-all-dev libeigen3-dev python*-numpy python*-dev python*-scipy
echo $(sudo apt list --installed)
echo $(g++ --version)
- run: cmake . -DPYTHON_EXECUTABLE=$(which python${{ matrix.python }}) -DBUILD_TESTING_SCIPY=ON
- run: make -j2
- run: ctest --output-on-failure
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ matrix.os }}-${{ matrix.build_type }}-${{ github.sha }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Find an unique prefix (cf github cache discussion in macos-linux-windows-pixi workflow)

restore-keys: ccache-${{ matrix.os }}-${{ matrix.build_type }}-

- name: Update APT repositories
run: sudo apt-get update

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can remove all sudo when running on docker images


- name: Install dependencies via APT
run: sudo apt-get install -y cmake ninja-build ccache libboost-all-dev libeigen3-dev python3-numpy python3-dev python3-scipy

- name: Clear ccache stats
run: ccache --show-stats --zero-stats --verbose

- name: CMake Configure
run: /usr/bin/cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DBUILD_TESTING_SCIPY=ON

- name: CMake Build
run: /usr/bin/cmake --build build --verbose --parallel 2

- name: Show ccache stats
run: ccache --show-stats --verbose

- name: CTest
run: /usr/bin/ctest --test-dir build --output-on-failure

- name: CMake Install
run: /usr/bin/cmake --install build --prefix install

check:
if: always()
name: check-linux

needs:
- test
- ubuntu

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) }}
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
36 changes: 20 additions & 16 deletions .github/workflows/macos-linux-windows-pixi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ concurrency:

jobs:
eigenpy-pixi:
name: Standard - ${{ matrix.os }} - Env ${{ matrix.environment }} ${{ matrix.build_type }} ${{ matrix.cxx_options }} ${{ matrix.compiler }}
name: Pixi - ${{ matrix.os }} - Env ${{ matrix.environment }} ${{ matrix.build_type }} ${{ matrix.cxx_options }}
runs-on: ${{ matrix.os }}
env:
CCACHE_BASEDIR: "${GITHUB_WORKSPACE}"
CCACHE_DIR: "${GITHUB_WORKSPACE}/.ccache"
CCACHE_BASEDIR: ${{ github.workspace }}
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 6
# Since pixi will install a compiler, the compiler mtime will be changed.
Expand Down Expand Up @@ -64,35 +64,41 @@ jobs:

steps:
- uses: actions/checkout@v6
with:
submodules: recursive

- uses: actions/cache@v5
with:
path: .ccache
key: ccache-macos-linux-windows-pixi-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.environment }}-${{ github.sha }}
restore-keys: ccache-macos-linux-windows-pixi-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.environment }}-
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ matrix.os }}-${{ matrix.build_type }}-${{ github.sha }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to keep cxx_options and environment.
If you don't, a build with all-python-oldest environment can retrieve cache from all that is not compatible.

You also need to keepccache-macos-linux-windows-pixi- prefix because cache can be shared by workflow:

Multiple workflow runs in a repository can share caches. A cache created for a branch in a workflow run can be accessed and restored from another workflow run for the same repository and branch.

restore-keys: ccache-${{ matrix.os }}-${{ matrix.build_type }}-

- uses: prefix-dev/setup-pixi@v0.9.5
with:
cache: true
environments: ${{ matrix.environment }}

- name: Clear ccache statistics [MacOS/Linux/Windows]
run: |
pixi run -e ${{ matrix.environment }} ccache -z
pixi run -e ${{ matrix.environment }} ccache --show-stats --zero-stats --verbose

- name: Build EigenPy [MacOS/Linux/Windows]
- name: Configure EigenPy [MacOS/Linux/Windows]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
EIGENPY_BUILD_TYPE: ${{ matrix.build_type }}
EIGENPY_CXX_FLAGS: ${{ matrix.cxx_options }}
run: |
pixi run -e ${{ matrix.environment }} configure

- name: Build EigenPy [MacOS/Linux/Windows]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
run: |
pixi run -e ${{ matrix.environment }} build --verbose --parallel 2

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By running pixi run build you will rerun pixi run configure.
Pixi can't detect this first step is already done.


- name: Test EigenPy [MacOS/Linux/Windows]
run: |
pixi run -e ${{ matrix.environment }} test

- name: Show ccache statistics [MacOS/Linux/Windows]
run: |
pixi run -e ${{ matrix.environment }} ccache -sv
pixi run -e ${{ matrix.environment }} ccache --show-stats --verbose

# eigenpy-pixi-build:
# name: Pixi build - ${{ matrix.os }}
Expand All @@ -105,14 +111,12 @@ jobs:

# steps:
# - uses: actions/checkout@v6
# with:
# submodules: recursive

# - uses: prefix-dev/setup-pixi@v0.9.5
# env:
# CMAKE_BUILD_PARALLEL_LEVEL: 2
# with:
# cache: true
# cache: false # ⚠️ Disabling cache for testing ⚠️
# environments: test-pixi-build

# - name: Test package [MacOS/Linux/Windows]
Expand Down
8 changes: 7 additions & 1 deletion .github/workflows/nix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ concurrency:
cancel-in-progress: true
jobs:
nix:
# ⚠️ temporarly disable the Nix job ⚠️
if: false

runs-on: "${{ matrix.os }}-latest"
strategy:
matrix:
Expand All @@ -24,7 +27,10 @@ jobs:
- run: nix flake check -L
- run: nix build -L ".#${{ matrix.extends }}"
check:
if: always()
# ⚠️ temporarly disable the Nix job ⚠️
if: false
# if: always()

name: check-macos-linux-nix
runs-on: ubuntu-latest
needs:
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/reloc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ jobs:

steps:
- uses: actions/checkout@v6
with:
submodules: recursive

- uses: actions/cache@v5
with:
Expand All @@ -50,10 +48,10 @@ jobs:
run: sudo mkdir -p /RELOC/SRC && sudo chown -R $(id -un) /RELOC

- name: clone in /RELOC/SRC
run: git -C /RELOC/SRC clone --recursive $(pwd)
run: git -C /RELOC/SRC clone $(pwd)

- name: install dependencies
run: sudo apt install libboost-all-dev libeigen3-dev python-is-python3 python3-numpy python3-pip python3-scipy ccache
run: sudo apt-get update && sudo apt-get install -y libboost-all-dev libeigen3-dev python-is-python3 python3-numpy python3-pip python3-scipy ccache

- name: update CMake
run: pip install -U pip && pip install -U cmake
Expand Down
Loading
Loading