| 
					
				 | 
			
			
				@@ -691,6 +691,22 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #  are the same as for :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #  Note that <compName> must be in upper-case. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# .. variable:: CPACK_RPM_INSTALL_WITH_EXEC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  force execute permissions on programs and shared libraries 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  * Mandatory : NO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  * Default   : - (system default) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  Force set owner, group and world execute permissions on programs and shared 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  libraries. This can be used for creating valid rpm packages on systems such 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  as Debian where shared libraries do not have execute permissions set. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# .. note:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  Programs and shared libraries without execute permissions are ignored during 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  separation of debug symbols from the binary for debuginfo packages. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Packaging of Symbolic Links 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -751,7 +767,8 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # .. note:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #  Packages generated from packages without binary files, with binary files but 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#  without execute permissions or without debug symbols will be empty. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  without execute permissions or without debug symbols will cause packaging 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#  termination. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # .. variable:: CPACK_BUILD_SOURCE_DIRS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -939,6 +956,35 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Author: Eric Noulard with the help of Alexander Neundorf. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function(get_file_permissions FILE RETURN_VAR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  execute_process(COMMAND ls -l ${FILE} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          OUTPUT_VARIABLE permissions_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ERROR_QUIET 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          OUTPUT_STRIP_TRAILING_WHITESPACE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmake_policy(SET CMP0007 NEW) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  string(REPLACE " " ";" permissions_ "${permissions_}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  list(GET permissions_ 0 permissions_) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  unset(text_notation_) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  set(any_chars_ ".") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  foreach(PERMISSION_TYPE "OWNER" "GROUP" "WORLD") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(permissions_ MATCHES "${any_chars_}r.*") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      list(APPEND text_notation_ "${PERMISSION_TYPE}_READ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    string(APPEND any_chars_ ".") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(permissions_ MATCHES "${any_chars_}w.*") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      list(APPEND text_notation_ "${PERMISSION_TYPE}_WRITE") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    string(APPEND any_chars_ ".") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(permissions_ MATCHES "${any_chars_}x.*") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      list(APPEND text_notation_ "${PERMISSION_TYPE}_EXECUTE") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  endforeach() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  set(${RETURN_VAR} "${text_notation_}" PARENT_SCOPE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endfunction() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function(get_unix_permissions_octal_notation PERMISSIONS_VAR RETURN_VAR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   set(PERMISSIONS ${${PERMISSIONS_VAR}}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   list(LENGTH PERMISSIONS PERM_LEN_PRE) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1515,7 +1561,7 @@ function(cpack_rpm_debugsymbol_check INSTALL_FILES WORKING_DIR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     RESULT_VARIABLE OBJDUMP_EXEC_RESULT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     OUTPUT_VARIABLE OBJDUMP_OUT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ERROR_QUIET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    # Check that if the given file was executable or not 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # Check if the given file is an executable or not 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(NOT OBJDUMP_EXEC_RESULT) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       string(FIND "${OBJDUMP_OUT}" "debug" FIND_RESULT) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if(FIND_RESULT GREATER -1) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1560,6 +1606,31 @@ function(cpack_rpm_debugsymbol_check INSTALL_FILES WORKING_DIR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         message(WARNING "CPackRPM: File: ${F} does not contain debug symbols. They will possibly be missing from debuginfo package!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      get_file_permissions("${WORKING_DIR}/${F}" permissions_) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cmake_policy(SET CMP0057 NEW) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(NOT "USER_EXECUTE" IN_LIST permissions_ AND 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         NOT "GROUP_EXECUTE" IN_LIST permissions_ AND 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         NOT "WORLD_EXECUTE" IN_LIST permissions_) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(CPACK_RPM_INSTALL_WITH_EXEC) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          execute_process(COMMAND chmod a+x ${WORKING_DIR}/${F} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  RESULT_VARIABLE res_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ERROR_VARIABLE err_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  OUTPUT_QUIET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if(res_) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            message(FATAL_ERROR "CPackRPM: could not apply execute permissions " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              "requested by CPACK_RPM_INSTALL_WITH_EXEC variable on " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              "'${WORKING_DIR}/${F}'! Reason: '${err_}'") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          message(AUTHOR_WARNING "CPackRPM: File: ${WORKING_DIR}/${F} does not " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "have execute permissions. Debuginfo symbols will not be extracted" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "! Missing debuginfo may cause packaging failure. Consider setting " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "execute permissions or setting 'CPACK_RPM_INSTALL_WITH_EXEC' " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "variable.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   endforeach() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |