Skip to content

Commit 4ded7ff

Browse files
committed
Updated library generation script
Updated library Update
1 parent 2386c86 commit 4ded7ff

File tree

5 files changed

+76
-28
lines changed

5 files changed

+76
-28
lines changed

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,16 @@ docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agen
3131

3232
## How to build the precompiled library
3333

34-
```bash
34+
<!--
3535
pushd extras/library_generation
3636
docker build . -t micro_ros_arduino_builder
3737
popd
38+
-->
3839

39-
docker run -it --rm -v $(pwd):/arduino_project micro_ros_arduino_builder
40+
```bash
41+
docker run -it --rm -v $(pwd):/arduino_project microros/micro_ros_arduino_builder
4042
```
43+
Note that folders added to `extras/library_generation/extra_packages` and entries added to `extras/library_generation/extra_packages/extra_packages.repos` will be taken into account by this build system.
4144

4245
## Purpose of the Project
4346

extras/library_generation/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ RUN git clone https://github.com/micro-ROS/micro-ros-build.git src/micro-ros-bui
1919
&& tar -xvf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2 \
2020
&& rm -rf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2 gcc-arm-none-eabi-5_4-2016q3/share/doc
2121

22-
COPY ./library_generation.sh /library_generation.sh
22+
COPY ./entrypoint.sh /entrypoint.sh
2323

24-
ENTRYPOINT ["/library_generation.sh"]
24+
ENTRYPOINT ["/entrypoint.sh"]
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/bash
2+
set -e
3+
4+
exec /arduino_project/extras/library_generation/library_generation.sh "$@"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
repositories:
2+
# myrepo:
3+
# type: git
4+
# url: https://github.com/my/repo
5+
# version: master

extras/library_generation/library_generation.sh

Lines changed: 60 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
#!/bin/bash
22

3+
PLATFORMS=()
4+
while getopts "p:" o; do
5+
case "$o" in
6+
p)
7+
PLATFORMS+=(${OPTARG})
8+
;;
9+
esac
10+
done
11+
12+
if [ $OPTIND -eq 1 ]; then
13+
PLATFORMS+=("opencr1")
14+
PLATFORMS+=("teensy4")
15+
PLATFORMS+=("teensy3")
16+
fi
17+
18+
shift $((OPTIND-1))
19+
20+
######## Init ########
21+
322
apt update
423

524
cd /uros_ws
@@ -17,50 +36,67 @@ cp /arduino_project/extras/library_generation/arduino_xrce_transports/serial_tra
1736
######## Adding extra packages ########
1837
pushd firmware/mcu_ws > /dev/null
1938

20-
git clone -b foxy https://github.com/ros2/geometry2
21-
cp -R geometry2/tf2_msgs ros2/tf2_msgs
22-
rm -rf geometry2
39+
# Workaround: Copy just tf2_msgs
40+
git clone -b foxy https://github.com/ros2/geometry2
41+
cp -R geometry2/tf2_msgs ros2/tf2_msgs
42+
rm -rf geometry2
43+
44+
# Import user defined packages
45+
mkdir extra_packages
46+
pushd extra_packages > /dev/null
47+
cp -R /arduino_project/extras/library_generation/extra_packages/* .
48+
vcs import --input extra_packages.repos
49+
popd > /dev/null
2350

2451
popd > /dev/null
2552

2653
######## Clean and source ########
2754
find /arduino_project/src/ ! -name micro_ros_arduino.h ! -name *.c ! -name *.c.in -delete
2855

2956
######## Build for OpenCR ########
30-
rm -rf firmware/build
57+
if [[ " ${PLATFORMS[@]} " =~ " opencr1 " ]]; then
58+
rm -rf firmware/build
3159

32-
export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q2/bin/arm-none-eabi-
33-
ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/opencr_toolchain.cmake /arduino_project/extras/library_generation/colcon.meta
60+
export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q2/bin/arm-none-eabi-
61+
ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/opencr_toolchain.cmake /arduino_project/extras/library_generation/colcon.meta
3462

35-
find firmware/build/include/ -name "*.c" -delete
36-
cp -R firmware/build/include/* /arduino_project/src/
63+
find firmware/build/include/ -name "*.c" -delete
64+
cp -R firmware/build/include/* /arduino_project/src/
3765

38-
mkdir -p /arduino_project/src/cortex-m7/fpv5-sp-d16-softfp
39-
cp -R firmware/build/libmicroros.a /arduino_project/src/cortex-m7/fpv5-sp-d16-softfp/libmicroros.a
66+
mkdir -p /arduino_project/src/cortex-m7/fpv5-sp-d16-softfp
67+
cp -R firmware/build/libmicroros.a /arduino_project/src/cortex-m7/fpv5-sp-d16-softfp/libmicroros.a
68+
fi
4069

41-
######## Build for Teensy 4 ########
42-
rm -rf firmware/build
43-
44-
export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-
45-
46-
ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/teensy4_toolchain.cmake /arduino_project/extras/library_generation/colcon.meta
70+
######## Build for Teensy 3.2 ########
71+
if [[ " ${PLATFORMS[@]} " =~ " teensy3 " ]]; then
72+
rm -rf firmware/build
4773

48-
mkdir -p /arduino_project/src/imxrt1062/fpv5-d16-hard
49-
cp -R firmware/build/libmicroros.a /arduino_project/src/imxrt1062/fpv5-d16-hard/libmicroros.a
74+
export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-
75+
ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/teensy32_toolchain.cmake /arduino_project/extras/library_generation/colcon_lowmem.meta
5076

77+
find firmware/build/include/ -name "*.c" -delete
78+
cp -R firmware/build/include/* /arduino_project/src/
5179

52-
######## Build for Teensy 3.2 ########
53-
rm -rf firmware/build
80+
mkdir -p /arduino_project/src/mk20dx256
81+
cp -R firmware/build/libmicroros.a /arduino_project/src/mk20dx256/libmicroros.a
82+
fi
83+
######## Build for Teensy 4 ########
84+
if [[ " ${PLATFORMS[@]} " =~ " teensy4 " ]]; then
85+
rm -rf firmware/build
5486

55-
export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-
87+
export TOOLCHAIN_PREFIX=/uros_ws/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-
88+
ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/teensy4_toolchain.cmake /arduino_project/extras/library_generation/colcon.meta
5689

57-
ros2 run micro_ros_setup build_firmware.sh /arduino_project/extras/library_generation/teensy32_toolchain.cmake /arduino_project/extras/library_generation/colcon_lowmem.meta
90+
find firmware/build/include/ -name "*.c" -delete
91+
cp -R firmware/build/include/* /arduino_project/src/
5892

59-
mkdir -p /arduino_project/src/mk20dx256
60-
cp -R firmware/build/libmicroros.a /arduino_project/src/mk20dx256/libmicroros.a
93+
mkdir -p /arduino_project/src/imxrt1062/fpv5-d16-hard
94+
cp -R firmware/build/libmicroros.a /arduino_project/src/imxrt1062/fpv5-d16-hard/libmicroros.a
95+
fi
6196

6297
######## Generate extra files ########
6398
find firmware/mcu_ws/ros2 \( -name "*.srv" -o -name "*.msg" \) | awk -F"/" '{print $(NF-2)"/"$NF}' > /arduino_project/available_ros2_types
99+
find firmware/mcu_ws/extra_packages \( -name "*.srv" -o -name "*.msg" \) | awk -F"/" '{print $(NF-2)"/"$NF}' >> /arduino_project/available_ros2_types
64100

65101
cd firmware
66102
echo "" > /arduino_project/built_packages

0 commit comments

Comments
 (0)