From 55ce25ac83e81ef792be38c95f763a88fbed5e25 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Wed, 9 Nov 2016 16:57:14 +0100 Subject: [PATCH] Fix release build for autogenerated files - detect programms required for generating files as maintainer-build-dependency - add target to cleanup autogenerated files - make cleane build clean & regenerate autogenerated files. - crlf transcode the readmes during the installation phase - not build. --- CMakeLists.txt | 11 +++++++++ Documentation/CMakeLists.txt | 48 +++++++++++++++++------------------- Installation/release.sh | 2 ++ arangod/CMakeLists.txt | 43 ++++++++++++++------------------ cmake/InstallMacros.cmake | 11 +++------ lib/CMakeLists.txt | 24 +++++++++--------- 6 files changed, 71 insertions(+), 68 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index af05746fe0..4fd3d8f7df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -107,6 +107,7 @@ set(BIN_ARANGOVPACK arangovpack) # test binaries set(TEST_BASICS_SUITE basics_suite) set(TEST_GEO_SUITE geo_suite) +set(CLEAN_AUTOGENERATED_FILES) set(PACKAGES_LIST) set(COPY_PACKAGES_LIST) set(CLEAN_PACKAGES_LIST) @@ -477,6 +478,12 @@ if (USE_MAINTAINER_MODE) find_package(FLEX) find_package(BISON) + # these are required for generateREADME.sh + find_program(FGREP_EXECUTABLE fgrep) + find_program(MARKDOWN_EXECUTABLE markdown) + find_program(HTML2TEXT_EXECUTABLE html2text) + find_program(SED_EXECUTABLE sed) + find_program(AWK_EXECUTABLE awk) endif () ################################################################################ @@ -926,4 +933,8 @@ add_custom_target(clean_packages DEPENDS ${CLEAN_PACKAGES_LIST} ) +add_custom_target(clean_autogenerated_files + DEPENDS ${CLEAN_AUTOGENERATED_FILES} + ) + message(STATUS "building for git revision: ${ARANGODB_BUILD_REPOSITORY}") diff --git a/Documentation/CMakeLists.txt b/Documentation/CMakeLists.txt index e429a37f43..a88e9efe27 100644 --- a/Documentation/CMakeLists.txt +++ b/Documentation/CMakeLists.txt @@ -22,48 +22,46 @@ if (USE_MAINTAINER_MODE) man8/arangod.8 man8/arango-dfdb.8 man8/foxx-manager.8 - ) + ) set(MAN_FILES) + set(GENERATED_MAN_FILES) + foreach (m IN LISTS MAN_NAMES) set(msrc ${CMAKE_SOURCE_DIR}/Documentation/${m}) set(mdst ${CMAKE_SOURCE_DIR}/Documentation/man/${m}) add_custom_command( - OUTPUT - ${mdst} - COMMAND - ${CMAKE_SOURCE_DIR}/utils/manPages.sh - ${msrc} ${mdst} ${ARANGODB_VERSION} - DEPENDS - ${msrc} - WORKING_DIRECTORY - ${CMAKE_BINARY_DIR} - COMMENT - "Building manpage ${mdst}" + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + OUTPUT ${mdst} + COMMAND ${CMAKE_SOURCE_DIR}/utils/manPages.sh ${msrc} ${mdst} ${ARANGODB_VERSION} + DEPENDS ${msrc} + COMMENT "Building manpage ${mdst}" VERBATIM - ) + ) list(APPEND MAN_FILES ${mdst}) endforeach () add_custom_command( - OUTPUT - ${CMAKE_SOURCE_DIR}/README - COMMAND - ${CMAKE_SOURCE_DIR}/utils/generateREADME.sh - ${CMAKE_SOURCE_DIR}/README.md ${CMAKE_SOURCE_DIR}/README - DEPENDS - ${CMAKE_SOURCE_DIR}/README.md - WORKING_DIRECTORY - ${CMAKE_SOURCE_DIR} - COMMENT - "Building README" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT ${CMAKE_SOURCE_DIR}/README + COMMAND ${CMAKE_SOURCE_DIR}/utils/generateREADME.sh ${CMAKE_SOURCE_DIR}/README.md ${CMAKE_SOURCE_DIR}/README + DEPENDS ${CMAKE_SOURCE_DIR}/README.md + COMMENT "Building README" VERBATIM - ) + ) list(APPEND MAN_FILES ${CMAKE_SOURCE_DIR}/README) add_custom_target(man ALL DEPENDS ${MAN_FILES}) + + add_custom_target(clean_man_autogenerated + COMMAND rm -f ${CMAKE_SOURCE_DIR}/README + COMMAND rm -f ${MAN_FILES}) + + list(APPEND CLEAN_AUTOGENERATED_FILES clean_man_autogenerated) + set(CLEAN_AUTOGENERATED_FILES ${CLEAN_AUTOGENERATED_FILES} PARENT_SCOPE) + endif () diff --git a/Installation/release.sh b/Installation/release.sh index 8ce03e3ef3..7f8473a7b6 100755 --- a/Installation/release.sh +++ b/Installation/release.sh @@ -112,6 +112,8 @@ if [ "$BUILD" != "0" ]; then ( cd build cmake .. ${CMAKE_CONFIGURE} + make clean_autogenerated_files + cmake .. ${CMAKE_CONFIGURE} make -j 8 ) diff --git a/arangod/CMakeLists.txt b/arangod/CMakeLists.txt index c0ba656676..13d91d80a0 100644 --- a/arangod/CMakeLists.txt +++ b/arangod/CMakeLists.txt @@ -13,34 +13,29 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/") if (USE_MAINTAINER_MODE AND NOT MSVC) add_custom_command( - OUTPUT - ${CMAKE_CURRENT_SOURCE_DIR}/Aql/tokens.cpp - WORKING_DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR} - COMMAND - ${CMAKE_SOURCE_DIR}/utils/flex-c++.sh - ${FLEX_EXECUTABLE} - Aql/tokens.cpp - Aql/tokens.ll - MAIN_DEPENDENCY - ${CMAKE_CURRENT_SOURCE_DIR}/Aql/tokens.ll + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Aql/tokens.cpp + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ${CMAKE_SOURCE_DIR}/utils/flex-c++.sh + ${FLEX_EXECUTABLE} Aql/tokens.cpp Aql/tokens.ll + MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/Aql/tokens.ll VERBATIM - ) + ) add_custom_command( - OUTPUT - ${CMAKE_CURRENT_SOURCE_DIR}/Aql/grammar.cpp - WORKING_DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR} - COMMAND - ${CMAKE_SOURCE_DIR}/utils/bison-c.sh - ${BISON_EXECUTABLE} - Aql/grammar.cpp - Aql/grammar.y - MAIN_DEPENDENCY - ${CMAKE_CURRENT_SOURCE_DIR}/Aql/grammar.y + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Aql/grammar.cpp + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ${CMAKE_SOURCE_DIR}/utils/bison-c.sh + ${BISON_EXECUTABLE} Aql/grammar.cpp Aql/grammar.y + MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/Aql/grammar.y VERBATIM - ) + ) + + add_custom_target(clean_aql_autogenerated + COMMAND rm -f Aql/tokens.cpp Aql/tokens.h Aql/grammar.cpp Aql/grammar.h) + + list(APPEND CLEAN_AUTOGENERATED_FILES clean_aql_autogenerated) + set(CLEAN_AUTOGENERATED_FILES ${CLEAN_AUTOGENERATED_FILES} PARENT_SCOPE) + endif () ################################################################################ diff --git a/cmake/InstallMacros.cmake b/cmake/InstallMacros.cmake index 447cf4a9f6..ccaefc5c3b 100644 --- a/cmake/InstallMacros.cmake +++ b/cmake/InstallMacros.cmake @@ -84,16 +84,13 @@ macro (install_readme input output) if (${USE_VERSION_IN_LICENSEDIR}) set(PKG_VERSION "-${ARANGODB_VERSION}") endif () - - FILE(READ ${PROJECT_SOURCE_DIR}/${input} FileContent) - STRING(REPLACE "\r" "" FileContent "${FileContent}") + set(CRLFSTYLE "UNIX") if (MSVC) - STRING(REPLACE "\n" "\r\n" FileContent "${FileContent}") + set(CRLFSTYLE "CRLF") endif () - FILE(WRITE ${PROJECT_BINARY_DIR}/${output} "${FileContent}") install( - FILES ${PROJECT_BINARY_DIR}/${output} - DESTINATION ${where}${PKG_VERSION}) + CODE "configure_file(${PROJECT_SOURCE_DIR}/${input} \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${where}${PKG_VERSION}/${output} NEWLINE_STYLE ${CRLFSTYLE})" + ) endmacro () # installs a link to an executable --------------------------------------------- diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index f8ac206467..4ffe7488da 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -11,19 +11,19 @@ include_directories(.) if (USE_MAINTAINER_MODE AND NOT MSVC) add_custom_command( - OUTPUT - ${CMAKE_SOURCE_DIR}/lib/V8/v8-json.cpp - WORKING_DIRECTORY - ${CMAKE_SOURCE_DIR} - COMMAND - ${CMAKE_SOURCE_DIR}/utils/flex-c++.sh - ${FLEX_EXECUTABLE} - lib/V8/v8-json.cpp - lib/V8/v8-json.ll - MAIN_DEPENDENCY - ${CMAKE_SOURCE_DIR}/lib/V8/v8-json.ll + OUTPUT ${CMAKE_SOURCE_DIR}/lib/V8/v8-json.cpp + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMAND ${CMAKE_SOURCE_DIR}/utils/flex-c++.sh + ${FLEX_EXECUTABLE} lib/V8/v8-json.cpp lib/V8/v8-json.ll + MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/lib/V8/v8-json.ll VERBATIM - ) + ) + + add_custom_target(clean_lib_autogenerated + COMMAND rm -f ${CMAKE_SOURCE_DIR}/lib/V8/v8-json.cpp) + + list(APPEND CLEAN_AUTOGENERATED_FILES clean_lib_autogenerated) + set(CLEAN_AUTOGENERATED_FILES ${CLEAN_AUTOGENERATED_FILES} PARENT_SCOPE) endif () ################################################################################