Procházet zdrojové kódy

CPack/RPM omit unsupported tags

Omit tags that are not supported by provided rpmbuild
as some tags get added/removed in later versions of
the tool.

Closes: #13423
Alexander Adam před 9 roky
rodič
revize
d8e83ab979
1 změnil soubory, kde provedl 20 přidání a 0 odebrání
  1. 20 0
      Modules/CPackRPM.cmake

+ 20 - 0
Modules/CPackRPM.cmake

@@ -1844,6 +1844,12 @@ function(cpack_rpm_generate_package)
     set(CPACK_RPM_PACKAGE_RELOCATABLE FALSE) # disable relocatable option if building source RPM
     set(CPACK_RPM_PACKAGE_RELOCATABLE FALSE) # disable relocatable option if building source RPM
   endif()
   endif()
 
 
+  execute_process(
+    COMMAND "${RPMBUILD_EXECUTABLE}" --querytags
+    OUTPUT_VARIABLE RPMBUILD_TAG_LIST
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+  string(REPLACE "\n" ";" RPMBUILD_TAG_LIST "${RPMBUILD_TAG_LIST}")
+
   # Check if additional fields for RPM spec header are given
   # Check if additional fields for RPM spec header are given
   # There may be some COMPONENT specific variables as well
   # There may be some COMPONENT specific variables as well
   # If component specific var is not provided we use the global one
   # If component specific var is not provided we use the global one
@@ -1852,6 +1858,7 @@ function(cpack_rpm_generate_package)
     if(CPACK_RPM_PACKAGE_DEBUG)
     if(CPACK_RPM_PACKAGE_DEBUG)
       message("CPackRPM:Debug: processing ${_RPM_SPEC_HEADER}")
       message("CPackRPM:Debug: processing ${_RPM_SPEC_HEADER}")
     endif()
     endif()
+
     if(CPACK_RPM_PACKAGE_COMPONENT)
     if(CPACK_RPM_PACKAGE_COMPONENT)
       cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}"
       cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}"
         "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_${_RPM_SPEC_HEADER}"
         "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_${_RPM_SPEC_HEADER}"
@@ -1859,9 +1866,20 @@ function(cpack_rpm_generate_package)
     endif()
     endif()
 
 
     if(DEFINED CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER})
     if(DEFINED CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER})
+      cmake_policy(PUSH)
+        cmake_policy(SET CMP0057 NEW)
+        if(NOT _RPM_SPEC_HEADER IN_LIST RPMBUILD_TAG_LIST)
+          cmake_policy(POP)
+          message(AUTHOR_WARNING "CPackRPM:Warning: ${_RPM_SPEC_HEADER} not "
+              "supported in provided rpmbuild. Tag will not be used.")
+          continue()
+        endif()
+      cmake_policy(POP)
+
       if(CPACK_RPM_PACKAGE_DEBUG)
       if(CPACK_RPM_PACKAGE_DEBUG)
         message("CPackRPM:Debug: using CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}")
         message("CPackRPM:Debug: using CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}")
       endif()
       endif()
+
       set(CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP ${CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}})
       set(CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP ${CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}})
     endif()
     endif()
 
 
@@ -2416,6 +2434,7 @@ Vendor:         \@CPACK_RPM_PACKAGE_VENDOR\@
 \@TMP_RPM_PROVIDES\@
 \@TMP_RPM_PROVIDES\@
 \@TMP_RPM_OBSOLETES\@
 \@TMP_RPM_OBSOLETES\@
 \@TMP_RPM_CONFLICTS\@
 \@TMP_RPM_CONFLICTS\@
+\@TMP_RPM_SUGGESTS\@
 \@TMP_RPM_AUTOPROV\@
 \@TMP_RPM_AUTOPROV\@
 \@TMP_RPM_AUTOREQ\@
 \@TMP_RPM_AUTOREQ\@
 \@TMP_RPM_AUTOREQPROV\@
 \@TMP_RPM_AUTOREQPROV\@
@@ -2470,6 +2489,7 @@ Vendor:         \@CPACK_RPM_PACKAGE_VENDOR\@
 \@TMP_RPM_PROVIDES\@
 \@TMP_RPM_PROVIDES\@
 \@TMP_RPM_OBSOLETES\@
 \@TMP_RPM_OBSOLETES\@
 \@TMP_RPM_CONFLICTS\@
 \@TMP_RPM_CONFLICTS\@
+\@TMP_RPM_SUGGESTS\@
 \@TMP_RPM_AUTOPROV\@
 \@TMP_RPM_AUTOPROV\@
 \@TMP_RPM_AUTOREQ\@
 \@TMP_RPM_AUTOREQ\@
 \@TMP_RPM_AUTOREQPROV\@
 \@TMP_RPM_AUTOREQPROV\@