[MAJOR] Add optional ROS 2 overlay and release-safe template tooling - #27
Conversation
- Add colcon shim, interfaces, lifecycle bridge, and standalone and composed launch paths. - Add ROS build and package-version synchronization helpers while preserving the ROS-free library build.
- Describe the overlay architecture, lifecycle behavior, and source-adjacent bridge boundary. - Document additive rollout, ROS-valid package prefixes, reversible tailoring, and hermetic dependency handling. - Add removable agent guidance and record the completed implementation plan.
- Register ROS-free CMake and pytest contracts for overlay structure, rollout, lifecycle launch, documentation, and version synchronization. - Add Jazzy overlay build and rollout dogfood CI with full-depth checkout and owned path filters. - Keep copied workflows operational when template-only checks or rollout helpers are absent, and canonicalize documentation verifier paths.
- Add export root project metadata through standard CMake fields and CPack. - Implement synchronization of ROS manifests without changing package identity. - Guard derived-project rollout and CI compatibility.
- Change CMAKE_SOURCE_DIR to PROJECT_SOURCE_DIR when determining src/ includes location - Update ros 2 overlay link setup removing PRIVATE link to project src - Add CI step to verify installation (template project)
- Change workflows files to explicitly verify template implementation instead of being used by tailored projects - Add tpl files (templates) for tailoring - Update documentation and tailoring helpers
- Separate ordinary CUDA sources from ptx src files (e.g., OptiX) when globbing to fetch src files - Add tentative automatic resolution of installed OptiX headers for cmake installed library. - Verify CUDA and OptiX compile and install contracts. - Update documentation and tests for template
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5a9ff3a268
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ba404e990c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Implement logger class with colors and tags support (log levels enumeration) - Keep logger dependent on standard library only - Update tests and consumers
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cf902dc5fc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Deprecate some cmake tests - Add generate_version.sh to CI paths
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b6ecb87402
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
cpp_cuda_template_project/generate_version.sh
Lines 96 to 97 in eb61ab2
When this script is run from a CPack/source archive that has no own .git directory but is unpacked anywhere inside another Git worktree, git -C "$SCRIPT_DIR" discovers the parent repository and the script prefers that unrelated tag over the archive's VERSION; with --sync-ros2 this can rewrite the ROS manifests to the parent project's version. Require the discovered Git top level to be this project root, or cap discovery with GIT_CEILING_DIRECTORIES, before taking the Git version path so no-Git release archives remain self-contained.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 74d902cb51
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| * messages. | ||
| */ | ||
| explicit CLogger(std::string charComponentName, | ||
| ELogLevel enumLevel = ELogLevel::Error, |
There was a problem hiding this comment.
Make the logger default match the documented examples
The no-argument logger used by src/bin/example_program.cpp and the new logging guide relies only on setLevelFromEnvironment(). When TEMPLATE_PROJECT_LOG_LEVEL is unset, this default keeps the threshold at Error, so the info(...) calls in the example program and placeholder_fcn() are suppressed; running the example produces no output even though doc/logging.md says the default emits the INFO line. Either default to Info or update the examples/docs to set an explicit level.
Useful? React with 👍 / 👎.
Summary
Add an optional ROS 2 Jazzy overlay while preserving the existing C++-first library workflow. The change includes reusable rollout and tailoring tooling, centralized ROS package metadata synchronization, canonical CPack source releases, and CI/documentation contracts covering both the template and derived projects.
Main Changes
Testing / Validation
--remove-ros2tailoring builds passed.Notes For Reviewers
build_lib.shremains the primary C++ library entry point and does not require ROS.