aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfigProvider.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java124
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsInfo.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java48
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java2
26 files changed, 160 insertions, 110 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
index 9af9811a50..82c04c259e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
@@ -15,7 +15,6 @@ package com.google.devtools.build.lib.analysis;
import com.google.common.collect.ImmutableCollection;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Location;
@@ -62,8 +61,7 @@ public final class DefaultInfo extends NativeInfo {
RunfilesProvider runfilesProvider,
FileProvider fileProvider,
FilesToRunProvider filesToRunProvider) {
- // Fields map is not used here to prevent memory regression
- super(PROVIDER, ImmutableMap.<String, Object>of());
+ super(PROVIDER);
this.runfilesProvider = runfilesProvider;
this.fileProvider = fileProvider;
this.filesToRunProvider = filesToRunProvider;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
index f1c14234f1..9561c91229 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
@@ -126,7 +126,7 @@ public final class OutputGroupInfo extends NativeInfo
private final ImmutableMap<String, NestedSet<Artifact>> outputGroups;
public OutputGroupInfo(ImmutableMap<String, NestedSet<Artifact>> outputGroups) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR);
this.outputGroups = outputGroups;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java
index 4b3f2f44f7..c2661ad986 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.analysis.platform;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Location;
@@ -75,7 +74,7 @@ public class ConstraintSettingInfo extends NativeInfo {
@VisibleForSerialization
ConstraintSettingInfo(Label label, Location location) {
- super(PROVIDER, ImmutableMap.<String, Object>of("label", label), location);
+ super(PROVIDER, location);
this.label = label;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
index 84f3544428..3a00932a55 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.analysis.platform;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Location;
@@ -79,9 +78,6 @@ public class ConstraintValueInfo extends NativeInfo {
ConstraintValueInfo(ConstraintSettingInfo constraint, Label label, Location location) {
super(
SKYLARK_CONSTRUCTOR,
- ImmutableMap.<String, Object>of(
- "constraint", constraint,
- "label", label),
location);
this.constraint = constraint;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
index 3b3462d420..90c8217a0c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
@@ -113,9 +113,6 @@ public class PlatformInfo extends NativeInfo {
Location location) {
super(
SKYLARK_CONSTRUCTOR,
- ImmutableMap.<String, Object>of(
- "label", label,
- "constraints", constraints.values().asList()),
location);
this.label = label;
@@ -153,7 +150,7 @@ public class PlatformInfo extends NativeInfo {
structField = true
)
public Iterable<ConstraintValueInfo> constraints() {
- return constraints.values();
+ return constraints.values().asList();
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java
index 8b60872cea..63c3abf0a4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java
@@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.packages.NativeProvider;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import java.util.Map;
/**
@@ -33,7 +34,7 @@ public final class ExecutionInfo extends NativeInfo {
private final ImmutableMap<String, String> executionInfo;
public ExecutionInfo(Map<String, String> requirements) {
- super(PROVIDER, ImmutableMap.<String, Object>of("requirements", requirements));
+ super(PROVIDER);
this.executionInfo = ImmutableMap.copyOf(requirements);
}
@@ -42,6 +43,11 @@ public final class ExecutionInfo extends NativeInfo {
* platforms, etc. Rule tags, such as "requires-XXX", may also be added
* as keys to the map.
*/
+ @SkylarkCallable(
+ name = "requirements",
+ doc = "A dict indicating special execution requirements, such as hardware platforms.",
+ structField = true
+ )
public ImmutableMap<String, String> getExecutionInfo() {
return executionInfo;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java
index 013ff33bb6..858f46adeb 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java
@@ -15,10 +15,10 @@
package com.google.devtools.build.lib.analysis.test;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.packages.NativeProvider;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import java.util.Map;
/** Provider containing any additional environment variables for use in the test action. */
@@ -34,13 +34,18 @@ public final class TestEnvironmentInfo extends NativeInfo {
/** Constructs a new provider with the given variable name to variable value mapping. */
public TestEnvironmentInfo(Map<String, String> environment) {
- super(PROVIDER, ImmutableMap.<String, Object>of("environment", environment));
+ super(PROVIDER);
this.environment = Preconditions.checkNotNull(environment);
}
/**
* Returns environment variables which should be set on the test action.
*/
+ @SkylarkCallable(
+ name = "environment",
+ doc = "A dict containing environment variables which should be set on the test action.",
+ structField = true
+ )
public Map<String, String> getEnvironment() {
return environment;
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java b/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java
index 58ea8d3ea0..16d0c642d6 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java
@@ -59,16 +59,17 @@ public class NativeInfo extends Info {
}
public NativeInfo(NativeProvider<?> provider) {
- super(provider, Location.BUILTIN);
- this.values = ImmutableMap.of();
+ this(provider, Location.BUILTIN);
}
+ public NativeInfo(NativeProvider<?> provider, Location loc) {
+ this(provider, ImmutableMap.of(), loc);
+ }
+
+ // TODO(cparsons): Remove this constructor once DefaultInfo and ToolchainInfo stop using it.
+ @Deprecated
public NativeInfo(NativeProvider<?> provider, Map<String, Object> values, Location loc) {
super(provider, loc);
this.values = copyValues(values);
}
-
- public NativeInfo(NativeProvider<?> provider, Map<String, Object> values) {
- this(provider, values, Location.BUILTIN);
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java
index 6333adc016..9400d37f4c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.android;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -39,7 +38,7 @@ public class AndroidDeviceScriptFixtureInfoProvider extends NativeInfo {
public AndroidDeviceScriptFixtureInfoProvider(
Artifact fixtureScript, NestedSet<Artifact> supportApks, boolean daemon, boolean strictExit) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR);
this.fixtureScript = fixtureScript;
this.supportApks = supportApks;
this.daemon = daemon;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java
index 2dd0cfe8c9..202ba02223 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.android;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -46,7 +45,7 @@ public class AndroidHostServiceFixtureInfoProvider extends NativeInfo {
NestedSet<Artifact> supportApks,
boolean providesTestArgs,
boolean isDaemon) {
- super(ANDROID_HOST_SERVICE_FIXTURE_INFO, ImmutableMap.<String, Object>of());
+ super(ANDROID_HOST_SERVICE_FIXTURE_INFO);
this.executable = executable;
this.serviceNames = serviceNames;
this.supportApks = supportApks;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfigProvider.java b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfigProvider.java
index 913e367cd3..50db482da5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfigProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfigProvider.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.apple;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -55,7 +54,7 @@ public class XcodeConfigProvider extends NativeInfo {
DottedVersion tvosSdkVersion, DottedVersion tvosMinimumOsVersion,
DottedVersion macosSdkVersion, DottedVersion macosMinimumOsVersion,
DottedVersion xcodeVersion) {
- super(PROVIDER, ImmutableMap.of());
+ super(PROVIDER);
this.iosSdkVersion = Preconditions.checkNotNull(iosSdkVersion);
this.iosMinimumOsVersion = Preconditions.checkNotNull(iosMinimumOsVersion);
this.watchosSdkVersion = Preconditions.checkNotNull(watchosSdkVersion);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java
index 073a9f7a9f..c106f45425 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java
@@ -17,15 +17,21 @@ package com.google.devtools.build.lib.rules.apple;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.packages.NativeProvider;
-import java.util.Map;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import javax.annotation.Nullable;
/** A tuple containing information about a version of xcode and its properties. */
@Immutable
+@SkylarkModule(
+ name = "XcodeProperties",
+ category = SkylarkModuleCategory.PROVIDER,
+ doc = "A provider containing information about a version of Xcode and its properties."
+)
public class XcodeVersionProperties extends NativeInfo {
/** Skylark name for the XcodeVersionProperties provider. */
@@ -76,14 +82,7 @@ public class XcodeVersionProperties extends NativeInfo {
@Nullable String defaultWatchosSdkVersion,
@Nullable String defaultTvosSdkVersion,
@Nullable String defaultMacosSdkVersion) {
- super(
- SKYLARK_CONSTRUCTOR,
- getSkylarkFields(
- xcodeVersion,
- defaultIosSdkVersion,
- defaultWatchosSdkVersion,
- defaultTvosSdkVersion,
- defaultMacosSdkVersion));
+ super(SKYLARK_CONSTRUCTOR);
this.xcodeVersion = Optional.fromNullable(xcodeVersion);
this.defaultIosSdkVersion =
(Strings.isNullOrEmpty(defaultIosSdkVersion))
@@ -103,58 +102,95 @@ public class XcodeVersionProperties extends NativeInfo {
: DottedVersion.fromString(defaultMacosSdkVersion);
}
+ /** Returns the xcode version, or null if the xcode version is unknown. */
+ @SkylarkCallable(
+ name = "xcode_version",
+ doc = "The xcode version, or <code>None</code> if the xcode version is unknown.",
+ structField = true,
+ allowReturnNones = true
+ )
+ @Nullable
+ public String getXcodeVersionString() {
+ if (xcodeVersion.isPresent()) {
+ return xcodeVersion.get().toString();
+ }
+ return null;
+ }
+
+ /** Returns the default ios sdk version to use if this xcode version is in use. */
+ @SkylarkCallable(
+ name = "default_ios_sdk_version",
+ doc = "The default iOS sdk version for this version of xcode, or <code>None</code> if "
+ + "unknown.",
+ structField = true,
+ allowReturnNones = true
+ )
+ @Nullable
+ public String getDefaultIosSdkVersionString() {
+ return defaultIosSdkVersion != null ? defaultIosSdkVersion.toString() : null;
+ }
+
+ /** Returns the default watchos sdk version to use if this xcode version is in use. */
+ @SkylarkCallable(
+ name = "default_watchos_sdk_version",
+ doc = "The default watchOS sdk version for this version of xcode, or <code>None</code> if "
+ + "unknown.",
+ structField = true,
+ allowReturnNones = true
+ )
+ @Nullable
+ public String getDefaultWatchosSdkVersionString() {
+ return defaultWatchosSdkVersion != null ? defaultWatchosSdkVersion.toString() : null;
+ }
+
+ /** Returns the default tvos sdk version to use if this xcode version is in use. */
+ @SkylarkCallable(
+ name = "default_tvos_sdk_version",
+ doc = "The default tvOS sdk version for this version of xcode, or <code>None</code> if "
+ + "unknown.",
+ structField = true,
+ allowReturnNones = true
+ )
+ @Nullable
+ public String getDefaultTvosSdkVersionString() {
+ return defaultTvosSdkVersion != null ? defaultTvosSdkVersion.toString() : null;
+ }
+
+ /** Returns the default macosx sdk version to use if this xcode version is in use. */
+ @SkylarkCallable(
+ name = "default_macos_sdk_version",
+ doc = "The default macOS sdk version for this version of xcode, or <code>None</code> if "
+ + "unknown.",
+ structField = true,
+ allowReturnNones = true
+ )
+ @Nullable
+ public String getDefaultMacosSdkVersionString() {
+ return defaultMacosSdkVersion != null ? defaultMacosSdkVersion.toString() : null;
+ }
+
/** Returns the xcode version, or {@link Optional#absent} if the xcode version is unknown. */
public Optional<DottedVersion> getXcodeVersion() {
return xcodeVersion;
}
- /** Returns the default ios sdk version to use if this xcode version is in use. */
+ @Nullable
public DottedVersion getDefaultIosSdkVersion() {
return defaultIosSdkVersion;
}
- /** Returns the default watchos sdk version to use if this xcode version is in use. */
+ @Nullable
public DottedVersion getDefaultWatchosSdkVersion() {
return defaultWatchosSdkVersion;
}
- /** Returns the default tvos sdk version to use if this xcode version is in use. */
+ @Nullable
public DottedVersion getDefaultTvosSdkVersion() {
return defaultTvosSdkVersion;
}
- /** Returns the default macosx sdk version to use if this xcode version is in use. */
+ @Nullable
public DottedVersion getDefaultMacosSdkVersion() {
return defaultMacosSdkVersion;
}
-
- private static Map<String, Object> getSkylarkFields(
- @Nullable DottedVersion xcodeVersion,
- @Nullable String defaultIosSdkVersion,
- @Nullable String defaultWatchosSdkVersion,
- @Nullable String defaultTvosSdkVersion,
- @Nullable String defaultMacosSdkVersion) {
- ImmutableMap.Builder<String, Object> skylarkFields = new ImmutableMap.Builder<>();
- if (xcodeVersion != null) {
- skylarkFields.put("xcode_version", xcodeVersion.toString());
- }
-
- if (defaultIosSdkVersion != null) {
- skylarkFields.put("default_ios_sdk_version", defaultIosSdkVersion);
- }
-
- if (defaultWatchosSdkVersion != null) {
- skylarkFields.put("default_watchos_sdk_version", defaultWatchosSdkVersion);
- }
-
- if (defaultTvosSdkVersion != null) {
- skylarkFields.put("default_tvos_sdk_version", defaultTvosSdkVersion);
- }
-
- if (defaultMacosSdkVersion != null) {
- skylarkFields.put("default_macos_sdk_version", defaultMacosSdkVersion);
- }
-
- return skylarkFields.build();
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java
index ff80048b63..1296f56b4e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.config;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Location;
@@ -47,7 +46,7 @@ public class ConfigFeatureFlagProvider extends NativeInfo {
private final Predicate<String> validityPredicate;
private ConfigFeatureFlagProvider(String value, Predicate<String> validityPredicate) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of("value", value));
+ super(SKYLARK_CONSTRUCTOR);
this.value = value;
this.validityPredicate = validityPredicate;
@@ -89,6 +88,11 @@ public class ConfigFeatureFlagProvider extends NativeInfo {
}
/** Gets the current value of the flag in the flag's current configuration. */
+ @SkylarkCallable(
+ name = "value",
+ doc = "The current value of the flag in the flag's current configuration.",
+ structField = true
+ )
public String getValue() {
return value;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java
index 42cf3f3e16..aa600274b4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java
@@ -17,7 +17,6 @@ package com.google.devtools.build.lib.rules.cpp;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.ActionOwner;
@@ -100,7 +99,7 @@ public final class CcCompilationInfo extends NativeInfo {
CppModuleMap cppModuleMap,
@Nullable CppModuleMap verificationModuleMap,
boolean propagateModuleMapAsActionInput) {
- super(PROVIDER, ImmutableMap.of());
+ super(PROVIDER);
Preconditions.checkNotNull(commandLineCcCompilationInfo);
this.commandLineCcCompilationInfo = commandLineCcCompilationInfo;
this.declaredIncludeDirs = declaredIncludeDirs;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java
index 8b60c164f9..3c5554d66e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.rules.cpp;
import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeInfo;
@@ -48,7 +47,7 @@ public final class CcLinkParamsInfo extends NativeInfo {
@AutoCodec.Instantiator
public CcLinkParamsInfo(CcLinkParamsStore store) {
- super(PROVIDER, ImmutableMap.<String, Object>of());
+ super(PROVIDER);
this.store = new CcLinkParamsStoreImpl(store);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
index 5323dd3add..8319681d8a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
@@ -17,7 +17,6 @@ import static com.google.devtools.build.lib.syntax.SkylarkType.BOOL;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -303,7 +302,7 @@ public final class JavaInfo extends NativeInfo {
@VisibleForSerialization
@AutoCodec.Instantiator
JavaInfo(TransitiveInfoProviderMap providers, boolean neverlink, Location location) {
- super(PROVIDER, ImmutableMap.of(), location);
+ super(PROVIDER, location);
this.providers = providers;
this.neverlink = neverlink;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
index 5489498ba3..dba496bb4d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.java;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
@@ -110,7 +109,7 @@ public class JavaRuntimeInfo extends NativeInfo {
PathFragment javaHome,
PathFragment javaBinaryExecPath,
PathFragment javaBinaryRunfilesPath) {
- super(PROVIDER, ImmutableMap.<String, Object>of());
+ super(PROVIDER);
this.javaBaseInputs = javaBaseInputs;
this.javaBaseInputsMiddleman = javaBaseInputsMiddleman;
this.javaHome = javaHome;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsInfo.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsInfo.java
index af5833c17b..37f7ae2bf0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsInfo.java
@@ -91,7 +91,7 @@ public final class AppleDebugOutputsInfo extends NativeInfo {
* </ul>
*/
private AppleDebugOutputsInfo(ImmutableMap<String, ImmutableMap<String, Artifact>> map) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR);
this.outputsMap = map;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryInfo.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryInfo.java
index 814191b8b3..aeed29b092 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.objc;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeInfo;
@@ -55,7 +54,7 @@ public final class AppleDylibBinaryInfo extends NativeInfo {
public AppleDylibBinaryInfo(Artifact dylibBinary,
ObjcProvider depsObjcProvider) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR);
this.dylibBinary = dylibBinary;
this.depsObjcProvider = depsObjcProvider;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkInfo.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkInfo.java
index 7d9b97e1f1..6555f8a951 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.objc;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -74,7 +73,7 @@ public final class AppleDynamicFrameworkInfo extends NativeInfo {
ObjcProvider depsObjcProvider,
NestedSet<PathFragment> dynamicFrameworkDirs,
NestedSet<Artifact> dynamicFrameworkFiles) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR);
this.dylibBinary = dylibBinary;
this.depsObjcProvider = depsObjcProvider;
this.dynamicFrameworkDirs = dynamicFrameworkDirs;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryInfo.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryInfo.java
index 134d89a70a..374d9bedaf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.objc;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeInfo;
@@ -60,7 +59,7 @@ public final class AppleExecutableBinaryInfo extends NativeInfo {
*/
public AppleExecutableBinaryInfo(Artifact appleExecutableBinary,
ObjcProvider depsObjcProvider) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR);
this.appleExecutableBinary = appleExecutableBinary;
this.depsObjcProvider = depsObjcProvider;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryInfo.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryInfo.java
index cfb1cc3672..ea2cb6602f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.objc;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeInfo;
@@ -59,7 +58,7 @@ public final class AppleLoadableBundleBinaryInfo extends NativeInfo {
*/
public AppleLoadableBundleBinaryInfo(Artifact appleLoadableBundleBinary,
ObjcProvider depsObjcProvider) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR);
this.appleLoadableBundleBinary = appleLoadableBundleBinary;
this.depsObjcProvider = depsObjcProvider;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java
index 3bbdc6807f..2280bd7487 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.objc;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.packages.NativeProvider;
@@ -60,7 +59,7 @@ public final class AppleStaticLibraryInfo extends NativeInfo {
*/
public AppleStaticLibraryInfo(Artifact multiArchArchive,
ObjcProvider depsObjcProvider) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR);
this.multiArchArchive = multiArchArchive;
this.depsObjcProvider = depsObjcProvider;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java
index 1ce7085140..bbd98f7943 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java
@@ -16,17 +16,23 @@ package com.google.devtools.build.lib.rules.objc;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.packages.NativeProvider;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
-import java.util.Map;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import javax.annotation.Nullable;
/** Provider that describes a simulator device. */
@Immutable
+@SkylarkModule(
+ name = "IosDevice",
+ category = SkylarkModuleCategory.PROVIDER,
+ doc = "<b>Deprecated. Use the new Skylark testing rules instead.</b>"
+)
public final class IosDeviceProvider extends NativeInfo {
/** A builder of {@link IosDeviceProvider}s. */
public static final class Builder {
@@ -85,13 +91,38 @@ public final class IosDeviceProvider extends NativeInfo {
private final String locale;
private IosDeviceProvider(Builder builder) {
- super(SKYLARK_CONSTRUCTOR, getSkylarkFields(builder));
+ super(SKYLARK_CONSTRUCTOR);
this.type = Preconditions.checkNotNull(builder.type);
this.iosVersion = Preconditions.checkNotNull(builder.iosVersion);
this.locale = Preconditions.checkNotNull(builder.locale);
this.xcodeVersion = builder.xcodeVersion;
}
+ @SkylarkCallable(
+ name = "ios_version",
+ doc = "The iOS version of the simulator to use.",
+ structField = true
+ )
+ public String getIosVersionString() {
+ return iosVersion.toString();
+ }
+
+ @SkylarkCallable(
+ name = "xcode_version",
+ doc = "The xcode version to obtain the iOS simulator from, or <code>None</code> if unknown.",
+ structField = true,
+ allowReturnNones = true
+ )
+ @Nullable
+ public String getXcodeVersionString() {
+ return xcodeVersion != null ? xcodeVersion.toString() : null;
+ }
+
+ @SkylarkCallable(
+ name = "type",
+ doc = "The hardware type of the device, corresponding to the simctl device type.",
+ structField = true
+ )
public String getType() {
return type;
}
@@ -120,15 +151,4 @@ public final class IosDeviceProvider extends NativeInfo {
Substitution.of("%(simulator_sdk)s", getIosVersion().toString()),
Substitution.of("%(locale)s", getLocale())));
}
-
- private static Map<String, Object> getSkylarkFields(Builder builder) {
- ImmutableMap.Builder<String, Object> skylarkFields =
- new ImmutableMap.Builder<String, Object>()
- .put("type", builder.type)
- .put("ios_version", builder.iosVersion.toString());
- if (builder.xcodeVersion != null) {
- skylarkFields.put("xcode_version", builder.xcodeVersion.toString());
- }
- return skylarkFields.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 bcde3803bc..3dfada91b2 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
@@ -818,7 +818,7 @@ public final class ObjcProvider extends NativeInfo {
ImmutableMap<Key<?>, NestedSet<?>> items,
ImmutableMap<Key<?>, NestedSet<?>> nonPropagatedItems,
ImmutableMap<Key<?>, NestedSet<?>> strictDependencyItems) {
- super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR);
this.items = Preconditions.checkNotNull(items);
this.nonPropagatedItems = Preconditions.checkNotNull(nonPropagatedItems);
this.strictDependencyItems = Preconditions.checkNotNull(strictDependencyItems);
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
index 890395470f..b1dbb4e82c 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
@@ -114,7 +114,7 @@ public abstract class SkylarkList<E> extends BaseMutableList<E>
@Override
public boolean equals(Object object) {
return (this == object)
- || ((this.getClass() == object.getClass())
+ || ((object != null) && (this.getClass() == object.getClass())
&& getContentsUnsafe().equals(((SkylarkList) object).getContentsUnsafe()));
}