Skip to content

Commit 8bfefd2

Browse files
lifflandercz4rs
authored andcommitted
Merge pull request #1693 from DARMA-tasking/1692-dont-error-with-no-git
#1692: do not error in build if git folder is not available
2 parents a2eb852 + 2ff27b9 commit 8bfefd2

8 files changed

+74
-102
lines changed

CMakeLists.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
cmake_minimum_required(VERSION 3.17 FATAL_ERROR)
2-
project(vt VERSION 1.1.0)
2+
3+
file(READ "VERSION" _vt_version_str)
4+
string(STRIP "${_vt_version_str}" _vt_version_str)
5+
project(vt VERSION ${_vt_version_str})
36

47
# To generate output file with compilation errors and warnings
58
# CMake generator needs to be known

cmake/build_git_info.cmake

+27-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
find_package(Git REQUIRED)
2+
3+
set(GIT_DIR)
4+
set(HEAD_FILE)
25
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --git-dir
36
WORKING_DIRECTORY
47
"${PROJECT_BASE_DIR}"
@@ -8,26 +11,35 @@ execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --git-dir
811
REL_GIT_DIR
912
OUTPUT_STRIP_TRAILING_WHITESPACE)
1013
if (NOT res EQUAL 0)
11-
message(FATAL_ERROR "git invocation failed")
12-
endif()
13-
14-
get_filename_component(GIT_DIR ${REL_GIT_DIR} ABSOLUTE BASE_DIR ${PROJECT_BASE_DIR})
15-
message(STATUS "Git DIR: ${GIT_DIR}")
16-
if (NOT GIT_DIR)
17-
message(FATAL_ERROR "not a git directory")
14+
message(STATUS "git invocation failed, git info cannot be obtained")
15+
else()
16+
get_filename_component(GIT_DIR ${REL_GIT_DIR} ABSOLUTE BASE_DIR ${PROJECT_BASE_DIR})
17+
message(STATUS "Git DIR: ${GIT_DIR}")
18+
if (NOT GIT_DIR)
19+
message(STATUS "no git directory present")
20+
else()
21+
if(NOT EXISTS "${GIT_DIR}/HEAD")
22+
message(STATUS "no such file: \"${GIT_DIR}/HEAD\"")
23+
else()
24+
set(HEAD_FILE "${GIT_DIR}/HEAD")
25+
message(STATUS "Git HEAD file: \"${HEAD_FILE}\"")
26+
endif()
27+
endif()
1828
endif()
1929

20-
if(NOT EXISTS "${GIT_DIR}/HEAD")
21-
message(FATAL_ERROR "no such file: \"${GIT_DIR}/HEAD\"")
22-
endif()
23-
set(HEAD_FILE "${GIT_DIR}/HEAD")
24-
25-
message(STATUS "Git HEAD file: \"${HEAD_FILE}\"")
26-
2730
set(VT_GIT_CONFIG_FILE "${PROJECT_BIN_DIR}/src/vt/configs/generated/vt_git_revision.cc")
2831
add_custom_command(
2932
OUTPUT ${VT_GIT_CONFIG_FILE}
30-
COMMAND ${CMAKE_COMMAND} -DIN_FILE=${PROJECT_BASE_DIR}/vt_git_revision.cc.in -DOUT_FILE=${VT_GIT_CONFIG_FILE} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DGIT_DIR=${GIT_DIR} -DHEAD_FILE=${HEAD_FILE} -P ${CMAKE_CURRENT_LIST_DIR}/run-git.cmake
33+
COMMAND ${CMAKE_COMMAND}
34+
-DIN_FILE=${PROJECT_BASE_DIR}/vt_git_revision.cc.in
35+
-DOUT_FILE=${VT_GIT_CONFIG_FILE}
36+
-DGIT_EXECUTABLE=${GIT_EXECUTABLE}
37+
-DGIT_DIR=${GIT_DIR}
38+
-DHEAD_FILE=${HEAD_FILE}
39+
-DPROJECT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
40+
-DPROJECT_VERSION_MINOR=${PROJECT_VERSION_MINOR}
41+
-DPROJECT_VERSION_PATCH=${PROJECT_VERSION_PATCH}
42+
-P ${CMAKE_CURRENT_LIST_DIR}/run-git.cmake
3143
DEPENDS ${GIT_DIR}
3244
)
3345

