summaryrefslogtreecommitdiffstats
path: root/kdoctools/ConfigureChecks.cmake
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2020-03-13 09:42:43 +0100
committerSlávek Banko <slavek.banko@axis.cz>2020-03-15 16:55:27 +0100
commit799489de17c13e9bcdbf5f14eb470e74590e9d3f (patch)
tree9d08dc77258b225bf9d61e003c93264b722c0bf2 /kdoctools/ConfigureChecks.cmake
parent922e81bf4548dcaf96b4e6b4dcfd90f3390a76e5 (diff)
downloadtdelibs-799489de17c13e9bcdbf5f14eb470e74590e9d3f.tar.gz
tdelibs-799489de17c13e9bcdbf5f14eb470e74590e9d3f.zip
Use the source package date or the source git repository date
instead of the current build date. The use of a stable date is necessary to achieve reproducible builds. Updating release information in docbook entities is done directly in CMake rules. Entities will no longer be duplicated during repeated updates. Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
Diffstat (limited to 'kdoctools/ConfigureChecks.cmake')
-rw-r--r--kdoctools/ConfigureChecks.cmake103
1 files changed, 77 insertions, 26 deletions
diff --git a/kdoctools/ConfigureChecks.cmake b/kdoctools/ConfigureChecks.cmake
index 3b65c67fd..432811825 100644
--- a/kdoctools/ConfigureChecks.cmake
+++ b/kdoctools/ConfigureChecks.cmake
@@ -1,6 +1,6 @@
#################################################
#
-# (C) 2012 Trinity Project
+# (C) 2012-2020 Trinity Project
#
# Improvements and feedback are welcome
#
@@ -8,32 +8,83 @@
#
#################################################
-configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/update-entities.sh ${CMAKE_CURRENT_BINARY_DIR}/update-entities IMMEDIATE @ONLY )
+if( NOT TDE_RELEASE_ENTITIES )
-set( UPDATE_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/update-entities" )
-set( TDEVERSION_FILE "${CMAKE_SOURCE_DIR}/tdecore/tdeversion.h" )
-set( ENTITIES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/customization/entities/general.entities" )
+ set( TDEVERSION_FILE "${CMAKE_SOURCE_DIR}/tdecore/tdeversion.h" )
+ set( ENTITIES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/customization/entities/general.entities" )
-if( NOT EXISTS ${UPDATE_SCRIPT} )
- tde_message_fatal( "${UPDATE_SCRIPT} not found!\n Check your sources." )
-endif( )
-if( NOT EXISTS ${TDEVERSION_FILE} )
- tde_message_fatal( "${TDEVERSION_FILE} not found!\n Check your sources." )
-endif( )
-if( NOT EXISTS ${ENTITIES_FILE} )
- tde_message_fatal( "${ENTITIES_FILE} not found!\n Check your sources." )
-endif( )
+ if( NOT EXISTS ${TDEVERSION_FILE} )
+ tde_message_fatal( "${TDEVERSION_FILE} not found! Check your sources." )
+ endif( )
+ if( NOT EXISTS ${ENTITIES_FILE} )
+ tde_message_fatal( "${ENTITIES_FILE} not found! Check your sources." )
+ endif( )
+
+ # read source metadata
+ tde_read_src_metadata()
+
+ # read TDE_VERSION_STRING
+ file( STRINGS ${TDEVERSION_FILE} TDE_VERSION_STRING REGEX "define TDE_VERSION_STRING" )
+ string( REGEX REPLACE ".*#define TDE_VERSION_STRING \"([^\"]*)\".*" "\\1"
+ TDE_VERSION_STRING "${TDE_VERSION_STRING}" )
+ if( "${TDE_VERSION_STRING}" STREQUAL "" )
+ tde_message_fatal( "Cannot determine the Trinity version number." )
+ endif( )
+
+ # compose TDE_RELEASE_DATE
+ if( "${TDE_VERSION_STRING}" MATCHES "DEVELOPMENT" )
+ tde_curdatetime( TDE_RELEASE_DATE )
+ else( )
+ if( TDE_SCM_MODULE_DATETIME )
+ set( TDE_RELEASE_DATE "${TDE_SCM_MODULE_DATETIME}" )
+ else( )
+ execute_process(
+ COMMAND find ${TDEVERSION_FILE} -printf "%Tm/%Te/%TY"
+ OUTPUT_VARIABLE TDE_RELEASE_DATE
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ endif( )
+ endif( )
+ execute_process(
+ COMMAND date +2010-%Y -d "${TDE_RELEASE_DATE}"
+ OUTPUT_VARIABLE TDE_RELEASE_COPYRIGHT
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ execute_process(
+ COMMAND date +%B\ %e,\ %Y -d "${TDE_RELEASE_DATE}"
+ OUTPUT_VARIABLE TDE_RELEASE_DATE
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ # update entities
+ message( STATUS "Updating ${ENTITIES_FILE}
+ TDE Release Version: ${TDE_VERSION_STRING}
+ TDE Release Date: ${TDE_RELEASE_DATE}
+ TDE Release Copyright: ${TDE_RELEASE_COPYRIGHT}"
+ )
+ file( READ ${ENTITIES_FILE} ENTITIES_DATA )
+ if( "${ENTITIES_DATA}" MATCHES "ENTITY tde-release-version" )
+ string( REGEX REPLACE "(ENTITY tde-release-version) \"[^\"]*\""
+ "\\1 \"${TDE_VERSION_STRING}\"" ENTITIES_DATA "${ENTITIES_DATA}" )
+ else( )
+ set( ENTITIES_DATA
+ "${ENTITIES_DATA}<!ENTITY tde-release-version \"${TDE_VERSION_STRING}\">\n" )
+ endif( )
+ if( "${ENTITIES_DATA}" MATCHES "ENTITY tde-release-date" )
+ string( REGEX REPLACE "(ENTITY tde-release-date) \"[^\"]*\""
+ "\\1 \"${TDE_RELEASE_DATE}\"" ENTITIES_DATA "${ENTITIES_DATA}" )
+ else( )
+ set( ENTITIES_DATA
+ "${ENTITIES_DATA}<!ENTITY tde-release-date \"${TDE_RELEASE_DATE}\">\n" )
+ endif( )
+ if( "${ENTITIES_DATA}" MATCHES "ENTITY tde-copyright-date" )
+ string( REGEX REPLACE "(ENTITY tde-copyright-date) \"[^\"]*\""
+ "\\1 \"${TDE_RELEASE_COPYRIGHT}\"" ENTITIES_DATA "${ENTITIES_DATA}" )
+ else( )
+ set( ENTITIES_DATA
+ "${ENTITIES_DATA}<!ENTITY tde-copyright-date \"${TDE_RELEASE_COPYRIGHT}\">\n" )
+ endif( )
+ file( WRITE ${ENTITIES_FILE} "${ENTITIES_DATA}" )
+ set( TDE_RELEASE_ENTITIES 1 CACHE INTERNAL "" )
-execute_process( COMMAND chmod +x ${UPDATE_SCRIPT} )
-execute_process(
- COMMAND ${UPDATE_SCRIPT}
- RESULT_VARIABLE _result
- OUTPUT_STRIP_TRAILING_WHITESPACE )
-if( _result )
- tde_message_fatal( "Unable to update ${ENTITIES_FILE}!\n " )
-else( )
- message( STATUS "Updated as follows:" )
- execute_process( COMMAND echo )
- execute_process( COMMAND tail -n3 ${ENTITIES_FILE} )
- execute_process( COMMAND echo )
endif( )