Skip to content

MacOS Support & Cross-Platform Script Migration#13

Merged
wcoleman-rti merged 20 commits intomainfrom
MacOS-testing
Apr 14, 2026
Merged

MacOS Support & Cross-Platform Script Migration#13
wcoleman-rti merged 20 commits intomainfrom
MacOS-testing

Conversation

@franporcel
Copy link
Copy Markdown
Collaborator

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 .sh and .bat script across all 4 modules and system_arch has been ported to cross-platform Python equivalents. Launch commands change from e.g. ./scripts/launch_all.shpython3 scripts/launch_all.py.

  • macOS support — CMake now auto-detects OpenSSL (including RTI-bundled), links -framework AppKit on Apple targets, and a new MacOsDockIcon.h header 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.hpp removed; FQN-mangling code removed from DdsUtils.py.

  • Shared platform utility — New platform_setup.py handles NDDSHOME resolution, architecture detection, OpenSSL discovery, and Connext library path setup. Each module gets an xml_setup.py for XML config path resolution.

  • Module 04 ported — All Module 04 launch/kill scripts and setup_threat_security.sh rewritten in Python. ThreatParticipantLibrary.xml renamed to ThreatParticipants.xml with simplified FQNs.

  • Security setup scripts ported to Pythonsetup_security.sh and setup_threat_security.sh replaced 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.ico with rti_logo.png for cross-platform compatibility.

Stats

70 files changed, +1,682 / −826 lines

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.
Copy link
Copy Markdown
Collaborator

@wcoleman-rti wcoleman-rti left a comment

Choose a reason for hiding this comment

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

Pushed several changes regarding module app build/launch orchestration and security artifact generation to complement the changes to support cross-platform workflows.

@wcoleman-rti wcoleman-rti merged commit 55d621d into main Apr 14, 2026
@wcoleman-rti wcoleman-rti deleted the MacOS-testing branch April 14, 2026 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use Python scripts instead of .sh and .bat for multiplatform support Support MacOS

2 participants