Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
e4459fe
cleanup: remove submodules
ahoarau Jul 29, 2026
4ae1fd0
cleanup: remove hpp-fclConfig.cmake
ahoarau Jul 29, 2026
cf20898
python: remove auto-generated __init__.py and windows_dll_manager.py
ahoarau Jul 29, 2026
5b869d9
test: move test suite files into subdirectories
ahoarau Jul 29, 2026
90f13fe
test: reorganize test suite into subdirectories
ahoarau Jul 29, 2026
de19391
cmake: refactor build system with JRL CMake Modules v2
ahoarau Jul 29, 2026
484eb11
alloca: WIN32 -> _WIN32 check for clang compilers
ahoarau Jul 29, 2026
5748c94
python-nb: set nanobind module symbol name to coal_pywrap_nb
ahoarau Jul 29, 2026
c29e530
gitignore: update ignored files
ahoarau Jul 29, 2026
fb49979
gersemi: simplify formatting configuration
ahoarau Jul 29, 2026
50db54a
pre-commit: update gersemi-pre-commit repository and version
ahoarau Jul 29, 2026
81032d5
pixi: update configuration, task definitions, and jrl-cmakemodules de…
ahoarau Jul 29, 2026
6c71447
ci: temporarily disable Nix CI
ahoarau Jul 29, 2026
fb0f41e
ci: update GitHub Actions workflows for submodules removal and python…
ahoarau Jul 29, 2026
36f43a6
cmake: remove src/CMakeLists.txt
ahoarau Jul 29, 2026
6008530
fix documentation generation and install
ahoarau Jul 29, 2026
5a794c2
ci-pixi: use --skip-deps to prevent re-doing the same tasks
ahoarau Jul 29, 2026
4d211ab
cmake: BUILD_PYTHON_INTERFACE is ON by default
ahoarau Jul 29, 2026
ad4d61f
cmake: use path_list_prepend
ahoarau Jul 29, 2026
06cfcba
bring back the hpp-fcl support
ahoarau Jul 30, 2026
58da1e7
pixi: remove release-new-version
ahoarau Jul 30, 2026
b2567f3
ros-ci: add lyrical
ahoarau Aug 3, 2026
572605c
cmake: force boostpy python3
ahoarau Aug 3, 2026
13296aa
cmake: rename py tests
ahoarau Aug 3, 2026
e212302
cmake: remove extra escape
ahoarau Aug 3, 2026
9c24b54
cmake: move cpp test dir with utility
ahoarau Aug 3, 2026
6238420
cmake: remove unused SUFFIX_SO_VERSION
ahoarau Aug 3, 2026
0b33c3a
cmake: add EXPECTED_TARGETS
ahoarau Aug 3, 2026
44e0c08
cmake: make msvc conformance public
ahoarau Aug 3, 2026
844437d
cmake: gather engenpy and nanoeigenpy
ahoarau Aug 3, 2026
8d07a01
cmake: remove old FCL_HAVE_OCTOMAP
ahoarau Aug 3, 2026
baca4ea
cmake: include include(CMakeFindDependencyMacro)
ahoarau Aug 3, 2026
3bca39e
pixi: remove jrl upper constr
ahoarau Aug 3, 2026
bc12440
pixi: relax graphviz version
ahoarau Aug 3, 2026
1e00cdc
cmake: add missing shared_ptr_comparison.h
ahoarau Aug 3, 2026
172c1d3
cmake: do not install xml doc
ahoarau Aug 3, 2026
cc51fac
pixi-ci: add build_type to windows-2022 override
ahoarau Aug 3, 2026
50e9f41
cmake: install coal_pywrap as TARGET for rpath
ahoarau Aug 3, 2026
619a18a
cmake: install hppfcl compat
ahoarau Aug 3, 2026
c334ba0
pixi: use lld to fix nanobind LTO build error on ubuntu-24
ahoarau Aug 4, 2026
f44aa76
ci-pixi: add TRACY_NO_INVARIANT_CHECK=1 for macos-15-intel builds
ahoarau Aug 4, 2026
37d4bad
cmake: Add SUFFIX_SO_VERSION
jorisv Aug 6, 2026
6b15294
pixi: Create new-version environment
jorisv Aug 6, 2026
5915ea5
dev: Add release instruction
jorisv Aug 6, 2026
28f0545
doc: Prefix doc target by coal-
jorisv Aug 6, 2026
410ea07
python: Fix autodoc generation
jorisv Aug 6, 2026
d384abc
cmake: install pywrap as TARGET for rpath
ahoarau Aug 7, 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
4 changes: 2 additions & 2 deletions .gersemirc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
definitions: [./CMakeLists.txt,./cmake,./python,./src,./test]
line_length: 80
definitions: [./CMakeLists.txt, ./test]
line_length: 100
indent: 2
warn_about_unknown_commands: false
13 changes: 4 additions & 9 deletions .github/workflows/macos-linux-pip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,26 +32,21 @@ env:
jobs:
coal-pip:
name: "CI on ${{ matrix.os }} / py ${{ matrix.python-version }} with pip"
runs-on: "${{ matrix.os }}-latest"
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: ["ubuntu", "macos"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
exclude:
- os: "macos"
python-version: "3.8" # Not available on arm64
os: ["ubuntu-latest", "macos-latest"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v7
with:
submodules: 'true'
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- run: python -m pip install -U pip
- run: python -m pip install cmeel-assimp cmeel-octomap cmeel-qhull eigenpy[build]
- run: echo "CMAKE_PREFIX_PATH=$(cmeel cmake)" >> $GITHUB_ENV
- run: cmake -B build -S . -DPython_EXECUTABLE=$(which python) -DCOAL_HAS_QHULL=ON -DCOAL_PYTHON_NANOBIND=OFF
- run: cmake -B build -S . -DBUILD_PYTHON_INTERFACE=ON -DCOAL_HAS_QHULL=ON -DCOAL_PYTHON_NANOBIND=OFF
- run: cmake --build build -j 4
- run: cmake --build build -t test
98 changes: 55 additions & 43 deletions .github/workflows/macos-linux-windows-pixi.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: CI - MacOS/Linux/Windows via Pixi
name: CI - Pixi - MacOS/Linux/Windows

on:
push:
Expand Down Expand Up @@ -27,52 +27,72 @@ concurrency:

jobs:
coal-pixi:
name: Standard - ${{ matrix.os }} - Env ${{ matrix.environment }} ${{ matrix.build_type }} ${{ matrix.cxx_options }}
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.
# This can invalidate the cache (https://ccache.dev/manual/latest.html#config_compiler_check)
CCACHE_COMPILERCHECK: content
# Only set for the macos-15-intel tracy build, empty everywhere else.
TRACY_NO_INVARIANT_CHECK: ${{ matrix.tracy_no_invariant_check }}

strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, macos-15-intel]
environment: [all, all-python-oldest, all-boost-python]
os: [ubuntu-24.04, macos-26, macos-15-intel, windows-2022]
environment: [default, all, all-python-oldest, all-boost-python, all-clang, all-tracy]
build_type: [Release, Debug]
cxx_options: ['', '-mavx2']
exclude:
- os: macos-latest
cxx_options: '-mavx2'
- os: macos-15-intel
cxx_options: '-mavx2'

include:
# Define the variable for CMAKE_CXX_FLAGS
- cxx_options: ''
- run_tests: true

# Disable tests for tracy builds.
# FIXME: the coal-test-frontlist might crash on the CI
# Even with the TRACY_NO_INVARIANT_CHECK=1 env var set.
- environment: all-tracy
run_tests: false

# The macos-15-intel runner is a VM whose CPU does not expose an
# invariant TSC, so the Tracy client aborts at profiler init. This
# breaks the nanobind stub generation, which imports coal at build
# time. Timings from a VM are meaningless anyway, so skip the check.
- os: macos-15-intel
environment: all-tracy
tracy_no_invariant_check: '1'

# Test the legacy clang-cl compiler on Windows
- os: windows-2022
environment: all
cxx_options: ''
build_type: Release
- os: windows-2022
environment: all-boost-python
cxx_options: ''
build_type: Release
- os: windows-2022
environment: all-clang-cl
Comment thread
jorisv marked this conversation as resolved.
cxx_options: ''

# Enable builds with AVX2 optimizations
- os: ubuntu-24.04
environment: all
build_type: Release
cxx_options: '-mavx2'

- os: macos-15-intel
environment: all
build_type: Release
cxx_options: '-mavx2'

exclude:
# Do not run Debug tests with Tracy to reduce CI load
- build_type: Debug
environment: all-tracy

# Disable Debug builds on windows
- os: windows-2022
environment: default
cxx_options: ''
build_type: Debug

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

- uses: actions/cache@v6
with:
Expand All @@ -87,7 +107,7 @@ jobs:

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

- name: Build Coal [MacOS/Linux/Windows]
env:
Expand All @@ -98,9 +118,13 @@ jobs:
pixi run -e ${{ matrix.environment }} build

- name: Test Coal [MacOS/Linux/Windows]
if: ${{ ! (contains(matrix.os, 'windows') && matrix.build_type == 'Debug') }}
if: matrix.run_tests == true
run: |
pixi run -e ${{ matrix.environment }} ctest --test-dir build --output-on-failure
pixi run -e ${{ matrix.environment }} --skip-deps test

- name: Install Coal [MacOS/Linux/Windows]
run: |
pixi run -e ${{ matrix.environment }} --skip-deps install

- name: Show ccache statistics [MacOS/Linux/Windows]
run: |
Expand All @@ -126,8 +150,6 @@ jobs:

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

- uses: actions/cache@v6
with:
Expand All @@ -142,28 +164,21 @@ jobs:

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

- name: Build Coal cpp [MacOS/Linux/Windows]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
shell: bash -el {0}
run: |
pixi run -e ${{ matrix.environment }} configure \
-DBUILD_PYTHON_INTERFACE=OFF \
-B build_cpp
pixi run -e ${{ matrix.environment }} configure -DBUILD_PYTHON_INTERFACE=OFF -B build_cpp
pixi run -e ${{ matrix.environment }} cmake --build build_cpp --target all
pixi run -e ${{ matrix.environment }} cmake --install build_cpp

- name: Build Coal standalone python [MacOS/Linux/Windows]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
shell: bash -el {0}
run: |
pixi run -e ${{ matrix.environment }} configure \
-DBUILD_PYTHON_INTERFACE=ON \
-DBUILD_STANDALONE_PYTHON_INTERFACE=ON \
-B build_python
pixi run -e ${{ matrix.environment }} configure -DBUILD_PYTHON_INTERFACE=ON -DBUILD_STANDALONE_PYTHON_INTERFACE=ON -B build_python
pixi run -e ${{ matrix.environment }} cmake --build build_python --target all
pixi run -e ${{ matrix.environment }} cmake --install build_python
pixi run -e ${{ matrix.environment }} python -c "import coal"
Expand All @@ -183,14 +198,11 @@ jobs:

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

# - uses: prefix-dev/setup-pixi@v0.10.0
# env:
# CMAKE_BUILD_PARALLEL_LEVEL: 2
# with:
# cache: true
# environments: test-pixi-build

# - name: Test package [MacOS/Linux/Windows]
Expand All @@ -206,7 +218,7 @@ jobs:
- coal-python-standalone-pixi
# - coal-pixi-build

runs-on: Ubuntu-latest
runs-on: ubuntu-latest

steps:
- name: Decide whether the needed jobs succeeded or failed
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 for jrl-v2 PR ⚠️
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 for jrl-v2 PR ⚠️
if: false
# if: always()

name: check-macos-linux-nix
runs-on: ubuntu-latest
needs:
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/ros_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ jobs:

# ROS2 Rolling Ridley
- ROS_DISTRO: rolling
os: Ubuntu 24.04 (Noble)
os: Ubuntu 26.04 (Resolute)

# ROS2 Lyrical Luth (May 2026 - May 2031)
- ROS_DISTRO: lyrical
os: Ubuntu 26.04 (Resolute)
env:
CMAKE_ARGS: -DBUILD_PYTHON_INTERFACE=ON -DCOAL_BUILD_TESTS=ON -DCOAL_BUILD_BENCHMARKS=ON
VERBOSE_OUTPUT: true
Expand Down
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,11 @@ __pycache__/
# pixi environments
.pixi
*.egg-info

install*/
.pytest_cache/
.ruff_cache
.DS_Store
compile_commands.json
cmake-profiling.json
*.conda
4 changes: 0 additions & 4 deletions .gitmodules

This file was deleted.

4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ repos:
rev: v6.0.0
hooks:
- id: trailing-whitespace
- repo: https://github.com/BlankSpruce/gersemi
rev: 0.26.1
- repo: https://github.com/BlankSpruce/gersemi-pre-commit
rev: 0.28.0
hooks:
- id: gersemi
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Added `resolveReferences` method to `Contact` and `DistanceResult` to remap the `o1/o2` pointers (typically after serialization/deserialization) ([855](https://github.com/coal-library/coal/pull/855)).
- Added copy constructors to `Contact::Contact(const Contact& other, const CollisionGeometry* new_o1, const CollisionGeometry* new_o2)` and `DistanceResult::DistanceResult(const DistanceResult& other, const CollisionGeometry* new_o1, const CollisionGeometry* new_o2)` to allow copying a `Contact` or `DistanceResult` while remapping the `o1/o2` pointers to new geometries. This is typically useful in the context of deep-copying ([#856](https://github.com/coal-library/coal/pull/820)).
- Added the `COAL_EQUAL_OPERATOR_CHECK` macro. This macro can be overridden at compile time, extremely practial for debugging serialization for example. ([#859](https://github.com/coal-library/coal/pull/859))
- Refactor CMake build system with JRL CMake Modules v2 ([#794](https://github.com/coal-library/coal/pull/794))

### Removed
- Remove direct dependency to ([#744](https://github.com/coal-library/coal/pull/744)):
Expand Down
Loading
Loading