Always declare dependency on xcode gcov.
RELNOTES[INC]: Removes --objc_gcov_binary flag.
--
MOS_MIGRATED_REVID=113190035
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 7f2d7ff..9cd8624 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -836,12 +836,6 @@
)
public List<Label> targetEnvironments;
- @Option(name = "objc_gcov_binary",
- converter = ToolsLabelConverter.class,
- defaultValue = "//third_party/gcov:gcov_for_xcode_osx",
- category = "undocumented")
- public Label objcGcovBinary;
-
/** Converter for labels in the @bazel_tools repository. The @Options' defaultValues can't
* prepend TOOLS_REPOSITORY, unfortunately, because then the compiler thinks they're not
* constant. */
@@ -913,9 +907,6 @@
if ((runUnder != null) && (runUnder.getLabel() != null)) {
labelMap.put("RunUnder", runUnder.getLabel());
}
- if (collectCodeCoverage) {
- labelMap.put("objc_gcov", objcGcovBinary);
- }
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java
index 141258a..191d918 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java
@@ -28,7 +28,7 @@
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.packages.Attribute;
+import com.google.devtools.build.lib.packages.Attribute.ComputedDefault;
import com.google.devtools.build.lib.packages.Attribute.LateBoundLabelList;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
@@ -47,6 +47,10 @@
*/
public class IosTestRule implements RuleDefinition {
+ private static final ImmutableList<Label> GCOV =
+ ImmutableList.of(
+ Label.parseAbsoluteUnchecked(Constants.TOOLS_REPOSITORY + "//tools/objc:gcov"));
+
@Override
public RuleClass build(RuleClass.Builder builder, final RuleDefinitionEnvironment env) {
return builder
@@ -86,7 +90,7 @@
.add(
attr(IosTest.XCTEST_APP, LABEL)
.value(
- new Attribute.ComputedDefault(IosTest.IS_XCTEST) {
+ new ComputedDefault(IosTest.IS_XCTEST) {
@Override
public Object getDefault(AttributeMap rule) {
return rule.get(IosTest.IS_XCTEST, Type.BOOLEAN)
@@ -103,7 +107,7 @@
.override(
attr("infoplist", LABEL)
.value(
- new Attribute.ComputedDefault(IosTest.IS_XCTEST) {
+ new ComputedDefault(IosTest.IS_XCTEST) {
@Override
public Object getDefault(AttributeMap rule) {
return rule.get(IosTest.IS_XCTEST, Type.BOOLEAN)
@@ -154,16 +158,13 @@
attr(":gcov", LABEL_LIST)
.cfg(HOST)
.value(
- new LateBoundLabelList<BuildConfiguration>() {
+ new LateBoundLabelList<BuildConfiguration>(GCOV) {
@Override
public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
if (!configuration.isCodeCoverageEnabled()) {
return ImmutableList.of();
}
- return ImmutableList.of(
- configuration
- .getFragment(ObjcConfiguration.class)
- .getGcovLabel());
+ return GCOV;
}
}))
.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
index 7b3584c..53a36ab 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
@@ -20,7 +20,6 @@
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
-import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.rules.objc.ReleaseBundlingSupport.SplitArchTransition.ConfigurationDistinguisher;
import com.google.devtools.build.lib.util.Preconditions;
@@ -63,13 +62,6 @@
private final String xcodeOverrideWorkspaceRoot;
private final boolean useAbsolutePathsForActions;
- // We only load these labels if the mode which uses them is enabled. That is known as part of the
- // BuildConfiguration. This label needs to be part of a configuration because only configurations
- // can conditionally cause loading.
- // They are referenced from late bound attributes, and if loading wasn't forced in a
- // configuration, the late bound attribute will fail to be initialized because it hasn't been
- // loaded.
- @Nullable private final Label gcovLabel;
ObjcConfiguration(ObjcCommandLineOptions objcOptions, BuildConfiguration.Options options,
@Nullable BlazeDirectories directories) {
@@ -82,7 +74,6 @@
this.runMemleaks = objcOptions.runMemleaks;
this.copts = ImmutableList.copyOf(objcOptions.copts);
this.compilationMode = Preconditions.checkNotNull(options.compilationMode, "compilationMode");
- this.gcovLabel = options.objcGcovBinary;
this.iosSplitCpu = Preconditions.checkNotNull(objcOptions.iosSplitCpu, "iosSplitCpu");
this.fastbuildOptions = ImmutableList.copyOf(objcOptions.fastbuildOptions);
this.enableBinaryStripping = objcOptions.enableBinaryStripping;
@@ -154,14 +145,6 @@
}
/**
- * Returns the label of the gcov binary, used to get test coverage data. Null iff not in coverage
- * mode.
- */
- @Nullable public Label getGcovLabel() {
- return gcovLabel;
- }
-
- /**
* Whether module map generation and interpretation is enabled.
*/
public boolean moduleMapsEnabled() {
diff --git a/tools/objc/BUILD b/tools/objc/BUILD
index 6d86385..eca7bb4 100644
--- a/tools/objc/BUILD
+++ b/tools/objc/BUILD
@@ -100,6 +100,11 @@
srcs = [":xcrunwrapper.sh"],
)
+filegroup(
+ name = "gcov",
+ srcs = [":gcov_stub"],
+)
+
xcode_config(
name = "host_xcodes",
)
diff --git a/tools/objc/gcov_stub b/tools/objc/gcov_stub
new file mode 100644
index 0000000..5764e83
--- /dev/null
+++ b/tools/objc/gcov_stub
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+(
+ printf 'Bazel does not yet support coverage.\n'
+) >&2
+
+exit 1