Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
249 commits
Select commit Hold shift + click to select a range
d0c574f
introduce jrl cmake modules v2
ahoarau Dec 9, 2025
7ae9718
allow to pass content at the top of config.cmake via PACKAGE_TOP_MACROS
ahoarau Dec 10, 2025
3d6ec3d
let's keep the message reasonable
ahoarau Dec 10, 2025
30185af
integrate jrl-cmakemodules-v2 from https://github.com/ahoarau/jrl-cma…
ahoarau Dec 10, 2025
dd69594
add JRL_CMAKEMODULES_USE_V2 option to use v2 API
ahoarau Dec 15, 2025
b7cc3b7
add contexte manager to DllDirectoryManager
ahoarau Dec 15, 2025
cfe4bba
check python_add_library is available
ahoarau Dec 15, 2025
5de0207
check Boost::python target exists
ahoarau Dec 15, 2025
1e90fe9
improve jrl_target_headers documentation
ahoarau Dec 15, 2025
da57262
remove unused GENERATED_DIR in jrl_target_headers
ahoarau Dec 15, 2025
41e1970
improve documentation of jrl_boostpy_add_module
ahoarau Dec 15, 2025
de3766d
add inria 2026 copyright
ahoarau Dec 15, 2025
ca9dce7
formatting (prek run -a)
ahoarau Dec 15, 2025
0ddf81f
add BSD-3 Clause License
ahoarau Dec 15, 2025
0c67b27
rename CMAKE_UTILS_BUILD_TESTS to JRL_CMAKEMODULES_V2_BUILD_TESTS, OF…
ahoarau Dec 15, 2025
aebc929
update copyright for 2025-2026
ahoarau Dec 16, 2025
2a43cd1
fix jrl_print_options_summary not logging anything
ahoarau Dec 17, 2025
c97a490
import libraries in the DLLDirectorymanager context
ahoarau Dec 17, 2025
ad41f50
ignore build and instal dirs
ahoarau Dec 18, 2025
389f3a6
no need to include PytestAddTest, only discover like boost
ahoarau Dec 18, 2025
207ba57
update ruff(legacy) to ruff-check
ahoarau Dec 18, 2025
bfdf035
add jrl_ prefix to copy_compile_commands_in_source_dir
ahoarau Dec 18, 2025
9885808
add info about where the jrl V2 are loaded
ahoarau Dec 18, 2025
4a3c010
look for tsl-robin-map only if nanobind is found
ahoarau Dec 18, 2025
36adab4
convert path to cmake path lists
ahoarau Dec 18, 2025
22aac8a
add more explicit message about export component beeing created
ahoarau Dec 19, 2025
ade4516
fix trailing space (pre-commit)
ahoarau Dec 19, 2025
e566fe1
add jrl_cmakemodules_get_version and jrl_print_banner
ahoarau Dec 19, 2025
7d263c2
use jrl-cmakemodules project name and set jrl-cmakemodules_VERSION li…
ahoarau Dec 19, 2025
8b47929
remove intermediate cmakelists and print banner
ahoarau Dec 19, 2025
0e70841
move jrl v2 into the v2 folder only
ahoarau Dec 19, 2025
0b2cbbb
fix comment about creating a separate export
ahoarau Dec 19, 2025
01ad49e
do not bypass the install dir
ahoarau Dec 19, 2025
4428f5c
automatically detect the python environment to compute the installati…
ahoarau Dec 19, 2025
2b03c3d
Revert "do not bypass the install dir"
ahoarau Dec 19, 2025
405d21b
print banner when using installed version
ahoarau Dec 19, 2025
a387378
install the whole jrl v2 package
ahoarau Dec 19, 2025
8d4dff9
specify a dir name as we are technically an out of tree subdirectory
ahoarau Dec 19, 2025
333558a
on nix compute a python install dir relative to the data dir
ahoarau Dec 19, 2025
e1db29e
we only need to have a fix for conda python install dir
ahoarau Dec 19, 2025
aa3b285
fix the os detection python script
ahoarau Dec 19, 2025
627a53e
set min cmake version required to allow to use IN_LIST in CMake 3.22
ahoarau Dec 21, 2025
c5d5201
jrl_copy_compile_commands_in_source_dir is only useful when we don't …
ahoarau Dec 21, 2025
939c9d3
add documentation for jrl_target_set_output_directory
ahoarau Dec 21, 2025
56faeee
add jrl_get_cxx_compiler_id to handle the clang-cl and msvc exceptions
ahoarau Dec 21, 2025
8ced90d
jrl_target_generate_header: remove CMAKE_CURRENT_BINARY_DIR being req…
ahoarau Dec 21, 2025
107fbad
use LIBRARY_VERSION instead of PROJECT_VERSION
ahoarau Dec 21, 2025
b86dc41
improve jrl_find_package documentation
ahoarau Dec 21, 2025
a95e058
jrl_python_compute_install_dir: refactor on handle only the conda+win…
ahoarau Dec 21, 2025
1913a79
only convert path on windows
ahoarau Dec 22, 2025
c619c1c
jrl_find_nanobind: add support for REQUIRED, QUIET argument and impro…
ahoarau Dec 22, 2025
65d166d
add uninstall target
ahoarau Dec 27, 2025
0564aa7
add utility function to get the main dirs
ahoarau Dec 27, 2025
f380db9
convert path to cmake path list on windows
ahoarau Dec 27, 2025
5430ada
add jrl_check_command_exists function
ahoarau Jan 5, 2026
e4699db
imrove some documentation
ahoarau Jan 5, 2026
24c6f8c
only use cmake minimum version (not range)
ahoarau Jan 5, 2026
bab8d09
add check for python interpreter in jrl_boostpy_add_stubs
ahoarau Jan 5, 2026
25f680a
add jrl_python_get_interpreter to factorize some code
ahoarau Jan 5, 2026
fbf37a6
use jrl_python_get_interpreter
ahoarau Jan 5, 2026
5357ccf
change comment on jrl_check_python_module_name
ahoarau Jan 5, 2026
863a835
add documentation to jrl_python_generate_init_py
ahoarau Jan 5, 2026
eb78b37
add documentation to jrl_python_compile_all
ahoarau Jan 5, 2026
2ba2077
_pad_string -> _jrl_pad_string
ahoarau Jan 5, 2026
243a9da
add documentation to jrl_cmake_dependent_option
ahoarau Jan 5, 2026
afda023
rename to cmake_uninstall.cmake to matche the cmake_install.cmake
ahoarau Jan 5, 2026
b41aaaa
remove the legacy IMMEDIATE keyword in configure_file
ahoarau Jan 5, 2026
4cf3781
rename jrl_setup_uninstall_target to jrl_configure_uninstall_target f…
ahoarau Jan 5, 2026
9ed4dd8
jrl_python_get_interpreter: make sure the path is converted. into a c…
ahoarau Jan 6, 2026
9da8b05
enable policy CMP0177: add normalization for install() DESTINATION pa…
ahoarau Jan 6, 2026
64a0ba1
normalize paths when using cmake_path
ahoarau Jan 6, 2026
37c3935
Revert "enable policy CMP0177: add normalization for install() DESTIN…
ahoarau Jan 6, 2026
5bd0c36
Add function to retrieve git commit hash and display in banner
ahoarau Jan 6, 2026
d60ac3b
convert user defined <pkg>_PYTHON_INSTALL_DIR to cmake_path_list and …
ahoarau Jan 6, 2026
36a3d90
run updated gersemi formatter
ahoarau Jan 6, 2026
14b3fc7
merge BoostPython.cmake into main jrl module
ahoarau Jan 6, 2026
7cee218
merge check python module name into main module
ahoarau Jan 6, 2026
3c66ad5
add jr_log internal functions
ahoarau Jan 6, 2026
ea40738
remove the buildsystem target filtering
ahoarau Jan 6, 2026
6b9a3e0
ignore .DS_Store
ahoarau Jan 7, 2026
87dee1d
add jrl_target_generate_config_header documentation (new format)
ahoarau Jan 7, 2026
96c5ef9
use _jrl_log in jrl_print_dependencies_summary
ahoarau Jan 7, 2026
837e1a5
fix pytest on ubuntu 22.04
ahoarau Jan 8, 2026
58d84cc
remove FindScipy we now have jrl_check_python_module
ahoarau Jan 10, 2026
cf10153
jrl_check_python_module: get module version if available
ahoarau Jan 10, 2026
c720efc
generate-dependencies.cmake.in: add comments to clarify the function …
ahoarau Jan 10, 2026
492156d
use jrl_check_file_exists when possible
ahoarau Jan 11, 2026
ff8700c
update jrl_find_package doc
ahoarau Jan 11, 2026
02fd21e
update jrl_find_package doc on MODULE_PATH
ahoarau Jan 11, 2026
ffd48ba
unset variables at the end and add comments
ahoarau Jan 11, 2026
e042e89
jrl_find_package: reduce verbosity of variables msg
ahoarau Jan 11, 2026
bc54ed3
cmake_print_properties: added ref
ahoarau Jan 11, 2026
c3509fb
jrl_export_dependencies: edit doc
ahoarau Jan 11, 2026
dd8736d
jrl_boostpy_add_stubs: rename OUTPUT to OUTPUT_PATH and compute the s…
ahoarau Jan 12, 2026
f5e5da9
add jrl_python_relative_site_packages (and absolute)
ahoarau Jan 12, 2026
49e0f47
add jrl_generate_ros2_package_files
ahoarau Jan 13, 2026
8c6d416
jrl_generate_ros2_package_files: python generation on confition INSTA…
ahoarau Jan 13, 2026
5574e66
jrl_generate_ros2_package_files: check DEFINED, not value
ahoarau Jan 13, 2026
6f43a42
jrl_generate_ros2_package_files: condition cpp files gen
ahoarau Jan 13, 2026
c71584f
use CMAKE_CXX_COMPILER_FRONTEND_VARIANT if available
ahoarau Jan 13, 2026
8f70e86
jrl_export_dependencies: require CMAKE_INSTALL_LIBDIR
ahoarau Jan 14, 2026
927823e
generate-dependencies: handle absolute and relative install destinations
ahoarau Jan 14, 2026
a932593
jrl_target_install_headers: handle abs/rel install destination and ab…
ahoarau Jan 14, 2026
0e1a96c
reformat doc as a uniform markdown style
ahoarau Jan 15, 2026
0955945
remove unused jrl_contains_generator_expressions
ahoarau Jan 16, 2026
75f40a3
make _jrl_make_valid_c_identifier internal
ahoarau Jan 16, 2026
6de0714
make _jrl_export_dependencies intenal
ahoarau Jan 16, 2026
db5b2b1
uniformize the variables names
ahoarau Jan 16, 2026
c3663cc
internalize check functions
ahoarau Jan 16, 2026
6b5d2ca
add _jrl_normalize_version
ahoarau Jan 16, 2026
ac8a6fe
jrl_target_headers: remove unused check
ahoarau Jan 16, 2026
f5b807e
templates: prepend variables with JRL
ahoarau Jan 16, 2026
e408199
refactor header generations functions
ahoarau Jan 17, 2026
2de3ad0
remove unused external modules
ahoarau Jan 17, 2026
1ceee18
add include_guard(GLOBAL)
ahoarau Jan 17, 2026
ef09c28
update documentation format
ahoarau Jan 19, 2026
13bfb7d
_jrl_top_dir: remove trailing slash if any
ahoarau Jan 19, 2026
7801301
add _jrl_docs_dir
ahoarau Jan 19, 2026
a68cb07
ignore api.md
ahoarau Jan 19, 2026
16627f9
refactor _jrl_generate_api_doc
ahoarau Jan 19, 2026
7fe484f
docs: update api.md
ahoarau Jan 19, 2026
39199b8
remove range on cmake min version
ahoarau Jan 20, 2026
0a8c852
add option to build doc
ahoarau Jan 20, 2026
1ad3353
add initial README
ahoarau Jan 20, 2026
ba05539
make jrl_search_package_module_file private
ahoarau Jan 22, 2026
668a2ba
remove jrl_cmake_print_properties
ahoarau Jan 22, 2026
4b16b75
update documentation
ahoarau Jan 22, 2026
66d29cd
filter out internal functions in doc
ahoarau Jan 22, 2026
83812cf
gitignore: ignore ruff_cache
ahoarau Jan 22, 2026
71b7906
jrl_add_export_component: remove comment and TODO
ahoarau Jan 22, 2026
7228c08
jrl_print_dependencies_summary: fix padding
ahoarau Jan 22, 2026
c965462
jrl_python_compute_install_dir: allow to use env var. Improve doc.
ahoarau Jan 22, 2026
d0bdc76
doc: update api doc
ahoarau Jan 22, 2026
341add6
jrl_find_nanobind: use interpreter and improve doc
ahoarau Jan 22, 2026
8018dee
refactor jrl_find_package with jrl_export_dependency
ahoarau Jan 22, 2026
249ac3c
_jrl_generate_api_doc: fix nested semicolons case
ahoarau Jan 22, 2026
a2f2cee
doc: update api doc
ahoarau Jan 22, 2026
3cf42f8
remove _jrl_make_valid_c_identifier, use built in string(MAKE_C_IDENT…
ahoarau Jan 22, 2026
c446e73
rename the option to JRL_GENERATE_API_DOC
ahoarau Feb 5, 2026
51cb313
refactor jrl_option, remove jrl_c;ake_dependant_option, and add jrl_l…
ahoarau Feb 5, 2026
d509483
allow to disable export via project-based option
ahoarau Feb 5, 2026
cf55db1
uppercase the python installdir bypass option
ahoarau Feb 5, 2026
7b6cd63
update api documentation
ahoarau Feb 5, 2026
0c93300
add first draft of testing framework
ahoarau Feb 5, 2026
c9c5426
always set the option in CACHE
ahoarau Feb 5, 2026
a88aad5
no need for PROJECT_NAME using options
ahoarau Feb 5, 2026
79aa423
for options to be initialized to boolean type
ahoarau Feb 5, 2026
a6c334d
make FALLBACK mandatory
ahoarau Feb 5, 2026
862b2af
jrl_find_package: remove unused feature MODULE_PATH
ahoarau Feb 5, 2026
8464f6a
_jrl_check_no_unrecognized_arguments: enforce no unrecognized arguments
ahoarau Feb 5, 2026
954955e
doc: update api documentation
ahoarau Feb 5, 2026
cb32dca
add release script to check and set versions
ahoarau Feb 7, 2026
c33c18f
add qol actions
ahoarau Feb 7, 2026
f9fa956
add documentation
ahoarau Feb 9, 2026
d17b26e
handle case when no version files are found
ahoarau Feb 9, 2026
d4a53a2
refactor: update version bump commands and improve output options
ahoarau Feb 9, 2026
4121733
add release.py unit tests and readme
ahoarau Feb 9, 2026
7cfcdd3
add pixi support
ahoarau Feb 9, 2026
ad81620
display more user friendly message
ahoarau Feb 9, 2026
8bc171e
add back unit tests
ahoarau Feb 9, 2026
5606f6f
add v2 ci
ahoarau Feb 10, 2026
66cc04a
move pixi.toml to top level
ahoarau Feb 10, 2026
afe9962
install catch2 in sustem
ahoarau Feb 10, 2026
51f2096
use fetchcontent source dir
ahoarau Feb 10, 2026
ca63753
add verbosity
ahoarau Feb 10, 2026
5fccbac
fix tests
ahoarau Feb 10, 2026
36e5dfc
allow to cancel ci group
ahoarau Feb 10, 2026
151980d
install catch2 in /usr/local
ahoarau Feb 10, 2026
ca30039
try to use github cache instead of registry
ahoarau Feb 10, 2026
df49005
update repo name in test
ahoarau Feb 10, 2026
8f60d5a
use ref to vcpkg cache key
ahoarau Feb 10, 2026
a189e23
pull and push vcpkg even if the whole ci fails
ahoarau Feb 10, 2026
3a43522
add debug log level in windows ci
ahoarau Feb 10, 2026
e2d8f4c
use CMAKE_TOOLCHAIN_FILE as env var
ahoarau Feb 10, 2026
3a642a5
disable pixi build for now (windows error on symlink)
ahoarau Feb 10, 2026
e12e8a8
fix pixi build
ahoarau Feb 10, 2026
40b4c2c
migrate jrl to v2 api
ahoarau Feb 11, 2026
47881a9
update ci to new jrl v2
ahoarau Feb 11, 2026
7b53135
add ci to generate and check api
ahoarau Feb 11, 2026
44c3bdd
default tests and docgen to off
ahoarau Feb 11, 2026
11d3fa4
update the jrl v2 options
ahoarau Feb 11, 2026
a05183f
refactor pixi file to separate clearly the envs
ahoarau Feb 11, 2026
9ead2b5
_jrl_generate_api_doc: only write if content is unchanged and notify …
ahoarau Feb 11, 2026
d63093f
add the jrl_print_banner() by default (temp)
ahoarau Feb 11, 2026
46e4897
add ros2 ci
ahoarau Feb 11, 2026
2765e53
ci: disable ros2 tests (tmp)
ahoarau Feb 11, 2026
1069b36
jrl_python_compute_install_dir: add cmeel exception
ahoarau Feb 12, 2026
dacd6c5
do not expand the Version Changed Panel
ahoarau Feb 12, 2026
30b77c6
release.py: handle git and precommit gracefully
ahoarau Feb 12, 2026
167a14b
release.py: display git command and only commit the files changed by …
ahoarau Feb 12, 2026
f626cb9
release.py: allow to detect multiline project()
ahoarau Feb 13, 2026
c256ef4
release.py: use cmake parser to parser cmakelists files
ahoarau Feb 13, 2026
7ed945f
release.py: improve the version diff display
ahoarau Feb 15, 2026
94ae452
release.py: handle user CTRL+C
ahoarau Feb 16, 2026
aa4a9e0
release.py: display the type of change in the Panel
ahoarau Feb 16, 2026
c0c169a
release.py: improve colors
ahoarau Feb 16, 2026
d94da68
release.py: add support for updating pixi.lock file
ahoarau Feb 16, 2026
ac926f9
release.py: add backup and restore
ahoarau Feb 16, 2026
48c3455
release.py: add custom commit and tag messages
ahoarau Feb 16, 2026
e65ed83
chore: bump version to 1.2.0
ahoarau Feb 16, 2026
1dbc84f
cmake: update python and nanobind min required
ahoarau Feb 16, 2026
934df3e
cmake: add ros2 package support
ahoarau Feb 20, 2026
f2c55d5
ci: on pixi only keep 1 ubuntu and 1 windows
ahoarau Feb 20, 2026
1b71008
jrl_target_generate_config_header: use arg_UNPARSED_ARGUMENTS to be a…
ahoarau Feb 20, 2026
c902c08
jrl_python_compile_all: use module directly
ahoarau Mar 10, 2026
f558e24
v2: fix install fix to v2 folder
ahoarau Mar 11, 2026
210cd5d
gitignore: ignore conda files
ahoarau Mar 11, 2026
fe31e21
tests: make sure the v2 module is present
ahoarau Mar 11, 2026
8c95787
v2: add back the jrl-cmakemodules::jrl-cmakemodules component for bac…
ahoarau Mar 11, 2026
fd91fee
pixi: update lock file
ahoarau Mar 11, 2026
31f45c7
v2: use the component template (default)
ahoarau Mar 11, 2026
a209d54
add project tests for find_package on v1 and v2
ahoarau Mar 11, 2026
be5a610
tests: include base before project()
ahoarau Mar 11, 2026
643ed80
jrl_configure_default_install_dirs: prevent warning on pure-cmake pro…
ahoarau Mar 16, 2026
cb94bc7
jrl_export_package: loop over each target to install headers
ahoarau Mar 17, 2026
696ba4e
tests: refactor current testsuite and add multitargets test
ahoarau Mar 17, 2026
9ca5639
tests: add multi component test project
ahoarau Mar 17, 2026
be72f48
test: remove "" for cmake 3.22
ahoarau Mar 17, 2026
271ba95
pixi: add cmake322 test env
ahoarau Mar 17, 2026
b62b736
pixi: update lock file
ahoarau Mar 17, 2026
b6f1243
ci: test cmake322 env on all platforms
ahoarau Mar 17, 2026
eb40795
tests: add minimal project with uppercase in the name
ahoarau Mar 17, 2026
51a7a9b
v2: suport UpperCase project names via Config.cmake and ConfigVersion…
ahoarau Mar 17, 2026
c9f0204
doc: update docs
ahoarau Mar 17, 2026
3ea249e
ci: add explicit test-pixi-build env
ahoarau Mar 20, 2026
01344b3
tests: require jrl version 1.2.0 min
ahoarau Mar 20, 2026
734ed12
pixi: update lock file
ahoarau Mar 20, 2026
49773f7
pixi: add doc task to generate api doc
ahoarau Mar 24, 2026
82f5a25
doc: update documentation
ahoarau Mar 24, 2026
4813a5d
readme: update main readme for v2
ahoarau Mar 24, 2026
c733f13
remove unused generated readme
ahoarau Mar 21, 2026
412d458
pixi: integrate python tests
ahoarau Mar 21, 2026
b9c9c4f
pixi: update lock file
ahoarau Mar 21, 2026
63a2dde
release.py: remove gitpython dep and cleanup comments
ahoarau Mar 21, 2026
3565717
release.py: update/shorten doc
ahoarau Mar 21, 2026
9232e5f
release.py: remove enumerate
ahoarau Mar 21, 2026
f70a99a
release.py: change ChangelogVersionExtractor to inherit from VersionE…
ahoarau Mar 21, 2026
cbb26e2
release.py: Add option to specify files to stage
ahoarau Mar 21, 2026
b856ec9
release.py: display git tag and commit in dry run
ahoarau Mar 21, 2026
5b47386
refactor: simplify update_pixi_lock function params
ahoarau Mar 21, 2026
763e190
test: update assertion for previous_version in cli json output test
ahoarau Mar 21, 2026
67d10de
tests: add release.py coverage
ahoarau Mar 21, 2026
efe2903
release.py: update dry run output message
ahoarau Mar 21, 2026
00bde84
release.py: display the output of pixi list command
ahoarau Mar 25, 2026
c15a1ba
release.py: uniformize the display output with the dry-run
ahoarau Mar 25, 2026
f62258a
rename release.py to jrl_release.py
ahoarau Mar 25, 2026
0bb4bd8
jrl_release.py: update sheban according to ub doc and chmod +x
ahoarau Mar 27, 2026
dcb4880
jrl_release.py: remove unused RegexVersionExtractor
ahoarau Mar 27, 2026
f935611
tests: remove test on RegexVersionExtractor
ahoarau Mar 27, 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
123 changes: 123 additions & 0 deletions .github/workflows/v2-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: V2 - Linux

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
ubuntu22:
name: Ubuntu 22.04
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v6
- uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.22"
- uses: actions/setup-python@v6
with:
python-version: "3.10"
- name: Install c++ dependencies (via apt)
run: |
sudo apt-get update
sudo apt-get install -y ninja-build g++ unzip libboost-python-dev

- name: Install python dependencies (via pip)
run: |
which python3
which pip3
pip3 install nanobind pytest numpy

- name: Build Catch2 (Ubuntu 22.04 has Catch2 v2, we need v3)
run: |
cd /home/runner/work/
wget https://github.com/catchorg/Catch2/archive/refs/tags/v3.11.0.zip -O catch2.zip
unzip catch2.zip
cmake -B catch2-build -S Catch2-3.11.0 -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build catch2-build --config Release
sudo cmake --install catch2-build

- name: Configure project
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure

ubuntu24:
name: Ubuntu 24.04
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v6
- uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.28"
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install c++ dependencies (via apt)
run: |
sudo apt-get update
sudo apt-get install -y ninja-build g++ catch2 libboost-python-dev

- name: Install python dependencies (via pip)
run: |
which python3
which pip3
pip3 install nanobind pytest numpy

- name: Configure project
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure

api_doc:
name: "Generate API documentation"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Generate API documentation (direct function call)
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_GENERATE_API_DOC=ON

- name: Check API is still up to date
run: git diff --exit-code -- v2/docs

- name: Generate API documentation (cmake script mode)
run: cmake -DJRL_GENERATE_API_DOC=ON -P v2/modules/jrl.cmake

archlinux:
name: "Archlinux"
runs-on: ubuntu-latest
container:
image: docker://archlinux:latest
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: pacman -Syu --noconfirm cmake ninja gcc catch2 python-pytest nanobind python-numpy boost

- name: Configure project
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure
42 changes: 42 additions & 0 deletions .github/workflows/v2-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: V2 - macOS

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
macos:
name: ${{ matrix.name }}
runs-on: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- image: macos-26
name: macOS 26 (Apple Silicon)

- image: macos-15
name: macOS 15 (Apple Silicon)

- image: macos-15-intel
name: macOS 15 (Intel)

steps:
- uses: actions/checkout@v6
- name: Install dependencies (via brew)
run: |
brew install catch2 boost-python3 robin-map nanobind pytest numpy

- name: Configure project
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure
45 changes: 45 additions & 0 deletions .github/workflows/v2-pixi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: V2 - Pixi

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
pixi-ci:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
- os: macos-15-intel
- os: macos-26
- os: windows-2025

steps:
- uses: actions/checkout@v6

- name: Install Pixi
uses: prefix-dev/setup-pixi@v0.9.3
with:
pixi-version: latest

- name: Configure Pixi environment
run: pixi install

- name: Configure project
run: pixi run configure

- name: Build project
run: pixi run build

- name: Run tests (cmake latest)
run: pixi run -e test test

- name: Run tests (cmake 3.22)
run: pixi run -e cmake322 test

- name: Run tests (pixi build)
run: pixi run -e test-pixi-build test-packaging-pixi-build
9 changes: 9 additions & 0 deletions .github/workflows/v2-prek.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: V2 - Prek
on: [push, pull_request]

jobs:
prek:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v1
45 changes: 45 additions & 0 deletions .github/workflows/v2-ros2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: V2 - ROS2
on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
ros2:
name: ROS2 ${{ matrix.ROS_DISTRO }} - ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# ROS2 Humble Hawksbill (May 2022 - May 2027)
- ROS_DISTRO: humble
os: Ubuntu 22.04 (Jammy)

# ROS2 Jazzy Jalisco (May 2024 - May 2029)
- ROS_DISTRO: jazzy
os: Ubuntu 24.04 (Noble)

# ROS2 Kilted Kayu (May 2025 - December 2026)
- ROS_DISTRO: kilted
os: Ubuntu 24.04 (Noble)

# ROS2 Rolling Ridley
- ROS_DISTRO: rolling
os: Ubuntu 24.04 (Noble)
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ matrix.ROS_DISTRO }}-${{github.run_id}}
restore-keys: ccache-${{ matrix.ROS_DISTRO }}-
- uses: ros-industrial/industrial_ci@ba2a3d0f830f8051b356711a8df2fedfc5d256cf
env:
# CMAKE_ARGS: -DJRL_CMAKEMODULES_BUILD_TESTS=ON
VERBOSE_OUTPUT: true
VERBOSE_TESTS: true
ROS_DISTRO: ${{ matrix.ROS_DISTRO }}
78 changes: 78 additions & 0 deletions .github/workflows/v2-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: V2 - Windows

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
VCPKG_COMMAND: C:/vcpkg/vcpkg.exe --vcpkg-root=C:/vcpkg
VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg-bincache
VCPKG_BINARY_SOURCES: "clear;files,${{ github.workspace }}/vcpkg-bincache,readwrite"
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake

