Skip to content

Instantly share code, notes, and snippets.

@shepting
Created March 29, 2019 18:29
Show Gist options
  • Save shepting/703b1eda5a4784dfd9ecb4879626bd1f to your computer and use it in GitHub Desktop.
Save shepting/703b1eda5a4784dfd9ecb4879626bd1f to your computer and use it in GitHub Desktop.
iOS 12 Buck rpath Patch
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