From 7efdaf363a4301e14997463b2cfba511776f5bd9 Mon Sep 17 00:00:00 2001 From: Jose Antonio Moral Date: Fri, 2 Oct 2020 17:19:58 +0200 Subject: [PATCH 1/9] Add snap packaging --- snap/hooks/configure | 104 +++++++++++++++++++++++++++++ snap/hooks/install | 19 ++++++ snap/local/micro-ros-agent-daemon | 27 ++++++++ snap/snapcraft.yaml | 105 ++++++++++++++++++++++++++++++ 4 files changed, 255 insertions(+) create mode 100755 snap/hooks/configure create mode 100755 snap/hooks/install create mode 100755 snap/local/micro-ros-agent-daemon create mode 100644 snap/snapcraft.yaml diff --git a/snap/hooks/configure b/snap/hooks/configure new file mode 100755 index 0000000..d51603c --- /dev/null +++ b/snap/hooks/configure @@ -0,0 +1,104 @@ +#!/bin/sh -e + +# Confirm that the transport is valid +transport="$(snapctl get transport)" +case "$transport" in + udp4) ;; + udp6) ;; + tcp4) ;; + tcp6) ;; + serial) ;; + pseudoterminal) ;; + *) + echo "'$transport' is not a supported transport" >&2 + return 1 + ;; +esac + +# Confirm that the middleware is valid +middleware="$(snapctl get middleware)" +case "$middleware" in + dds) ;; + rtps) ;; + ced) ;; + *) + echo "'$middleware' is not a supported middleware" >&2 + return 1 + ;; +esac + +if [ "$transport" = "serial" ] || [ "$transport" = "pseudoterminal" ]; then + # A serial transport if being used, which requires a valid baud rate + # as well as a valid device + baudrate="$(snapctl get baudrate)" + if ! expr "$baudrate" : '^[0-9]\+$' > /dev/null; then + echo "'$baudrate' is not a valid baud rate" >&2 + return 1 + fi + + device="$(snapctl get device)" + if [ -z "$device" ]; then + echo "Device must be specified" >&2 + return 1 + fi +else + port="$(snapctl get port)" + if ! expr "$port" : '^[0-9]\+$' > /dev/null; then + echo "'$port' is not a valid port" >&2 + return 1 + fi +fi + +# Confirm that discovery is a boolean +discovery="$(snapctl get discovery)" +case "$discovery" in + true) + # Confirm that discovery port is valid + port="$(snapctl get discovery-port)" + if ! expr "$port" : '^[0-9]\+$' > /dev/null; then + echo "'$port' is not a valid discovery port" >&2 + return 1 + fi + ;; + false) ;; + *) + echo "'$discovery' is not a valid boolean for discovery" >&2 + return 1 + ;; +esac + +# Confirm that the verbosity is valid +verbosity="$(snapctl get verbosity)" +if ! expr "$verbosity" : '^[0-6]$' > /dev/null; then + echo "'$verbosity' is not a valid verbosity" >&2 + return 1 +fi + +# Confirm that p2p port is valid (assuming it's set) +p2p_port="$(snapctl get p2p-port)" +if [ -n "$p2p_port" ]; then + port="$(snapctl get p2p-port)" + if ! expr "$port" : '^[0-9]\+$' > /dev/null; then + echo "'$port' is not a valid p2p port" >&2 + return 1 + fi +fi + +# Confirm that daemon is a boolean, and enable the service if true +daemon="$(snapctl get daemon)" +case "$daemon" in + true) + snapctl start --enable "$SNAP_INSTANCE_NAME.daemon" + + # In case it was alraedy started and the configuration changed, + # restart the service + snapctl restart "$SNAP_INSTANCE_NAME.daemon" + ;; + false) + snapctl stop --disable "$SNAP_INSTANCE_NAME.daemon" + ;; + *) + echo "'$daemon' is not a valid boolean for daemon" >&2 + return 1 + ;; +esac \ No newline at end of file diff --git a/snap/hooks/install b/snap/hooks/install new file mode 100755 index 0000000..5040035 --- /dev/null +++ b/snap/hooks/install @@ -0,0 +1,19 @@ +#!/bin/sh -e + +# Set default configuration values +snapctl set transport=udp4 +snapctl set middleware=dds +snapctl set verbosity=4 +snapctl set discovery=false +snapctl set discovery-port=7400 +snapctl set p2p-port! # unset + +# Network-specific things +snapctl set port=8888 + +# Serial-specific things +snapctl set baudrate=115200 +snapctl set device! # unset + +# By default the daemon is disabled +snapctl set daemon=false \ No newline at end of file diff --git a/snap/local/micro-ros-agent-daemon b/snap/local/micro-ros-agent-daemon new file mode 100755 index 0000000..1e04e55 --- /dev/null +++ b/snap/local/micro-ros-agent-daemon @@ -0,0 +1,27 @@ +#!/bin/sh -e + +set -- --middleware "$(snapctl get middleware)" "$@" +set -- --verbose "$(snapctl get verbosity)" "$@" + +transport="$(snapctl get transport)" +if [ "$transport" = "serial" ] || [ "$transport" = "pseudoterminal" ]; then + set -- --dev "$(snapctl get device)" "$@" +else + set -- --port "$(snapctl get port)" "$@" +fi + +if [ "$(snapctl get discovery)" = "true" ]; then + set -- --discovery "$@" + + discovery_port="$(snapctl get discovery-port)" + if [ -n "$discovery_port" ]; then + set -- --disport "$discovery_port" "$@" + fi +fi + +p2p_port="$(snapctl get p2p-port)" +if [ -n "$p2p_port" ]; then + set -- --p2p "$p2p_port" "$@" +fi + +exec "$SNAP/usr/lib/micro_ros_agent/micro_ros_agent" "$transport" "$@" diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000..4e1be30 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,105 @@ +name: micro-ros-agent +base: core20 +version: git +summary: Bridge between Micro ROS client applications and ROS 2 +description: | + Micro-ROS, whose default implementation is based on eProsima's + Micro XRCE-DDS middleware, is composed of client applications + which interact with the ROS 2 world by means of an Agent. + This agent keeps tracks of the entities created by means of + requests performed on the microcontroller side, and uses them + to communicate with the ROS 2 dataspace. + + Being an extension of the Micro XRCE-DDS Agent, the micro-ROS + agent supports being run by the user like this: + + $ micro-ros-agent --help + + In addition, the Agent supports running as a service that can be + enabled with: + + $ snap set micro-ros-agent daemon=true + + If the service is enabled, by default it uses the `udp4` transport on + port 8888. The following parameters can be changed (these are + specific to the service, the `micro-ros-agent` command simply + takes command-line arguments, but the capabilities are the same): + + * `transport`. Supported transports are `udp4`, `udp6`, `tcp4`, + `tcp6`, `serial`, and `pseudoterminal`. Default is `udp4`. Change + with: + + $ snap set micro-ros-agent transport="new transport" + + * `middleware`. Supported kinds of middleware are `ced`, `rtps`, and + `dds`. Default is `dds`. Change with: + + $ snap set micro-ros-agent middleware="new middleware" + + * `verbosity`. Supported verbosity levels are 0-6, defaulting to 4. + Change with: + + $ snap set micro-ros-agent verbosity="selected verbosity" + + * `discovery`. Enable or disable the discovery server. Defaults to + "false". Change with: + + $ snap set micro-ros-agent discovery="true or false" + + * `discovery-port`. Port on which the discovery server (see above) + listens. Defaults to 7400. Change with: + + $ snap set micro-ros-agent discovery-port="selected port" + + * `p2p-port`. Port to use for the P2P profile. Change with: + + $ snap set micro-ros-agent p2p-port="selected port" + + * `port`. Port on which the agent listens. Only applicable to one of + the UDP or TCP transports (see above). Defaults to 8888. Change with: + + $ snap set micro-ros-agent port="selected port" + + * `baudrate`. Baud rate to use when accessing serial ports. Only + applicable when using the `serial` or `pseudoterminal` transport. + Defaults to 115200. Change with: + + $ snap set micro-ros-agent baudrate="baud rate" + + * `device`. The serial device to use. Only applicable when using the + `serial` or `pseudoterminal` transport. Change with: + + $ snap set micro-ros-agent device="device path" + + +grade: stable +confinement: strict + +architectures: + - build-on: amd64 + - build-on: arm64 + - build-on: armhf + - build-on: ppc64el + +parts: + agent: + plugin: cmake + source: . + cmake-parameters: [-DCMAKE_INSTALL_PREFIX=/usr] + build-packages: [make, gcc, g++] + + runner: + plugin: dump + source: snap/local/ + organize: + '*': usr/bin/ + +apps: + micro-ros-agent: + command: usr/lib/micro_ros_agent/micro_ros_agent + plugs: [network, network-bind, serial-port] + + daemon: + command: usr/bin/micro-ros-agent-daemon + daemon: simple + plugs: [network, network-bind, serial-port] From e22b7f1faa315e3b712a0c194acd9dbfd96d9fd2 Mon Sep 17 00:00:00 2001 From: Jose Antonio Moral Date: Tue, 27 Oct 2020 12:02:24 +0100 Subject: [PATCH 2/9] First approach for snap packaging --- micro_ros_agent/CMakeLists.txt | 20 +++++++++++++------- snap/snapcraft.yaml | 27 +++++++++++++++++++-------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/micro_ros_agent/CMakeLists.txt b/micro_ros_agent/CMakeLists.txt index b6eee22..1c26bed 100644 --- a/micro_ros_agent/CMakeLists.txt +++ b/micro_ros_agent/CMakeLists.txt @@ -17,11 +17,16 @@ cmake_minimum_required(VERSION 3.5) option(UROSAGENT_GENERATE_PROFILE "Generates agent.refs according to the .msgs provided in the .repos" OFF ) +option(UROSAGENT_AMENTIFY_PACKAGE "Amentify this package" ON) + set(CMAKE_C_CLANG_TIDY clang-tidy -checks=*) project(micro_ros_agent LANGUAGES CXX) -find_package(ament_cmake REQUIRED) +if(UROSAGENT_AMENTIFY_PACKAGE) + find_package(ament_cmake REQUIRED) +endif() + find_package(microxrcedds_agent REQUIRED) find_package(rosidl_cmake REQUIRED) find_package(fastcdr REQUIRED) @@ -102,9 +107,10 @@ target_compile_options(${PROJECT_NAME} $<$,$>:-Wpedantic> ) -ament_export_dependencies(microxrcedds_agent) - -ament_package() +if(UROSAGENT_AMENTIFY_PACKAGE) + ament_export_dependencies(microxrcedds_agent) + ament_package() +endif() install( TARGETS @@ -198,7 +204,7 @@ from ${_PYTHON_PKG_TOOL} import * endforeach() execute_process( - COMMAND + COMMAND "${PYTHON_EXECUTABLE}" "${_XML_DEFAULT_READ_BIN}" "--default-xml-path" "${_RESOURCE_DIR}" OUTPUT_VARIABLE _XmlDoc @@ -207,7 +213,7 @@ from ${_PYTHON_PKG_TOOL} import * ) if(NOT _result EQUAL 0) - message(FATAL_ERROR "Error in typesuppor generation") + message(FATAL_ERROR "Error in typesupport generation") endif() foreach(package ${_packages}) @@ -241,7 +247,7 @@ from ${_PYTHON_PKG_TOOL} import * ) if(NOT _result EQUAL 0) - message(FATAL_ERROR "Error in typesuppor generation") + message(FATAL_ERROR "Error in typesupport generation") endif() set(_XmlDoc "${_XmlDoc}${_XmlGen}") diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 4e1be30..374246a 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -82,17 +82,28 @@ architectures: - build-on: ppc64el parts: - agent: + agent-uxrce: plugin: cmake - source: . - cmake-parameters: [-DCMAKE_INSTALL_PREFIX=/usr] + source: https://github.com/eProsima/Micro-XRCE-DDS-Agent.git + cmake-parameters: [-DCMAKE_INSTALL_PREFIX=/usr, -DUAGENT_CLI_PROFILE=OFF -DUAGENT_BUILD_EXECUTABLE=OFF] build-packages: [make, gcc, g++] - runner: - plugin: dump - source: snap/local/ - organize: - '*': usr/bin/ + uros-agent: + plugin: cmake + source: . + source-subdir: micro_ros_agent + override-build: | + cd ../../agent-uxrce/build && make install && cd - + cd micro_ros_agent + mkdir -p build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DUROSAGENT_AMENTIFY_PACKAGE=OFF + make + make install + chmod +x /usr/lib/micro_ros_agent/micro_ros_agent + build-packages: [make, gcc, g++] + after: + - agent-uxrce apps: micro-ros-agent: From cb49aef93dd9efc5c8ac16ae8e7ab07dafb6cd02 Mon Sep 17 00:00:00 2001 From: Jose Antonio Moral Date: Thu, 29 Oct 2020 12:23:45 +0100 Subject: [PATCH 3/9] Working state --- micro_ros_agent/CMakeLists.txt | 18 +++++++++--- .../{micro_ros_agent => utils}/__init__.py | 0 snap/snapcraft.yaml | 28 +++++++++++-------- 3 files changed, 30 insertions(+), 16 deletions(-) rename micro_ros_agent/{micro_ros_agent => utils}/__init__.py (100%) diff --git a/micro_ros_agent/CMakeLists.txt b/micro_ros_agent/CMakeLists.txt index 1c26bed..013d814 100644 --- a/micro_ros_agent/CMakeLists.txt +++ b/micro_ros_agent/CMakeLists.txt @@ -14,10 +14,9 @@ cmake_minimum_required(VERSION 3.5) -option(UROSAGENT_GENERATE_PROFILE - "Generates agent.refs according to the .msgs provided in the .repos" OFF - ) +option(UROSAGENT_GENERATE_PROFILE "Generates agent.refs according to the .msgs provided in the .repos" OFF) option(UROSAGENT_AMENTIFY_PACKAGE "Amentify this package" ON) +option(UROSAGENT_SNAP_PACKAGING "Create the snap package for the micro-ROS Agent" OFF) set(CMAKE_C_CLANG_TIDY clang-tidy -checks=*) @@ -119,6 +118,17 @@ install( lib/${PROJECT_NAME} ) +if(UROSAGENT_SNAP_PACKAGING) + install( + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/../snap/local/micro-ros-agent-daemon + DESTINATION + lib/${PROJECT_NAME} + PERMISSIONS + WORLD_EXECUTE + ) +endif() + if(UROSAGENT_GENERATE_PROFILE) set(_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/python") @@ -128,7 +138,7 @@ if(UROSAGENT_GENERATE_PROFILE) set(_XML_DEFAULT_READ_BIN "${_OUTPUT_PATH}/bin/Xml_read_default_profiles.py") normalize_path(_XML_DEFAULT_READ_BIN "${_XML_DEFAULT_READ_BIN}") - set(_PYTHON_PKG_TOOL ${PROJECT_NAME}) + set(_PYTHON_PKG_TOOL utils) set(_RESOURCE_DIR "${_OUTPUT_PATH}/resource") normalize_path(_RESOURCE_DIR "${_RESOURCE_DIR}") diff --git a/micro_ros_agent/micro_ros_agent/__init__.py b/micro_ros_agent/utils/__init__.py similarity index 100% rename from micro_ros_agent/micro_ros_agent/__init__.py rename to micro_ros_agent/utils/__init__.py diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 374246a..3032c82 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -85,32 +85,36 @@ parts: agent-uxrce: plugin: cmake source: https://github.com/eProsima/Micro-XRCE-DDS-Agent.git - cmake-parameters: [-DCMAKE_INSTALL_PREFIX=/usr, -DUAGENT_CLI_PROFILE=OFF -DUAGENT_BUILD_EXECUTABLE=OFF] + cmake-parameters: [-DUAGENT_CLI_PROFILE=OFF -DUAGENT_BUILD_EXECUTABLE=OFF] build-packages: [make, gcc, g++] uros-agent: plugin: cmake source: . source-subdir: micro_ros_agent - override-build: | - cd ../../agent-uxrce/build && make install && cd - - cd micro_ros_agent - mkdir -p build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DUROSAGENT_AMENTIFY_PACKAGE=OFF - make - make install - chmod +x /usr/lib/micro_ros_agent/micro_ros_agent + cmake-parameters: [-DUROSAGENT_AMENTIFY_PACKAGE=OFF, -DUROSAGENT_SNAP_PACKAGING=ON, + -DCMAKE_PREFIX_PATH=$SNAPCRAFT_PART_INSTALL/../../agent-uxrce/install/usr/local/] build-packages: [make, gcc, g++] after: - agent-uxrce + uros-runner: + plugin: dump + source: $SNAPCRAFT_STAGE/../parts/uros-agent/install/usr/local/lib/ + source-type: local + organize: + '*': usr/bin/ + after: + - uros-agent + apps: micro-ros-agent: - command: usr/lib/micro_ros_agent/micro_ros_agent + command: usr/bin/micro_ros_agent/micro_ros_agent + environment: + LD_LIBRARY_PATH: $SNAPCRAFT_STAGE/usr/local/lib/ plugs: [network, network-bind, serial-port] daemon: - command: usr/bin/micro-ros-agent-daemon + command: usr/bin/micro_ros_agent/micro-ros-agent-daemon daemon: simple plugs: [network, network-bind, serial-port] From 80742f67cc7ad31cf9065509e86202b6adb38905 Mon Sep 17 00:00:00 2001 From: Jose Antonio Moral Date: Thu, 29 Oct 2020 15:55:08 +0100 Subject: [PATCH 4/9] Fixes --- snap/snapcraft.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 3032c82..ac9d156 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -98,6 +98,15 @@ parts: after: - agent-uxrce + uxrce-runnuer: + plugin: dump + source: $SNAPCRAFT_STAGE/../parts/agent-uxrce/install/usr/local/lib/ + source-type: local + organize: + '*': usr/lib/ + after: + - agent-uxrce + uros-runner: plugin: dump source: $SNAPCRAFT_STAGE/../parts/uros-agent/install/usr/local/lib/ @@ -111,7 +120,7 @@ apps: micro-ros-agent: command: usr/bin/micro_ros_agent/micro_ros_agent environment: - LD_LIBRARY_PATH: $SNAPCRAFT_STAGE/usr/local/lib/ + LD_LIBRARY_PATH: $SNAPCRAFT_STAGE/../parts/agent-uxrce/install/usr/lib/ plugs: [network, network-bind, serial-port] daemon: From dc22a2ab641b76bb5427edc02c2d9814ecd551c3 Mon Sep 17 00:00:00 2001 From: Jose Antonio Moral Date: Mon, 23 Nov 2020 09:18:15 +0100 Subject: [PATCH 5/9] Simplify snapcraft.yaml --- snap/snapcraft.yaml | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index ac9d156..31f265c 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -85,45 +85,33 @@ parts: agent-uxrce: plugin: cmake source: https://github.com/eProsima/Micro-XRCE-DDS-Agent.git - cmake-parameters: [-DUAGENT_CLI_PROFILE=OFF -DUAGENT_BUILD_EXECUTABLE=OFF] + cmake-parameters: + - -DUAGENT_CLI_PROFILE=OFF + - -DUAGENT_BUILD_EXECUTABLE=OFF build-packages: [make, gcc, g++] uros-agent: plugin: cmake source: . source-subdir: micro_ros_agent - cmake-parameters: [-DUROSAGENT_AMENTIFY_PACKAGE=OFF, -DUROSAGENT_SNAP_PACKAGING=ON, - -DCMAKE_PREFIX_PATH=$SNAPCRAFT_PART_INSTALL/../../agent-uxrce/install/usr/local/] + cmake-parameters: + - -DUROSAGENT_AMENTIFY_PACKAGE=OFF + - -DUROSAGENT_SNAP_PACKAGING=ON + - -DCMAKE_PREFIX_PATH=$SNAPCRAFT_STAGE/usr/local build-packages: [make, gcc, g++] after: - agent-uxrce - uxrce-runnuer: - plugin: dump - source: $SNAPCRAFT_STAGE/../parts/agent-uxrce/install/usr/local/lib/ - source-type: local - organize: - '*': usr/lib/ - after: - - agent-uxrce - - uros-runner: - plugin: dump - source: $SNAPCRAFT_STAGE/../parts/uros-agent/install/usr/local/lib/ - source-type: local - organize: - '*': usr/bin/ - after: - - uros-agent - apps: micro-ros-agent: - command: usr/bin/micro_ros_agent/micro_ros_agent + command: usr/local/lib/micro_ros_agent/micro_ros_agent environment: - LD_LIBRARY_PATH: $SNAPCRAFT_STAGE/../parts/agent-uxrce/install/usr/lib/ + LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/usr/local/lib" plugs: [network, network-bind, serial-port] daemon: - command: usr/bin/micro_ros_agent/micro-ros-agent-daemon + command: usr/local/lib/micro_ros_agent/micro-ros-agent-daemon + environment: + LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/usr/local/lib" daemon: simple plugs: [network, network-bind, serial-port] From 2c00df886f7df0f66bb5e2a068c080d4a82943a2 Mon Sep 17 00:00:00 2001 From: Jose Antonio Moral Date: Tue, 1 Dec 2020 12:50:33 +0100 Subject: [PATCH 6/9] Fix snapcraft build --- micro_ros_agent/CMakeLists.txt | 12 ------------ snap/snapcraft.yaml | 36 ++++++++++++++++------------------ 2 files changed, 17 insertions(+), 31 deletions(-) diff --git a/micro_ros_agent/CMakeLists.txt b/micro_ros_agent/CMakeLists.txt index 013d814..58d3d42 100644 --- a/micro_ros_agent/CMakeLists.txt +++ b/micro_ros_agent/CMakeLists.txt @@ -16,7 +16,6 @@ cmake_minimum_required(VERSION 3.5) option(UROSAGENT_GENERATE_PROFILE "Generates agent.refs according to the .msgs provided in the .repos" OFF) option(UROSAGENT_AMENTIFY_PACKAGE "Amentify this package" ON) -option(UROSAGENT_SNAP_PACKAGING "Create the snap package for the micro-ROS Agent" OFF) set(CMAKE_C_CLANG_TIDY clang-tidy -checks=*) @@ -118,17 +117,6 @@ install( lib/${PROJECT_NAME} ) -if(UROSAGENT_SNAP_PACKAGING) - install( - FILES - ${CMAKE_CURRENT_SOURCE_DIR}/../snap/local/micro-ros-agent-daemon - DESTINATION - lib/${PROJECT_NAME} - PERMISSIONS - WORLD_EXECUTE - ) -endif() - if(UROSAGENT_GENERATE_PROFILE) set(_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/python") diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 31f265c..4b80014 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -82,36 +82,34 @@ architectures: - build-on: ppc64el parts: - agent-uxrce: - plugin: cmake - source: https://github.com/eProsima/Micro-XRCE-DDS-Agent.git - cmake-parameters: - - -DUAGENT_CLI_PROFILE=OFF - - -DUAGENT_BUILD_EXECUTABLE=OFF - build-packages: [make, gcc, g++] uros-agent: - plugin: cmake + plugin: colcon source: . - source-subdir: micro_ros_agent - cmake-parameters: - - -DUROSAGENT_AMENTIFY_PACKAGE=OFF - - -DUROSAGENT_SNAP_PACKAGING=ON - - -DCMAKE_PREFIX_PATH=$SNAPCRAFT_STAGE/usr/local + override-build: | + git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git -b $ROS_DISTRO + . /opt/ros/$ROS_DISTRO/setup.sh + colcon build --merge-install --install-base $SNAPCRAFT_PRIME --cmake-args '-DUAGENT_CLI_PROFILE=OFF -DUAGENT_BUILD_EXECUTABLE=OFF' build-packages: [make, gcc, g++] - after: - - agent-uxrce + stage-packages: [ros-foxy-ros2launch] + + runner: + plugin: dump + source: snap/local/ + organize: + '*': usr/bin/ apps: micro-ros-agent: - command: usr/local/lib/micro_ros_agent/micro_ros_agent + command: lib/micro_ros_agent/micro_ros_agent environment: - LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/usr/local/lib" + LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/lib" plugs: [network, network-bind, serial-port] + extensions: [ros2-foxy] daemon: - command: usr/local/lib/micro_ros_agent/micro-ros-agent-daemon + command: usr/bin/micro-ros-agent-daemon environment: - LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/usr/local/lib" + LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/lib" daemon: simple plugs: [network, network-bind, serial-port] From 012025f27a1bd7d89466484a1fff30db228c74f5 Mon Sep 17 00:00:00 2001 From: Jose Antonio Moral Date: Tue, 1 Dec 2020 12:53:37 +0100 Subject: [PATCH 7/9] Fix daemon --- snap/local/micro-ros-agent-daemon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snap/local/micro-ros-agent-daemon b/snap/local/micro-ros-agent-daemon index 1e04e55..1ec437e 100755 --- a/snap/local/micro-ros-agent-daemon +++ b/snap/local/micro-ros-agent-daemon @@ -24,4 +24,4 @@ if [ -n "$p2p_port" ]; then set -- --p2p "$p2p_port" "$@" fi -exec "$SNAP/usr/lib/micro_ros_agent/micro_ros_agent" "$transport" "$@" +exec "$SNAP/lib/micro_ros_agent/micro_ros_agent" "$transport" "$@" From ee9df21df44fb021b22d6446f546c1741f5f1545 Mon Sep 17 00:00:00 2001 From: Jose Antonio Moral Date: Thu, 3 Dec 2020 12:06:06 +0100 Subject: [PATCH 8/9] Fix compilation due to external micro_ros_msgs --- snap/snapcraft.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 4b80014..f5fb9e7 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -88,8 +88,12 @@ parts: source: . override-build: | git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git -b $ROS_DISTRO + git clone https://github.com/eProsima/Micro-CDR.git -b $ROS_DISTRO + git clone https://github.com/micro-ROS/micro_ros_msgs.git -b $ROS_DISTRO + git clone https://github.com/micro-ROS/rosidl_typesupport_microxrcedds.git -b $ROS_DISTRO + git clone https://github.com/micro-ROS/rmw-microxrcedds.git -b $ROS_DISTRO . /opt/ros/$ROS_DISTRO/setup.sh - colcon build --merge-install --install-base $SNAPCRAFT_PRIME --cmake-args '-DUAGENT_CLI_PROFILE=OFF -DUAGENT_BUILD_EXECUTABLE=OFF' + colcon build --merge-install --install-base $SNAPCRAFT_PRIME --cmake-args '-DUAGENT_CLI_PROFILE=OFF -DUAGENT_BUILD_EXECUTABLE=OFF' --packages-up-to micro_ros_agent build-packages: [make, gcc, g++] stage-packages: [ros-foxy-ros2launch] From e0916713b52ceb66da5aca64487821c3b6fc49a9 Mon Sep 17 00:00:00 2001 From: Jose Antonio Moral Date: Thu, 3 Dec 2020 15:23:18 +0100 Subject: [PATCH 9/9] CMakeLists cleanup --- micro_ros_agent/CMakeLists.txt | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/micro_ros_agent/CMakeLists.txt b/micro_ros_agent/CMakeLists.txt index 58d3d42..9734ffa 100644 --- a/micro_ros_agent/CMakeLists.txt +++ b/micro_ros_agent/CMakeLists.txt @@ -14,17 +14,14 @@ cmake_minimum_required(VERSION 3.5) -option(UROSAGENT_GENERATE_PROFILE "Generates agent.refs according to the .msgs provided in the .repos" OFF) -option(UROSAGENT_AMENTIFY_PACKAGE "Amentify this package" ON) - +option(UROSAGENT_GENERATE_PROFILE + "Generates agent.refs according to the .msgs provided in the .repos" OFF + ) set(CMAKE_C_CLANG_TIDY clang-tidy -checks=*) project(micro_ros_agent LANGUAGES CXX) -if(UROSAGENT_AMENTIFY_PACKAGE) - find_package(ament_cmake REQUIRED) -endif() - +find_package(ament_cmake REQUIRED) find_package(microxrcedds_agent REQUIRED) find_package(rosidl_cmake REQUIRED) find_package(fastcdr REQUIRED) @@ -105,10 +102,9 @@ target_compile_options(${PROJECT_NAME} $<$,$>:-Wpedantic> ) -if(UROSAGENT_AMENTIFY_PACKAGE) - ament_export_dependencies(microxrcedds_agent) - ament_package() -endif() +ament_export_dependencies(microxrcedds_agent) + +ament_package() install( TARGETS