jobs:
windows-with-vcpkg:
name: ${{ matrix.name }}
runs-on: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- image: windows-2022
name: Windows Server 2022
arch: x64

- image: windows-2025
name: Windows Server 2025
arch: x64

- image: windows-11-arm
name: Windows 11 ARM64
arch: arm64

steps:
- uses: actions/checkout@v6
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}

- name: Create vcpkg binary cache directory
run: mkdir -p ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}

- name: Restore vcpkg binary cache
id: cache-vcpkg-restore
uses: actions/cache/restore@v4
with:
path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
key: vcpkg-${{ matrix.image }}-${{ matrix.arch }}-${{ github.ref }}
restore-keys: vcpkg-${{ matrix.image }}-${{ matrix.arch }}-

- name: Install C++ dependencies (via vcpkg)
run: |
${{ env.VCPKG_COMMAND }} install catch2 boost-python

- name: Save vcpkg binary cache
if: always()
uses: actions/cache/save@v4
with:
path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
key: ${{ steps.cache-vcpkg-restore.outputs.cache-primary-key }}

- name: Install Python dependencies (via pip)
run: |
C:/vcpkg/installed/${{ matrix.arch }}-windows/tools/python3/python.exe -m ensurepip --upgrade
C:/vcpkg/installed/${{ matrix.arch }}-windows/tools/python3/python.exe -m pip install nanobind pytest numpy

- name: Configure project
run: cmake -G Ninja -S . -B build --log-level=DEBUG -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build --verbose

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,10 @@ hpp/idl/*.pyc
.docs/build
_unittests/build/
_unittests/install/
build*/
install*/
.DS_Store
.ruff_cache/
*.conda
.coverage
htmlcov/
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.10
hooks:
- id: ruff
- id: ruff-check
args:
- --fix
- id: ruff-format
Expand Down Expand Up @@ -45,4 +45,4 @@ repos:
hooks:
- id: check-hooks-apply
- id: check-useless-excludes
exclude: (\.js$|^doxygen/MathJax/)
exclude: (\.js$|^doxygen/MathJax/|api\.md$)
Loading
Loading