Skip to content

Commit 5f36f4c

Browse files
authored
Build ROS2 from source on snap (#153)
* Build ROS2 from source on snap * Update
1 parent c89776e commit 5f36f4c

File tree

4 files changed

+56
-37
lines changed

4 files changed

+56
-37
lines changed

snap/hooks/configure

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,4 @@ case "$daemon" in
101101
echo "'$daemon' is not a valid boolean for daemon" >&2
102102
return 1
103103
;;
104-
esac
104+
esac
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles" >
3+
<transport_descriptors>
4+
<transport_descriptor>
5+
<transport_id>CustomUdpTransport</transport_id>
6+
<type>UDPv4</type>
7+
</transport_descriptor>
8+
</transport_descriptors>
9+
10+
<participant profile_name="participant_profile" is_default_profile="true">
11+
<rtps>
12+
<userTransports>
13+
<transport_id>CustomUdpTransport</transport_id>
14+
</userTransports>
15+
16+
<useBuiltinTransports>false</useBuiltinTransports>
17+
</rtps>
18+
</participant>
19+
</profiles>

snap/local/micro-ros-agent-daemon

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ if [ -n "$p2p_port" ]; then
2424
set -- --p2p "$p2p_port" "$@"
2525
fi
2626

27-
exec "$SNAP/lib/micro_ros_agent/micro_ros_agent" "$transport" "$@"
27+
exec "$SNAP/opt/ros/snap/lib/micro_ros_agent/micro_ros_agent" "$transport" "$@"

snap/snapcraft.yaml

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,6 @@ description: |
7171
7272
$ snap set micro-ros-agent device="device path"
7373
74-
If connecting the micro-ROS Agent using an IP based connection mode,
75-
that is, `udp4`, `udp6`, `tcp4` or `tcp6`, care must be taken to
76-
connect first the `micro-ros-agent-shm-netplug` plug.
77-
This is due to the fact that ROS 2 Foxy is using Fast-DDS as the
78-
default DDS middleware, and Fast-DDS comes with *shared memory transport*.
79-
Thus, this plugin must be enabled, in order to gain access to the
80-
`/dev/shm` folder from the snap image, prior to running it:
81-
82-
$ sudo snap connect micro-ros-agent:micro-ros-agent-shm-netplug
83-
8474
When using the snap with a serial device, some steps need to be taken
8575
in order to establish a successful connection:
8676
@@ -120,49 +110,59 @@ architectures:
120110
- build-on: armhf
121111
- build-on: ppc64el
122112

113+
package-repositories:
114+
- components: [main]
115+
formats: [deb]
116+
key-id: C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
117+
key-server: keyserver.ubuntu.com
118+
suites: [focal]
119+
type: apt
120+
url: http://repo.ros2.org/ubuntu/main
121+
123122
parts:
123+
ros2-foxy-extension:
124+
build-packages: [ros-foxy-ros-core]
125+
override-build: install -D -m 0755 launch ${SNAPCRAFT_PART_INSTALL}/snap/command-chain/ros2-launch
126+
plugin: nil
127+
source: $SNAPCRAFT_EXTENSIONS_DIR/ros2
124128

125129
uros-agent:
126130
plugin: colcon
127131
source: .
128-
override-build: |
129-
set +u
130-
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git -b $ROS_DISTRO
131-
git clone https://github.com/eProsima/Micro-CDR.git -b $ROS_DISTRO
132-
git clone https://github.com/micro-ROS/micro_ros_msgs.git -b $ROS_DISTRO
133-
git clone https://github.com/micro-ROS/rosidl_typesupport_microxrcedds.git -b $ROS_DISTRO
134-
git clone https://github.com/micro-ROS/rmw-microxrcedds.git -b $ROS_DISTRO
135-
git clone https://github.com/micro-ROS/micro-ROS-Agent.git -b $ROS_DISTRO
136-
. /opt/ros/$ROS_DISTRO/setup.sh
137-
colcon build --merge-install --install-base $SNAPCRAFT_PRIME --cmake-args "-DUAGENT_BUILD_EXECUTABLE=OFF -DUAGENT_USE_SYSTEM_FASTDDS=ON" --packages-up-to micro_ros_agent
138-
set -u
132+
colcon-cmake-args:
133+
- -DMICROROSAGENT_SUPERBUILD=ON
134+
- --cmake-force-configure
135+
override-pull: |
136+
snapcraftctl pull
137+
138+
version="$(git describe --always --tags| sed -e 's/^v//;s/-/+git/;y/-/./')"
139+
[ -n "$(echo $version | grep "+git")" ] && grade=devel || grade=stable
140+
snapcraftctl set-version "$version"
141+
snapcraftctl set-grade "$grade"
142+
139143
build-packages: [make, gcc, g++]
140144
stage-packages: [ros-foxy-ros2launch]
145+
build-environment:
146+
- ROS_VERSION: '2'
147+
- ROS_DISTRO: foxy
141148

142149
runner:
143150
plugin: dump
144151
source: snap/local/
145152
organize:
146-
'*': usr/bin/
147-
148-
plugs:
149-
micro-ros-agent-shm-netplug:
150-
interface: system-files
151-
allow-auto-connection: true
152-
write:
153-
- /dev/shm
153+
'micro-ros-agent-daemon': usr/bin/
154+
'fastdds_no_shared_memory.xml': usr/share/
154155

155156
apps:
156157
micro-ros-agent:
157-
command: lib/micro_ros_agent/micro_ros_agent
158+
command: opt/ros/snap/lib/micro_ros_agent/micro_ros_agent
158159
environment:
159-
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/lib"
160-
plugs: [network, network-bind, serial-port, micro-ros-agent-shm-netplug]
161-
extensions: [ros2-foxy]
160+
FASTRTPS_DEFAULT_PROFILES_FILE: ${SNAP}/usr/share/fastdds_no_shared_memory.xml
161+
plugs: [network, network-bind, serial-port]
162162

163163
daemon:
164164
command: usr/bin/micro-ros-agent-daemon
165165
environment:
166-
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/lib"
166+
FASTRTPS_DEFAULT_PROFILES_FILE: ${SNAP}/usr/share/fastdds_no_shared_memory.xml
167167
daemon: simple
168-
plugs: [network, network-bind, serial-port, micro-ros-agent-shm-netplug]
168+
plugs: [network, network-bind, serial-port]

0 commit comments

Comments
 (0)