diff --git a/CMakeLists.txt b/CMakeLists.txt index 47fcc7d..9ec0ea1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,29 @@ project (tini C) set (tini_VERSION_MAJOR 0) set (tini_VERSION_MINOR 6) set (tini_VERSION_PATCH 0) -execute_process (COMMAND git log -n 1 --date=local --pretty=format:"%h" WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE tini_VERSION_GIT) + +# Extract git version and dirty-ness +execute_process ( + COMMAND git log -n 1 --date=local --pretty=format:%h + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" + RESULT_VARIABLE git_version_check_ret + OUTPUT_VARIABLE tini_VERSION_GIT +) + +execute_process( + COMMAND git status --porcelain --untracked-files=no + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" + OUTPUT_VARIABLE git_dirty_check_out +) + +if("${git_version_check_ret}" EQUAL 0) + set(tini_VERSION_GIT " - git.${tini_VERSION_GIT}") + if(NOT "${git_dirty_check_out}" STREQUAL "") + set(tini_VERSION_GIT "${tini_VERSION_GIT}-dirty") + endif() +else() + set(tini_VERSION_GIT "") +endif() # Flags add_definitions (-D_FORTIFY_SOURCE=2) diff --git a/src/tini.c b/src/tini.c index db50711..c307fe3 100644 --- a/src/tini.c +++ b/src/tini.c @@ -81,7 +81,7 @@ int spawn(const sigset_t* const child_sigset_ptr, char* const argv[], int* const void print_usage(char* const name, FILE* const file) { - fprintf(file, "%s (version %s - %s)\n", basename(name), TINI_VERSION, TINI_GIT); + fprintf(file, "%s (version %s%s)\n", basename(name), TINI_VERSION, TINI_GIT); fprintf(file, "Usage: %s [OPTIONS] PROGRAM -- [ARGS]\n\n", basename(name)); fprintf(file, "Execute a program under the supervision of a valid init process (%s)\n\n", basename(name)); fprintf(file, " -h: Show this help message and exit.\n"); diff --git a/src/tiniConfig.h.in b/src/tiniConfig.h.in index 95a5481..516bb68 100644 --- a/src/tiniConfig.h.in +++ b/src/tiniConfig.h.in @@ -1,2 +1,2 @@ #define TINI_VERSION "@tini_VERSION_MAJOR@.@tini_VERSION_MINOR@.@tini_VERSION_PATCH@" -#define TINI_GIT @tini_VERSION_GIT@ +#define TINI_GIT "@tini_VERSION_GIT@"