cmake/load_doxygen.cmake

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ if (${vt_doxygen_enabled})
1010
set(doxygen_out ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
1111

1212
set(DOXYGEN_PROJECT_NAME "vt")
13-
set(VERSION_MAJOR "1")
14-
set(VERSION_MINOR "0")
15-
set(VERSION_PATCH "0")
13+
set(VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
14+
set(VERSION_MINOR "${PROJECT_VERSION_MINOR}")
15+
set(VERSION_PATCH "${PROJECT_VERSION_PATCH}")
1616
set(DOXYGEN_INPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/")
1717
set(DOXYGEN_CHECKPOINT_SHARED_DOCS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/checkpoint/docs/shared")
1818
set(DOXYGEN_CHECKPOINT_EXAMPLE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/checkpoint/examples")

cmake/run-git.cmake

+7-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414
message(STATUS "Reading head file ${HEAD_FILE}")
1515
message(STATUS "Using git executable at \"${GIT_EXECUTABLE}\"")
1616

17-
get_filename_component(ROOT_DIR ${GIT_DIR} DIRECTORY)
17+
set(ROOT_DIR)
18+
if (GIT_DIR)
19+
get_filename_component(ROOT_DIR ${GIT_DIR} DIRECTORY)
20+
endif()
1821

1922
set(GIT_SHA1)
2023

@@ -39,7 +42,7 @@ execute_process(COMMAND
3942
GIT_SHA1
4043
OUTPUT_STRIP_TRAILING_WHITESPACE)
4144
if(NOT res EQUAL 0)
42-
message(FATAL_ERROR "could not get the git sha1")
45+
message(STATUS "could not get the git sha1")
4346
endif()
4447

4548
message(STATUS "GIT_SHA1: \"${GIT_SHA1}\"")
@@ -57,7 +60,7 @@ execute_process(COMMAND
5760
GIT_EXACT_TAG
5861
OUTPUT_STRIP_TRAILING_WHITESPACE)
5962
if(NOT res EQUAL 0)
60-
message(FATAL_ERROR "could not get the exact git tag")
63+
message(STATUS "could not get the exact git tag")
6164
endif()
6265

6366
message(STATUS "GIT_EXACT_TAG: \"${GIT_EXACT_TAG}\"")
@@ -75,7 +78,7 @@ execute_process(COMMAND
7578
GIT_DESCRIPTION
7679
OUTPUT_STRIP_TRAILING_WHITESPACE)
7780
if(NOT res EQUAL 0)
78-
message(FATAL_ERROR "could not get the description")
81+
message(STATUS "could not get the description")
7982
endif()
8083

8184
message(STATUS "GIT_DESCRIPTION: \"${GIT_DESCRIPTION}\"")

src/vt/configs/generated/vt_git_revision.h

+3
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@
4646

4747
#include <string>
4848

49+
extern int const vt_version_major;
50+
extern int const vt_version_minor;
51+
extern int const vt_version_patch;
4952
extern std::string const vt_git_sha1;
5053
extern std::string const vt_git_exact_tag;
5154
extern std::string const vt_git_refspec;

src/vt/runtime/runtime_banner.cc

+24-24
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ void Runtime::printStartupBanner() {
164164
#endif
165165

166166
std::string dirty = "";
167-
if (strncmp(vt_git_clean_status.c_str(), "DIRTY", 5) == 0) {
167+
if (vt_git_clean_status == "DIRTY") {
168168
dirty = red + std::string("*dirty*") + reset;
169169
}
170170

@@ -174,29 +174,29 @@ void Runtime::printStartupBanner() {
174174
auto const version = std::to_string(std::get<0>(version_tuple));
175175
auto const subversion = std::to_string(std::get<1>(version_tuple));
176176

177-
auto f1 = fmt::format("{} {}{}\n", reg(init), reg(mode), emph(mode_type + thd));
178-
auto f2a = fmt::format("{}Program: {} ({})\n", green,
179-
emph(getAppConfig()->prog_name), emph(getAppConfig()->argv_prog_name));
180-
auto f2b = fmt::format("{}Running on: {}\n", green, emph(all_node));
181-
auto f3 = fmt::format("{}Machine Hostname: {}\n", green, emph(hostname));
182-
auto f3a = fmt::format("{}MPI Version: {}.{}\n", green, emph(version), emph(subversion));
183-
auto f3b = fmt::format("{}MPI Max tag: {}\n", green, emph(max_tag_str));
184-
185-
auto f4 = fmt::format("{}Build SHA: {}\n", green, emph(vt_git_sha1));
186-
auto f5 = fmt::format("{}Build Ref: {}\n", green, emph(vt_git_refspec));
187-
auto f6 = fmt::format("{}Description: {} {}\n", green, emph(vt_git_description), dirty);
188-
auto f7 = fmt::format("{}Compile-time Features Enabled:{}\n", green, reset);
189-
190-
fmt::print("{}{}{}", vt_pre, f1, reset);
191-
fmt::print("{}{}{}", vt_pre, f2a, reset);
192-
fmt::print("{}{}{}", vt_pre, f2b, reset);
193-
fmt::print("{}{}{}", vt_pre, f3, reset);
194-
fmt::print("{}{}{}", vt_pre, f3a, reset);
195-
fmt::print("{}{}{}", vt_pre, f3b, reset);
196-
fmt::print("{}{}{}", vt_pre, f4, reset);
197-
fmt::print("{}{}{}", vt_pre, f5, reset);
198-
fmt::print("{}{}{}", vt_pre, f6, reset);
199-
fmt::print("{}{}{}", vt_pre, f7, reset);
177+
auto vt_version_string = fmt::format("{}.{}.{}", vt_version_major, vt_version_minor, vt_version_patch);
178+
std::array< std::string, 11 > info_lines = {
179+
fmt::format("{}Version: {}\n", green, emph(vt_version_string)),
180+
181+
fmt::format("{} {}{}\n", reg(init), reg(mode), emph(mode_type + thd)),
182+
fmt::format("{}Program: {} ({})\n", green,
183+
emph(getAppConfig()->prog_name), emph(getAppConfig()->argv_prog_name)),
184+
fmt::format("{}Running on: {}\n", green, emph(all_node)),
185+
fmt::format("{}Machine Hostname: {}\n", green, emph(hostname)),
186+
fmt::format("{}MPI Version: {}.{}\n", green, emph(version), emph(subversion)),
187+
fmt::format("{}MPI Max tag: {}\n", green, emph(max_tag_str)),
188+
189+
fmt::format("{}Build SHA: {}\n", green, emph(vt_git_sha1)),
190+
fmt::format("{}Build Ref: {}\n", green, emph(vt_git_refspec)),
191+
fmt::format("{}Description: {} {}\n", green, emph(vt_git_description), dirty),
192+
fmt::format("{}Compile-time Features Enabled:{}\n", green, reset)
193+
};
194+
195+
for (auto &&line: info_lines)
196+
{
197+
fmt::print("{}{}{}", vt_pre, line, reset);
198+
}
199+
200200
for (size_t i = 0; i < features.size(); i++) {
201201
fmt::print("{}\t{}\n", vt_pre, emph(features.at(i)));
202202
}

vt_git_revision.cc.in

+6
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,18 @@
4545

4646
#include <string>
4747

48+
#define VT_VERSION_MAJOR @PROJECT_VERSION_MAJOR@
49+
#define VT_VERSION_MINOR @PROJECT_VERSION_MINOR@
50+
#define VT_VERSION_PATCH @PROJECT_VERSION_PATCH@
4851
#define VT_GIT_SHA1 "@GIT_SHA1@"
4952
#define VT_GIT_EXACT_TAG "@GIT_EXACT_TAG@"
5053
#define VT_GIT_REFSPEC "@GIT_REFSPEC@"
5154
#define VT_GIT_DESCRIPTION "@GIT_DESCRIPTION@"
5255
#define VT_GIT_CLEAN_STATUS "@GIT_CLEAN_STATUS@"
5356

57+
int const vt_version_major = VT_VERSION_MAJOR;
58+
int const vt_version_minor = VT_VERSION_MINOR;
59+
int const vt_version_patch = VT_VERSION_PATCH;
5460
std::string const vt_git_sha1 = VT_GIT_SHA1;
5561
std::string const vt_git_exact_tag = VT_GIT_EXACT_TAG;
5662
std::string const vt_git_refspec = VT_GIT_REFSPEC;

vt_git_revision.h

-55
This file was deleted.

0 commit comments

Comments
 (0)