Merge topic 'rpm_package_architecture'
b6f94e6b
Help: Add notes for topic 'rpm_package_architecture'f174b919
Tests: CpackRPM test component architecture3aa9f89d
CPackRPM: Support rpm architecture in components761562fe
CPackRPM: Fix CPACK_RPM_PACKAGE_ARCHITECTURE
This commit is contained in:
commit
7cebc5acac
|
@ -0,0 +1,6 @@
|
||||||
|
rpm_package_architecture
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
* The :module:`CPackRPM` module learned a new
|
||||||
|
:variable:`CPACK_RPM_<component>_PACKAGE_ARCHITECTURE` variable
|
||||||
|
to specify a component-specific package architecture.
|
|
@ -51,11 +51,12 @@
|
||||||
# * Default : CPACK_PACKAGE_VERSION
|
# * Default : CPACK_PACKAGE_VERSION
|
||||||
#
|
#
|
||||||
# .. variable:: CPACK_RPM_PACKAGE_ARCHITECTURE
|
# .. variable:: CPACK_RPM_PACKAGE_ARCHITECTURE
|
||||||
|
# CPACK_RPM_<component>_PACKAGE_ARCHITECTURE
|
||||||
#
|
#
|
||||||
# The RPM package architecture.
|
# The RPM package architecture.
|
||||||
#
|
#
|
||||||
# * Mandatory : NO
|
# * Mandatory : YES
|
||||||
# * Default : -
|
# * Default : Native architecture output by "uname -m"
|
||||||
#
|
#
|
||||||
# This may be set to "noarch" if you know you are building a noarch package.
|
# This may be set to "noarch" if you know you are building a noarch package.
|
||||||
#
|
#
|
||||||
|
@ -619,12 +620,30 @@ endif()
|
||||||
# RPM "Version" from RPM "Release"
|
# RPM "Version" from RPM "Release"
|
||||||
string(REPLACE "-" "_" CPACK_RPM_PACKAGE_VERSION ${CPACK_RPM_PACKAGE_VERSION})
|
string(REPLACE "-" "_" CPACK_RPM_PACKAGE_VERSION ${CPACK_RPM_PACKAGE_VERSION})
|
||||||
|
|
||||||
# CPACK_RPM_PACKAGE_ARCHITECTURE (optional)
|
# CPACK_RPM_PACKAGE_ARCHITECTURE (mandatory)
|
||||||
if(CPACK_RPM_PACKAGE_ARCHITECTURE)
|
if(NOT CPACK_RPM_PACKAGE_ARCHITECTURE)
|
||||||
set(TMP_RPM_BUILDARCH "Buildarch: ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
|
execute_process(COMMAND uname "-m"
|
||||||
|
OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
else()
|
||||||
if(CPACK_RPM_PACKAGE_DEBUG)
|
if(CPACK_RPM_PACKAGE_DEBUG)
|
||||||
message("CPackRPM:Debug: using user-specified build arch = ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
|
message("CPackRPM:Debug: using user-specified build arch = ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_CPACK_RPM_PACKAGE_ARCHITECTURE ${CPACK_RPM_PACKAGE_ARCHITECTURE})
|
||||||
|
|
||||||
|
#prefer component architecture
|
||||||
|
if(CPACK_RPM_PACKAGE_COMPONENT)
|
||||||
|
if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_ARCHITECTURE)
|
||||||
|
set(_CPACK_RPM_PACKAGE_ARCHITECTURE ${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_ARCHITECTURE})
|
||||||
|
if(CPACK_RPM_PACKAGE_DEBUG)
|
||||||
|
message("CPackRPM:Debug: using component build arch = ${_CPACK_RPM_PACKAGE_ARCHITECTURE}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(${_CPACK_RPM_PACKAGE_ARCHITECTURE} STREQUAL "noarch")
|
||||||
|
set(TMP_RPM_BUILDARCH "Buildarch: ${_CPACK_RPM_PACKAGE_ARCHITECTURE}")
|
||||||
else()
|
else()
|
||||||
set(TMP_RPM_BUILDARCH "")
|
set(TMP_RPM_BUILDARCH "")
|
||||||
endif()
|
endif()
|
||||||
|
@ -934,7 +953,7 @@ file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SOURCES)
|
||||||
file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SPECS)
|
file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SPECS)
|
||||||
file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SRPMS)
|
file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SRPMS)
|
||||||
|
|
||||||
#set(CPACK_RPM_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}-${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
|
#set(CPACK_RPM_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}-${_CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
|
||||||
set(CPACK_RPM_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}")
|
set(CPACK_RPM_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}")
|
||||||
# it seems rpmbuild can't handle spaces in the path
|
# it seems rpmbuild can't handle spaces in the path
|
||||||
# neither escaping (as below) nor putting quotes around the path seem to help
|
# neither escaping (as below) nor putting quotes around the path seem to help
|
||||||
|
@ -1282,6 +1301,7 @@ if(RPMBUILD_EXECUTABLE)
|
||||||
COMMAND "${RPMBUILD_EXECUTABLE}" -bb
|
COMMAND "${RPMBUILD_EXECUTABLE}" -bb
|
||||||
--define "_topdir ${CPACK_RPM_DIRECTORY}"
|
--define "_topdir ${CPACK_RPM_DIRECTORY}"
|
||||||
--buildroot "${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}"
|
--buildroot "${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}"
|
||||||
|
--target "${_CPACK_RPM_PACKAGE_ARCHITECTURE}"
|
||||||
"${CPACK_RPM_BINARY_SPECFILE}"
|
"${CPACK_RPM_BINARY_SPECFILE}"
|
||||||
WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}"
|
WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}"
|
||||||
RESULT_VARIABLE CPACK_RPMBUILD_EXEC_RESULT
|
RESULT_VARIABLE CPACK_RPMBUILD_EXEC_RESULT
|
||||||
|
|
|
@ -11,6 +11,12 @@ if(CPACK_GENERATOR MATCHES "RPM")
|
||||||
set(CPACK_RPM_COMPONENT_INSTALL "ON")
|
set(CPACK_RPM_COMPONENT_INSTALL "ON")
|
||||||
set(CPACK_RPM_applications_PACKAGE_REQUIRES "mylib-libraries")
|
set(CPACK_RPM_applications_PACKAGE_REQUIRES "mylib-libraries")
|
||||||
|
|
||||||
|
# test a "noarch" rpm
|
||||||
|
set(CPACK_RPM_headers_PACKAGE_ARCHITECTURE "noarch")
|
||||||
|
|
||||||
|
# test cross-built rpm
|
||||||
|
set(CPACK_RPM_applications_PACKAGE_ARCHITECTURE "armv7hf")
|
||||||
|
|
||||||
# test package summary override
|
# test package summary override
|
||||||
set(CPACK_RPM_PACKAGE_SUMMARY "default summary")
|
set(CPACK_RPM_PACKAGE_SUMMARY "default summary")
|
||||||
set(CPACK_RPM_libraries_PACKAGE_SUMMARY "libraries summary")
|
set(CPACK_RPM_libraries_PACKAGE_SUMMARY "libraries summary")
|
||||||
|
|
|
@ -161,21 +161,25 @@ if(CPackGen MATCHES "RPM")
|
||||||
set(check_file_match_expected_summary ".*${CPACK_RPM_libraries_PACKAGE_SUMMARY}.*")
|
set(check_file_match_expected_summary ".*${CPACK_RPM_libraries_PACKAGE_SUMMARY}.*")
|
||||||
set(check_file_match_expected_description ".*${CPACK_RPM_libraries_PACKAGE_DESCRIPTION}.*")
|
set(check_file_match_expected_description ".*${CPACK_RPM_libraries_PACKAGE_DESCRIPTION}.*")
|
||||||
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
||||||
|
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_applications_PACKAGE_ARCHITECTURE}")
|
||||||
set(spec_regex "*libraries*")
|
set(spec_regex "*libraries*")
|
||||||
elseif(check_file_headers_match)
|
elseif(check_file_headers_match)
|
||||||
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
||||||
set(check_file_match_expected_description ".*${CPACK_COMPONENT_HEADERS_DESCRIPTION}.*")
|
set(check_file_match_expected_description ".*${CPACK_COMPONENT_HEADERS_DESCRIPTION}.*")
|
||||||
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
|
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_libraries_PACKAGE_ARCHITECTURE}")
|
||||||
set(spec_regex "*headers*")
|
set(spec_regex "*headers*")
|
||||||
elseif(check_file_applications_match)
|
elseif(check_file_applications_match)
|
||||||
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
||||||
set(check_file_match_expected_description ".*${CPACK_COMPONENT_APPLICATIONS_DESCRIPTION}.*")
|
set(check_file_match_expected_description ".*${CPACK_COMPONENT_APPLICATIONS_DESCRIPTION}.*")
|
||||||
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
||||||
|
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_headers_PACKAGE_ARCHITECTURE}")
|
||||||
set(spec_regex "*applications*")
|
set(spec_regex "*applications*")
|
||||||
elseif(check_file_Unspecified_match)
|
elseif(check_file_Unspecified_match)
|
||||||
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
||||||
set(check_file_match_expected_description ".*DESCRIPTION.*")
|
set(check_file_match_expected_description ".*DESCRIPTION.*")
|
||||||
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
||||||
|
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_Unspecified_PACKAGE_ARCHITECTURE}")
|
||||||
set(spec_regex "*Unspecified*")
|
set(spec_regex "*Unspecified*")
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "error: unexpected rpm package '${check_file}'")
|
message(FATAL_ERROR "error: unexpected rpm package '${check_file}'")
|
||||||
|
@ -204,6 +208,10 @@ if(CPackGen MATCHES "RPM")
|
||||||
|
|
||||||
message(FATAL_ERROR "error: '${check_file}' rpm package relocation path does not match expected value - regex '${check_file_match_expected_relocation_path}'; RPM output: '${check_file_content}'; generated spec file: '${spec_file_content}'")
|
message(FATAL_ERROR "error: '${check_file}' rpm package relocation path does not match expected value - regex '${check_file_match_expected_relocation_path}'; RPM output: '${check_file_content}'; generated spec file: '${spec_file_content}'")
|
||||||
endif()
|
endif()
|
||||||
|
string(REGEX MATCH ${check_file_match_expected_architecture} check_file_match_architecture ${check_file_content})
|
||||||
|
if (NOT check_file_match_architecture)
|
||||||
|
message(FATAL_ERROR "error: '${check_file}' Architecture does not match expected value - '${check_file_match_expected_architecture}'; RPM output: '${check_file_content}'; generated spec file: '${spec_file_content}'")
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
elseif(${CPackComponentWay} STREQUAL "IgnoreGroup")
|
elseif(${CPackComponentWay} STREQUAL "IgnoreGroup")
|
||||||
endif()
|
endif()
|
||||||
|
|
Loading…
Reference in New Issue