This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, next has been updated via 5a38fe2135c8f421e79027ff0f5d6525c6c4449f (commit) via a6d9d783b45dcec84dd16b2fb0f0bef53c0b2487 (commit) via bc8c0add7f799ad5775e4f229256832e17156b68 (commit) from f80a4113e66cc5e83367af25c96faeaaa95d7a46 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5a38fe2135c8f421e79027ff0f5d6525c6c4449f commit 5a38fe2135c8f421e79027ff0f5d6525c6c4449f Merge: f80a411 a6d9d78 Author: Domen Vrankar <domen.vran...@gmail.com> AuthorDate: Thu Aug 25 13:17:28 2016 -0400 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Thu Aug 25 13:17:28 2016 -0400 Merge topic 'cpack-rpm-debuginfo-pkg' into next a6d9d783 cpack-rpm-debuginfo bc8c0add CPack RPM debuginfo packages generation https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a6d9d783b45dcec84dd16b2fb0f0bef53c0b2487 commit a6d9d783b45dcec84dd16b2fb0f0bef53c0b2487 Author: Domen Vrankar <domen.vran...@gmail.com> AuthorDate: Thu Aug 25 18:35:42 2016 +0200 Commit: Domen Vrankar <domen.vran...@gmail.com> CommitDate: Thu Aug 25 18:36:09 2016 +0200 cpack-rpm-debuginfo test and release notes diff --git a/Help/release/dev/cpack-rpm-debuginfo-pkg.rst b/Help/release/dev/cpack-rpm-debuginfo-pkg.rst new file mode 100644 index 0000000..f02a162 --- /dev/null +++ b/Help/release/dev/cpack-rpm-debuginfo-pkg.rst @@ -0,0 +1,6 @@ +cpack-rpm-debuginfo-pkg +------------------ + +* The :module:`CPackRPM` module learned to generate debuginfo + packages on demand. See :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` + and its per component version. diff --git a/Tests/RunCMake/CPack/DEBUGINFO.cmake b/Tests/RunCMake/CPack/DEBUGINFO.cmake new file mode 100644 index 0000000..2a65b7f --- /dev/null +++ b/Tests/RunCMake/CPack/DEBUGINFO.cmake @@ -0,0 +1,26 @@ +set(CMAKE_BUILD_WITH_INSTALL_RPATH 1) + +set(CPACK_RPM_COMPONENT_INSTALL "ON") + +set(CMAKE_BUILD_TYPE Debug) + +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_lib.hpp" + "int test_lib();\n") +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_lib.cpp" + "#include \"test_lib.hpp\"\nint test_lib() {return 0;}\n") +add_library(test_lib SHARED "${CMAKE_CURRENT_BINARY_DIR}/test_lib.cpp") + +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp" + "#include \"test_lib.hpp\"\nint main() {return test_lib();}\n") +add_executable(test_prog "${CMAKE_CURRENT_BINARY_DIR}/main.cpp") +target_link_libraries(test_prog test_lib) + +install(TARGETS test_prog DESTINATION foo COMPONENT applications) +install(FILES CMakeLists.txt DESTINATION bar COMPONENT headers) +install(TARGETS test_lib DESTINATION bas COMPONENT libs) + +set(CPACK_RPM_APPLICATIONS_FILE_NAME "RPM-DEFAULT") +set(CPACK_RPM_APPLICATIONS_DEBUGINFO_PACKAGE ON) +set(CPACK_RPM_LIBS_DEBUGINFO_PACKAGE ON) + +set(CPACK_PACKAGE_NAME "debuginfo") diff --git a/Tests/RunCMake/CPack/RPM/DEBUGINFO-ExpectedFiles.cmake b/Tests/RunCMake/CPack/RPM/DEBUGINFO-ExpectedFiles.cmake new file mode 100644 index 0000000..265ca92 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/DEBUGINFO-ExpectedFiles.cmake @@ -0,0 +1,14 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "5") +set(EXPECTED_FILE_1 "debuginfo-applications-0*.rpm") +set(EXPECTED_FILE_CONTENT_1 "^/usr/foo${whitespaces_}/usr/foo/test_prog$") +set(EXPECTED_FILE_2 "debuginfo*-headers.rpm") +set(EXPECTED_FILE_CONTENT_2 "^/usr/bar${whitespaces_}/usr/bar/CMakeLists.txt$") +set(EXPECTED_FILE_3 "debuginfo*-libs.rpm") +set(EXPECTED_FILE_CONTENT_3 "^/usr/bas${whitespaces_}/usr/bas/libtest_lib.so$") + +set(EXPECTED_FILE_4 "debuginfo-applications-debuginfo*.rpm") +set(EXPECTED_FILE_CONTENT_4 ".*") +set(EXPECTED_FILE_5 "debuginfo-libs-debuginfo*.rpm") +set(EXPECTED_FILE_CONTENT_5 ".*") diff --git a/Tests/RunCMake/CPack/RPM/DEBUGINFO-stderr.txt b/Tests/RunCMake/CPack/RPM/DEBUGINFO-stderr.txt new file mode 100644 index 0000000..557ef3d --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/DEBUGINFO-stderr.txt @@ -0,0 +1,3 @@ +^CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/DEBUGINFO-build/_CPack_Packages/.*/RPM/SPECS/debuginfo-applications.spec +CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/DEBUGINFO-build/_CPack_Packages/.*/RPM/SPECS/debuginfo-headers.spec +CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/DEBUGINFO-build/_CPack_Packages/.*/RPM/SPECS/debuginfo-libs.spec$ diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index 59c52f8..44586d7 100644 --- a/Tests/RunCMake/CPack/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -16,3 +16,4 @@ run_cpack_test(RPM_DIST "RPM" false) run_cpack_test(INSTALL_SCRIPTS "RPM" false) run_cpack_test(DEB_GENERATE_SHLIBS "DEB" true) run_cpack_test(DEB_GENERATE_SHLIBS_LDCONFIG "DEB" true) +run_cpack_test(DEBUGINFO "RPM" true) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bc8c0add7f799ad5775e4f229256832e17156b68 commit bc8c0add7f799ad5775e4f229256832e17156b68 Author: Istvan Bodnar <mail.bodnarist...@gmail.com> AuthorDate: Mon Aug 22 23:40:15 2016 +0200 Commit: Domen Vrankar <domen.vran...@gmail.com> CommitDate: Thu Aug 25 18:36:09 2016 +0200 CPack RPM debuginfo packages generation Added new variable to CPackRPM for debuginfo rpm package generation. Binaries will be checked for debug symbols. diff --git a/Modules/CPackRPM.cmake b/Modules/CPackRPM.cmake index c195746..36caac6 100644 --- a/Modules/CPackRPM.cmake +++ b/Modules/CPackRPM.cmake @@ -60,6 +60,14 @@ # * Mandatory : YES # * Default : :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` # +# .. variable:: CPACK_RPM_DEBUGINFO_PACKAGE +# CPACK_RPM_<component>_DEBUGINFO_PACKAGE +# +# Option to additionally generate debuginfo RPM package(s). +# +# * Mandatory : NO +# * Default : OFF +# # .. variable:: CPACK_RPM_PACKAGE_NAME # CPACK_RPM_<component>_PACKAGE_NAME # @@ -1236,6 +1244,30 @@ if(NOT UNIX) message(FATAL_ERROR "CPackRPM.cmake may only be used under UNIX.") endif() +# We need to check if the binaries were compiled with debug symbols +# because without them the package will be useless +function(cpack_rpm_debugsymbol_check INSTALL_FILES WORKING_DIR) + # With objdump we should check the debug symbols + find_program(OBJDUMP_EXECUTABLE objdump) + if(NOT OBJDUMP_EXECUTABLE) + message(WARNING "CPackRPM: objdump binary could not be found!") + endif() + + foreach(F IN LISTS INSTALL_FILES) + execute_process(COMMAND "${OBJDUMP_EXECUTABLE}" -h ${WORKING_DIR}/${F} + WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}" + RESULT_VARIABLE OBJDUMP_EXEC_RESULT + OUTPUT_VARIABLE OBJDUMP_OUT) + # Check that if the given file was executable or not + if(NOT OBJDUMP_EXEC_RESULT) + string(FIND "${OBJDUMP_OUT}" "debug" FIND_RESULT) + if(NOT FIND_RESULT GREATER -1) + message(WARNING "CPackRPM: File: ${F} does not contain debug symbols. They will possibly be missing from debuginfo package!") + endif() + endif() + endforeach() +endfunction() + function(cpack_rpm_variable_fallback OUTPUT_VAR_NAME) set(FALLBACK_VAR_NAMES ${ARGN}) @@ -1804,6 +1836,15 @@ function(cpack_rpm_generate_package) "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_USER_BINARY_SPECFILE") endif() + cpack_rpm_variable_fallback("CPACK_RPM_DEBUGINFO_PACKAGE" + "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_DEBUGINFO_PACKAGE" + "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEBUGINFO_PACKAGE" + "CPACK_RPM_DEBUGINFO_PACKAGE") + if(CPACK_RPM_DEBUGINFO_PACKAGE) + cpack_rpm_debugsymbol_check("${CPACK_ABSOLUTE_DESTINATION_FILES}" "${WDIR}") + set(TMP_RPM_DEBUGINFO "%debug_package") + endif() + cpack_rpm_variable_fallback("CPACK_RPM_FILE_NAME" "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_FILE_NAME" "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_FILE_NAME" @@ -1824,7 +1865,9 @@ function(cpack_rpm_generate_package) # else example: #set(CPACK_RPM_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}-${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm") - set(FILE_NAME_DEFINE "%define _rpmfilename ${CPACK_RPM_FILE_NAME}") + if(NOT CPACK_RPM_DEBUGINFO_PACKAGE) + set(FILE_NAME_DEFINE "%define _rpmfilename ${CPACK_RPM_FILE_NAME}") + endif() endif() # We should generate a USER spec file template: @@ -1856,6 +1899,8 @@ Vendor: \@CPACK_RPM_PACKAGE_VENDOR\@ \@TMP_RPM_BUILDARCH\@ \@TMP_RPM_PREFIXES\@ +\@TMP_RPM_DEBUGINFO\@ + %define _rpmdir \@CPACK_RPM_DIRECTORY\@ \@FILE_NAME_DEFINE\@ %define _unpackaged_files_terminate_build 0 @@ -1911,7 +1956,7 @@ mv \"\@CPACK_TOPLEVEL_DIRECTORY\@/tmpBBroot\" $RPM_BUILD_ROOT # The generated file may then be used as a template by user who wants # to customize their own spec file. if(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE) - message(FATAL_ERROR "CPackRPM: STOP here Generated USER binary spec file templare is: ${CPACK_RPM_BINARY_SPECFILE}.in") + message(FATAL_ERROR "CPackRPM: STOP here Generated USER binary spec file template is: ${CPACK_RPM_BINARY_SPECFILE}.in") endif() endif() @@ -1968,6 +2013,22 @@ mv \"\@CPACK_TOPLEVEL_DIRECTORY\@/tmpBBroot\" $RPM_BUILD_ROOT message(FATAL_ERROR "RPM package was not generated! ${CPACK_RPM_DIRECTORY}") endif() + if(CPACK_RPM_DEBUGINFO_PACKAGE AND NOT CPACK_RPM_FILE_NAME STREQUAL "RPM-DEFAULT") + string(TOLOWER "${CPACK_RPM_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.*\\.rpm" EXPECTED_FILENAME) + + foreach(F IN LISTS GENERATED_FILES) + if(F MATCHES ".*/${EXPECTED_FILENAME}") + get_filename_component(FILE_PATH "${F}" DIRECTORY) + file(RENAME "${F}" "${FILE_PATH}/${CPACK_RPM_FILE_NAME}") + list(APPEND new_files_list_ "${FILE_PATH}/${CPACK_RPM_FILE_NAME}") + else() + list(APPEND new_files_list_ "${F}") + endif() + endforeach() + + set(GENERATED_FILES "${new_files_list_}") + endif() + set(GEN_CPACK_OUTPUT_FILES "${GENERATED_FILES}" PARENT_SCOPE) if(CPACK_RPM_PACKAGE_DEBUG) ----------------------------------------------------------------------- Summary of changes: Help/release/dev/cpack-rpm-debuginfo-pkg.rst | 6 ++ Modules/CPackRPM.cmake | 65 +++++++++++++++++++- .../CPack/{DEPENDENCIES.cmake => DEBUGINFO.cmake} | 12 +++- .../CPack/RPM/DEBUGINFO-ExpectedFiles.cmake | 14 +++++ Tests/RunCMake/CPack/RPM/DEBUGINFO-stderr.txt | 3 + Tests/RunCMake/CPack/RunCMakeTest.cmake | 1 + 6 files changed, 96 insertions(+), 5 deletions(-) create mode 100644 Help/release/dev/cpack-rpm-debuginfo-pkg.rst copy Tests/RunCMake/CPack/{DEPENDENCIES.cmake => DEBUGINFO.cmake} (74%) create mode 100644 Tests/RunCMake/CPack/RPM/DEBUGINFO-ExpectedFiles.cmake create mode 100644 Tests/RunCMake/CPack/RPM/DEBUGINFO-stderr.txt hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits