From ba556053e192e56cdb40be9319083a5e776b4c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Fri, 13 Mar 2020 09:42:43 +0100 Subject: 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. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 (cherry picked from commit 799489de17c13e9bcdbf5f14eb470e74590e9d3f) --- kdoctools/ConfigureChecks.cmake | 103 ++++++++++++++++------ kdoctools/customization/entities/general.entities | 3 - kdoctools/update-entities.sh | 69 --------------- tdelfeditor/CMakeLists.txt | 12 +-- 4 files changed, 80 insertions(+), 107 deletions(-) delete mode 100644 kdoctools/update-entities.sh 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}\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}\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}\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( ) diff --git a/kdoctools/customization/entities/general.entities b/kdoctools/customization/entities/general.entities index fd9b0e65a..cfb5f6a7a 100644 --- a/kdoctools/customization/entities/general.entities +++ b/kdoctools/customization/entities/general.entities @@ -425,6 +425,3 @@ - - - diff --git a/kdoctools/update-entities.sh b/kdoctools/update-entities.sh deleted file mode 100644 index 5345a71c6..000000000 --- a/kdoctools/update-entities.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash - -# A script to dynamically update general.entities with the current version release information. - -# As the help files are updated/revised, DocBook entities can be used rather than static strings for -# release version, release date, and copyright date. This allows for a professional touch with each -# updated help file to show the file is relevant to the current Trinity release. - -TDEVERSION_FILE="@CMAKE_SOURCE_DIR@/tdecore/tdeversion.h" -ENTITIES_FILE="@CMAKE_SOURCE_DIR@/kdoctools/customization/entities/general.entities" - -echo "-- Updating $ENTITIES_FILE:" -# Extract the Trinity version number. -if [ -f "$TDEVERSION_FILE" ]; then - TDE_RELEASE_VERSION="`grep TDE_VERSION_STRING \"$TDEVERSION_FILE\"`" - #echo " TDE_RELEASE_VERSION: $TDE_RELEASE_VERSION" - if [ -z "$TDE_RELEASE_VERSION" ]; then - echo "Cannot determine the Trinity version number. Please verify $TDEVERSION_FILE exists." - echo - exit 1 - fi - if [ -n "`echo \"$TDE_RELEASE_VERSION\" | grep DEVELOPMENT`" ]; then - TDE_RELEASE_VERSION="`echo $TDE_RELEASE_VERSION | awk '{print $3,$4}' | sed -e 's/"//g'`" - else - TDE_RELEASE_VERSION="`echo $TDE_RELEASE_VERSION | awk '{print $3}' | sed -e 's/"//g'`" - fi - echo " TDE Release Version: $TDE_RELEASE_VERSION" - if [ -z "$TDE_RELEASE_VERSION" ]; then - echo "Cannot determine the Trinity version number. Please verify $TDEVERSION_FILE exists." - echo - exit 1 - fi -else - echo "Please verify $TDEVERSION_FILE exists." - echo - exit 1 -fi - -# $TDEVERSION_FILE (tdeversion.h) remains stagnant throughout the git cycle. -# The internal release data is manually patched only for the official release. -# Therefore the file date stamp does not change. As the development cycle -# progresses, the file date stamp looks really old in the help handbooks. As -# the tde-release-date entity eventually will match the official release file -# date stamp, we can use the actual date up to that point, which looks nicer -# in the handbooks during the development cycle. -if [ -n "`echo \"$TDE_RELEASE_VERSION\" | grep DEVELOPMENT`" ]; then - # Development cycle: use the actual date as the release date. - TDE_RELEASE_DATE=`date +'%B %e, %Y'` -else - # Official release: extract the file date stamp as the release date. - TDE_RELEASE_DATE=`find $TDEVERSION_FILE -printf "%TB %Te, %TY\n"` -fi -echo " TDE Release Date: $TDE_RELEASE_DATE" -# Create a copyright date string. First release of Trinity was 3.5.11, April 29, 2010. -TDE_RELEASE_COPYRIGHT="2010-`date +%Y`" -echo " TDE Release Copyright: $TDE_RELEASE_COPYRIGHT" - -# Now update $ENTITIES_FILE. -if [ -r "$ENTITIES_FILE" ]; then - echo "" >> $ENTITIES_FILE - echo -e "" >> $ENTITIES_FILE - echo -e "" >> $ENTITIES_FILE - echo -e "" >> $ENTITIES_FILE -else - echo "Please verify $ENTITIES_FILE exists." - echo - exit 1 -fi -exit 0 diff --git a/tdelfeditor/CMakeLists.txt b/tdelfeditor/CMakeLists.txt index 19f195555..07cd731d2 100644 --- a/tdelfeditor/CMakeLists.txt +++ b/tdelfeditor/CMakeLists.txt @@ -35,14 +35,8 @@ tde_add_executable( tdelfeditor ##### embed scm data into important libraries #### -# look for SCM data if present -if( EXISTS "${CMAKE_SOURCE_DIR}/.tdescmmodule" ) - file( STRINGS "${CMAKE_SOURCE_DIR}/.tdescmmodule" TDE_SCM_MODULE_NAME ) -endif( EXISTS "${CMAKE_SOURCE_DIR}/.tdescmmodule" ) -if( EXISTS "${CMAKE_SOURCE_DIR}/.tdescmrevision" ) - file( STRINGS "${CMAKE_SOURCE_DIR}/.tdescmrevision" TDE_SCM_MODULE_REVISION ) -endif( EXISTS "${CMAKE_SOURCE_DIR}/.tdescmrevision" ) - +# read source metadata +tde_read_src_metadata() tde_curdatetime( scm_embed_metadata_datetime ) if( NOT "${TDE_SCM_MODULE_NAME}" STREQUAL "" ) @@ -138,4 +132,4 @@ if( NOT "${TDE_SCM_MODULE_NAME}" STREQUAL "" ) COMMENT "Storing SCM metadata in tdehtml/libtdehtml.so" ) endif( ) -endif( ) \ No newline at end of file +endif( ) -- cgit v1.2.3