MacOS Support & Cross-Platform Script Migration#13
Merged
wcoleman-rti merged 20 commits intomainfrom Apr 14, 2026
Merged
Conversation
…ardcoded on the XML file instead of mangled later on
…ogo to the windows
This was
linked to
issues
Apr 3, 2026
Closed
Replace per-module scripts/ directories with top-level build.py and launch.py. Add module.json descriptors, scenarios.json, requirements.txt, and a top-level CMakeLists.txt with FetchContent for cmake-utils. Move platform_setup.py to resource/python/scripts/ package.
Replace flat security file layout with hierarchical ca/, domain_scope/, and identity/ tree. Add Jinja2 templates for governance, permissions, identity, and CA configs. Introduce dds_security.py and security_tree.py for programmatic artifact generation. Update QoS profiles and routing service configs for new security paths.
Update all module READMEs, scenario guides, and system architecture docs to reflect the new build orchestration and security structure. Add .markdownlint.json, update .gitignore, and refresh CHANGELOG.md.
# Conflicts: # .gitignore # RELEASE_PLAN.md
Add CMakeLists.txt for modules 02-record-playback, 03-remote-teleoperation, and 04-security-threat. Extract Module 04 IDL types into ThreatTypes.xml with rtiddsgen codegen, removing runtime DdsUtils.py in favor of generated types. Update top-level CMakeLists.txt to build all four modules.
wcoleman-rti
approved these changes
Apr 13, 2026
Collaborator
wcoleman-rti
left a comment
There was a problem hiding this comment.
Pushed several changes regarding module app build/launch orchestration and security artifact generation to complement the changes to support cross-platform workflows.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Summary: Cross-platform overhaul — Python scripts, macOS support, and FQN simplification
Overview
Replaces all platform-specific shell scripts with cross-platform Python equivalents, adds full macOS support, simplifies DDS entity naming, and improves application lifecycle management across all modules.
Changes
All shell scripts replaced with Python — Every
.shand.batscript across all 4 modules andsystem_archhas been ported to cross-platform Python equivalents. Launch commands change from e.g../scripts/launch_all.sh→python3 scripts/launch_all.py.macOS support — CMake now auto-detects OpenSSL (including RTI-bundled), links
-framework AppKiton Apple targets, and a newMacOsDockIcon.hheader sets the RTI logo in the macOS Dock for C++ apps. Python GUIs also display the RTI icon. Updated README with macOS-specific instructions.Simplified FQN handling — Fully-qualified names are now hardcoded in
Types.xml(e.g.MedicalDemoParticipantLibrary::dp/ArmController), eliminating runtime string concatenation.DdsUtils.hppremoved; FQN-mangling code removed fromDdsUtils.py.Shared platform utility — New
platform_setup.pyhandlesNDDSHOMEresolution, architecture detection, OpenSSL discovery, and Connext library path setup. Each module gets anxml_setup.pyfor XML config path resolution.Module 04 ported — All Module 04 launch/kill scripts and
setup_threat_security.shrewritten in Python.ThreatParticipantLibrary.xmlrenamed toThreatParticipants.xmlwith simplified FQNs.Security setup scripts ported to Python —
setup_security.shandsetup_threat_security.shreplaced with Python equivalents; verbose OpenSSL output suppressed with a summary printout of generated artifacts.Graceful shutdown — All C++ and Python applications handle SIGINT/SIGTERM cleanly without warnings; launch scripts forward signals to child processes.
Icon update — Replaced
rti_logo.icowithrti_logo.pngfor cross-platform compatibility.Stats
70 files changed, +1,682 / −826 lines