ReleaseProcess - HebiRobotics/hebi_cpp_api_ros GitHub Wiki
If releasing for a distribution for the first time, this is slightly different; follow the bloom tutorial at http://wiki.ros.org/bloom/Tutorials/FirstTimeRelease#Releasing_Your_Packages (except I would recommend to manually make changelogs, tag, and set up the pull request at the end).
If updating an existing distribution to a new release of the C++ API:
- Checkout a clean version of /master of
hebi_cpp_api_ros
- Make a branch for the release version (e.g.,
<username>/v3.1.0
) - Copy in the released .tar.gz file of the released C++ API (from
http://docs.hebi.us/download/cpp/https://hebifiles.z13.web.core.windows.net/?prefix=download/cpp/) - Unzip this file (
tar -xzvf <file>
), keeping the directories separate for now. - Delete the source Eigen directory (b/c this will be added as a ROS dependency)
- Copy and paste all the source, include, and hebi C library files in (basically, all the contents except for the CMake files)
- Note -- you will have to manually build the 32 bit version of the HEBI C API library for now, as we discontinued official support for this prior to the last release. This can be pasted into the lib directory. We should email ROS devs and see if in the future we can blacklist 32 bit packages.
- To create this library, run the commands shown in the HEBI C API repo's wiki.
-
- Note that there are a couple of patches that must be applied/maintained; these changes are the addition of
package.xml
, updates toCMakeLists.txt
, and updates tohebi/CMakeLists.txt
. Look at the diff between the CMake files, and update where necessary, especially: - C and C++ API version number (note, we explicitly list the C library in the ROS packaged version of CMakeLists.txt
- Any other changes necessary
- Note that there are a couple of patches that must be applied/maintained; these changes are the addition of
- Update the package.xml with the new version number
- Update the CHANGELOG.rst file with the C++ API changelog.
- Run catkin lint
- get
sudo apt install python-catkin-lint
- run
catkin_lint
- Current/expected errors:
- get
hebi_cpp_api: error: missing include_directories(${catkin_INCLUDE_DIRS})
hebi_cpp_api: CMakeLists.txt(10): error: catkin_package() exports non-package include path
hebi_cpp_api: CMakeLists.txt(48): error: add_library() needs missing file 'OBJECT'
hebi_cpp_api: CMakeLists.txt(49): error: add_library() needs missing file '$<TARGET_OBJECTS:_hebic++-obj>'
hebi_cpp_api: CMakeLists.txt(50): error: add_library() needs missing file '$<TARGET_OBJECTS:_hebic++-obj>'
hebi_cpp_api: CMakeLists.txt(84): error: install() needs missing file '.2'
hebi_cpp_api: CMakeLists.txt(85): error: install() needs missing file '.2.0'
hebi_cpp_api: warning: include path 'include' is exported but not used for the build
hebi_cpp_api: warning: file 'hebi/lib/linux_i686/libhebi.so' is executable but not installed
hebi_cpp_api: warning: file 'hebi/lib/linux_i686/libhebi.so.2' is executable but not installed
hebi_cpp_api: warning: file 'hebi/lib/linux_i686/libhebi.so.2.0' is executable but not installed
hebi_cpp_api: CMakeLists.txt(23): warning: malformed argument list: hebi/CMakeLists.txt(10): expected '(' and got 'is'
catkin_lint: checked 1 packages and found 12 problems
catkin_lint: 3 notices have been ignored. Use -W2 to see them
- Commit these files, using the changelog as the main content of the commit message
- Run a pre-release, making sure it succeeds, using the following commands:
mkdir -p /tmp/prerelease_job
cd /tmp/prerelease_job
generate_prerelease_script.py \
https://raw.githubusercontent.com/ros-infrastructure/ros_buildfarm_config/production/index.yaml \
kinetic default ubuntu xenial amd64 \
--custom-repo \
hebi_cpp_api:git:https://github.com/HebiRobotics/hebi_cpp_api_ros.git:<your branch goes here> \
--level 1 \
--output-dir ./
./prerelease.sh
-
NOTE: This is for
kinetic
/xenial
; also run formelodic
/bionic
. -
Open a pull request back into master, and merge (rebase preferred)
-
Create a "release" on GitHub, matching the exact tag name and style of previous releases.
-
To release to the ROS build servers, follow the steps, starting at #3, at http://wiki.ros.org/bloom/Tutorials/ReleaseCatkinPackage. Do this for
kinetic
andmelodic
. -
Manually open PR at https://github.com/ros/rosdistro/blob/master/kinetic/distribution.yaml; I look at other examples of open pull requests to figure out the content of the file here as we didn't have bloom generate it exactly.