aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2017-07-31 21:40:57 +0200
committerGravatar Dmitry Lomov <dslomov@google.com>2017-08-01 12:21:56 +0200
commit091c330cb3d786cc5a68b9d8e6576ffc39bc9502 (patch)
tree20839c83702ca324238d7a5f188bdc134604ea75 /src/main/java/com/google/devtools/build
parent945171410960890311eac191fd5c87ecd3c1b9b8 (diff)
Automated rollback of commit 31dc6f1a281b0ae3690ea7be9c3ccc360fe22c10.
*** Reason for rollback *** Breaks some iOS Photos targets: [] *** Original change description *** Framework dependency subtraction uses runfiles path instead of full artifact path RELNOTES: None. PiperOrigin-RevId: 163732608
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java41
1 files changed, 11 insertions, 30 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index 2e0f05dd72..790854a4c8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -609,30 +609,27 @@ public final class ObjcProvider extends Info {
* @param avoidCcProviders cc providers which contain the dependency subtrees to subtract
*/
// TODO(b/19795062): Investigate subtraction generalized to NestedSet.
- @SuppressWarnings("unchecked")
public ObjcProvider subtractSubtrees(Iterable<ObjcProvider> avoidObjcProviders,
Iterable<CcLinkParamsProvider> avoidCcProviders) {
// LIBRARY and CC_LIBRARY need to be special cased for objc-cc interop.
- // A library which is a dependency of a cc_library may be present in all or any of
+ // A library which is a dependency of a cc_library may be present in all or any of
// three possible locations (and may be duplicated!):
// 1. ObjcProvider.LIBRARY
// 2. ObjcProvider.CC_LIBRARY
// 3. CcLinkParamsProvider->LibraryToLink->getArtifact()
// TODO(cpeyser): Clean up objc-cc interop.
- HashSet<PathFragment> avoidLibrariesSet = new HashSet<>();
+ HashSet<Artifact> avoidLibrariesSet = new HashSet<>();
for (CcLinkParamsProvider linkProvider : avoidCcProviders) {
NestedSet<LibraryToLink> librariesToLink =
linkProvider.getCcLinkParams(true, false).getLibraries();
for (LibraryToLink libraryToLink : librariesToLink.toList()) {
- avoidLibrariesSet.add(libraryToLink.getArtifact().getRunfilesPath());
+ avoidLibrariesSet.add(libraryToLink.getArtifact());
}
}
for (ObjcProvider avoidProvider : avoidObjcProviders) {
- for (Artifact ccLibrary : avoidProvider.getCcLibraries()) {
- avoidLibrariesSet.add(ccLibrary.getRunfilesPath());
- }
+ avoidLibrariesSet.addAll(avoidProvider.getCcLibraries());
for (Artifact libraryToAvoid : avoidProvider.getPropagable(LIBRARY)) {
- avoidLibrariesSet.add(libraryToAvoid.getRunfilesPath());
+ avoidLibrariesSet.add(libraryToAvoid);
}
}
ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder();
@@ -641,12 +638,10 @@ public final class ObjcProvider extends Info {
addTransitiveAndFilter(objcProviderBuilder, CC_LIBRARY,
ccLibraryNotYetLinked(avoidLibrariesSet));
} else if (key == LIBRARY) {
- addTransitiveAndFilter(objcProviderBuilder, LIBRARY, notContainedIn(avoidLibrariesSet));
+ addTransitiveAndFilter(objcProviderBuilder, LIBRARY,
+ notContainedIn(avoidLibrariesSet));
} else if (NON_SUBTRACTABLE_KEYS.contains(key)) {
addTransitiveAndAvoid(objcProviderBuilder, key, ImmutableList.<ObjcProvider>of());
- } else if (key.getType() == Artifact.class) {
- addTransitiveAndAvoidArtifacts(objcProviderBuilder, ((Key<Artifact>) key),
- avoidObjcProviders);
} else {
addTransitiveAndAvoid(objcProviderBuilder, key, avoidObjcProviders);
}
@@ -662,8 +657,8 @@ public final class ObjcProvider extends Info {
* return false
*/
private static Predicate<Artifact> notContainedIn(
- final HashSet<PathFragment> linkedLibraryArtifacts) {
- return libraryToLink -> !linkedLibraryArtifacts.contains(libraryToLink.getRunfilesPath());
+ final HashSet<Artifact> linkedLibraryArtifacts) {
+ return libraryToLink -> !linkedLibraryArtifacts.contains(libraryToLink);
}
/**
@@ -674,9 +669,8 @@ public final class ObjcProvider extends Info {
* predicate will return false
*/
private static Predicate<LibraryToLink> ccLibraryNotYetLinked(
- final HashSet<PathFragment> linkedLibraryArtifacts) {
- return libraryToLink -> !linkedLibraryArtifacts.contains(
- libraryToLink.getArtifact().getRunfilesPath());
+ final HashSet<Artifact> linkedLibraryArtifacts) {
+ return libraryToLink -> !linkedLibraryArtifacts.contains(libraryToLink.getArtifact());
}
@SuppressWarnings("unchecked")
@@ -700,19 +694,6 @@ public final class ObjcProvider extends Info {
}
}
- private void addTransitiveAndAvoidArtifacts(ObjcProvider.Builder objcProviderBuilder,
- Key<Artifact> key, Iterable<ObjcProvider> avoidProviders) {
- // Artifacts to avoid may be in a different configuration and thus a different
- // root directory, hence only the path fragment after the root directory is compared.
- HashSet<PathFragment> avoidPathsSet = new HashSet<>();
- for (ObjcProvider avoidProvider : avoidProviders) {
- for (Artifact artifact : avoidProvider.getPropagable(key)) {
- avoidPathsSet.add(artifact.getRunfilesPath());
- }
- }
- addTransitiveAndFilter(objcProviderBuilder, key, notContainedIn(avoidPathsSet));
- }
-
@SuppressWarnings("unchecked")
private <T> void addTransitiveAndAvoid(ObjcProvider.Builder objcProviderBuilder, Key<T> key,
Iterable<ObjcProvider> avoidProviders) {