Change the build tool to colcon
authorwchang kim <wchang.kim@samsung.com>
Thu, 22 Apr 2021 04:26:47 +0000 (13:26 +0900)
committerwchang kim <wchang.kim@samsung.com>
Thu, 22 Apr 2021 04:26:47 +0000 (13:26 +0900)
behaviortree_cpp_v3.repos [new file with mode: 0755]
create_install_filelist.sh [new file with mode: 0755]
create_ros2_spec.sh [new file with mode: 0755]
package.list [new file with mode: 0644]
packaging/behaviortree-cpp.manifest [deleted file]
packaging/behaviortree-cpp.spec [deleted file]
packaging/behaviortree_cpp_v3.manifest [new file with mode: 0644]
packaging/behaviortree_cpp_v3.spec [new file with mode: 0644]
remove_gitdir.sh [new file with mode: 0755]

diff --git a/behaviortree_cpp_v3.repos b/behaviortree_cpp_v3.repos
new file mode 100755 (executable)
index 0000000..50468ae
--- /dev/null
@@ -0,0 +1,5 @@
+repositories:
+  behaviortree_cpp_v3:
+    type: git
+    url: https://github.com/BehaviorTree/BehaviorTree.CPP.git
+    version: 3.5.6
diff --git a/create_install_filelist.sh b/create_install_filelist.sh
new file mode 100755 (executable)
index 0000000..77e0518
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+rootDir="\/opt\/ros2\/foxy"
+
+main() {
+    baseDir=`echo $PWD`
+       instDir=`echo "${baseDir}/install" | sed -e 's|\/|\\\\/|g'`
+
+
+       G_PKG_LIST=`find . -name install_manifest.txt`
+       PY_PKG_LIST=`find . -name install.log`
+
+       for PKG in ${G_PKG_LIST} ${PY_PKG_LIST}
+       do
+               NAME=`echo ${PKG} | awk -F/ '{print $(NF-1)}' | awk -F- '{print $1}'`
+
+               if [ -e ${baseDir}/${NAME}.list ]
+               then
+                       rm -f ${baseDir}/${NAME}.list
+               fi
+               touch ${baseDir}/${NAME}.list
+               if [ ${NAME} != yaml_cpp ]
+               then
+                       cat ${PKG} | sed -e "s/^.\+install/${rootDir}/g" >> ${baseDir}/${NAME}.list
+                       if [ ${NAME} != console_bridge -a ${NAME} != foo_mem -a ${NAME} != libyaml -a ${NAME} != spdlog -a ${NAME} != tinyxml -a ${NAME} != foo_mem -a ${NAME} != zstd ]
+                       then
+                               echo "" >> ${baseDir}/${NAME}.list
+                               echo "/opt/ros2/foxy/share/${NAME}/*" >> ${baseDir}/${NAME}.list
+                               echo "/opt/ros2/foxy/share/colcon-core/packages/${NAME}" >> ${baseDir}/${NAME}.list
+
+                               if [ -e ./install/lib/python3.9/site-packages/${NAME} ]
+                               then
+                                       echo "/opt/ros2/foxy/lib/python3.9/site-packages/${NAME}/*" >> ${baseDir}/${NAME}.list
+                               fi
+                       fi
+               else
+                       echo "${NAME}"
+                       REPLACE="${rootDir}\/opt\/${NAME}_vendor"
+                       cat ${PKG} | sed -e "s/^.\+install/${REPLACE}/g" >> ${baseDir}/${NAME}.list
+               fi
+       done
+       # Execption Case
+       if [ -e ./install/share/colcon-core/packages/test_osrf_testing_tools_cpp ]
+       then
+               if [ -e ${baseDir}/test_osrf_testing_tools_cpp.list ]
+               then
+                       rm -f ${baseDir}/test_osrf_testing_tools_cpp.list
+               fi
+               touch ${baseDir}/test_osrf_testing_tools_cpp.list
+               echo "/opt/ros2/foxy/share/colcon-core/packages/test_osrf_testing_tools_cpp" >> ${baseDir}/test_osrf_testing_tools_cpp.list
+               echo "/opt/ros2/foxy/share/test_osrf_testing_tools_cpp/*" >> ${baseDir}/test_osrf_testing_tools_cpp.list
+       fi
+
+       if [ -e ./install/share/ament_index/resource_index/packages/test_launch_ros -a -e ${baseDir}/test_launch_ros.list ]
+       then
+               echo "/opt/ros2/foxy/share/ament_index/resource_index/packages/test_launch_ros" >> ${baseDir}/test_launch_ros.list
+       fi
+
+       if [ -e ${baseDir}/libyaml.list ]
+       then
+               LIST=`grep -v config.h ${baseDir}/libyaml.list`
+               echo -n "" > ${baseDir}/libyaml.list
+               for item in ${LIST}
+               do
+                       echo $item >> ${baseDir}/libyaml.list
+               done
+       fi
+}
+
+main $*
diff --git a/create_ros2_spec.sh b/create_ros2_spec.sh
new file mode 100755 (executable)
index 0000000..b2e00c2
--- /dev/null
@@ -0,0 +1,89 @@
+#!/bin/bash
+
+init() {
+    outputFileName=package_info_spec.txt
+    cat /dev/null > ${outputFileName}
+}
+
+generatePackageInfo() {
+
+    packageName=$1
+
+    # echo "Generate Package Info : ${packageName}"
+
+    packageVersion=`colcon info ${packageName} | grep "version:" | awk '{ print $2 }'`
+
+    echo "%package -n $packageName" >> ${outputFileName}
+    echo "Summary:  $packageName" >> ${outputFileName}
+
+    if [ "x${packageVersion}" != "x" ]
+    then
+        echo "Version:  $packageVersion" >> ${outputFileName}
+    fi
+       echo "Provides: $packageName" >> ${outputFileName}
+
+    echo "%description -n $packageName" >> ${outputFileName}
+    echo "$packageName" >> ${outputFileName}
+    echo "" >> ${outputFileName}
+
+}
+
+generatePackagePost() {
+
+    packageName=$1
+
+    # echo "Generate Package Post : ${packageName}"
+
+    echo "%post -n $packageName -p /sbin/ldconfig" >> ${outputFileName}
+    echo "%postun -n $packageName -p /sbin/ldconfig" >> ${outputFileName}
+    echo "" >> ${outputFileName}
+}
+
+generatePackageFiles() {
+
+    packageName=$1
+
+    # echo "Generate Package Post : ${packageFilesSpec}"
+
+    echo "%files -n ${packageName} -f ${packageName}.list" >> ${outputFileName}
+    echo "%manifest %{name}.manifest" >> ${outputFileName}
+    echo "" >> ${outputFileName}
+}
+
+
+main() {
+
+    init
+
+    echo "#### ROS2 Package Info List ####" >> ${outputFileName}
+    for package in `cat package.list` 
+    do
+        echo "Generate $package"
+
+        generatePackageInfo $package
+    done
+    echo "################################" >> ${outputFileName}
+    echo "" >> ${outputFileName}
+
+    echo "######## ROS2 Post List ########" >> ${outputFileName}
+    for package in `cat package.list` 
+    do
+        echo "Generate $package"
+
+        generatePackagePost $package
+    done
+    echo "################################" >> ${outputFileName}
+    echo "" >> ${outputFileName}
+
+    echo "######## ROS2 Files List #######" >> ${outputFileName}
+    for package in `cat package.list` 
+    do
+        echo "Generate $package"
+
+        generatePackageFiles $package
+    done
+    echo "################################" >> ${outputFileName}
+    echo "" >> ${outputFileName}
+}
+
+main $*
diff --git a/package.list b/package.list
new file mode 100644 (file)
index 0000000..d8392f0
--- /dev/null
@@ -0,0 +1 @@
+behaviortree_cpp_v3
diff --git a/packaging/behaviortree-cpp.manifest b/packaging/behaviortree-cpp.manifest
deleted file mode 100644 (file)
index 86dbb26..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
-    <request>
-        <domain name="_" />
-    </request>
-</manifest>
diff --git a/packaging/behaviortree-cpp.spec b/packaging/behaviortree-cpp.spec
deleted file mode 100644 (file)
index ca55fba..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-Name:       behaviortree-cpp 
-Summary:    %{name}
-Version:    3.5.6 
-Release:    0
-
-# ==========================================================
-License:    MIT
-# ==========================================================
-
-Group:      Development/ROS
-Source0:    %{name}-%{version}.tar.gz
-Source1001: %{name}.manifest
-
-# ==========================================================
-# BuildRequires
-# specifies build-time dependencies for the package
-# ==========================================================
-BuildRequires:  cmake
-BuildRequires:  gtest-devel
-
-%description
-%{name} version %{version}
-
-%package devel
-Summary:    %{name}-devel
-Group:      Development/ROS
-
-%description devel
-%{name}-devel version %{version}
-
-
-%prep
-%setup -q
-cp %{SOURCE1001} .
-
-# ==========================================================
-# build section
-# how to actually build the software we are packaging
-# ==========================================================
-%build
-mkdir -p build
-pushd build
-%{cmake} ..
-%{make_build}
-popd
-
-
-# ==========================================================
-# install section
-# how to actually build the software we are packaging
-# ==========================================================
-%install
-pushd build
-%{make_install}
-popd
-
-%clean  
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-# ==========================================================
-# files section
-# The list of files that will be installed in the end 
-# user’s system.
-# ==========================================================
-%files
-%manifest %{name}.manifest
-%license LICENSE
-%{_bindir}/bt3_log_cat
-%{_bindir}/bt3_plugin_manifest
-%{_libdir}/libbehaviortree_cpp_v3.so
-
-%files devel
-%manifest %{name}.manifest
-%license LICENSE
-%{_includedir}/behaviortree_cpp_v3/*.h
-%{_includedir}/behaviortree_cpp_v3/actions/*.h
-%{_includedir}/behaviortree_cpp_v3/controls/*.h
-%{_includedir}/behaviortree_cpp_v3/decorators/*.h
-%{_includedir}/behaviortree_cpp_v3/flatbuffers/*.h
-%{_includedir}/behaviortree_cpp_v3/loggers/*.h
-%{_includedir}/behaviortree_cpp_v3/utils/*.h
-%{_includedir}/behaviortree_cpp_v3/utils/*.hpp
-%{_libdir}/BehaviorTreeV3/cmake/*.cmake
diff --git a/packaging/behaviortree_cpp_v3.manifest b/packaging/behaviortree_cpp_v3.manifest
new file mode 100644 (file)
index 0000000..017d22d
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+ <request>
+    <domain name="_"/>
+ </request>
+</manifest>
diff --git a/packaging/behaviortree_cpp_v3.spec b/packaging/behaviortree_cpp_v3.spec
new file mode 100644 (file)
index 0000000..5321655
--- /dev/null
@@ -0,0 +1,146 @@
+%global ros2_dir /opt/ros2/foxy
+
+Name:       behaviortree_cpp_v3
+Summary:    behaviortree_cpp_v3
+Version:    3.5.6
+Release:    0
+License:    MIT License
+Group:      Development/Tools
+Source0:    %{name}-%{version}.tar.gz
+Source1001: %{name}.manifest
+
+BuildRequires: cmake
+BuildRequires: perl
+#BuildRequires: git
+BuildRequires: curl
+BuildRequires: libcurl
+BuildRequires: pkgconfig(bullet)
+BuildRequires: pkgconfig(libdw)
+BuildRequires: pkgconfig(sqlite3)
+BuildRequires: pkgconfig(openssl1.1)
+BuildRequires: pkgconfig(freetype2)
+BuildRequires: pkgconfig(liblog4cxx)
+BuildRequires: tinyxml2-devel
+BuildRequires: asio-devel
+BuildRequires: eigen-devel
+BuildRequires: pkgconfig(libsystemd)
+BuildRequires: pkgconfig(libzstd)
+
+# maven dummy
+# BuildRequires: maven
+
+BuildRequires: pkgconfig(python3)
+BuildRequires: python3-setuptools
+BuildRequires: python3-setuptools_scm
+BuildRequires: python3-pytest-cov
+BuildRequires: python3-rosdep
+BuildRequires: python3-vcstool
+
+BuildRequires:python3-colcon-argcomplete
+BuildRequires:python3-colcon-bash
+BuildRequires:python3-colcon-cd
+BuildRequires:python3-colcon-cmake
+BuildRequires:python3-colcon-common-extensions
+BuildRequires:python3-colcon-core
+BuildRequires:python3-colcon-defaults
+BuildRequires:python3-colcon-devtools
+BuildRequires:python3-colcon-library-path
+BuildRequires:python3-colcon-metadata
+BuildRequires:python3-colcon-notification
+BuildRequires:python3-colcon-output
+BuildRequires:python3-colcon-package-information
+BuildRequires:python3-colcon-package-selection
+BuildRequires:python3-colcon-parallel-executor
+BuildRequires:python3-colcon-pkg-config
+BuildRequires:python3-colcon-python-setup-py
+BuildRequires:python3-colcon-recursive-crawl
+BuildRequires:python3-colcon-ros
+BuildRequires:python3-colcon-test-result
+
+BuildRequires: python3-catkin-pkg
+BuildRequires: python3-argcomplete
+BuildRequires: python3-lark-parser
+BuildRequires: python3-numpy-devel
+
+BuildRequires: ament_tools
+BuildRequires: ament_index_cpp
+BuildRequires: ament_index_python
+BuildRequires: ament_package
+BuildRequires: local_setup_script
+
+BuildRequires: rclcpp
+BuildRequires: rosidl_typesupport_interface
+BuildRequires: rosidl_default_runtime
+BuildRequires: fastrtps
+BuildRequires: fastrtps_cmake_module
+BuildRequires: rosidl_cmake
+BuildRequires: rosidl_adapter
+BuildRequires: rosidl_runtime_cpp
+BuildRequires: rmw_implementation_cmake
+BuildRequires: rmw_fastrtps_cpp
+BuildRequires: sensor_msgs
+BuildRequires: tf2
+BuildRequires: eigen3_cmake_module
+BuildRequires: tf2_geometry_msgs
+BuildRequires: orocos_kdl
+BuildRequires: tf2_ros
+BuildRequires: message_filters
+BuildRequires: rclcpp_components
+BuildRequires: visualization_msgs
+
+
+%description
+behaviortree_cpp_v3
+
+
+#### ROS2 Package Info List ####
+################################
+
+%prep
+%setup -q
+# vcs import src < ros2.repos
+#%{__patch} -p1 < %{SOURCE100}
+
+%build
+cp %{SOURCE1001} .
+export CFLAGS="${CFLAGS:-%optflags}"
+export CXXFLAGS="${CXXFLAGS:-%optflags}"
+
+export COLCON_PREFIX_PATH=$PWD
+source /opt/ros2/foxy/setup.bash
+echo $COLCON_PREFIX_PATH
+
+colcon build --merge-install --cmake-args -DBUILD_TESTING=OFF
+#colcon build --packages-up-to tinyxml_vendor --cmake-args -DBUILD_TESTING=OFF
+
+%install
+mkdir -p %{buildroot}/%{ros2_dir}
+cp -R install/* %{buildroot}/%{ros2_dir}
+rm -f %{buildroot}/%{ros2_dir}/COLCON_IGNORE
+rm -f %{buildroot}/%{ros2_dir}/_local_setup_util_sh.py
+rm -f %{buildroot}/%{ros2_dir}/setup.bash
+rm -f %{buildroot}/%{ros2_dir}/setup.sh
+rm -f %{buildroot}/%{ros2_dir}/local_setup.bash
+rm -f %{buildroot}/%{ros2_dir}/local_setup.sh
+
+chmod +x ./create_install_filelist.sh
+./create_install_filelist.sh
+
+%clean
+
+%post
+/sbin/ldconfig
+
+%postun
+/sbin/ldconfig
+
+######## ROS2 Post List ########
+################################
+
+
+######## ROS2 Files List #######
+%files -f behaviortree_cpp_v3.list
+%manifest %{name}.manifest
+
+################################
+
diff --git a/remove_gitdir.sh b/remove_gitdir.sh
new file mode 100755 (executable)
index 0000000..357abd3
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+REMOVE_LIST=`find src/ -name .git`
+
+for gitdir in $REMOVE_LIST
+do
+       echo "Removing $gitdir"
+       rm -rf $gitdir
+done