|
| 1 | +PROJECT=ariles2 |
| 2 | + |
| 3 | +WS_PKGS= \ |
| 4 | + ariles2_core_ws \ |
| 5 | + ariles2_namevalue2_ws \ |
| 6 | + ariles2_graphviz_ws \ |
| 7 | + ariles2_octave_ws \ |
| 8 | + ariles2_python_ws \ |
| 9 | + ariles2_yamlcpp_ws \ |
| 10 | + ariles2_rosparam_ws \ |
| 11 | + ariles2_pugixml_ws \ |
| 12 | + ariles2_msgpack_ws |
| 13 | + |
| 14 | +CATKIN_DEPENDENCY_TEST_PKG=ariles2_catkin_demo |
| 15 | +CATKIN_ARGS=--cmake-args -DARILES_ROS_ENABLE_TESTS=ON |
| 16 | +CATKIN_TARGETS=all test |
| 17 | + |
| 18 | +CATKIN_WORKING_DIR=./build/catkin_workspace |
| 19 | +CATKIN_PKGS_PATH=${CATKIN_WORKING_DIR}/src/${PROJECT} |
| 20 | + |
| 21 | +PIP_INSTALL=sudo python3 -m pip install |
| 22 | + |
| 23 | + |
| 24 | +# release |
| 25 | +#---------------------------------------------- |
| 26 | + |
| 27 | +ros_release: |
| 28 | + # 0. Add Forthcoming section to the changelog |
| 29 | + ${MAKE} update_version VERSION=${VERSION} |
| 30 | + -git commit -a |
| 31 | + catkin_prepare_release -t 'ws-' --version "${VERSION}" -y |
| 32 | + # initial release -> https://wiki.ros.org/bloom/Tutorials/FirstTimeRelease |
| 33 | + # subsequent releases -> bloom-release --rosdistro melodic --track melodic ${PKG} |
| 34 | + |
| 35 | + |
| 36 | +# catkin |
| 37 | +#---------------------------------------------- |
| 38 | + |
| 39 | +ros_add_repos: |
| 40 | + sh -c "echo \"deb http://packages.ros.org/ros/ubuntu ${UBUNTU_DISTRO} main\" > /etc/apt/sources.list.d/ros-latest.list" |
| 41 | + sh -c "apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \ |
| 42 | + || apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \ |
| 43 | + || apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654" |
| 44 | + sh -c "apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 6B05F25D762E3157 \ |
| 45 | + || apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 6B05F25D762E3157 \ |
| 46 | + || apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 6B05F25D762E3157" |
| 47 | + apt-get update -qq |
| 48 | + ${APT_INSTALL} dpkg |
| 49 | + apt update -y |
| 50 | + |
| 51 | +ros_install: |
| 52 | + ${APT_INSTALL} -y ros-${ROS_DISTRO}-ros-base |
| 53 | + bash -c 'source /opt/ros/${ROS_DISTRO}/setup.bash; rosdep init' |
| 54 | + |
| 55 | +ros_install_deps: |
| 56 | + apt update |
| 57 | + #apt upgrade -y |
| 58 | + ${APT_INSTALL} libeigen3-dev octave libyaml-cpp-dev libpugixml-dev libboost-all-dev libmsgpack-dev nlohmann-json3-dev |
| 59 | + bash -c "${APT_INSTALL} python-bloom || ${APT_INSTALL} python3-bloom" |
| 60 | + ${APT_INSTALL} \ |
| 61 | + devscripts \ |
| 62 | + debhelper \ |
| 63 | + fakeroot |
| 64 | + bash -c "${APT_INSTALL} python-catkin-tools || ${APT_INSTALL} python3-catkin-tools python3-osrf-pycommon" |
| 65 | + |
| 66 | + |
| 67 | +catkin_test_deb_pkg: |
| 68 | + cd ${CATKIN_PKGS_PATH}/${PKG}; bloom-generate rosdebian --os-name ubuntu --ros-distro ${ROS_DISTRO} ./ |
| 69 | + cd ${CATKIN_PKGS_PATH}/${PKG}; fakeroot debian/rules binary |
| 70 | + ls -l ${CATKIN_PKGS_PATH} |
| 71 | + echo ${PKG} | tr "_" "-" | xargs --verbose -I {} sudo sh -c "dpkg -i ${CATKIN_PKGS_PATH}/ros*{}*.deb" |
| 72 | + |
| 73 | +catkin_test_deb: clean |
| 74 | + ${MAKE} catkin_prepare_workspace |
| 75 | + ${MAKE} catkin_fake_rosdep |
| 76 | + mkdir -p build/dependency_test |
| 77 | + echo ${WS_PKGS} | tr " " "\n" | xargs -I {} sh -c "${MAKE} catkin_test_deb_pkg PKG="{}" ROS_DISTRO=${ROS_DISTRO} || exit 255" |
| 78 | + bash -c 'source /opt/ros/${ROS_DISTRO}/setup.bash; \ |
| 79 | + cd build/dependency_test; \ |
| 80 | + cmake ../../demo_cmake_ros1; \ |
| 81 | + ${MAKE} ${MAKE_FLAGS}' |
| 82 | + |
| 83 | + |
| 84 | +catkin_prepare_workspace: clean |
| 85 | + mkdir -p ${CATKIN_PKGS_PATH} |
| 86 | + ls -1A | grep -v build | xargs cp -R -t ${CATKIN_PKGS_PATH} |
| 87 | + rm -f ${CATKIN_PKGS_PATH}/ariles2_rosparam_ws/CATKIN_IGNORE |
| 88 | + |
| 89 | +catkin_fake_rosdep: |
| 90 | + # https://answers.ros.org/question/280213/generate-deb-from-dependent-res-package-locally/#280235 |
| 91 | + sudo /bin/sh -c 'echo "yaml file:///tmp/rosdep.yaml" > /etc/ros/rosdep/sources.list.d/50-ariles2.list' |
| 92 | + sudo rm -Rf /tmp/rosdep.yaml |
| 93 | + echo ${WS_PKGS} | tr " " "\n" | \ |
| 94 | + xargs -I {} sudo /bin/sh -c 'echo "{}:" >> /tmp/rosdep.yaml; echo " ubuntu: [ros-${ROS_DISTRO}-{}]" | tr "_" "-" >> /tmp/rosdep.yaml' |
| 95 | + rosdep update --rosdistro ${ROS_DISTRO} |
| 96 | + |
| 97 | + |
| 98 | +catkin_old_build: catkin_prepare_workspace |
| 99 | + cd ${CATKIN_WORKING_DIR}/src; catkin_init_workspace |
| 100 | + cd ${CATKIN_WORKING_DIR}; catkin_make_isolated --pkg ${WS_PKGS} ${CATKIN_ARGS} --make-args ${CATKIN_TARGETS} # old |
| 101 | + |
| 102 | +catkin_old_build_with_dependent: catkin_prepare_workspace |
| 103 | + cd ${CATKIN_WORKING_DIR}/src; catkin_init_workspace |
| 104 | + cd ${CATKIN_WORKING_DIR}; catkin_make_isolated |
| 105 | + |
| 106 | +catkin_old_deb: catkin_prepare_workspace |
| 107 | + ${MAKE} catkin_test_deb |
| 108 | + ${MAKE} catkin_prepare_workspace |
| 109 | + cd ${CATKIN_PKGS_PATH}/; ls -1A | grep -v demo | xargs rm -Rf |
| 110 | + rm ${CATKIN_PKGS_PATH}/demo_catkin/CATKIN_IGNORE |
| 111 | + cd ${CATKIN_WORKING_DIR}/src; catkin_init_workspace |
| 112 | + cd ${CATKIN_WORKING_DIR}; catkin_make_isolated --pkg ${CATKIN_DEPENDENCY_TEST_PKG} |
| 113 | + sudo ${MAKE} clean_deb clean_rosdep |
| 114 | + |
| 115 | + |
| 116 | +catkin_new_build: catkin_prepare_workspace |
| 117 | + cd ${CATKIN_WORKING_DIR}; catkin init |
| 118 | + cd ${CATKIN_WORKING_DIR}; catkin build -i --verbose --summary ${WS_PKGS} --make-args ${CATKIN_TARGETS} ${CATKIN_ARGS} |
| 119 | + |
| 120 | +catkin_new_build_with_dependent: catkin_prepare_workspace |
| 121 | + rm ${CATKIN_PKGS_PATH}/demo_catkin/CATKIN_IGNORE |
| 122 | + cd ${CATKIN_WORKING_DIR}; catkin init |
| 123 | + cd ${CATKIN_WORKING_DIR}; catkin build -i --verbose --summary ${CATKIN_DEPENDENCY_TEST_PKG} |
| 124 | + |
| 125 | +catkin_new_deb: |
| 126 | + ${MAKE} catkin_test_deb |
| 127 | + ${MAKE} catkin_prepare_workspace |
| 128 | + cd ${CATKIN_PKGS_PATH}; ls -1A | grep -v demo | xargs rm -Rf |
| 129 | + rm ${CATKIN_PKGS_PATH}/demo_catkin/CATKIN_IGNORE |
| 130 | + cd ${CATKIN_WORKING_DIR}; catkin init |
| 131 | + cd ${CATKIN_WORKING_DIR}; catkin build -i --verbose --summary ${CATKIN_DEPENDENCY_TEST_PKG} |
| 132 | + sudo ${MAKE} clean_deb |
| 133 | + |
| 134 | + |
| 135 | +catkin_test_old: ros_install_deps |
| 136 | + ${MAKE} catkin_old_build |
| 137 | + ${MAKE} catkin_old_build_with_dependent |
| 138 | + ${MAKE} catkin_old_deb |
| 139 | + |
| 140 | +catkin_test_new: ros_install_deps |
| 141 | + ${MAKE} catkin_new_build |
| 142 | + ${MAKE} catkin_new_build_with_dependent |
| 143 | + ${MAKE} catkin_new_deb |
| 144 | + |
| 145 | + |
| 146 | +ros_prerelease_deps: |
| 147 | + sudo ${MAKE} ros_add_repos UBUNTU_DISTRO=${UBUNTU_DISTRO} |
| 148 | + ${PIP_INSTALL} empy==3.3.4 |
| 149 | + ${PIP_INSTALL} ros_buildfarm |
| 150 | + |
| 151 | +ros_prerelease: ros_prerelease_deps |
| 152 | + # sudo apt install docker.io |
| 153 | + # sudo adduser username docker |
| 154 | + generate_prerelease_script.py \ |
| 155 | + https://raw.githubusercontent.com/ros-infrastructure/ros_buildfarm_config/production/index.yaml \ |
| 156 | + ${ROS_DISTRO} default ubuntu ${UBUNTU_DISTRO} amd64 \ |
| 157 | + --level 0 --custom-repo ${PROJECT}:git:${REPO}:${BRANCH} \ |
| 158 | + --output-dir ./build/ros_prerelease |
| 159 | + # dirty fix to break interactive part of the script |
| 160 | + cd ./build/ros_prerelease; sed -i -e "/_ls_prerelease_scripts=/d" prerelease.sh |
| 161 | + # shell script debug |
| 162 | + cd ./build/ros_prerelease; sed -i 's=\(#!.*sh\)=#!/bin/sh -x=' *.sh |
| 163 | + # dirty workaround for ccache permissions issue |
| 164 | + cd ./build/ros_prerelease; sed -i "s|\(-e=TRAVIS\)|-eCCACHE_DIR=./.ccache/ \1|" *.sh |
| 165 | + cd ./build/ros_prerelease; env ABORT_ON_TEST_FAILURE=1 CCACHE_DIR=`pwd`/.ccache ./prerelease.sh |
| 166 | + |
| 167 | +# docker |
| 168 | +#---------------------------------------------- |
| 169 | +ros_make_docker: |
| 170 | + docker pull ros:${ROS_DISTRO}-ros-base-${UBUNTU_DISTRO} |
| 171 | + docker run -ti ros:${ROS_DISTRO}-ros-base-${UBUNTU_DISTRO} \ |
| 172 | + /bin/bash -c "source /opt/ros/${ROS_DISTRO}/setup.bash \ |
| 173 | + && git clone -b ${BRANCH} ${REPO} ${PROJECT} \ |
| 174 | + && cd ${PROJECT} \ |
| 175 | + && make ${TARGET} ROS_DISTRO=${ROS_DISTRO} UBUNTU_DISTRO=${UBUNTU_DISTRO}" |
| 176 | + |
| 177 | + |
| 178 | +# other |
| 179 | +#---------------------------------------------- |
| 180 | +clean_deb: |
| 181 | + dpkg --get-selections | grep ariles2 | cut -f 1 | xargs sudo dpkg -r |
| 182 | + |
| 183 | +clean_rosdep: |
| 184 | + rm -Rf /tmp/rosdep.yaml /etc/ros/rosdep/sources.list.d/50-ariles2.list |
| 185 | + rosdep update |
0 commit comments