Browse Source

Make bundle items writable before fixup (#9284)

This ensures that any bundle items are made user writable before
any attempt is made to alter them using install_name_tool. This is
because MacPorts/Fink/Homebrew don't install libraries as writable.
This fix is needed to allow fixup_bundle_item to work correctly
when ingesting libraries installed by these package managers.
Mike McQuaid 15 năm trước cách đây
mục cha
commit
88fed668b1
1 tập tin đã thay đổi với 7 bổ sung0 xóa
  1. 7 0
      Modules/BundleUtilities.cmake

+ 7 - 0
Modules/BundleUtilities.cmake

@@ -118,6 +118,9 @@
 # Accumulate changes in a local variable and make *one* call to
 # install_name_tool at the end of the function with all the changes at once.
 #
+# If the BU_CHMOD_BUNDLE_ITEMS variable is set then bundle items will be
+# marked writable before install_name_tool tries to change them.
+#
 #  VERIFY_BUNDLE_PREREQUISITES(<bundle> <result_var> <info_var>)
 # Verifies that the sum of all prerequisites of all files inside the bundle
 # are contained within the bundle or are "system" libraries, presumed to exist
@@ -541,6 +544,10 @@ function(fixup_bundle_item resolved_embedded_item exepath dirs)
     endif(NOT "${${rkey}_EMBEDDED_ITEM}" STREQUAL "")
   endforeach(pr)
 
+  if(BU_CHMOD_BUNDLE_ITEMS)
+    execute_process(COMMAND chmod u+w "${resolved_embedded_item}")
+  endif()
+
   # Change this item's id and all of its references in one call
   # to install_name_tool:
   #