Skip to content

Commit

Permalink
Generate version.h with git branch and commit hash (#2793)
Browse files Browse the repository at this point in the history
* Generate version.h on every build and include git hash and branch/tag name
* Don't generate "alpha" postfix on buildfarm
* Show git version via moveit_version
* Change version postfix: alpha -> devel

Co-authored-by: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
  • Loading branch information
captain-yoshi and rhaschke committed Sep 9, 2022
1 parent 0a0fc56 commit 9225971
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 13 deletions.
11 changes: 0 additions & 11 deletions moveit_core/CMakeLists.txt
Expand Up @@ -194,17 +194,6 @@ include_directories(SYSTEM ${catkin_INCLUDE_DIRS}
include_directories(${THIS_PACKAGE_INCLUDE_DIRS}
${VERSION_FILE_PATH})

# Generate and install version.h
string(REGEX REPLACE "^([0-9]+)\\..*" "\\1" MOVEIT_VERSION_MAJOR "${${PROJECT_NAME}_VERSION}")
string(REGEX REPLACE "^[0-9]+\\.([0-9]+).*" "\\1" MOVEIT_VERSION_MINOR "${${PROJECT_NAME}_VERSION}")
string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" MOVEIT_VERSION_PATCH "${${PROJECT_NAME}_VERSION}")
set(MOVEIT_VERSION_EXTRA "Alpha")
set(MOVEIT_VERSION "${MOVEIT_VERSION_MAJOR}.${MOVEIT_VERSION_MINOR}.${MOVEIT_VERSION_PATCH}-${MOVEIT_VERSION_EXTRA}")
message(STATUS " *** Building MoveIt ${MOVEIT_VERSION} ***")
configure_file("version/version.h.in" "${VERSION_FILE_PATH}/moveit/version.h")
#catkin_lint: ignore_once external_file
install(FILES "${VERSION_FILE_PATH}/moveit/version.h" DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}/moveit)

add_subdirectory(version)
add_subdirectory(macros)
add_subdirectory(backtrace)
Expand Down
28 changes: 28 additions & 0 deletions moveit_core/version/CMakeLists.txt
@@ -1,2 +1,30 @@
# Generate and install version.h

if(NOT "$ENV{USER}" STREQUAL "buildfarm") # Don't define version postfix on buildfarm
set(MOVEIT_VERSION_EXTRA "devel" CACHE STRING "version string postfix")
endif()

message(STATUS " *** Building MoveIt ${${PROJECT_NAME}_VERSION} ${MOVEIT_VERSION_EXTRA} ***")

# https://stackoverflow.com/questions/13920072/how-to-always-run-command-when-building-regardless-of-any-dependency
add_custom_command(
OUTPUT ${VERSION_FILE_PATH}/moveit/version.h always_rebuild
COMMAND ${CMAKE_COMMAND}
-DVERSION_FILE_PATH="${VERSION_FILE_PATH}"
-DMOVEIT_VERSION="${${PROJECT_NAME}_VERSION}"
-DMOVEIT_VERSION_EXTRA="${MOVEIT_VERSION_EXTRA}"
-P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

add_custom_target(version_h
DEPENDS always_rebuild
COMMENT "Generating version.h"
)

add_executable(moveit_version version.cpp)
add_dependencies(moveit_version version_h)

# catkin_lint: ignore_once external_file
install(FILES "${VERSION_FILE_PATH}/moveit/version.h" DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}/moveit)
install(TARGETS moveit_version RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION})
39 changes: 39 additions & 0 deletions moveit_core/version/version.cmake
@@ -0,0 +1,39 @@
# Retrieve (active) branch name
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE MOVEIT_GIT_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)

if("${MOVEIT_GIT_NAME}" STREQUAL "HEAD")
# Retrieve any associated name (tag or branch)
execute_process(
COMMAND git describe --contains --all HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE MOVEIT_GIT_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
endif()

# Retrieve (short) commit hash
execute_process(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE MOVEIT_GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)

string(REGEX REPLACE "^([0-9]+)\\..*" "\\1" MOVEIT_VERSION_MAJOR "${MOVEIT_VERSION}")
string(REGEX REPLACE "^[0-9]+\\.([0-9]+).*" "\\1" MOVEIT_VERSION_MINOR "${MOVEIT_VERSION}")
string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" MOVEIT_VERSION_PATCH "${MOVEIT_VERSION}")
set(MOVEIT_VERSION "${MOVEIT_VERSION_MAJOR}.${MOVEIT_VERSION_MINOR}.${MOVEIT_VERSION_PATCH}")

if(NOT "${MOVEIT_VERSION_EXTRA}" STREQUAL "")
string(APPEND MOVEIT_VERSION "-${MOVEIT_VERSION_EXTRA}")
endif()

configure_file("version.h.in" "${VERSION_FILE_PATH}/moveit/version.h")
12 changes: 10 additions & 2 deletions moveit_core/version/version.cpp
Expand Up @@ -35,10 +35,18 @@
/* Author: Ioan Sucan */

#include <moveit/version.h>
#include <cstdio>
#include <iostream>
#include <cstring>

int main(int /*argc*/, char** /*argv*/)
{
printf("%s\n", MOVEIT_VERSION_STR);
std::cout << MOVEIT_VERSION_STR;
if (strlen(MOVEIT_GIT_COMMIT_HASH))
{
std::cout << ", git commit: " << MOVEIT_GIT_COMMIT_HASH;
if (strlen(MOVEIT_GIT_NAME))
std::cout << " (" << MOVEIT_GIT_NAME << ")";
}
std::cout << std::endl;
return 0;
}
3 changes: 3 additions & 0 deletions moveit_core/version/version.h.in
Expand Up @@ -42,6 +42,9 @@
#define MOVEIT_VERSION_PATCH @MOVEIT_VERSION_PATCH@
#define MOVEIT_VERSION_EXTRA "@MOVEIT_VERSION_EXTRA@"

#define MOVEIT_GIT_NAME "@MOVEIT_GIT_NAME@"
#define MOVEIT_GIT_COMMIT_HASH "@MOVEIT_GIT_COMMIT_HASH@"

/// MOVEIT_VERSION is (major << 16) + (minor << 8) + patch.
#define MOVEIT_VERSION MOVEIT_VERSION_CHECK(MOVEIT_VERSION_MAJOR, MOVEIT_VERSION_MINOR, MOVEIT_VERSION_PATCH)

Expand Down

0 comments on commit 9225971

Please sign in to comment.