arjav1528 opened a new pull request, #3498:
URL: https://github.com/apache/nuttx-apps/pull/3498

   ## Summary
   
   This PR implements Phase 3 of the micro-ROS NuttX integration: an automated
   build pipeline that fetches all upstream micro-ROS jazzy packages, 
cross-compiles
   them with colcon and a NuttX CMake toolchain, and merges the resulting static
   libraries into a single `libmicroros.a` ready for linking into a NuttX image.
   
   ## Impact
   
   - **Users:** Applications that enable `CONFIG_SYSTEM_MICROROS` automatically
     get `libmicroros.a` linked in and all micro-ROS headers available under
     `system/microros/include/`.  No manual build steps are required.
   - **Build:** `make context` in the apps tree triggers the colcon build the 
first
     time; subsequent builds are incremental.  Full build time on a 2-core 
machine
     is approximately 4–5 minutes.  `make distclean` fully removes all 
downloaded
     sources.
   - **Disk:** The colcon build requires approximately 1.5 GB of temporary build
     space; only `libmicroros.a` (~13–80 MB depending on included message types)
     and the headers are retained after the build.
   - **Dependencies:** Host requires `colcon-common-extensions`, `cmake ≥ 3.16`,
     Python 3, and a C/C++ cross-compiler matching `$(CROSSDEV)`.
   - **Compatibility:** No existing app or config is modified.  The feature is
     entirely gated behind `CONFIG_SYSTEM_MICROROS`.
   
   ## Testing
   
   **Host:** Ubuntu 22.04 (EC2 `t3.medium`), `gcc 13`, `cmake 3.28`, `colcon 
0.3`
   
   **Target:** `stm32f4discovery:nsh` (ARM Cortex-M4, `arm-none-eabi-gcc 14.2`)
   — library produced but not yet run on hardware due to availability issues.
   
   **Verified with `make context` end-to-end:**
   
   ```
   $ cd ~/nuttx-apps/system/microros && rm -f micro_ros_lib/toolchain.cmake \
       micro_ros_lib/colcon.meta libmicroros.a && rm -rf include && \
     make context APPDIR=~/nuttx-apps TOPDIR=~/nuttx CC=gcc CXX=g++ \
       CONFIG_MICROROS_DISTRO='"jazzy"' CONFIG_MICROROS_MAX_NODES=8 \
       CONFIG_MICROROS_MAX_PUBLISHERS=16 CONFIG_MICROROS_MAX_SUBSCRIPTIONS=16 \
       CONFIG_MICROROS_MAX_SERVICES=4 CONFIG_MICROROS_MAX_CLIENTS=4 \
       CONFIG_ARCH_ARM=y 2>&1 | tail -3
   Summary: 72 packages finished [4min 27s]
   
   $ ls -lh ~/nuttx-apps/system/microros/libmicroros.a
   -rw-rw-r-- 1 ubuntu ubuntu 13M May 23 16:47 libmicroros.a
   
   $ ar t ~/nuttx-apps/system/microros/libmicroros.a | wc -l
   1492
   
   $ ls ~/nuttx-apps/system/microros/include/ | wc -l
   44
   ```
   [phase3.log](https://github.com/user-attachments/files/28183341/phase3.log)
   
   
   **`make clean` verified** removes `libmicroros.a`, `include/`, 
`toolchain.cmake`,
   and `colcon.meta`.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to