Created
March 29, 2019 18:29
-
-
Save shepting/703b1eda5a4784dfd9ecb4879626bd1f to your computer and use it in GitHub Desktop.
iOS 12 Buck rpath Patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
wrap | |
ios12 rpath buck patch | |
diff --git a/src/com/facebook/buck/features/apple/project/ProjectGenerator.java b/src/com/facebook/buck/features/apple/project/ProjectGenerator.java | |
index 57bb4eb810..93e7e93d1e 100644 | |
--- a/src/com/facebook/buck/features/apple/project/ProjectGenerator.java | |
+++ b/src/com/facebook/buck/features/apple/project/ProjectGenerator.java | |
@@ -199,6 +199,7 @@ import java.util.Collections; | |
import java.util.EnumSet; | |
import java.util.HashMap; | |
import java.util.HashSet; | |
+import java.util.LinkedHashSet; | |
import java.util.List; | |
import java.util.Map; | |
import java.util.Objects; | |
@@ -2319,8 +2320,8 @@ public class ProjectGenerator { | |
frameworkSearchPaths.add("$BUILT_PRODUCTS_DIR"); | |
HashSet<String> librarySearchPaths = new HashSet<>(); | |
librarySearchPaths.add("$BUILT_PRODUCTS_DIR"); | |
- HashSet<String> iOSLdRunpathSearchPaths = new HashSet<>(); | |
- HashSet<String> macOSLdRunpathSearchPaths = new HashSet<>(); | |
+ HashSet<String> iOSLdRunpathSearchPaths = new LinkedHashSet<>(); | |
+ HashSet<String> macOSLdRunpathSearchPaths = new LinkedHashSet<>(); | |
FluentIterable<TargetNode<?>> depTargetNodes = collectRecursiveLibraryDepTargets(node); | |
ImmutableSet<PBXFileReference> swiftDeps = | |
@@ -2412,8 +2413,10 @@ public class ProjectGenerator { | |
.getParent()); | |
if (prebuilt.getConstructorArg().getPreferredLinkage() != STATIC) { | |
// Frameworks that are copied into the binary. | |
+ iOSLdRunpathSearchPaths.add("/usr/lib/swift"); | |
iOSLdRunpathSearchPaths.add("@loader_path/Frameworks"); | |
iOSLdRunpathSearchPaths.add("@executable_path/Frameworks"); | |
+ macOSLdRunpathSearchPaths.add("/usr/lib/swift"); | |
macOSLdRunpathSearchPaths.add("@loader_path/../Frameworks"); | |
macOSLdRunpathSearchPaths.add("@executable_path/../Frameworks"); | |
} | |
@@ -2433,8 +2436,10 @@ public class ProjectGenerator { | |
} | |
if (swiftDeps.size() > 0 || projGenerationStateCache.targetContainsSwiftSourceCode(node)) { | |
+ iOSLdRunpathSearchPaths.add("/usr/lib/swift"); | |
iOSLdRunpathSearchPaths.add("@executable_path/Frameworks"); | |
iOSLdRunpathSearchPaths.add("@loader_path/Frameworks"); | |
+ macOSLdRunpathSearchPaths.add("/usr/lib/swift"); | |
macOSLdRunpathSearchPaths.add("@executable_path/../Frameworks"); | |
macOSLdRunpathSearchPaths.add("@loader_path/../Frameworks"); | |
} | |
diff --git a/src/com/facebook/buck/swift/toolchain/impl/SwiftPlatformFactory.java b/src/com/facebook/buck/swift/toolchain/impl/SwiftPlatformFactory.java | |
index a6022342b3..4215a89bcf 100644 | |
--- a/src/com/facebook/buck/swift/toolchain/impl/SwiftPlatformFactory.java | |
+++ b/src/com/facebook/buck/swift/toolchain/impl/SwiftPlatformFactory.java | |
@@ -62,6 +62,8 @@ public class SwiftPlatformFactory { | |
} | |
return ImmutableList.of( | |
- Paths.get("@executable_path", "Frameworks"), Paths.get("@loader_path", "Frameworks")); | |
+ Paths.get("/usr/lib/swift"), | |
+ Paths.get("@executable_path", "Frameworks"), | |
+ Paths.get("@loader_path", "Frameworks")); | |
} | |
} | |
diff --git a/test/com/facebook/buck/features/apple/project/ProjectGeneratorTest.java b/test/com/facebook/buck/features/apple/project/ProjectGeneratorTest.java | |
index 2e7aa56ee4..93d3676cff 100644 | |
--- a/test/com/facebook/buck/features/apple/project/ProjectGeneratorTest.java | |
+++ b/test/com/facebook/buck/features/apple/project/ProjectGeneratorTest.java | |
@@ -6059,13 +6059,13 @@ public class ProjectGeneratorTest { | |
ImmutableMap<String, String> buildSettings = getBuildSettings(binBuildTarget, target, "Debug"); | |
assertThat( | |
buildSettings.get("LD_RUNPATH_SEARCH_PATHS[sdk=iphoneos*]"), | |
- equalTo("$(inherited) @executable_path/Frameworks @loader_path/Frameworks")); | |
+ equalTo("$(inherited) /usr/lib/swift @executable_path/Frameworks @loader_path/Frameworks")); | |
assertThat( | |
buildSettings.get("LD_RUNPATH_SEARCH_PATHS[sdk=iphonesimulator*]"), | |
- equalTo("$(inherited) @executable_path/Frameworks @loader_path/Frameworks")); | |
+ equalTo("$(inherited) /usr/lib/swift @executable_path/Frameworks @loader_path/Frameworks")); | |
assertThat( | |
buildSettings.get("LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]"), | |
- equalTo("$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks")); | |
+ equalTo("$(inherited) /usr/lib/swift @executable_path/../Frameworks @loader_path/../Frameworks")); | |
} | |
@Test | |
@@ -6097,13 +6097,13 @@ public class ProjectGeneratorTest { | |
containsString("$DT_TOOLCHAIN_DIR/usr/lib/swift/$PLATFORM_NAME")); | |
assertThat( | |
buildSettings.get("LD_RUNPATH_SEARCH_PATHS[sdk=iphoneos*]"), | |
- equalTo("$(inherited) @executable_path/Frameworks @loader_path/Frameworks")); | |
+ equalTo("$(inherited) /usr/lib/swift @executable_path/Frameworks @loader_path/Frameworks")); | |
assertThat( | |
buildSettings.get("LD_RUNPATH_SEARCH_PATHS[sdk=iphonesimulator*]"), | |
- equalTo("$(inherited) @executable_path/Frameworks @loader_path/Frameworks")); | |
+ equalTo("$(inherited) /usr/lib/swift @executable_path/Frameworks @loader_path/Frameworks")); | |
assertThat( | |
buildSettings.get("LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]"), | |
- equalTo("$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks")); | |
+ equalTo("$(inherited) /usr/lib/swift @executable_path/../Frameworks @loader_path/../Frameworks")); | |
} | |
@Test |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment