aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-28 08:51:32 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-28 08:53:10 -0700
commitf6d2881825f8b42331263abfa47da9ebe5f951ba (patch)
treee0d6ee28af39489e3a865ced2a7dc1f7dd60ca13 /src/main/java/com/google
parent3a61eb654b2ee4da0a1a749ec48adbc06aa42aee (diff)
Make deprecated ObjcProvider fields return empty sets when --incompatible_disable_objc_provider_resources is true.
This involves propagating SkylarkSemantics to all ObjcProvider constructors. RELNOTES: Introduce --incompatible_disable_objc_provider_resources to turn off all resource-related fields of the Objc provider. PiperOrigin-RevId: 190778491
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java5
12 files changed, 44 insertions, 21 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
index 4150d8ec52..9b6c5ae54c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
@@ -179,7 +179,8 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
outputArtifact,
platform);
- ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder();
+ ObjcProvider.Builder objcProviderBuilder =
+ new ObjcProvider.Builder(ruleContext.getAnalysisEnvironment().getSkylarkSemantics());
for (DependencySpecificConfiguration dependencySpecificConfiguration :
dependencySpecificConfigurations) {
objcProviderBuilder.addTransitiveAndPropagate(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
index 921f398560..b4c07e32fd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
@@ -377,7 +377,7 @@ public class AppleSkylarkCommon {
Environment environment) {
boolean disableObjcResourceKeys =
environment.getSemantics().incompatibleDisableObjcProviderResources();
- ObjcProvider.Builder resultBuilder = new ObjcProvider.Builder();
+ ObjcProvider.Builder resultBuilder = new ObjcProvider.Builder(environment.getSemantics());
if (usesSwift) {
resultBuilder.add(ObjcProvider.FLAG, ObjcProvider.Flag.USES_SWIFT);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
index 98b764baff..30f6c1e428 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
@@ -102,7 +102,8 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
NestedSetBuilder.<Artifact>stableOrder()
.add(ruleIntermediateArtifacts.combinedArchitectureArchive());
- ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder();
+ ObjcProvider.Builder objcProviderBuilder =
+ new ObjcProvider.Builder(ruleContext.getAnalysisEnvironment().getSkylarkSemantics());
ImmutableListMultimap<BuildConfiguration, ObjcProtoProvider> objcProtoProvidersMap =
ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT,
@@ -209,7 +210,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
BuildConfiguration buildConfiguration,
IntermediateArtifacts intermediateArtifacts,
List<ConfiguredTargetAndData> propagatedConfigredTargetAndTargetDeps,
- Optional<ObjcProvider> protosObjcProvider) {
+ Optional<ObjcProvider> protosObjcProvider) throws InterruptedException {
CompilationArtifacts compilationArtifacts = new CompilationArtifacts.Builder().build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java
index e72b47c3a8..184d4e4ba4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java
@@ -126,7 +126,8 @@ public class AppleStubBinary implements RuleConfiguredTargetFactory {
RuleConfiguredTargetBuilder targetBuilder =
ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build());
- ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder();
+ ObjcProvider.Builder objcProviderBuilder =
+ new ObjcProvider.Builder(ruleContext.getAnalysisEnvironment().getSkylarkSemantics());
for (ObjcProvider depProvider : configurationToDepsMap.values()) {
objcProviderBuilder.addTransitiveAndPropagate(depProvider);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 3870556daa..7f325a3016 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -787,7 +787,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
*/
static ObjcCommon common(RuleContext ruleContext, Iterable<Artifact> transpiledSources,
Iterable<Artifact> transpiledHeaders, Iterable<PathFragment> headerSearchPaths,
- Iterable<Attribute> dependentAttributes) {
+ Iterable<Attribute> dependentAttributes) throws InterruptedException {
ObjcCommon.Builder builder = new ObjcCommon.Builder(ruleContext);
IntermediateArtifacts intermediateArtifacts =
ObjcRuleClasses.j2objcIntermediateArtifacts(ruleContext);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
index 83a35b91bf..b761f53fdc 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
@@ -47,7 +47,7 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory {
public static final ImmutableList<String> J2OBJC_SUPPORTED_RULES =
ImmutableList.of("java_import", "java_library", "proto_library");
- private ObjcCommon common(RuleContext ruleContext) {
+ private ObjcCommon common(RuleContext ruleContext) throws InterruptedException {
return new ObjcCommon.Builder(ruleContext)
.setCompilationAttributes(
CompilationAttributes.Builder.fromRuleContext(ruleContext).build())
@@ -75,7 +75,7 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory {
Iterable<ObjcProvider> jreDeps =
ruleContext.getPrerequisites("jre_deps", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR);
ObjcProvider.Builder objcProviderBuilder =
- new ObjcProvider.Builder()
+ new ObjcProvider.Builder(ruleContext.getAnalysisEnvironment().getSkylarkSemantics())
.addTransitiveAndPropagate(jreDeps)
.addTransitiveAndPropagate(
ruleContext.getPrerequisites(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
index fa1662265d..cac4fdbe49 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
@@ -301,7 +301,7 @@ public class MultiArchBinarySupport {
IntermediateArtifacts intermediateArtifacts,
List<ConfiguredTargetAndData> propagatedConfiguredTargetAndDataDeps,
List<ObjcProvider> nonPropagatedObjcDeps,
- Iterable<ObjcProvider> additionalDepProviders) {
+ Iterable<ObjcProvider> additionalDepProviders) throws InterruptedException {
ObjcCommon.Builder commonBuilder =
new ObjcCommon.Builder(ruleContext, buildConfiguration)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java
index 3088b5df6b..f795cf94a9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java
@@ -81,9 +81,10 @@ public class ObjcBundleLibrary implements RuleConfiguredTargetFactory {
return null;
}
- ObjcProvider nestedBundleProvider = new ObjcProvider.Builder()
- .add(NESTED_BUNDLE, bundling)
- .build();
+ ObjcProvider nestedBundleProvider =
+ new ObjcProvider.Builder(ruleContext.getAnalysisEnvironment().getSkylarkSemantics())
+ .add(NESTED_BUNDLE, bundling)
+ .build();
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
.addNativeDeclaredProvider(nestedBundleProvider)
@@ -119,7 +120,7 @@ public class ObjcBundleLibrary implements RuleConfiguredTargetFactory {
.build();
}
- private ObjcCommon common(RuleContext ruleContext) {
+ private ObjcCommon common(RuleContext ruleContext) throws InterruptedException {
return new ObjcCommon.Builder(ruleContext)
.setResourceAttributes(new ResourceAttributes(ruleContext))
.addDepObjcProviders(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index bb20db497c..1b1a89d527 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -73,6 +73,7 @@ import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
import com.google.devtools.build.lib.rules.cpp.CppFileTypes;
import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
+import com.google.devtools.build.lib.syntax.SkylarkSemantics;
import com.google.devtools.build.lib.util.FileType;
import com.google.devtools.build.lib.util.FileTypeSet;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -143,6 +144,7 @@ public final class ObjcCommon {
static class Builder {
private final RuleContext context;
+ private final SkylarkSemantics semantics;
private final BuildConfiguration buildConfiguration;
private Optional<CompilationAttributes> compilationAttributes = Optional.absent();
private Optional<ResourceAttributes> resourceAttributes = Optional.absent();
@@ -172,7 +174,7 @@ public final class ObjcCommon {
* Builder for {@link ObjcCommon} obtaining both attribute data and configuration data from
* the given rule context.
*/
- Builder(RuleContext context) {
+ Builder(RuleContext context) throws InterruptedException {
this(context, context.getConfiguration());
}
@@ -181,8 +183,10 @@ public final class ObjcCommon {
* configuration data from the given configuration object for use in situations where a single
* target's outputs are under multiple configurations.
*/
- Builder(RuleContext context, BuildConfiguration buildConfiguration) {
+ Builder(RuleContext context, BuildConfiguration buildConfiguration)
+ throws InterruptedException {
this.context = Preconditions.checkNotNull(context);
+ this.semantics = context.getAnalysisEnvironment().getSkylarkSemantics();
this.buildConfiguration = Preconditions.checkNotNull(buildConfiguration);
}
@@ -394,7 +398,7 @@ public final class ObjcCommon {
Iterable<BundleableFile> bundleImports = BundleableFile.bundleImportsFromRule(context);
ObjcProvider.Builder objcProvider =
- new ObjcProvider.Builder()
+ new ObjcProvider.Builder(semantics)
.addAll(IMPORTED_LIBRARY, extraImportLibraries)
.addAll(BUNDLE_FILE, bundleImports)
.addAll(SDK_FRAMEWORK, extraSdkFrameworks)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
index 23b468476b..323de180cd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
@@ -39,7 +39,7 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
/**
* Constructs an {@link ObjcCommon} instance based on the attributes of the given rule context.
*/
- private ObjcCommon common(RuleContext ruleContext) {
+ private ObjcCommon common(RuleContext ruleContext) throws InterruptedException {
return new ObjcCommon.Builder(ruleContext)
.setCompilationAttributes(
CompilationAttributes.Builder.fromRuleContext(ruleContext).build())
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 1cc56aeefc..648be7e6be 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
@@ -42,6 +42,7 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.EvalUtils;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
+import com.google.devtools.build.lib.syntax.SkylarkSemantics;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.HashMap;
import java.util.HashSet;
@@ -364,6 +365,7 @@ public final class ObjcProvider extends NativeInfo {
HAS_WATCH2_EXTENSION,
}
+ private final SkylarkSemantics semantics;
private final ImmutableMap<Key<?>, NestedSet<?>> items;
// Items which should not be propagated to dependents.
@@ -832,10 +834,12 @@ public final class ObjcProvider extends NativeInfo {
public static final NativeProvider<ObjcProvider> SKYLARK_CONSTRUCTOR = new Constructor();
private ObjcProvider(
+ SkylarkSemantics semantics,
ImmutableMap<Key<?>, NestedSet<?>> items,
ImmutableMap<Key<?>, NestedSet<?>> nonPropagatedItems,
ImmutableMap<Key<?>, NestedSet<?>> strictDependencyItems) {
super(SKYLARK_CONSTRUCTOR);
+ this.semantics = semantics;
this.items = Preconditions.checkNotNull(items);
this.nonPropagatedItems = Preconditions.checkNotNull(nonPropagatedItems);
this.strictDependencyItems = Preconditions.checkNotNull(strictDependencyItems);
@@ -848,6 +852,10 @@ public final class ObjcProvider extends NativeInfo {
public <E> NestedSet<E> get(Key<E> key) {
Preconditions.checkNotNull(key);
NestedSetBuilder<E> builder = new NestedSetBuilder<>(key.order);
+ if (semantics.incompatibleDisableObjcProviderResources()
+ && ObjcProvider.isDeprecatedResourceKey(key)) {
+ return builder.build();
+ }
if (strictDependencyItems.containsKey(key)) {
builder.addTransitive((NestedSet<E>) strictDependencyItems.get(key));
}
@@ -959,7 +967,7 @@ public final class ObjcProvider extends NativeInfo {
avoidLibrariesSet.add(libraryToAvoid.getRunfilesPath());
}
}
- ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder();
+ ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder(semantics);
for (Key<?> key : getValuedKeys()) {
if (key == CC_LIBRARY) {
addTransitiveAndFilter(objcProviderBuilder, CC_LIBRARY,
@@ -1075,10 +1083,15 @@ public final class ObjcProvider extends NativeInfo {
* several transitive dependencies.
*/
public static final class Builder {
+ private final SkylarkSemantics skylarkSemantics;
private final Map<Key<?>, NestedSetBuilder<?>> items = new HashMap<>();
private final Map<Key<?>, NestedSetBuilder<?>> nonPropagatedItems = new HashMap<>();
private final Map<Key<?>, NestedSetBuilder<?>> strictDependencyItems = new HashMap<>();
+ public Builder(SkylarkSemantics semantics) {
+ this.skylarkSemantics = semantics;
+ }
+
private static void maybeAddEmptyBuilder(Map<Key<?>, NestedSetBuilder<?>> set, Key<?> key) {
set.computeIfAbsent(key, k -> new NestedSetBuilder<>(k.order));
}
@@ -1328,7 +1341,8 @@ public final class ObjcProvider extends NativeInfo {
strictDependencyBuilder.put(typeEntry.getKey(), typeEntry.getValue().build());
}
- return new ObjcProvider(propagatedBuilder.build(), nonPropagatedBuilder.build(),
+ return new ObjcProvider(skylarkSemantics,
+ propagatedBuilder.build(), nonPropagatedBuilder.build(),
strictDependencyBuilder.build());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
index 3ae8e83d10..89de32a4e6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
@@ -253,7 +253,7 @@ final class ProtobufSupport {
* Returns the ObjcProvider for this target, or Optional.absent() if there were no protos to
* generate.
*/
- public Optional<ObjcProvider> getObjcProvider() {
+ public Optional<ObjcProvider> getObjcProvider() throws InterruptedException {
if (inputsToOutputsMap.isEmpty()) {
return Optional.absent();
}
@@ -398,7 +398,8 @@ final class ProtobufSupport {
}
private ObjcCommon getCommon(
- IntermediateArtifacts intermediateArtifacts, CompilationArtifacts compilationArtifacts) {
+ IntermediateArtifacts intermediateArtifacts, CompilationArtifacts compilationArtifacts)
+ throws InterruptedException {
ObjcCommon.Builder commonBuilder =
new ObjcCommon.Builder(ruleContext)
.setIntermediateArtifacts(intermediateArtifacts)