mirror of https://github.com/polybar/polybar.git
fix: check if git top-level directory matches CMake project source (#3156)
This commit is contained in:
parent
e7cf47de71
commit
a66c5fd91b
|
@ -8,20 +8,41 @@ project(polybar CXX)
|
|||
# a version string is used, so the file supports comments
|
||||
file(STRINGS version.txt version_txt REGEX "^[0-9]+\\.[0-9]+\\.[0-9]+.*$" LIMIT_COUNT 1)
|
||||
|
||||
# If we are in a git repo we can get the version information from git describe
|
||||
execute_process(COMMAND git describe --tags --dirty=-dev
|
||||
|
||||
execute_process(COMMAND git rev-parse --show-toplevel
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
RESULT_VARIABLE git_result
|
||||
RESULT_VARIABLE git_top_dir_result
|
||||
OUTPUT_VARIABLE git_top_dir
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
|
||||
# Set fallback first, override if more information (from git) is found
|
||||
set(APP_VERSION "${version_txt}")
|
||||
|
||||
# Prevent formatting errors & resolve symlinks (REALPATH)
|
||||
get_filename_component(resolved_project_source_dir ${PROJECT_SOURCE_DIR} REALPATH)
|
||||
if(NOT ("${git_top_dir}" STREQUAL ""))
|
||||
get_filename_component(git_top_dir ${git_top_dir} REALPATH)
|
||||
endif()
|
||||
|
||||
if(git_top_dir_result EQUAL "0" AND git_top_dir STREQUAL resolved_project_source_dir)
|
||||
# If we are in a git repo we can get the version information from git describe
|
||||
execute_process(COMMAND git describe --tags --dirty=-dev
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
RESULT_VARIABLE git_describe_result
|
||||
OUTPUT_VARIABLE git_describe
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
|
||||
if(git_result EQUAL "0")
|
||||
if(git_describe_result EQUAL "0")
|
||||
set(APP_VERSION "${git_describe}")
|
||||
else()
|
||||
else()
|
||||
message(STATUS "Could not detect version with git, falling back to built-in version information.")
|
||||
set(APP_VERSION "${version_txt}")
|
||||
endif()
|
||||
|
||||
else()
|
||||
message(STATUS "CMake and git directory mismatch, falling back to built-in version information.") # Assuming that if git rev-parse doesn't return 0, git describe won't either
|
||||
endif()
|
||||
|
||||
|
||||
# Set the default installation prefix to /usr
|
||||
# Otherwise the default value is /usr/local which causes the default config
|
||||
# file to be installed to /usr/local/etc, with /usr, cmake has special handling
|
||||
|
|
Loading…
Reference in New Issue