diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 7c1f51259..91c6a98e2 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -204,3 +204,62 @@ jobs: if: always() run: | rm -fr ${{ matrix.ROS_DISTRO }}-${{ github.run_number }}-${{ github.run_attempt }}-${{ github.run_id }} || echo "OK" + +# ROS-O setup https://github.com/v4hn/ros-o-builder/blob/jammy-one/README.md#install-instructions + ros-o: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + include: + - DISTRO: ubuntu:22.04 + ROS_REPOSITORY_URL: https://raw.githubusercontent.com/v4hn/ros-o-builder/jammy-one/repository + + container: ${{ matrix.DISTRO }} + + env: + DEBIAN_FRONTEND : noninteractive + + steps: + - name: Chcekout Source + uses: actions/checkout@v3.0.2 + + - name: Setup ROS-O deb repository + run: | + set -x + apt update && apt install -qq -y ca-certificates + echo "deb [trusted=yes] ${{ matrix.ROS_REPOSITORY_URL }}/ ./" | tee /etc/apt/sources.list.d/ros-o-builder.list + apt update + apt install -qq -y python3-rosdep2 + echo "yaml ${{ matrix.ROS_REPOSITORY_URL }}/local.yaml debian" | tee /etc/ros/rosdep/sources.list.d/1-ros-o-builder.list + rosdep update + + - name: Setup catkin-tools + run: | + set -x + # setup catkin tools + apt install -qq -y python3-pip + pip3 install catkin-tools + # setup build tools + apt install -qq -y cmake build-essential catkin ros-one-rosbash + + - name: Setup Workspace + run: | + source /opt/ros/one/setup.bash + set -x + # setup workspace + mkdir -p ~/ws/src + cd ~/ws/src + ln -sf $GITHUB_WORKSPACE . + rosdep install -qq -r -y --from-path . --ignore-src || echo "OK" + shell: bash + + - name: Compile Packages + run: | + source /opt/ros/one/setup.bash + set -x + cd ~/ws/ + catkin build --no-status -sv ${{ matrix.CATKIN_OPTIONS }} --cmake-args -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON ${{ matrix.CMAKE_OPTIONS }} + shell: bash + diff --git a/3rdparty/downward/CMakeLists.txt b/3rdparty/downward/CMakeLists.txt index 5d153d878..e270fdb1b 100644 --- a/3rdparty/downward/CMakeLists.txt +++ b/3rdparty/downward/CMakeLists.txt @@ -14,7 +14,7 @@ externalproject_add(downward URL http://cdn.rawgit.com/jsk-ros-pkg/archives/master/Fast-Downward-f33d3b65601f.tar.gz TIMEOUT 120 CONFIGURE_COMMAND "" - BUILD_COMMAND cd src && sed -i "s@^CXXFLAGS =$@CXXFLAGS = ${CXXFLAGS_NOETIC} -Wno-maybe-uninitialized@" search/Makefile && ./build_all DOWNWARD_BITWIDTH=native && patch -p3 < ${PROJECT_SOURCE_DIR}/fix_time_clock.patch + BUILD_COMMAND cd src && sed -i "s@^CXXFLAGS =$@CXXFLAGS = ${CXXFLAGS_NOETIC} -Wno-deprecated-copy -Wno-maybe-uninitialized@" search/Makefile && patch -p3 < ${PROJECT_SOURCE_DIR}/fix_std_vector_namespace.patch && ./build_all DOWNWARD_BITWIDTH=native && patch -p3 < ${PROJECT_SOURCE_DIR}/fix_time_clock.patch INSTALL_COMMAND bash -c "cp -rf --parents src/{validate,plan,preprocess/preprocess,search/downward*,search/unitcost,search/portfolio.py,translate} ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}" BUILD_IN_SOURCE 1 ) diff --git a/3rdparty/downward/fix_std_vector_namespace.patch b/3rdparty/downward/fix_std_vector_namespace.patch new file mode 100644 index 000000000..487dcd17b --- /dev/null +++ b/3rdparty/downward/fix_std_vector_namespace.patch @@ -0,0 +1,10 @@ +--- src/downward/src/search/landmarks/landmark_factory_zhu_givan.h.bak 2024-11-13 13:20:10.508657847 +0900 ++++ src/downward/src/search/landmarks/landmark_factory_zhu_givan.h 2024-11-13 13:20:12.591485789 +0900 +@@ -7,6 +7,7 @@ + #include "../globals.h" + + using namespace __gnu_cxx; ++using std::vector; + + class LandmarkFactoryZhuGivan : public LandmarkFactory { + private: diff --git a/3rdparty/ff/Makefile b/3rdparty/ff/Makefile index 3a7de76b4..b691ceb70 100644 --- a/3rdparty/ff/Makefile +++ b/3rdparty/ff/Makefile @@ -16,7 +16,7 @@ MAKE_ARGS = ADDONS=-DYY_SKIP_YYWRAP installed:$(SOURCE_DIR)/unpacked rm -f $(SOURCE_DIR)/ff - (cd $(SOURCE_DIR) && $(MAKE) clean && $(MAKE) CFLAGS='-O6 -g -ansi -Wno-array-bounds -Wno-endif-labels -Wno-format-overflow -Wno-implicit-function-declaration -Wno-int-in-bool-context -Wno-unused-function -Wno-unused-variable -fno-builtin-strncpy -fno-builtin-strcpy -fno-builtin-strlen -fno-builtin-strcat -fno-builtin-memset ' $(MAKE_ARGS)) + (cd $(SOURCE_DIR) && $(MAKE) clean && $(MAKE) CFLAGS='-O6 -g -ansi -Wno-array-bounds -Wno-endif-labels -Wno-format-overflow -Wno-implicit-function-declaration -Wno-int-in-bool-context -Wno-unused-function -Wno-unused-variable -fno-builtin-strncpy -fno-builtin-strcpy -fno-builtin-strlen -fno-builtin-strcat -fno-builtin-memset -fcommon ' $(MAKE_ARGS)) mkdir -p bin cp $(SOURCE_DIR)/ff bin/ touch installed diff --git a/3rdparty/ffha/Makefile b/3rdparty/ffha/Makefile index 9c6a1168c..b2d063231 100644 --- a/3rdparty/ffha/Makefile +++ b/3rdparty/ffha/Makefile @@ -22,7 +22,7 @@ $(SOURCE_DIR)/patched:$(SOURCE_DIR)/unpacked touch $(SOURCE_DIR)/patched installed:$(SOURCE_DIR)/patched - (cd $(SOURCE_DIR) && $(MAKE) clean && $(MAKE) CFLAGS='-O6 -g -ansi -Wno-array-bounds -Wno-endif-labels -Wno-format-overflow -Wno-implicit-function-declaration -Wno-int-in-bool-context -Wno-unused-function -Wno-unused-variable -fno-builtin-strncpy -fno-builtin-strcpy -fno-builtin-strlen -fno-builtin-strcat -fno-builtin-memset ' $(MAKE_ARGS)) + (cd $(SOURCE_DIR) && $(MAKE) clean && $(MAKE) CFLAGS='-O6 -g -ansi -Wno-array-bounds -Wno-endif-labels -Wno-format-overflow -Wno-implicit-function-declaration -Wno-int-in-bool-context -Wno-unused-function -Wno-unused-variable -fno-builtin-strncpy -fno-builtin-strcpy -fno-builtin-strlen -fno-builtin-strcat -fno-builtin-memset -fcommon ' $(MAKE_ARGS)) mkdir -p bin cp $(SOURCE_DIR)/ffha bin/ touch installed diff --git a/3rdparty/libsiftfast/Makefile b/3rdparty/libsiftfast/Makefile index b330cb1c7..70c618026 100644 --- a/3rdparty/libsiftfast/Makefile +++ b/3rdparty/libsiftfast/Makefile @@ -24,7 +24,7 @@ clone: $(SVN_DIR) patch: clone cd $(SVN_DIR) && svn revert --recursive . && for patch in $(SOURCE_DIR)/patches/0*.patch; do patch -p0 -f -E < $$patch; done # for python3 - if [ "${ROS_DISTRO}" \> "melodic" ]; then cd $(SVN_DIR) && svn revert --recursive . && for patch in $(SOURCE_DIR)/patches/1*.patch; do patch -p0 -f -E < $$patch; done; fi + if [ "${ROS_DISTRO}" != "kinetic" -a "${ROS_DISTRO}" != "melodic" ]; then cd $(SVN_DIR) && svn revert --recursive . && for patch in $(SOURCE_DIR)/patches/1*.patch; do patch -p0 -f -E < $$patch; done; fi libsiftfast: patch cd $(SVN_DIR)/$(BUILDDIR) && BOOST_INCLUDEDIR=$(BOOST_INCLUDE_DIRS) BOOST_LIBRARYDIR=$(BOOST_LIBRARY_DIRS) cmake -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) -DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) .. && make $(ROS_PARALLEL_JOBS) install diff --git a/3rdparty/libsiftfast/patches/10.boost_python38.patch b/3rdparty/libsiftfast/patches/10.boost_python38.patch index 36dfe4c89..451fc743f 100644 --- a/3rdparty/libsiftfast/patches/10.boost_python38.patch +++ b/3rdparty/libsiftfast/patches/10.boost_python38.patch @@ -2,12 +2,14 @@ Index: CMakeLists.txt =================================================================== --- CMakeLists.txt (revision 54) +++ CMakeLists.txt (working copy) -@@ -155,7 +155,8 @@ +@@ -155,7 +155,10 @@ if( NOT $ENV{BOOST_LIBRARYDIR} STREQUAL "" ) set(Boost_LIBRARY_DIRS $ENV{BOOST_LIBRARYDIR}) endif() -find_package(Boost COMPONENTS python) -+find_package(Boost REQUIRED COMPONENTS system python38) ++set(Python3_FIND_STRATEGY VERSION) ++find_package(Python3 COMPONENTS Interpreter Development) ++find_package(Boost REQUIRED COMPONENTS system python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR}) +add_definitions("-Wno-narrowing") if( Boost_FOUND ) @@ -17,7 +19,7 @@ Index: CMakeLists.txt # set(BUILD_SIFTFASTPY) -if( Boost_PYTHON_FOUND ) -+if( Boost_PYTHON38_FOUND ) ++if( Boost_PYTHON${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR}_FOUND ) find_package(PythonLibs) if( PYTHONLIBS_FOUND OR PYTHON_LIBRARIES ) diff --git a/3rdparty/zdepth/CMakeLists.txt b/3rdparty/zdepth/CMakeLists.txt index 52bb0d590..08b996951 100644 --- a/3rdparty/zdepth/CMakeLists.txt +++ b/3rdparty/zdepth/CMakeLists.txt @@ -3,18 +3,18 @@ project(zdepth) include(ExternalProject) -if("$ENV{ROS_DISTRO}" STRGREATER "kinetic") +if(("$ENV{ROS_DISTRO}" STREQUAL "indigo") OR ("$ENV{ROS_DISTRO}" STREQUAL "kinetic")) + install(CODE "message(WARNING \"Skipping zdepth install because ROS is too old\")") +else() ExternalProject_Add( zdepth GIT_REPOSITORY https://github.com/catid/Zdepth.git GIT_TAG ac7c6d8e944d07be2404e5a1eaa04562595f3756 GIT_SHALLOW TRUE - PATCH_COMMAND cat ${PROJECT_SOURCE_DIR}/fix_cmakelists.patch | patch -p1 + PATCH_COMMAND cat ${PROJECT_SOURCE_DIR}/fix_cmakelists.patch | patch -p1 --forward || true # If there is no --forward, the build process hangs because the patch command waits interactively for input on whether a file that has already been patched can be patched again. If there is no || true , the patch command returns non-zero status if you try to use it on the patched file, then catkin build failes CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} INSTALL_COMMAND echo "install" ) install(CODE "execute_process(COMMAND make install WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/zdepth-prefix/src/zdepth-build)") -else() - install(CODE "message(WARNING \"Skipping zdepth install because ROS is too old\")") endif() diff --git a/dialogflow_task_executive/CMakeLists.txt b/dialogflow_task_executive/CMakeLists.txt index f4a206208..eec641946 100644 --- a/dialogflow_task_executive/CMakeLists.txt +++ b/dialogflow_task_executive/CMakeLists.txt @@ -59,15 +59,15 @@ elseif("$ENV{ROS_DISTRO}" STREQUAL "indigo") catkin_generate_virtualenv(PYTHON_INTERPRETER python2 # https://stackoverflow.com/questions/25981703/pip-install-fails-with-connection-error-ssl-certificate-verify-failed EXTRA_PIP_ARGS -vvv --cert=${CMAKE_BINARY_DIR}/cacert.pem) -elseif("$ENV{ROS_DISTRO}" STRGREATER "melodic") +elseif("$ENV{ROS_DISTRO}" STREQUAL "kinetic" OR "$ENV{ROS_DISTRO}" STREQUAL "melodic") catkin_generate_virtualenv( - INPUT_REQUIREMENTS requirements.in.noetic - PYTHON_INTERPRETER python3 + INPUT_REQUIREMENTS requirements.in + PYTHON_INTERPRETER python2 ) else() catkin_generate_virtualenv( - INPUT_REQUIREMENTS requirements.in - PYTHON_INTERPRETER python2 + INPUT_REQUIREMENTS requirements.in.noetic + PYTHON_INTERPRETER python3 ) endif() diff --git a/jsk_3rdparty/package.xml b/jsk_3rdparty/package.xml index b878b227b..ac9194395 100644 --- a/jsk_3rdparty/package.xml +++ b/jsk_3rdparty/package.xml @@ -55,7 +55,7 @@ zdepth - collada_urdf_jsk_patch + laser_filters_jsk_patch diff --git a/jsk_ros_patch/collada_urdf_jsk_patch/CMakeLists.txt b/jsk_ros_patch/collada_urdf_jsk_patch/CMakeLists.txt index 322560351..65643bfb6 100644 --- a/jsk_ros_patch/collada_urdf_jsk_patch/CMakeLists.txt +++ b/jsk_ros_patch/collada_urdf_jsk_patch/CMakeLists.txt @@ -5,12 +5,19 @@ project(collada_urdf_jsk_patch) if(("$ENV{ROS_DISTRO}" STREQUAL "groovy") OR ("$ENV{ROS_DISTRO}" STREQUAL "hydro")) set(SOURCE_DISTRO hydro-devel) set(GIT_REPO robot_model) -elseif ("$ENV{ROS_DISTRO}" STRLESS "melodic") +elseif (("$ENV{ROS_DISTRO}" STREQUAL "indigo") OR ("$ENV{ROS_DISTRO}" STREQUAL "jade") OR ("$ENV{ROS_DISTRO}" STREQUAL "kinetic")) set(SOURCE_DISTRO bd4fc369d56eaa0c31d8cb17677e00b9d9685de6) # 1.11.13, before strip indigo set(GIT_REPO robot_model) -elseif ("$ENV{ROS_DISTRO}" STREQUAL "melodic" OR "$ENV{ROS_DISTRO}" STRGREATER "melodic") +elseif (("$ENV{ROS_DISTRO}" STREQUAL "melodic") OR ("$ENV{ROS_DISTRO}" STREQUAL "noetic")) set(SOURCE_DISTRO 923c5d33bd245e82134e8ae02e4c9d379e80eb27) # 1.12.12 set(GIT_REPO collada_urdf) +else() + find_package(catkin REQUIRED) + catkin_package(CATKIN_DEPENDS) + file(TOUCH ${CMAKE_CURRENT_BINARY_DIR}/CATKIN_IGNORE) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CATKIN_IGNORE #catkin_lint: ignore_once missing_file + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) + return() endif() if ("$ENV{ROS_DISTRO}" STREQUAL "kinetic" OR "$ENV{ROS_DISTRO}" STRGREATER "kinetic") set(CXXFLAGS CXXFLAGS=-std=gnu++11) diff --git a/respeaker_ros/CMakeLists.txt b/respeaker_ros/CMakeLists.txt index d6752f005..0eb66f1df 100644 --- a/respeaker_ros/CMakeLists.txt +++ b/respeaker_ros/CMakeLists.txt @@ -14,9 +14,9 @@ generate_dynamic_reconfigure_options( catkin_package() -if($ENV{ROS_DISTRO} STRGREATER "melodic") +if("$ENV{ROS_DISTRO}" STREQUAL "kinetic" OR "$ENV{ROS_DISTRO}" STREQUAL "melodic") catkin_generate_virtualenv( - PYTHON_INTERPRETER python3 + PYTHON_INTERPRETER python2 CHECK_VENV FALSE ) elseif("$ENV{ROS_DISTRO}" STREQUAL "indigo") @@ -28,7 +28,7 @@ elseif("$ENV{ROS_DISTRO}" STREQUAL "indigo") ) else() catkin_generate_virtualenv( - PYTHON_INTERPRETER python2 + PYTHON_INTERPRETER python3 CHECK_VENV FALSE ) endif() diff --git a/sesame_ros/CMakeLists.txt b/sesame_ros/CMakeLists.txt index 2ff28f17e..f9ac9a4ae 100644 --- a/sesame_ros/CMakeLists.txt +++ b/sesame_ros/CMakeLists.txt @@ -20,9 +20,10 @@ catkin_package( CATKIN_DEPENDS message_runtime ) -if($ENV{ROS_DISTRO} STRGREATER "melodic") +if($ENV{ROS_DISTRO} STREQUAL "kinetic" OR $ENV{ROS_DISTRO} STREQUAL "melodic") catkin_generate_virtualenv( - PYTHON_INTERPRETER python3 + PYTHON_INTERPRETER python2 + CHECK_VENV FALSE ) elseif("$ENV{ROS_DISTRO}" STREQUAL "indigo") file(DOWNLOAD http://curl.haxx.se/ca/cacert.pem ${CMAKE_BINARY_DIR}/cacert.pem) @@ -33,7 +34,8 @@ elseif("$ENV{ROS_DISTRO}" STREQUAL "indigo") ) else() catkin_generate_virtualenv( - PYTHON_INTERPRETER python2 + PYTHON_INTERPRETER python3 + CHECK_VENV FALSE ) endif() diff --git a/sesame_ros/requirements.txt b/sesame_ros/requirements.txt index 7bb97d5c5..c76134ce7 100644 --- a/sesame_ros/requirements.txt +++ b/sesame_ros/requirements.txt @@ -1,6 +1,5 @@ asn1crypto==1.3.0 certifi==2020.6.20 -cffi==1.14.0 chardet==3.0.4 cryptography==2.3 enum34==1.1.10