From 7e452b55b7e261a1435386b83dd77fe6b4927fca Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Sat, 1 Mar 2014 20:09:18 +0000 Subject: [PATCH] Better handling of git versioning stuff. --- CMakeLists.txt | 28 ++++++++++++++++++---------- release.sh | 9 +++++++++ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 090fdc576..b1c31b9a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -141,19 +141,27 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # Generate header file containing useful build information -execute_process(COMMAND git --git-dir=${CMAKE_CURRENT_SOURCE_DIR}/.git --work-tree=${CMAKE_CURRENT_SOURCE_DIR} rev-parse HEAD OUTPUT_VARIABLE ETH_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE) -execute_process(COMMAND git --git-dir=${CMAKE_CURRENT_SOURCE_DIR}/.git --work-tree=${CMAKE_CURRENT_SOURCE_DIR} diff --shortstat OUTPUT_VARIABLE ETH_LOCAL_CHANGES OUTPUT_STRIP_TRAILING_WHITESPACE) -if("x${ETH_LOCAL_CHANGES}" STREQUAL "x") - set(ETH_CLEAN_REPO 1) +if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/BuildInfo.h) else() - set(ETH_CLEAN_REPO 0) + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git) + execute_process(COMMAND git --git-dir=${CMAKE_CURRENT_SOURCE_DIR}/.git --work-tree=${CMAKE_CURRENT_SOURCE_DIR} rev-parse HEAD OUTPUT_VARIABLE ETH_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND git --git-dir=${CMAKE_CURRENT_SOURCE_DIR}/.git --work-tree=${CMAKE_CURRENT_SOURCE_DIR} diff --shortstat OUTPUT_VARIABLE ETH_LOCAL_CHANGES OUTPUT_STRIP_TRAILING_WHITESPACE) + if("x${ETH_LOCAL_CHANGES}" STREQUAL "x") + set(ETH_CLEAN_REPO 1) + else() + set(ETH_CLEAN_REPO 0) + endif() + message("Commit Hash: ${ETH_COMMIT_HASH} (Clean: ${ETH_CLEAN_REPO} - ${ETH_LOCAL_CHANGES})") + else() + message("Unknown repo.") + set(ETH_COMMIT_HASH 0) + set(ETH_CLEAN_REPO 1) + endif() + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildInfo.h "// This file was automatically generated by cmake\n#pragma once\n\n") + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/BuildInfo.h "#define ETH_COMMIT_HASH ${ETH_COMMIT_HASH}\n#define ETH_CLEAN_REPO ${ETH_CLEAN_REPO}\n#define ETH_BUILD_TYPE ${CMAKE_BUILD_TYPE}\n#define ETH_BUILD_PLATFORM ${ETH_BUILD_PLATFORM}\n") + include_directories(${CMAKE_CURRENT_BINARY_DIR}) endif() -message("Commit Hash: ${ETH_COMMIT_HASH} (Clean: ${ETH_CLEAN_REPO} - ${ETH_LOCAL_CHANGES})") -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildInfo.h "// This file was automatically generated by cmake\n#pragma once\n\n") -file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/BuildInfo.h "#define ETH_COMMIT_HASH ${ETH_COMMIT_HASH}\n#define ETH_CLEAN_REPO ${ETH_CLEAN_REPO}\n#define ETH_BUILD_TYPE ${CMAKE_BUILD_TYPE}\n#define ETH_BUILD_PLATFORM ${ETH_BUILD_PLATFORM}\n") -include_directories(${CMAKE_CURRENT_BINARY_DIR}) - add_subdirectory(secp256k1) add_subdirectory(libethereum) add_subdirectory(test) diff --git a/release.sh b/release.sh index 8cf59acf5..712e2540a 100755 --- a/release.sh +++ b/release.sh @@ -35,6 +35,14 @@ git checkout "$branch" archdir="cpp-ethereum-$version" archfile="$archdir.tar.bz2" +echo Making BuildInfo... +mkdir build +cd build +cmake .. +cd .. +cp build/BuildInfo.h . +rm -rf build + echo Cleaning backup files... find . | grep \~ | xargs rm -f @@ -51,6 +59,7 @@ mv cpp-ethereum $archdir echo Creating archive... tar c $archdir | bzip2 -- > $archfile +shasum $archfile [[ ! "$version" == "" ]] && ln -sf $archfile "cpp-ethereum_$version.orig.tar.bz2"