From e1c45fe45acbce025a4f15911a075b768d11b691 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Wed, 29 Jul 2020 12:24:10 -0700 Subject: [PATCH 01/43] Update Android instructions This is a work in progress, still troubleshooting build issues. Signed-off-by: Jacob Perron --- README.md | 84 ++++++++++++++++++++++++++----------------------------- 1 file changed, 39 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index ae538cd9..69208162 100644 --- a/README.md +++ b/README.md @@ -109,8 +109,6 @@ Make sure you have Gradle 3.2 (or later) installed. ### Download and Build ROS 2 Java for Android -> TODO: This section needs updated instructions for ROS 2 Dashing and newer - The Android setup is slightly more complex, you'll need the SDK and NDK installed, and an Android device where you can run the examples. Make sure to download at least the SDK for Android Lollipop (or greater), the examples require the API level 21 at least and NDK 14. @@ -121,48 +119,44 @@ We'll also need to have the [Android SDK](https://developer.android.com/studio/# Although the `ros2_java_android.repos` file contains all the repositories for the Android bindings to compile, we'll have to disable certain packages (`python_cmake_module`, `rosidl_generator_py`, `test_msgs`) that are included the repositories and that we either don't need or can't cross-compile properly (e.g. the Python generator) -``` -# define paths -ROOT_DIR = ${HOME} -AMENT_WORKSPACE=${ROOT_DIR}/ament_ws -ROS2_ANDROID_WORKSPACE=${ROOT_DIR}/ros2_android_ws - -# pull and build ament -mkdir -p ${AMENT_WORKSPACE}/src -cd ${AMENT_WORKSPACE} -curl https://raw.githubusercontent.com/ros2-java/ament_java/master/ament_java.repos -vcs import ${AMENT_WORKSPACE}/src < ament_java.repos -src/ament/ament_tools/scripts/ament.py build --symlink-install --isolated - -# android build configuration -export PYTHON3_EXEC="$( which python3 )" -export ANDROID_ABI=armeabi-v7a -export ANDROID_NATIVE_API_LEVEL=android-21 -export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang - -# pull and build ros2 for android -mkdir -p ${ROS2_ANDROID_WORKSPACE}/src -cd ${ROS2_ANDROID_WORKSPACE} -curl https://raw.githubusercontent.com/ros2-java/ros2_java/dashing/ros2_java_android.repos -vcs import ${ROS2_ANDROID_WORKSPACE}/src < ros2_java_android.repos -source ${AMENT_WORKSPACE}/install_isolated/local_setup.sh -ament build --isolated --skip-packages test_msgs \ - --cmake-args \ - -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ - -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ - -DANDROID_FUNCTION_LEVEL_LINKING=OFF \ - -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \ - -DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME} \ - -DANDROID_STL=gnustl_shared \ - -DANDROID_ABI=${ANDROID_ABI} \ - -DANDROID_NDK=${ANDROID_NDK} \ - -DTHIRDPARTY=ON \ - -DCOMPILE_EXAMPLES=OFF \ - -DCMAKE_FIND_ROOT_PATH="$AMENT_WORKSPACE/install_isolated;$ROS2_ANDROID_WORKSPACE/install_isolated" \ - -- \ - --parallel \ - --ament-gradle-args \ - -Pament.android_stl=gnustl_shared -Pament.android_abi=$ANDROID_ABI -Pament.android_ndk=$ANDROID_NDK -- -``` +1. Download the [Android NDK](https://developer.android.com/ndk/downloads/index.html) and set the environment variable `ANDROID_NDK` to the path where it is extracted. + +1. Download the [Android SDK](https://developer.android.com/studio/#downloads) and set the environment variable `ANDROID_HOME` to the path where it is extracted. + +1. Clone ROS 2 and ROS 2 Java source code: + + mkdir -p $HOME/ros2_android_ws/src + cd $HOME/ros2_android_ws + curl https://raw.githubusercontent.com/ros2-java/ros2_java/dashing/ros2_java_android.repos | vcs import src + +1. Set Android build configuration: + + export PYTHON3_EXEC="$( which python3 )" + export ANDROID_ABI=armeabi-v7a + export ANDROID_NATIVE_API_LEVEL=android-21 + export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang + +1. Build (skipping packages that we don't need or can't cross-compile): + + colcon build --packages-skip test_msgs \ + --cmake-args \ + -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ + -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ + -DANDROID_FUNCTION_LEVEL_LINKING=OFF \ + -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \ + -DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME} \ + -DANDROID_STL=c++_shared \ + -DANDROID_ABI=${ANDROID_ABI} \ + -DANDROID_NDK=${ANDROID_NDK} \ + -DTHIRDPARTY=ON \ + -DCOMPILE_EXAMPLES=OFF + + # TODO: These options may still need to be adapted + # -DCMAKE_FIND_ROOT_PATH="$AMENT_WORKSPACE/install_isolated;$ROS2_ANDROID_WORKSPACE/install_isolated" \ + # -- \ + # --parallel \ + # --ament-gradle-args \ + # -Pament.android_stl=gnustl_shared -Pament.android_abi=$ANDROID_ABI -Pament.android_ndk=$ANDROID_NDK -- + You can find more information about the Android examples at https://github.com/ros2-java/ros2_android_examples From 5be9e3d6ed322eec0ecf6a3a0a7eaaa57594532e Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Wed, 29 Jul 2020 12:26:13 -0700 Subject: [PATCH 02/43] Update Android repos file Now the repos file contains all packages in the upstream dashing repos file, without the Qt packages: https://github.com/ros2/ros2/blob/dashing/ros2.repos Signed-off-by: Jacob Perron --- ros2_java_android.repos | 236 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 228 insertions(+), 8 deletions(-) diff --git a/ros2_java_android.repos b/ros2_java_android.repos index f6b76ae2..bd1ca2e9 100644 --- a/ros2_java_android.repos +++ b/ros2_java_android.repos @@ -1,32 +1,136 @@ repositories: + ament/ament_cmake: + type: git + url: https://github.com/ament/ament_cmake.git + version: dashing + ament/ament_index: + type: git + url: https://github.com/ament/ament_index.git + version: dashing + ament/ament_lint: + type: git + url: https://github.com/ament/ament_lint.git + version: dashing + ament/ament_package: + type: git + url: https://github.com/ament/ament_package.git + version: dashing + ament/googletest: + type: git + url: https://github.com/ament/googletest.git + version: dashing + ament/uncrustify_vendor: + type: git + url: https://github.com/ament/uncrustify_vendor.git + version: dashing + ament/ament_java: + type: git + url: https://github.com/ros2-java/ament_java.git + version: master + eclipse-cyclonedds/cyclonedds: + type: git + url: https://github.com/eclipse-cyclonedds/cyclonedds.git + version: releases/0.5.x eProsima/Fast-CDR: type: git url: https://github.com/eProsima/Fast-CDR.git version: v1.0.11 - eProsima/Fast-RTPS: + eProsima/Fast-DDS: type: git - url: https://github.com/eProsima/Fast-RTPS.git + url: https://github.com/eProsima/Fast-DDS.git version: v1.8.2 - ros2/ament_cmake_ros: + osrf/osrf_pycommon: type: git - url: https://github.com/ros2/ament_cmake_ros.git + url: https://github.com/osrf/osrf_pycommon.git version: dashing - ros2/rcutils: + osrf/osrf_testing_tools_cpp: type: git - url: https://github.com/ros2/rcutils.git + url: https://github.com/osrf/osrf_testing_tools_cpp.git + version: dashing + ros-perception/laser_geometry: + type: git + url: https://github.com/ros-perception/laser_geometry.git + version: dashing + ros-planning/navigation_msgs: + type: git + url: https://github.com/ros-planning/navigation_msgs.git + version: ros2 + ros/class_loader: + type: git + url: https://github.com/ros/class_loader.git + version: dashing + ros/pluginlib: + type: git + url: https://github.com/ros/pluginlib.git + version: dashing + ros/kdl_parser: + type: git + url: https://github.com/ros/kdl_parser.git + version: dashing + ros/resource_retriever: + type: git + url: https://github.com/ros/resource_retriever.git + version: dashing + ros/ros_environment: + type: git + url: https://github.com/ros/ros_environment.git + version: dashing + ros/urdfdom_headers: + type: git + url: https://github.com/ros/urdfdom_headers.git + version: dashing + ros2/ament_cmake_ros: + type: git + url: https://github.com/ros2/ament_cmake_ros.git version: dashing ros2/common_interfaces: type: git url: https://github.com/ros2/common_interfaces.git version: dashing + ros2/console_bridge_vendor: + type: git + url: https://github.com/ros2/console_bridge_vendor.git + version: dashing + ros2/demos: + type: git + url: https://github.com/ros2/demos.git + version: dashing + ros2/eigen3_cmake_module: + type: git + url: https://github.com/ros2/eigen3_cmake_module.git + version: master + ros2/examples: + type: git + url: https://github.com/ros2/examples.git + version: dashing ros2/example_interfaces: type: git url: https://github.com/ros2/example_interfaces.git version: dashing + ros2/geometry2: + type: git + url: https://github.com/ros2/geometry2.git + version: dashing + ros2/launch: + type: git + url: https://github.com/ros2/launch.git + version: dashing + ros2/launch_ros: + type: git + url: https://github.com/ros2/launch_ros.git + version: dashing ros2/libyaml_vendor: type: git url: https://github.com/ros2/libyaml_vendor.git version: dashing + ros2/message_filters: + type: git + url: https://github.com/ros2/message_filters.git + version: dashing + ros2/orocos_kinematics_dynamics: + type: git + url: https://github.com/ros2/orocos_kinematics_dynamics.git + version: dashing ros2/poco_vendor: type: git url: https://github.com/ros2/poco_vendor.git @@ -39,10 +143,42 @@ repositories: type: git url: https://github.com/ros2/rcl_interfaces.git version: dashing + ros2/rcl_logging: + type: git + url: https://github.com/ros2/rcl_logging.git + version: dashing + ros2/rclcpp: + type: git + url: https://github.com/ros2/rclcpp.git + version: dashing + ros2/rclpy: + type: git + url: https://github.com/ros2/rclpy.git + version: dashing + ros2/rcpputils: + type: git + url: https://github.com/ros2/rcpputils.git + version: dashing + ros2/rcutils: + type: git + url: https://github.com/ros2/rcutils.git + version: dashing + ros2/realtime_support: + type: git + url: https://github.com/ros2/realtime_support.git + version: dashing ros2/rmw: type: git url: https://github.com/ros2/rmw.git version: dashing + ros2/rmw_connext: + type: git + url: https://github.com/ros2/rmw_connext.git + version: dashing + ros2/rmw_cyclonedds: + type: git + url: https://github.com/ros2/rmw_cyclonedds.git + version: dashing-eloquent ros2/rmw_fastrtps: type: git url: https://github.com/ros2/rmw_fastrtps.git @@ -51,6 +187,30 @@ repositories: type: git url: https://github.com/ros2/rmw_implementation.git version: dashing + ros2/rmw_opensplice: + type: git + url: https://github.com/ros2/rmw_opensplice.git + version: dashing + ros2/robot_state_publisher: + type: git + url: https://github.com/ros2/robot_state_publisher.git + version: dashing + ros2/ros_testing: + type: git + url: https://github.com/ros2/ros_testing.git + version: dashing + ros2/ros1_bridge: + type: git + url: https://github.com/ros2/ros1_bridge.git + version: dashing + ros2/ros2cli: + type: git + url: https://github.com/ros2/ros2cli.git + version: dashing + ros2/rosbag2: + type: git + url: https://github.com/ros2/rosbag2.git + version: dashing ros2/rosidl: type: git url: https://github.com/ros2/rosidl.git @@ -63,13 +223,73 @@ repositories: type: git url: https://github.com/ros2/rosidl_defaults.git version: dashing + ros2/rosidl_python: + type: git + url: https://github.com/ros2/rosidl_python.git + version: dashing ros2/rosidl_typesupport: type: git url: https://github.com/ros2/rosidl_typesupport.git version: dashing - ros2/osrf_testing_tools_cpp: + ros2/rosidl_typesupport_connext: + type: git + url: https://github.com/ros2/rosidl_typesupport_connext.git + version: dashing + ros2/rosidl_typesupport_fastrtps: + type: git + url: https://github.com/ros2/rosidl_typesupport_fastrtps.git + version: dashing + ros2/rosidl_typesupport_opensplice: + type: git + url: https://github.com/ros2/rosidl_typesupport_opensplice.git + version: dashing + ros2/rviz: + type: git + url: https://github.com/ros2/rviz.git + version: dashing + ros2/sros2: + type: git + url: https://github.com/ros2/sros2.git + version: dashing + ros2/system_tests: + type: git + url: https://github.com/ros2/system_tests.git + version: dashing + ros2/test_interface_files: + type: git + url: https://github.com/ros2/test_interface_files.git + version: dashing + ros2/tinydir_vendor: + type: git + url: https://github.com/ros2/tinydir_vendor.git + version: dashing + ros2/tinyxml2_vendor: + type: git + url: https://github.com/ros2/tinyxml2_vendor.git + version: dashing + ros2/tinyxml_vendor: + type: git + url: https://github.com/ros2/tinyxml_vendor.git + version: dashing + ros2/tlsf: + type: git + url: https://github.com/ros2/tlsf.git + version: dashing + ros2/unique_identifier_msgs: + type: git + url: https://github.com/ros2/unique_identifier_msgs.git + version: dashing + ros2/urdf: + type: git + url: https://github.com/ros2/urdf.git + version: dashing + ros2/urdfdom: + type: git + url: https://github.com/ros2/urdfdom.git + version: dashing + ros2/yaml_cpp_vendor: type: git - url: https://github.com/osrf/osrf_testing_tools_cpp + url: https://github.com/ros2/yaml_cpp_vendor.git version: dashing ros2_java/ros2_java: type: git From 35f2ed2fcc5a4eb785e4ab174cafc83082715a8d Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 16:03:34 +0200 Subject: [PATCH 03/43] Added job for Android --- .github/workflows/build_and_test.yml | 40 ++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 40f1cc7b..60b9999e 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -8,8 +8,8 @@ jobs: steps: - name: Install Java run: | - sudo apt update -qq - sudo apt install -y default-jdk + sudo apt-get update -qq + sudo apt-get install -y default-jdk - uses: ros-tooling/setup-ros@0.0.14 with: required-ros-distributions: dashing @@ -18,3 +18,39 @@ jobs: package-name: rosidl_generator_java rcljava_common rcljava source-ros-binary-installation: dashing vcs-repo-file-url: https://raw.githubusercontent.com/ros2-java/ros2_java/dashing/ros2_java_desktop.repos + + build_android: + runs-on: ubuntu-18.04 + steps: + - name: Install Java + run: | + sudo apt-get update -qq + sudo apt-get install -y default-jdk + - uses: ros-tooling/setup-ros@0.0.14 + with: + required-ros-distributions: dashing + - name: Fetch VCS repo file + run: | + mkdir -p ros2_java_ws/src + cd ros2_java_ws + curl -skL https://raw.githubusercontent.com/ros2-java/ros2_java/jacob/android_instructions/ros2_android_desktop.repos | vcs import src + - name: Build ros2_java for Android + run: | + export PYTHON3_EXEC="$( which python3 )" + export ANDROID_ABI=armeabi-v7a + export ANDROID_NATIVE_API_LEVEL=android-21 + export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang + + cd ros2_java_ws + colcon build --packages-skip test_msgs \ + --cmake-args \ + -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ + -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ + -DANDROID_FUNCTION_LEVEL_LINKING=OFF \ + -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \ + -DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME} \ + -DANDROID_STL=c++_shared \ + -DANDROID_ABI=${ANDROID_ABI} \ + -DANDROID_NDK=${ANDROID_NDK} \ + -DTHIRDPARTY=ON \ + -DCOMPILE_EXAMPLES=OFF From 1755930b786dee973969c35ae9be0875bce41489 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 16:04:35 +0200 Subject: [PATCH 04/43] Only build the rcljava subset of dependencies --- .github/workflows/build_and_test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 60b9999e..7eb9253b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -42,7 +42,9 @@ jobs: export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang cd ros2_java_ws - colcon build --packages-skip test_msgs \ + colcon build \ + --packages-skip test_msgs \ + --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ From 48566ffbb97b36cee6f8a2f84a94cc43bdf56788 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 16:14:50 +0200 Subject: [PATCH 05/43] Fix URL --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 7eb9253b..b04b2347 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -33,7 +33,7 @@ jobs: run: | mkdir -p ros2_java_ws/src cd ros2_java_ws - curl -skL https://raw.githubusercontent.com/ros2-java/ros2_java/jacob/android_instructions/ros2_android_desktop.repos | vcs import src + curl -skL https://raw.githubusercontent.com/ros2-java/ros2_java/jacob/android_instructions/ros2_java_android.repos | vcs import src - name: Build ros2_java for Android run: | export PYTHON3_EXEC="$( which python3 )" From a539df7ecae769b834d6e87d0c790c3ea7fc5245 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 16:27:03 +0200 Subject: [PATCH 06/43] Replace ros-tooling scripts with plain commands --- .github/workflows/build_and_test.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index b04b2347..36d15b2b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -26,9 +26,19 @@ jobs: run: | sudo apt-get update -qq sudo apt-get install -y default-jdk - - uses: ros-tooling/setup-ros@0.0.14 - with: - required-ros-distributions: dashing + - name: Setup locale for ROS 2 + run: | + sudo locale-gen en_US en_US.UTF-8 + sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 + export LANG=en_US.UTF-8 + - name: Setup sources for ROS 2 + run: | + sudo apt-get update && sudo apt-get install -y curl gnupg2 lsb-release + curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - + sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list' + - name: Install colcon + run: | + sudo apt-get update && sudo apt-get install -y python3-colcon3-common-extensions - name: Fetch VCS repo file run: | mkdir -p ros2_java_ws/src From 50d50432d8510b660950cb7c8a376ff1ac47cd5b Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 16:28:42 +0200 Subject: [PATCH 07/43] Fix typo --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 36d15b2b..83ecb857 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -38,7 +38,7 @@ jobs: sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list' - name: Install colcon run: | - sudo apt-get update && sudo apt-get install -y python3-colcon3-common-extensions + sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions - name: Fetch VCS repo file run: | mkdir -p ros2_java_ws/src From cb064e79f1231349f92dedef4eedca36e6a661c4 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 16:31:59 +0200 Subject: [PATCH 08/43] Install vcstool for vcs --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 83ecb857..3eeacdd1 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -38,7 +38,7 @@ jobs: sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list' - name: Install colcon run: | - sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions + sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool - name: Fetch VCS repo file run: | mkdir -p ros2_java_ws/src From 32254fc51e0e6af05237b21c390b51823445344f Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 16:42:07 +0200 Subject: [PATCH 09/43] Install Android NDK --- .github/workflows/build_and_test.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 3eeacdd1..be745b12 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -34,7 +34,7 @@ jobs: - name: Setup sources for ROS 2 run: | sudo apt-get update && sudo apt-get install -y curl gnupg2 lsb-release - curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - + curl -sL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list' - name: Install colcon run: | @@ -43,13 +43,18 @@ jobs: run: | mkdir -p ros2_java_ws/src cd ros2_java_ws - curl -skL https://raw.githubusercontent.com/ros2-java/ros2_java/jacob/android_instructions/ros2_java_android.repos | vcs import src + curl -sL https://raw.githubusercontent.com/ros2-java/ros2_java/jacob/android_instructions/ros2_java_android.repos | vcs import src + - name: Install Android NDK + run: | + curl -LO https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip + unzip android-ndk-r21d-linux-x86_64.zip - name: Build ros2_java for Android run: | export PYTHON3_EXEC="$( which python3 )" export ANDROID_ABI=armeabi-v7a export ANDROID_NATIVE_API_LEVEL=android-21 export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang + export ANDROID_NDK=${PWD}/android-ndk-r21d cd ros2_java_ws colcon build \ From 9687f4f5443525d3b84a04be58c5a1268bba0bd6 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 16:51:26 +0200 Subject: [PATCH 10/43] Add ros2_java workspace to CMake find root path --- .github/workflows/build_and_test.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index be745b12..0e06e679 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -62,7 +62,7 @@ jobs: --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ - -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ + -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \ -DANDROID_FUNCTION_LEVEL_LINKING=OFF \ -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \ -DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME} \ @@ -70,4 +70,5 @@ jobs: -DANDROID_ABI=${ANDROID_ABI} \ -DANDROID_NDK=${ANDROID_NDK} \ -DTHIRDPARTY=ON \ - -DCOMPILE_EXAMPLES=OFF + -DCOMPILE_EXAMPLES=OFF \ + -DCMAKE_FIND_ROOT_PATH="${PWD}/install" From e0ba560df8f92b52b4c84007c8ebb2c0401a39ff Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 17:00:40 +0200 Subject: [PATCH 11/43] Disable building tests --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 0e06e679..b8cc6bd7 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -61,6 +61,7 @@ jobs: --packages-skip test_msgs \ --packages-up-to rcljava \ --cmake-args \ + -DBUILD_TESTING=OFF \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \ -DANDROID_FUNCTION_LEVEL_LINKING=OFF \ From 291a4b77eb0cae3479cef77d037c3404cef87ebe Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 17:02:56 +0200 Subject: [PATCH 12/43] Do not build osrf_testing_tools_cpp as it uses execinfo.h, which is not available on Android --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index b8cc6bd7..a9be4113 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -58,7 +58,7 @@ jobs: cd ros2_java_ws colcon build \ - --packages-skip test_msgs \ + --packages-skip test_msgs osrf_testing_tools_cpp \ --packages-up-to rcljava \ --cmake-args \ -DBUILD_TESTING=OFF \ From 821126d0fbfa42a18ca74d7e557f147b3d225f87 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 17:20:51 +0200 Subject: [PATCH 13/43] Workaround for Android --- .github/workflows/build_and_test.yml | 2 +- ros2_java_android.repos | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index a9be4113..b8cc6bd7 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -58,7 +58,7 @@ jobs: cd ros2_java_ws colcon build \ - --packages-skip test_msgs osrf_testing_tools_cpp \ + --packages-skip test_msgs \ --packages-up-to rcljava \ --cmake-args \ -DBUILD_TESTING=OFF \ diff --git a/ros2_java_android.repos b/ros2_java_android.repos index bd1ca2e9..3885272e 100644 --- a/ros2_java_android.repos +++ b/ros2_java_android.repos @@ -45,8 +45,8 @@ repositories: version: dashing osrf/osrf_testing_tools_cpp: type: git - url: https://github.com/osrf/osrf_testing_tools_cpp.git - version: dashing + url: https://github.com/ros2-java/osrf_testing_tools_cpp.git + version: dashing-android ros-perception/laser_geometry: type: git url: https://github.com/ros-perception/laser_geometry.git From 39df81cdeefc6b32743f3f80e2575c012829e206 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 17:39:01 +0200 Subject: [PATCH 14/43] Reenable building tests --- .github/workflows/build_and_test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index b8cc6bd7..0e06e679 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -61,7 +61,6 @@ jobs: --packages-skip test_msgs \ --packages-up-to rcljava \ --cmake-args \ - -DBUILD_TESTING=OFF \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \ -DANDROID_FUNCTION_LEVEL_LINKING=OFF \ From 6588c51a05a0f41d8bef5ced0f844c3295f3dcdd Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 18:18:13 +0200 Subject: [PATCH 15/43] Skip cyclonedds for now --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 0e06e679..087449f4 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -58,7 +58,7 @@ jobs: cd ros2_java_ws colcon build \ - --packages-skip test_msgs \ + --packages-skip test_msgs cyclonedds rmw_cyclonedds \ --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ From 1d8b2b9c9b4d72a5f4010c002ecee43a42c87eb8 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 18:27:27 +0200 Subject: [PATCH 16/43] Install lark parser --- .github/workflows/build_and_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 087449f4..37e46eb9 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -36,9 +36,9 @@ jobs: sudo apt-get update && sudo apt-get install -y curl gnupg2 lsb-release curl -sL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list' - - name: Install colcon + - name: Install ROS 2 dependencies run: | - sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool + sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool python3-lark-parser - name: Fetch VCS repo file run: | mkdir -p ros2_java_ws/src From 0e36392a10c1b07b1d69ad9095d34a37384d84de Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 30 Jul 2020 18:46:45 +0200 Subject: [PATCH 17/43] Install python3-dev --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 37e46eb9..429d302d 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -38,7 +38,7 @@ jobs: sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list' - name: Install ROS 2 dependencies run: | - sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool python3-lark-parser + sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool python3-lark-parser python3-dev - name: Fetch VCS repo file run: | mkdir -p ros2_java_ws/src From dffac9b0189effbb9da9e249bb32da0bd9df6870 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 12:30:04 +0200 Subject: [PATCH 18/43] Pass PYTHON_LIBRARY and PYTHON_INCLUDE_DIR to the CMake Python module --- .github/workflows/build_and_test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 429d302d..cc4ea863 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -51,6 +51,8 @@ jobs: - name: Build ros2_java for Android run: | export PYTHON3_EXEC="$( which python3 )" + export PYTHON3_LIBRARY="$( ${PYTHON3_EXEC} -c 'import os.path; from distutils import sysconfig; print(os.path.realpath(os.path.join(sysconfig.get_config_var("LIBPL"), sysconfig.get_config_var("LDLIBRARY"))))' )" + export PYTHON3_INCLUDE_DIR="$( ${PYTHON3_EXEC} -c 'from distutils import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))' )" export ANDROID_ABI=armeabi-v7a export ANDROID_NATIVE_API_LEVEL=android-21 export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang @@ -62,6 +64,8 @@ jobs: --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ + -DPYTHON_LIBRARY=${PYTHON3_LIBRARY} \ + -DPYTHON_INCLUDE_DIR=${PYTHON3_INCLUDE_DIR} \ -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \ -DANDROID_FUNCTION_LEVEL_LINKING=OFF \ -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \ From a8acdc6606fd5f59ddd5bc9ed91cd629ad8341aa Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 12:33:51 +0200 Subject: [PATCH 19/43] Skip rcl_logging_log4cxx --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index cc4ea863..f410beb4 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -60,7 +60,7 @@ jobs: cd ros2_java_ws colcon build \ - --packages-skip test_msgs cyclonedds rmw_cyclonedds \ + --packages-skip test_msgs cyclonedds rmw_cyclonedds rcl_logging_log4cxx \ --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ From 5e69e65157759c2a477ef2eea98f15ca4ef5c2e8 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 12:39:41 +0200 Subject: [PATCH 20/43] Use rmw fork for Android. Skip CycloneDDS packages --- .github/workflows/build_and_test.yml | 2 +- ros2_java_android.repos | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index f410beb4..7551c903 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -60,7 +60,7 @@ jobs: cd ros2_java_ws colcon build \ - --packages-skip test_msgs cyclonedds rmw_cyclonedds rcl_logging_log4cxx \ + --packages-skip test_msgs cyclonedds cyclonedds_cmake_module rmw_cyclonedds_cpp rcl_logging_log4cxx \ --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ diff --git a/ros2_java_android.repos b/ros2_java_android.repos index 3885272e..6715657a 100644 --- a/ros2_java_android.repos +++ b/ros2_java_android.repos @@ -169,8 +169,8 @@ repositories: version: dashing ros2/rmw: type: git - url: https://github.com/ros2/rmw.git - version: dashing + url: https://github.com/ros2-java/rmw.git + version: dashing-android ros2/rmw_connext: type: git url: https://github.com/ros2/rmw_connext.git From 1bbe59e7fb16bc01b60af4dee3e8910cde9c2c20 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 12:52:48 +0200 Subject: [PATCH 21/43] Revert to 1.6 --- rosidl_generator_java/resource/msg.cpp.em | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rosidl_generator_java/resource/msg.cpp.em b/rosidl_generator_java/resource/msg.cpp.em index 9c868e60..d21c40d7 100644 --- a/rosidl_generator_java/resource/msg.cpp.em +++ b/rosidl_generator_java/resource/msg.cpp.em @@ -202,7 +202,7 @@ JNIEXPORT jlong JNICALL Java_@(underscore_separated_jni_type_name)_getDestructor JNIEnv * env = nullptr; // TODO(esteve): check return status assert(g_vm != nullptr); - g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_8); + g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6); assert(env != nullptr); if (ros_message == nullptr) { @@ -331,7 +331,7 @@ jobject @(underscore_separated_type_name)__convert_to_java(@(msg_normalized_type JNIEnv * env = nullptr; // TODO(esteve): check return status assert(g_vm != nullptr); - g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_8); + g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6); assert(env != nullptr); if (_jmessage_obj == nullptr) { @@ -435,7 +435,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM * vm, void *) } JNIEnv * env; - if (g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_8) != JNI_OK) { + if (g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) { return JNI_ERR; } else { @[for normalized_type, jni_type in cache.items()]@ @@ -484,7 +484,7 @@ if value_method: @[ end if]@ @[end for]@ } - return JNI_VERSION_1_8; + return JNI_VERSION_1_6; } JNIEXPORT void JNICALL JNI_OnUnload(JavaVM * vm, void *) @@ -493,7 +493,7 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM * vm, void *) assert(g_vm == vm); JNIEnv * env; - if (g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_8) == JNI_OK) { + if (g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) == JNI_OK) { @[for normalized_type, jni_type in cache.items()]@ if (_j@(normalized_type)_class_global != nullptr) { env->DeleteGlobalRef(_j@(normalized_type)_class_global); From 1423330570040d7a1f09e10221196f43fcb9d301 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 13:17:30 +0200 Subject: [PATCH 22/43] Configure log4j dynamically to avoid errors when building for Android --- .../java/org/ros2/generator/InterfacesTest.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java b/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java index 00638e09..9b5223b5 100644 --- a/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java +++ b/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java @@ -19,6 +19,7 @@ import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; +import java.lang.reflect.Method; import java.util.concurrent.Callable; import java.util.Arrays; import java.util.List; @@ -30,7 +31,18 @@ public class InterfacesTest { @BeforeClass public static void setupOnce() { - org.apache.log4j.BasicConfigurator.configure(); + try + { + // Configure log4j. Doing this dynamically so that Android does not complain about missing + // the log4j JARs, SLF4J uses Android's native logging mechanism instead. + Class c = Class.forName("org.apache.log4j.BasicConfigurator"); + Method m = c.getDeclaredMethod("configure", null); + Object o = m.invoke(null, null); + } + catch (Exception e) + { + e.printStackTrace(); + } } @Rule public ExpectedException thrown = ExpectedException.none(); From ad3be980715f57b948a92b21c8d1103f3dd55414 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 13:35:13 +0200 Subject: [PATCH 23/43] Configure log4j dynamically to avoid errors when building for Android --- .github/workflows/build_and_test.yml | 2 +- .../java/org/ros2/rcljava/client/ClientTest.java | 13 ++++++++++++- .../test/java/org/ros2/rcljava/node/NodeTest.java | 13 ++++++++++++- .../parameters/AsyncParametersClientTest.java | 13 ++++++++++++- .../parameters/SyncParametersClientTest.java | 13 ++++++++++++- .../java/org/ros2/generator/InterfacesTest.java | 4 ++-- 6 files changed, 51 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 7551c903..5c08c651 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -60,7 +60,7 @@ jobs: cd ros2_java_ws colcon build \ - --packages-skip test_msgs cyclonedds cyclonedds_cmake_module rmw_cyclonedds_cpp rcl_logging_log4cxx \ + --packages-ignore cyclonedds rcl_logging_log4cxx rosidl_generator_py \ --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ diff --git a/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java b/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java index f4724d9b..b5b40ab8 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java @@ -46,7 +46,18 @@ public class ClientTest { @BeforeClass public static void setupOnce() throws Exception { RCLJava.rclJavaInit(); - org.apache.log4j.BasicConfigurator.configure(); + try + { + // Configure log4j. Doing this dynamically so that Android does not complain about missing + // the log4j JARs, SLF4J uses Android's native logging mechanism instead. + Class c = Class.forName("org.apache.log4j.BasicConfigurator"); + Method m = c.getDeclaredMethod("configure", (Class[]) null); + Object o = m.invoke(null, (Object[]) null); + } + catch (Exception e) + { + e.printStackTrace(); + } } public class TestClientConsumer implements TriConsumer[]) null); + Object o = m.invoke(null, (Object[]) null); + } + catch (Exception e) + { + e.printStackTrace(); + } } public class TestConsumer implements Consumer { diff --git a/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java b/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java index a458c6a2..e2220a67 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java @@ -69,7 +69,18 @@ public TestConsumer(RCLFuture resultFuture) { @BeforeClass public static void setupOnce() throws Exception { RCLJava.rclJavaInit(); - org.apache.log4j.BasicConfigurator.configure(); + try + { + // Configure log4j. Doing this dynamically so that Android does not complain about missing + // the log4j JARs, SLF4J uses Android's native logging mechanism instead. + Class c = Class.forName("org.apache.log4j.BasicConfigurator"); + Method m = c.getDeclaredMethod("configure", (Class[]) null); + Object o = m.invoke(null, (Object[]) null); + } + catch (Exception e) + { + e.printStackTrace(); + } } @Before diff --git a/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java b/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java index 8ec4266a..6142bd40 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java @@ -52,7 +52,18 @@ public class SyncParametersClientTest { @BeforeClass public static void setupOnce() throws Exception { RCLJava.rclJavaInit(); - org.apache.log4j.BasicConfigurator.configure(); + try + { + // Configure log4j. Doing this dynamically so that Android does not complain about missing + // the log4j JARs, SLF4J uses Android's native logging mechanism instead. + Class c = Class.forName("org.apache.log4j.BasicConfigurator"); + Method m = c.getDeclaredMethod("configure", (Class[]) null); + Object o = m.invoke(null, (Object[]) null); + } + catch (Exception e) + { + e.printStackTrace(); + } } @Before diff --git a/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java b/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java index 9b5223b5..2f6247b2 100644 --- a/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java +++ b/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java @@ -36,8 +36,8 @@ public static void setupOnce() { // Configure log4j. Doing this dynamically so that Android does not complain about missing // the log4j JARs, SLF4J uses Android's native logging mechanism instead. Class c = Class.forName("org.apache.log4j.BasicConfigurator"); - Method m = c.getDeclaredMethod("configure", null); - Object o = m.invoke(null, null); + Method m = c.getDeclaredMethod("configure", (Class[]) null); + Object o = m.invoke(null, (Object[]) null); } catch (Exception e) { From b81c0088b83538a55038f6b5f5e6214d2be94e39 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 13:38:03 +0200 Subject: [PATCH 24/43] Switch to jacob/instructions temporarily --- ros2_java_android.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ros2_java_android.repos b/ros2_java_android.repos index 6715657a..f9b47b3a 100644 --- a/ros2_java_android.repos +++ b/ros2_java_android.repos @@ -294,7 +294,7 @@ repositories: ros2_java/ros2_java: type: git url: https://github.com/ros2-java/ros2_java - version: dashing + version: jacob/android_instructions ros2_java/ros2_android: type: git url: https://github.com/esteve/ros2_android.git From ad7388f40e57a3ea81df03de60817285083cc28e Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 13:39:24 +0200 Subject: [PATCH 25/43] Fix compilation error --- rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java | 2 +- rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java | 2 +- .../org/ros2/rcljava/parameters/AsyncParametersClientTest.java | 2 +- .../org/ros2/rcljava/parameters/SyncParametersClientTest.java | 2 +- .../src/test/java/org/ros2/generator/InterfacesTest.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java b/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java index b5b40ab8..a1ed7d30 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java @@ -52,7 +52,7 @@ public static void setupOnce() throws Exception { // the log4j JARs, SLF4J uses Android's native logging mechanism instead. Class c = Class.forName("org.apache.log4j.BasicConfigurator"); Method m = c.getDeclaredMethod("configure", (Class[]) null); - Object o = m.invoke(null, (Object[]) null); + Object o = m.invoke(null, (Object[]) null); } catch (Exception e) { diff --git a/rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java b/rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java index 44659938..6b67e16e 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java @@ -92,7 +92,7 @@ public static void setupOnce() throws Exception { // the log4j JARs, SLF4J uses Android's native logging mechanism instead. Class c = Class.forName("org.apache.log4j.BasicConfigurator"); Method m = c.getDeclaredMethod("configure", (Class[]) null); - Object o = m.invoke(null, (Object[]) null); + Object o = m.invoke(null, (Object[]) null); } catch (Exception e) { diff --git a/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java b/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java index e2220a67..d74c2cca 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java @@ -75,7 +75,7 @@ public static void setupOnce() throws Exception { // the log4j JARs, SLF4J uses Android's native logging mechanism instead. Class c = Class.forName("org.apache.log4j.BasicConfigurator"); Method m = c.getDeclaredMethod("configure", (Class[]) null); - Object o = m.invoke(null, (Object[]) null); + Object o = m.invoke(null, (Object[]) null); } catch (Exception e) { diff --git a/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java b/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java index 6142bd40..943d562a 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java @@ -58,7 +58,7 @@ public static void setupOnce() throws Exception { // the log4j JARs, SLF4J uses Android's native logging mechanism instead. Class c = Class.forName("org.apache.log4j.BasicConfigurator"); Method m = c.getDeclaredMethod("configure", (Class[]) null); - Object o = m.invoke(null, (Object[]) null); + Object o = m.invoke(null, (Object[]) null); } catch (Exception e) { diff --git a/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java b/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java index 2f6247b2..d64af3eb 100644 --- a/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java +++ b/rosidl_generator_java/src/test/java/org/ros2/generator/InterfacesTest.java @@ -37,7 +37,7 @@ public static void setupOnce() { // the log4j JARs, SLF4J uses Android's native logging mechanism instead. Class c = Class.forName("org.apache.log4j.BasicConfigurator"); Method m = c.getDeclaredMethod("configure", (Class[]) null); - Object o = m.invoke(null, (Object[]) null); + Object o = m.invoke(null, (Object[]) null); } catch (Exception e) { From 87103f32bc02f870fcee1add90ed0a4f0f13fc4c Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 14:00:36 +0200 Subject: [PATCH 26/43] Trim repos file for Android --- ros2_java_android.repos | 144 ---------------------------------------- 1 file changed, 144 deletions(-) diff --git a/ros2_java_android.repos b/ros2_java_android.repos index f9b47b3a..5f597f49 100644 --- a/ros2_java_android.repos +++ b/ros2_java_android.repos @@ -15,10 +15,6 @@ repositories: type: git url: https://github.com/ament/ament_package.git version: dashing - ament/googletest: - type: git - url: https://github.com/ament/googletest.git - version: dashing ament/uncrustify_vendor: type: git url: https://github.com/ament/uncrustify_vendor.git @@ -27,10 +23,6 @@ repositories: type: git url: https://github.com/ros2-java/ament_java.git version: master - eclipse-cyclonedds/cyclonedds: - type: git - url: https://github.com/eclipse-cyclonedds/cyclonedds.git - version: releases/0.5.x eProsima/Fast-CDR: type: git url: https://github.com/eProsima/Fast-CDR.git @@ -47,38 +39,6 @@ repositories: type: git url: https://github.com/ros2-java/osrf_testing_tools_cpp.git version: dashing-android - ros-perception/laser_geometry: - type: git - url: https://github.com/ros-perception/laser_geometry.git - version: dashing - ros-planning/navigation_msgs: - type: git - url: https://github.com/ros-planning/navigation_msgs.git - version: ros2 - ros/class_loader: - type: git - url: https://github.com/ros/class_loader.git - version: dashing - ros/pluginlib: - type: git - url: https://github.com/ros/pluginlib.git - version: dashing - ros/kdl_parser: - type: git - url: https://github.com/ros/kdl_parser.git - version: dashing - ros/resource_retriever: - type: git - url: https://github.com/ros/resource_retriever.git - version: dashing - ros/ros_environment: - type: git - url: https://github.com/ros/ros_environment.git - version: dashing - ros/urdfdom_headers: - type: git - url: https://github.com/ros/urdfdom_headers.git - version: dashing ros2/ament_cmake_ros: type: git url: https://github.com/ros2/ament_cmake_ros.git @@ -87,50 +47,14 @@ repositories: type: git url: https://github.com/ros2/common_interfaces.git version: dashing - ros2/console_bridge_vendor: - type: git - url: https://github.com/ros2/console_bridge_vendor.git - version: dashing - ros2/demos: - type: git - url: https://github.com/ros2/demos.git - version: dashing - ros2/eigen3_cmake_module: - type: git - url: https://github.com/ros2/eigen3_cmake_module.git - version: master - ros2/examples: - type: git - url: https://github.com/ros2/examples.git - version: dashing ros2/example_interfaces: type: git url: https://github.com/ros2/example_interfaces.git version: dashing - ros2/geometry2: - type: git - url: https://github.com/ros2/geometry2.git - version: dashing ros2/launch: type: git url: https://github.com/ros2/launch.git version: dashing - ros2/launch_ros: - type: git - url: https://github.com/ros2/launch_ros.git - version: dashing - ros2/libyaml_vendor: - type: git - url: https://github.com/ros2/libyaml_vendor.git - version: dashing - ros2/message_filters: - type: git - url: https://github.com/ros2/message_filters.git - version: dashing - ros2/orocos_kinematics_dynamics: - type: git - url: https://github.com/ros2/orocos_kinematics_dynamics.git - version: dashing ros2/poco_vendor: type: git url: https://github.com/ros2/poco_vendor.git @@ -147,14 +71,6 @@ repositories: type: git url: https://github.com/ros2/rcl_logging.git version: dashing - ros2/rclcpp: - type: git - url: https://github.com/ros2/rclcpp.git - version: dashing - ros2/rclpy: - type: git - url: https://github.com/ros2/rclpy.git - version: dashing ros2/rcpputils: type: git url: https://github.com/ros2/rcpputils.git @@ -163,10 +79,6 @@ repositories: type: git url: https://github.com/ros2/rcutils.git version: dashing - ros2/realtime_support: - type: git - url: https://github.com/ros2/realtime_support.git - version: dashing ros2/rmw: type: git url: https://github.com/ros2-java/rmw.git @@ -191,26 +103,6 @@ repositories: type: git url: https://github.com/ros2/rmw_opensplice.git version: dashing - ros2/robot_state_publisher: - type: git - url: https://github.com/ros2/robot_state_publisher.git - version: dashing - ros2/ros_testing: - type: git - url: https://github.com/ros2/ros_testing.git - version: dashing - ros2/ros1_bridge: - type: git - url: https://github.com/ros2/ros1_bridge.git - version: dashing - ros2/ros2cli: - type: git - url: https://github.com/ros2/ros2cli.git - version: dashing - ros2/rosbag2: - type: git - url: https://github.com/ros2/rosbag2.git - version: dashing ros2/rosidl: type: git url: https://github.com/ros2/rosidl.git @@ -243,18 +135,6 @@ repositories: type: git url: https://github.com/ros2/rosidl_typesupport_opensplice.git version: dashing - ros2/rviz: - type: git - url: https://github.com/ros2/rviz.git - version: dashing - ros2/sros2: - type: git - url: https://github.com/ros2/sros2.git - version: dashing - ros2/system_tests: - type: git - url: https://github.com/ros2/system_tests.git - version: dashing ros2/test_interface_files: type: git url: https://github.com/ros2/test_interface_files.git @@ -263,34 +143,10 @@ repositories: type: git url: https://github.com/ros2/tinydir_vendor.git version: dashing - ros2/tinyxml2_vendor: - type: git - url: https://github.com/ros2/tinyxml2_vendor.git - version: dashing - ros2/tinyxml_vendor: - type: git - url: https://github.com/ros2/tinyxml_vendor.git - version: dashing - ros2/tlsf: - type: git - url: https://github.com/ros2/tlsf.git - version: dashing ros2/unique_identifier_msgs: type: git url: https://github.com/ros2/unique_identifier_msgs.git version: dashing - ros2/urdf: - type: git - url: https://github.com/ros2/urdf.git - version: dashing - ros2/urdfdom: - type: git - url: https://github.com/ros2/urdfdom.git - version: dashing - ros2/yaml_cpp_vendor: - type: git - url: https://github.com/ros2/yaml_cpp_vendor.git - version: dashing ros2_java/ros2_java: type: git url: https://github.com/ros2-java/ros2_java From 57e603733dd28d32ee979858d0260691a4507e75 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 14:10:25 +0200 Subject: [PATCH 27/43] Readd googletest repo --- ros2_java_android.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ros2_java_android.repos b/ros2_java_android.repos index 5f597f49..5600407d 100644 --- a/ros2_java_android.repos +++ b/ros2_java_android.repos @@ -15,6 +15,10 @@ repositories: type: git url: https://github.com/ament/ament_package.git version: dashing + ament/googletest: + type: git + url: https://github.com/ament/googletest.git + version: dashing ament/uncrustify_vendor: type: git url: https://github.com/ament/uncrustify_vendor.git From f2970d7f03c155a3c7dce850c6f5d1ca7bcdd023 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 15:27:41 +0200 Subject: [PATCH 28/43] Fix missing import --- rcljava/src/main/java/org/ros2/rcljava/node/NodeImpl.java | 2 -- rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java | 1 + rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java | 1 + .../org/ros2/rcljava/parameters/AsyncParametersClientTest.java | 1 + .../org/ros2/rcljava/parameters/SyncParametersClientTest.java | 1 + 5 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rcljava/src/main/java/org/ros2/rcljava/node/NodeImpl.java b/rcljava/src/main/java/org/ros2/rcljava/node/NodeImpl.java index 9fdc1c27..8bf5e69d 100644 --- a/rcljava/src/main/java/org/ros2/rcljava/node/NodeImpl.java +++ b/rcljava/src/main/java/org/ros2/rcljava/node/NodeImpl.java @@ -47,8 +47,6 @@ import java.lang.ref.WeakReference; -import java.lang.reflect.Method; - import java.util.ArrayList; import java.util.Collection; import java.util.List; diff --git a/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java b/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java index a1ed7d30..cf01c02e 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java @@ -26,6 +26,7 @@ import org.junit.Test; import java.lang.ref.WeakReference; +import java.lang.reflect.Method; import java.time.Duration; import java.util.Arrays; diff --git a/rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java b/rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java index 6b67e16e..2287b9de 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/node/NodeTest.java @@ -26,6 +26,7 @@ import org.junit.Test; import java.lang.ref.WeakReference; +import java.lang.reflect.Method; import java.util.Arrays; import java.util.List; diff --git a/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java b/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java index d74c2cca..1c94bce5 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/parameters/AsyncParametersClientTest.java @@ -26,6 +26,7 @@ import org.junit.Test; import java.lang.ref.WeakReference; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; diff --git a/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java b/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java index 943d562a..197e5cef 100644 --- a/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java +++ b/rcljava/src/test/java/org/ros2/rcljava/parameters/SyncParametersClientTest.java @@ -26,6 +26,7 @@ import org.junit.Test; import java.lang.ref.WeakReference; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; From 419c23cca95ff3ac2804c932497a5d7e8c33c9cc Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 17:51:56 +0200 Subject: [PATCH 29/43] Build entire workspace --- .github/workflows/build_and_test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 5c08c651..1fb22363 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -61,7 +61,6 @@ jobs: cd ros2_java_ws colcon build \ --packages-ignore cyclonedds rcl_logging_log4cxx rosidl_generator_py \ - --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ -DPYTHON_LIBRARY=${PYTHON3_LIBRARY} \ From 6fb45b8ba1e9fb192ecba6285f47eeb0c63eb365 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Tue, 11 Aug 2020 20:13:52 +0200 Subject: [PATCH 30/43] Only build up to the Android examples --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 1fb22363..54917540 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -61,6 +61,7 @@ jobs: cd ros2_java_ws colcon build \ --packages-ignore cyclonedds rcl_logging_log4cxx rosidl_generator_py \ + --packages-up-to ros2_listener_android ros2_talker_android \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ -DPYTHON_LIBRARY=${PYTHON3_LIBRARY} \ From 921c6a2b226c067f069fff7ebf33cfab3a40c076 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Wed, 12 Aug 2020 12:37:13 +0200 Subject: [PATCH 31/43] Install colcon extensions for Gradle --- .github/workflows/build_and_test.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 54917540..3f7682bc 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -13,9 +13,13 @@ jobs: - uses: ros-tooling/setup-ros@0.0.14 with: required-ros-distributions: dashing + - name: Install colcon extensions for Gradle + run: | + sudo pip3 install git+git://github.com/colcon/colcon-gradle.git + sudo pip3 install git+git://github.com/colcon/colcon-ros-gradle.git - uses: ros-tooling/action-ros-ci@8d58122 with: - package-name: rosidl_generator_java rcljava_common rcljava + package-name: rosidl_generator_java rcljava_common rcljava rcljava_examples source-ros-binary-installation: dashing vcs-repo-file-url: https://raw.githubusercontent.com/ros2-java/ros2_java/dashing/ros2_java_desktop.repos @@ -39,6 +43,10 @@ jobs: - name: Install ROS 2 dependencies run: | sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool python3-lark-parser python3-dev + - name: Install colcon extensions for Gradle + run: | + sudo pip3 install git+git://github.com/colcon/colcon-gradle.git + sudo pip3 install git+git://github.com/colcon/colcon-ros-gradle.git - name: Fetch VCS repo file run: | mkdir -p ros2_java_ws/src From 6befaf1d6b2b677828c8a6d9c3208b2debc30247 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Wed, 12 Aug 2020 12:48:42 +0200 Subject: [PATCH 32/43] Revert changes for desktop --- .github/workflows/build_and_test.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 3f7682bc..4eb670d2 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -13,13 +13,9 @@ jobs: - uses: ros-tooling/setup-ros@0.0.14 with: required-ros-distributions: dashing - - name: Install colcon extensions for Gradle - run: | - sudo pip3 install git+git://github.com/colcon/colcon-gradle.git - sudo pip3 install git+git://github.com/colcon/colcon-ros-gradle.git - uses: ros-tooling/action-ros-ci@8d58122 with: - package-name: rosidl_generator_java rcljava_common rcljava rcljava_examples + package-name: rosidl_generator_java rcljava_common rcljava source-ros-binary-installation: dashing vcs-repo-file-url: https://raw.githubusercontent.com/ros2-java/ros2_java/dashing/ros2_java_desktop.repos From fb1b67e9c6c651369346a04f511940d5e44e9c7a Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Wed, 12 Aug 2020 13:04:37 +0200 Subject: [PATCH 33/43] Move ros2_android repo to ros2-java org --- ros2_java_android.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ros2_java_android.repos b/ros2_java_android.repos index 5600407d..95c3c4c0 100644 --- a/ros2_java_android.repos +++ b/ros2_java_android.repos @@ -157,7 +157,7 @@ repositories: version: jacob/android_instructions ros2_java/ros2_android: type: git - url: https://github.com/esteve/ros2_android.git + url: https://github.com/ros2-java/ros2_android.git version: master ros2_java/ros2_android_examples: type: git From 2a06d804f7970f1ea758cba92bd8b0763771b287 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Mon, 24 Aug 2020 14:00:02 +0200 Subject: [PATCH 34/43] Install Gradle --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 4eb670d2..e1729a82 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -41,6 +41,7 @@ jobs: sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool python3-lark-parser python3-dev - name: Install colcon extensions for Gradle run: | + sudo apt-get install -y gradle sudo pip3 install git+git://github.com/colcon/colcon-gradle.git sudo pip3 install git+git://github.com/colcon/colcon-ros-gradle.git - name: Fetch VCS repo file From 9a011be599e7d6b622d702804968900c601996bb Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Mon, 24 Aug 2020 14:18:53 +0200 Subject: [PATCH 35/43] Build rcljava_examples --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index e1729a82..837c7124 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -15,7 +15,7 @@ jobs: required-ros-distributions: dashing - uses: ros-tooling/action-ros-ci@8d58122 with: - package-name: rosidl_generator_java rcljava_common rcljava + package-name: rosidl_generator_java rcljava_common rcljava rcljava_examples source-ros-binary-installation: dashing vcs-repo-file-url: https://raw.githubusercontent.com/ros2-java/ros2_java/dashing/ros2_java_desktop.repos From a97252904e6008bb7e1e9705ecd838c08298524e Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Mon, 24 Aug 2020 14:29:55 +0200 Subject: [PATCH 36/43] Install Gradle --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 837c7124..f51d6197 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -9,7 +9,7 @@ jobs: - name: Install Java run: | sudo apt-get update -qq - sudo apt-get install -y default-jdk + sudo apt-get install -y default-jdk gradle - uses: ros-tooling/setup-ros@0.0.14 with: required-ros-distributions: dashing From 4b0aeb27448429bfcc11fb07af1c3ce68c201030 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Mon, 24 Aug 2020 14:51:01 +0200 Subject: [PATCH 37/43] Do not build rcljava_examples temporarily --- .github/workflows/build_and_test.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index f51d6197..e18f6688 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -15,7 +15,7 @@ jobs: required-ros-distributions: dashing - uses: ros-tooling/action-ros-ci@8d58122 with: - package-name: rosidl_generator_java rcljava_common rcljava rcljava_examples + package-name: rosidl_generator_java rcljava_common rcljava source-ros-binary-installation: dashing vcs-repo-file-url: https://raw.githubusercontent.com/ros2-java/ros2_java/dashing/ros2_java_desktop.repos @@ -25,7 +25,7 @@ jobs: - name: Install Java run: | sudo apt-get update -qq - sudo apt-get install -y default-jdk + sudo apt-get install -y default-jdk gradle - name: Setup locale for ROS 2 run: | sudo locale-gen en_US en_US.UTF-8 @@ -41,7 +41,6 @@ jobs: sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool python3-lark-parser python3-dev - name: Install colcon extensions for Gradle run: | - sudo apt-get install -y gradle sudo pip3 install git+git://github.com/colcon/colcon-gradle.git sudo pip3 install git+git://github.com/colcon/colcon-ros-gradle.git - name: Fetch VCS repo file From 02c9551bfab92c517aec1f3193c53d1a8e6f4330 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Fri, 18 Sep 2020 13:13:14 +0200 Subject: [PATCH 38/43] Update README.md --- .github/workflows/build_and_test.yml | 10 +++++----- README.md | 21 ++++++++++----------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index e18f6688..ca68b9bd 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -43,15 +43,15 @@ jobs: run: | sudo pip3 install git+git://github.com/colcon/colcon-gradle.git sudo pip3 install git+git://github.com/colcon/colcon-ros-gradle.git + - name: Install Android NDK + run: | + curl -LO https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip + unzip android-ndk-r21d-linux-x86_64.zip - name: Fetch VCS repo file run: | mkdir -p ros2_java_ws/src cd ros2_java_ws curl -sL https://raw.githubusercontent.com/ros2-java/ros2_java/jacob/android_instructions/ros2_java_android.repos | vcs import src - - name: Install Android NDK - run: | - curl -LO https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip - unzip android-ndk-r21d-linux-x86_64.zip - name: Build ros2_java for Android run: | export PYTHON3_EXEC="$( which python3 )" @@ -65,7 +65,7 @@ jobs: cd ros2_java_ws colcon build \ --packages-ignore cyclonedds rcl_logging_log4cxx rosidl_generator_py \ - --packages-up-to ros2_listener_android ros2_talker_android \ + --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ -DPYTHON_LIBRARY=${PYTHON3_LIBRARY} \ diff --git a/README.md b/README.md index 69208162..8bbc8ca4 100644 --- a/README.md +++ b/README.md @@ -132,16 +132,22 @@ Although the `ros2_java_android.repos` file contains all the repositories for th 1. Set Android build configuration: export PYTHON3_EXEC="$( which python3 )" + export PYTHON3_LIBRARY="$( ${PYTHON3_EXEC} -c 'import os.path; from distutils import sysconfig; print(os.path.realpath(os.path.join(sysconfig.get_config_var("LIBPL"), sysconfig.get_config_var("LDLIBRARY"))))' )" + export PYTHON3_INCLUDE_DIR="$( ${PYTHON3_EXEC} -c 'from distutils import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))' )" export ANDROID_ABI=armeabi-v7a export ANDROID_NATIVE_API_LEVEL=android-21 export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang 1. Build (skipping packages that we don't need or can't cross-compile): - colcon build --packages-skip test_msgs \ + colcon build \ + --packages-ignore cyclonedds rcl_logging_log4cxx rosidl_generator_py \ + --packages-up-to rcljava \ --cmake-args \ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \ - -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ + -DPYTHON_LIBRARY=${PYTHON3_LIBRARY} \ + -DPYTHON_INCLUDE_DIR=${PYTHON3_INCLUDE_DIR} \ + -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \ -DANDROID_FUNCTION_LEVEL_LINKING=OFF \ -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \ -DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME} \ @@ -149,14 +155,7 @@ Although the `ros2_java_android.repos` file contains all the repositories for th -DANDROID_ABI=${ANDROID_ABI} \ -DANDROID_NDK=${ANDROID_NDK} \ -DTHIRDPARTY=ON \ - -DCOMPILE_EXAMPLES=OFF - - # TODO: These options may still need to be adapted - # -DCMAKE_FIND_ROOT_PATH="$AMENT_WORKSPACE/install_isolated;$ROS2_ANDROID_WORKSPACE/install_isolated" \ - # -- \ - # --parallel \ - # --ament-gradle-args \ - # -Pament.android_stl=gnustl_shared -Pament.android_abi=$ANDROID_ABI -Pament.android_ndk=$ANDROID_NDK -- - + -DCOMPILE_EXAMPLES=OFF \ + -DCMAKE_FIND_ROOT_PATH="${PWD}/install" You can find more information about the Android examples at https://github.com/ros2-java/ros2_android_examples From dfb5ed03c02765a9ff0ac514b7321cbe5d41dded Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Fri, 18 Sep 2020 14:29:23 +0200 Subject: [PATCH 39/43] Do not use fork --- ros2_java_android.repos | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ros2_java_android.repos b/ros2_java_android.repos index 95c3c4c0..d685a3b7 100644 --- a/ros2_java_android.repos +++ b/ros2_java_android.repos @@ -85,8 +85,8 @@ repositories: version: dashing ros2/rmw: type: git - url: https://github.com/ros2-java/rmw.git - version: dashing-android + url: https://github.com/ros2/rmw.git + version: dashing ros2/rmw_connext: type: git url: https://github.com/ros2/rmw_connext.git From c3f852a27942a6e2eaf9cc77ba2980d2386a7107 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Fri, 18 Sep 2020 17:37:52 -0700 Subject: [PATCH 40/43] Use repos files from GitHub workspace Signed-off-by: Jacob Perron --- .github/workflows/build_and_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index ca68b9bd..1263590c 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -17,7 +17,7 @@ jobs: with: package-name: rosidl_generator_java rcljava_common rcljava source-ros-binary-installation: dashing - vcs-repo-file-url: https://raw.githubusercontent.com/ros2-java/ros2_java/dashing/ros2_java_desktop.repos + vcs-repo-file-url: ${{ github.workspace }}/ros2_java_desktop.repos build_android: runs-on: ubuntu-18.04 @@ -51,7 +51,7 @@ jobs: run: | mkdir -p ros2_java_ws/src cd ros2_java_ws - curl -sL https://raw.githubusercontent.com/ros2-java/ros2_java/jacob/android_instructions/ros2_java_android.repos | vcs import src + curl -sL file://${{ github.workspace }}/ros2_java_android.repos | vcs import src - name: Build ros2_java for Android run: | export PYTHON3_EXEC="$( which python3 )" From 0c02ab01d3c8220c89e5646a88e57cac00d02e41 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Fri, 18 Sep 2020 17:45:56 -0700 Subject: [PATCH 41/43] Add checkout action for cloning the branch to test Signed-off-by: Jacob Perron --- .github/workflows/build_and_test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 1263590c..61dd0878 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -10,6 +10,7 @@ jobs: run: | sudo apt-get update -qq sudo apt-get install -y default-jdk gradle + - uses: actions/checkout@v2 - uses: ros-tooling/setup-ros@0.0.14 with: required-ros-distributions: dashing @@ -26,6 +27,7 @@ jobs: run: | sudo apt-get update -qq sudo apt-get install -y default-jdk gradle + - uses: actions/checkout@v2 - name: Setup locale for ROS 2 run: | sudo locale-gen en_US en_US.UTF-8 From 6a7a5361fe63bc64b960e7da7bcac1d2391222f2 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Fri, 18 Sep 2020 17:57:56 -0700 Subject: [PATCH 42/43] Use version of ros2_java in the branch being tested Signed-off-by: Jacob Perron --- .github/workflows/build_and_test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 61dd0878..8f8a1adf 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -49,11 +49,14 @@ jobs: run: | curl -LO https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip unzip android-ndk-r21d-linux-x86_64.zip - - name: Fetch VCS repo file + - name: Setup workspace with VCS repo file run: | mkdir -p ros2_java_ws/src cd ros2_java_ws curl -sL file://${{ github.workspace }}/ros2_java_android.repos | vcs import src + # Use checked out version of ros2_java + rm -rf src/ros2_java/ros2_java + ln --symbolic ${{ github.workspace }} src/ros2_java - name: Build ros2_java for Android run: | export PYTHON3_EXEC="$( which python3 )" From 0a231eaa23c505fae396e5d6fa6ee9a4ceb47dc4 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Fri, 18 Sep 2020 18:03:09 -0700 Subject: [PATCH 43/43] Switch back to dashing branch Signed-off-by: Jacob Perron --- ros2_java_android.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ros2_java_android.repos b/ros2_java_android.repos index d685a3b7..e1dd0920 100644 --- a/ros2_java_android.repos +++ b/ros2_java_android.repos @@ -154,7 +154,7 @@ repositories: ros2_java/ros2_java: type: git url: https://github.com/ros2-java/ros2_java - version: jacob/android_instructions + version: dashing ros2_java/ros2_android: type: git url: https://github.com/ros2-java/ros2_android.git