Use RepositoryName instead of String for the "toolsRepository" concept This thing is often used to construct absolute labels (blegh). Fortunately RepositoryName is a drop-in replacement for String for these cases. Beyond that, this change also provides a bit of type safety, so hooray. PiperOrigin-RevId: 415507946
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspectFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspectFactory.java index 6b4c3cb..aef8a27 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspectFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspectFactory.java
@@ -14,6 +14,7 @@ package com.google.devtools.build.lib.analysis; import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.AspectParameters; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData; @@ -28,14 +29,13 @@ * @param context the context of the associated configured target plus all the attributes the * aspect itself has defined * @param parameters information from attributes of the rule that have requested this - * @param toolsRepository string representing the name of the tools repository such as - * "@bazel_tools" + * @param toolsRepository the name of the tools repository such as "{@literal @}bazel_tools" */ ConfiguredAspect create( ConfiguredTargetAndData ctadBase, RuleContext context, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException; /** Adds any aspect implementation-specific requirements to the given builder. */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java index 296ddf6..9cc3a14 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -44,6 +44,7 @@ import com.google.devtools.build.lib.analysis.starlark.StarlarkModules; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.graph.Digraph; import com.google.devtools.build.lib.graph.Node; import com.google.devtools.build.lib.packages.BazelStarlarkContext; @@ -132,7 +133,7 @@ private final StringBuilder defaultWorkspaceFileSuffix = new StringBuilder(); private Label preludeLabel; private String runfilesPrefix; - private String toolsRepository; + private RepositoryName toolsRepository; @Nullable private String builtinsBzlZipResource; private boolean useDummyBuiltinsBzlInsteadOfResource = false; @Nullable private String builtinsBzlPackagePathInSource; @@ -202,7 +203,7 @@ return this; } - public Builder setToolsRepository(String toolsRepository) { + public Builder setToolsRepository(RepositoryName toolsRepository) { this.toolsRepository = toolsRepository; return this; } @@ -567,7 +568,7 @@ } @Override - public String getToolsRepository() { + public RepositoryName getToolsRepository() { return toolsRepository; } @@ -595,7 +596,7 @@ private final String runfilesPrefix; /** The path to the tools repository. */ - private final String toolsRepository; + private final RepositoryName toolsRepository; /** * Where the builtins bzl files are located (if not overridden by @@ -662,7 +663,7 @@ private ConfiguredRuleClassProvider( Label preludeLabel, String runfilesPrefix, - String toolsRepository, + RepositoryName toolsRepository, @Nullable Root bundledBuiltinsRoot, @Nullable String builtinsBzlPackagePathInSource, ImmutableMap<String, RuleClass> ruleClassMap, @@ -729,7 +730,7 @@ } @Override - public String getToolsRepository() { + public RepositoryName getToolsRepository() { return toolsRepository; }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java index 55408f8..a25cab7 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -351,9 +351,7 @@ // TODO(bazel-team): maybe merge with RuleConfiguredTargetBuilder? ConfiguredTarget target = StarlarkRuleConfiguredTargetUtil.buildRule( - ruleContext, - ruleClass.getAdvertisedProviders(), - ruleClassProvider.getToolsRepository()); + ruleContext, ruleClass.getAdvertisedProviders()); return target != null ? target : erroredConfiguredTarget(ruleContext); }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java index 6db1e4a..88c7411 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.analysis; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import java.util.Optional; /** @@ -25,7 +26,7 @@ public interface RuleDefinitionEnvironment { /** Returns the name of the tools repository. */ - String getToolsRepository(); + RepositoryName getToolsRepository(); /** * Prepends the tools repository path to the given string and parses the result using {@link
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkLateBoundDefault.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkLateBoundDefault.java index 7403ec8..159f332 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkLateBoundDefault.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkLateBoundDefault.java
@@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.starlark.annotations.StarlarkConfigurationField; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.Attribute.AbstractLabelLateBoundDefault; import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault; import com.google.devtools.build.lib.packages.AttributeMap; @@ -65,7 +66,7 @@ /** Returns the {@link StarlarkConfigurationField} annotation corresponding to this method. */ private static Label getDefaultLabel( - StarlarkConfigurationField annotation, String toolsRepository) { + StarlarkConfigurationField annotation, RepositoryName toolsRepository) { if (annotation.defaultLabel().isEmpty()) { return null; } @@ -80,7 +81,7 @@ Class<FragmentT> fragmentClass, String fragmentName, Method method, - String toolsRepository) { + RepositoryName toolsRepository) { this( getDefaultLabel(annotation, toolsRepository), fragmentClass, @@ -135,10 +136,9 @@ private static class CacheKey { private final Class<?> fragmentClass; - private final String toolsRepository; + private final RepositoryName toolsRepository; - private CacheKey(Class<?> fragmentClass, - String toolsRepository) { + private CacheKey(Class<?> fragmentClass, RepositoryName toolsRepository) { this.fragmentClass = fragmentClass; this.toolsRepository = toolsRepository; } @@ -225,7 +225,7 @@ */ @SuppressWarnings("unchecked") public static <FragmentT> StarlarkLateBoundDefault<FragmentT> forConfigurationField( - Class<FragmentT> fragmentClass, String fragmentFieldName, String toolsRepository) + Class<FragmentT> fragmentClass, String fragmentFieldName, RepositoryName toolsRepository) throws InvalidConfigurationFieldException { CacheKey cacheKey = new CacheKey(fragmentClass, toolsRepository); StarlarkLateBoundDefault<?> resolver = fieldCache.get(cacheKey).get(fragmentFieldName);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java index 14ce51e..cd2b5fb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java
@@ -53,6 +53,7 @@ import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.LabelValidator; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.EventKind; @@ -177,7 +178,7 @@ /** Parent rule class for test Starlark rules. */ public static RuleClass getTestBaseRule(RuleDefinitionEnvironment env) { - String toolsRepository = env.getToolsRepository(); + RepositoryName toolsRepository = env.getToolsRepository(); RuleClass.Builder builder = new RuleClass.Builder("$test_base_rule", RuleClassType.ABSTRACT, true, baseRule) .requiresConfigurationFragments(TestConfiguration.class)
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleConfiguredTargetUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleConfiguredTargetUtil.java index 5b1a22e..9a74ec1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleConfiguredTargetUtil.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleConfiguredTargetUtil.java
@@ -77,7 +77,7 @@ */ @Nullable public static ConfiguredTarget buildRule( - RuleContext ruleContext, AdvertisedProviderSet advertisedProviders, String toolsRepository) + RuleContext ruleContext, AdvertisedProviderSet advertisedProviders) throws InterruptedException, RuleErrorException, ActionConflictException { RuleClass ruleClass = ruleContext.getRule().getRuleClassObject(); if (ruleClass.getRuleClassType().equals(RuleClass.Builder.RuleClassType.WORKSPACE)) {
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java index 103513c..c0c3516 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -59,6 +59,7 @@ import com.google.devtools.build.lib.bazel.rules.python.BazelPyTestRule; import com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration; import com.google.devtools.build.lib.cmdline.LabelConstants; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.RuleClass.Builder.ThirdPartyLicenseExistencePolicy; import com.google.devtools.build.lib.rules.android.AarImportBaseRule; import com.google.devtools.build.lib.rules.android.AndroidApplicationResourceInfo; @@ -139,8 +140,6 @@ /** A rule class provider implementing the rules Bazel knows. */ public class BazelRuleClassProvider { - public static final String TOOLS_REPOSITORY = "@bazel_tools"; - /** Command-line options. */ public static class StrictActionEnvOptions extends FragmentOptions { @Option( @@ -241,7 +240,7 @@ /** Adds this class's definitions to a builder. */ public static void setup(ConfiguredRuleClassProvider.Builder builder) { - builder.setToolsRepository(TOOLS_REPOSITORY); + builder.setToolsRepository(RepositoryName.BAZEL_TOOLS); builder.setBuiltinsBzlZipResource( ResourceFileLoader.resolveResource(BazelRuleClassProvider.class, "builtins_bzl.zip")); builder.setBuiltinsBzlPackagePathInSource("src/main/starlark/builtins_bzl"); @@ -340,7 +339,7 @@ new RuleSet() { @Override public void init(ConfiguredRuleClassProvider.Builder builder) { - String toolsRepository = checkNotNull(builder.getToolsRepository()); + RepositoryName toolsRepository = checkNotNull(builder.getToolsRepository()); builder.addConfigurationFragment(AndroidConfiguration.class); builder.addConfigurationFragment(AndroidLocalTestConfiguration.class);
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java index ed6b38d..6a2b1f6 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.bazel.rules.objc.BazelAppleStaticLibraryRule; import com.google.devtools.build.lib.bazel.rules.objc.BazelObjcImportRule; import com.google.devtools.build.lib.bazel.rules.objc.BazelObjcLibraryRule; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.AppleToolchain; import com.google.devtools.build.lib.rules.apple.AvailableXcodesRule; @@ -52,7 +53,7 @@ @Override public void init(ConfiguredRuleClassProvider.Builder builder) { - String toolsRepository = checkNotNull(builder.getToolsRepository()); + RepositoryName toolsRepository = checkNotNull(builder.getToolsRepository()); builder.addConfigurationFragment(ObjcConfiguration.class); builder.addConfigurationFragment(AppleConfiguration.class);
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelDexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelDexArchiveAspect.java index 54cc3f2..e93983b 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelDexArchiveAspect.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelDexArchiveAspect.java
@@ -13,11 +13,12 @@ // limitations under the License. package com.google.devtools.build.lib.bazel.rules.android; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.rules.android.DexArchiveAspect; /** Fills {@link DexArchiveAspect} with appropriate Android tools and toolchain references. */ public class BazelDexArchiveAspect extends DexArchiveAspect { - public BazelDexArchiveAspect(String toolsRepository) { + public BazelDexArchiveAspect(RepositoryName toolsRepository) { super(toolsRepository, BazelSdkToolchainRule.TOOLCHAIN_LABEL); } }
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BUILD index 03bb8cf..e13666e 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BUILD +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BUILD
@@ -28,6 +28,7 @@ "//src/main/java/com/google/devtools/build/lib/analysis:platform_configuration", "//src/main/java/com/google/devtools/build/lib/analysis:rule_definition_environment", "//src/main/java/com/google/devtools/build/lib/analysis/platform", + "//src/main/java/com/google/devtools/build/lib/cmdline:cmdline-primitives", "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java index fa8a30b..a503f18 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java
@@ -45,6 +45,7 @@ import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction; @@ -382,7 +383,7 @@ // To avoid cycles in the dependency graph, return null for rules under // @bazel_tools//third_party/def_parser and @bazel_tools//tools/cpp String label = rule.getLabel().toString(); - String toolsRepository = env.getToolsRepository(); + RepositoryName toolsRepository = env.getToolsRepository(); return label.startsWith(toolsRepository + "//third_party/def_parser") // @bazel_tools//tools/cpp:malloc and @bazel_tools//tools/cpp:stl // are implicit dependencies of all cc rules,
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkContext.java b/src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkContext.java index 8a43420..6554547 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkContext.java +++ b/src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkContext.java
@@ -21,6 +21,7 @@ import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.RepositoryMapping; +import com.google.devtools.build.lib.cmdline.RepositoryName; import java.util.HashMap; import java.util.Optional; import javax.annotation.Nullable; @@ -61,7 +62,7 @@ private final Phase phase; // Only necessary for loading phase threads. - @Nullable private final String toolsRepository; + @Nullable private final RepositoryName toolsRepository; // Only necessary for loading phase threads to construct configuration_field. @Nullable private final ImmutableMap<String, Class<?>> fragmentNameToClass; private final HashMap<String, Label> convertedLabelsInPackage; @@ -93,7 +94,7 @@ // analysis threads? public BazelStarlarkContext( Phase phase, - @Nullable String toolsRepository, + @Nullable RepositoryName toolsRepository, @Nullable ImmutableMap<String, Class<?>> fragmentNameToClass, HashMap<String, Label> convertedLabelsInPackage, SymbolGenerator<?> symbolGenerator, @@ -111,7 +112,7 @@ /** Returns the name of the tools repository, such as "@bazel_tools". */ @Nullable @Override - public String getToolsRepository() { + public RepositoryName getToolsRepository() { return toolsRepository; }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/BUILD b/src/main/java/com/google/devtools/build/lib/rules/BUILD index ce75003..fe48f9f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/BUILD
@@ -62,6 +62,7 @@ "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster", "//src/main/java/com/google/devtools/build/lib/analysis:test/test_configuration", "//src/main/java/com/google/devtools/build/lib/analysis:test/test_trimming_transition_factory", + "//src/main/java/com/google/devtools/build/lib/cmdline:cmdline-primitives", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_and_data",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java index 81f2d8a..2ce6a73 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.AspectParameters; @@ -51,7 +52,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { if (!JavaCommon.getConstraints(ruleContext).contains("android") && !ruleContext.getRule().getRuleClass().startsWith("android_")) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java index f472770..f758ea5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
@@ -47,6 +47,7 @@ import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.IterablesChain; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -130,10 +131,10 @@ new FlagMatcher( ImmutableList.of("--no-locals", "--no-optimize", "--no-warnings", "--positions")); - private final String toolsRepository; + private final RepositoryName toolsRepository; private final String sdkToolchainLabel; - public DexArchiveAspect(String toolsRepository, String sdkToolchainLabel) { + public DexArchiveAspect(RepositoryName toolsRepository, String sdkToolchainLabel) { this.toolsRepository = toolsRepository; this.sdkToolchainLabel = sdkToolchainLabel; } @@ -254,7 +255,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters params, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { ConfiguredAspect.Builder result = new ConfiguredAspect.Builder(ruleContext);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java index caae836..d042ab8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java
@@ -22,6 +22,7 @@ import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault; @@ -128,7 +129,7 @@ /** The default label of the build-wide {@code xcode_config} configuration rule. */ public static LabelLateBoundDefault<AppleConfiguration> getXcodeConfigLabel( - String toolsRepository) { + RepositoryName toolsRepository) { return LabelLateBoundDefault.fromTargetConfiguration( AppleConfiguration.class, Label.parseAbsoluteUnchecked( @@ -170,9 +171,9 @@ * Base rule definition to be ancestor for rules which may require an xcode toolchain. */ public static class RequiresXcodeConfigRule implements RuleDefinition { - private final String toolsRepository; + private final RepositoryName toolsRepository; - public RequiresXcodeConfigRule(String toolsRepository) { + public RequiresXcodeConfigRule(RepositoryName toolsRepository) { this.toolsRepository = toolsRepository; }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java index acf3e0f..467fb28 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
@@ -151,7 +151,7 @@ new ComputedDefault() { @Override public Object getDefault(AttributeMap rule) { - return env.getToolsRepository(); + return env.getToolsRepository().strippedName(); } }))
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java index f0816a7..361bd27 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java +++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
@@ -216,12 +216,8 @@ } private static RepositoryName getToolsRepository(RuleContext ruleContext) { - try { - return RepositoryName.create( - ruleContext.attributes().get(ConfigSettingRule.TOOLS_REPOSITORY_ATTRIBUTE, Type.STRING)); - } catch (LabelSyntaxException ex) { - throw new IllegalStateException(ex); - } + return RepositoryName.createFromValidStrippedName( + ruleContext.attributes().get(ConfigSettingRule.TOOLS_REPOSITORY_ATTRIBUTE, Type.STRING)); } /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/core/ValidateTarget.java b/src/main/java/com/google/devtools/build/lib/rules/core/ValidateTarget.java index 88e53ab..5f12569 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/core/ValidateTarget.java +++ b/src/main/java/com/google/devtools/build/lib/rules/core/ValidateTarget.java
@@ -19,6 +19,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory; import com.google.devtools.build.lib.analysis.OutputGroupInfo; import com.google.devtools.build.lib.analysis.RuleContext; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.AspectParameters; @@ -47,7 +48,7 @@ ConfiguredTargetAndData ctadBase, RuleContext context, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { OutputGroupInfo outputGroupInfo = OutputGroupInfo.get(ctadBase.getConfiguredTarget()); if (outputGroupInfo != null) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/GraphNodeAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/GraphNodeAspect.java index 18bceb3..0f33339 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/GraphNodeAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/GraphNodeAspect.java
@@ -21,6 +21,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredAspect; import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory; import com.google.devtools.build.lib.analysis.RuleContext; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.AspectParameters; import com.google.devtools.build.lib.packages.NativeAspectClass; @@ -63,7 +64,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters params, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { ImmutableList.Builder<GraphNodeInfo> children = ImmutableList.builder(); if (ruleContext.attributes().has("deps")) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java index 689d29f..cc122f1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
@@ -34,6 +34,7 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap; import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMapBuilder; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.AspectDefinition; @@ -102,7 +103,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { ProtoInfo protoInfo = checkNotNull(ctadBase.getConfiguredTarget().get(ProtoInfo.PROVIDER));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java index f504e8c..1636b94 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
@@ -30,6 +30,7 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.packages.AspectDefinition; @@ -83,7 +84,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { ConfiguredAspect.Builder aspect = new ConfiguredAspect.Builder(ruleContext);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java index 7db18a1..282d4ba 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
@@ -30,6 +30,7 @@ import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.packages.AspectDefinition; @@ -87,7 +88,6 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository, Iterable<String> additionalProtocOpts) throws InterruptedException, ActionConflictException { ConfiguredAspect.Builder aspect = new ConfiguredAspect.Builder(ruleContext); @@ -110,10 +110,9 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { - return createWithProtocOpts( - ctadBase, ruleContext, parameters, toolsRepository, ImmutableList.of()); + return createWithProtocOpts(ctadBase, ruleContext, parameters, ImmutableList.of()); } @Override
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 b7728e4..8825101 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
@@ -42,6 +42,7 @@ import com.google.devtools.build.lib.analysis.config.HostTransition; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.AspectDefinition; @@ -118,7 +119,7 @@ null, (rule, attributes, j2objcConfig) -> j2objcConfig.deadCodeReport()); - private final String toolsRepository; + private final RepositoryName toolsRepository; private final Label ccToolchainType; private final LabelLateBoundDefault<CppConfiguration> ccToolchain; private final Label javaToolchain; @@ -240,7 +241,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { ConfiguredTarget base = ctadBase.getConfiguredTarget(); if (isProtoRule(base)) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkAspectFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkAspectFactory.java index 09633af..0361047 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkAspectFactory.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkAspectFactory.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.analysis.StarlarkProviderValidationUtil; import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleConfiguredTargetUtil; import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleContext; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.AspectParameters; import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; @@ -45,7 +46,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { StarlarkRuleContext ctx; try {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java index 738b0fd..dc365a3 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.analysis.config.HostTransition; import com.google.devtools.build.lib.analysis.config.transitions.NoTransition; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.AdvertisedProviderSet; import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.AspectParameters; @@ -88,7 +89,7 @@ ConfiguredTargetAndData ctadBase, RuleContext context, AspectParameters parameters, - String toolsRepository) { + RepositoryName toolsRepository) { throw new IllegalStateException(); }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java index 3e3a507..983019d 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
@@ -41,6 +41,7 @@ import com.google.devtools.build.lib.analysis.util.TestAspects.RuleInfo; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; @@ -462,7 +463,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { Object lateBoundPrereq = ruleContext.getPrerequisite(":late"); return new ConfiguredAspect.Builder(ruleContext) @@ -535,7 +536,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { ruleContext.registerAction(new NullAction(ruleContext.createOutputArtifact())); return new ConfiguredAspect.Builder(ruleContext).build();
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/RequiredConfigFragmentsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/RequiredConfigFragmentsTest.java index d90476c..e60a2d1 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/RequiredConfigFragmentsTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/RequiredConfigFragmentsTest.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.analysis.config.CoreOptions.IncludeConfigFragmentsEnum; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.AspectParameters; import com.google.devtools.build.lib.packages.NativeAspectClass; @@ -160,7 +161,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters params, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { return new ConfiguredAspect.Builder(ruleContext).build(); }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java index 7ab272e..521271f 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
@@ -41,6 +41,7 @@ import com.google.devtools.build.lib.analysis.configuredtargets.PackageGroupConfiguredTarget; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; @@ -241,7 +242,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { String information = parameters.isEmpty() ? "" @@ -286,7 +287,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { return new ConfiguredAspect.Builder(ruleContext).addProvider(new FooProvider()).build(); } @@ -317,7 +318,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { return new ConfiguredAspect.Builder(ruleContext).addProvider(new FooProvider()).build(); } @@ -336,7 +337,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { return new ConfiguredAspect.Builder(ruleContext).addProvider(new BarProvider()).build(); } @@ -384,7 +385,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { TransitiveInfoCollection dep = ruleContext.getPrerequisite("$dep"); if (dep == null) { @@ -555,7 +556,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { return new ConfiguredAspect.Builder(ruleContext) .addStarlarkTransitiveInfo("native_aspect_prov", "native_aspect_val") @@ -589,7 +590,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { return new ConfiguredAspect.Builder(ruleContext).addProvider(new FooProvider()).build(); } @@ -640,7 +641,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { StringBuilder information = new StringBuilder("aspect " + ruleContext.getLabel()); if (!parameters.isEmpty()) { @@ -690,7 +691,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws ActionConflictException, InterruptedException { ruleContext.ruleWarning("Aspect warning on " + ctadBase.getTarget().getLabel()); return new ConfiguredAspect.Builder(ruleContext).build(); @@ -719,7 +720,7 @@ ConfiguredTargetAndData ctadBase, RuleContext ruleContext, AspectParameters parameters, - String toolsRepository) { + RepositoryName toolsRepository) { ruleContext.ruleError("Aspect error"); return null; } @@ -752,7 +753,7 @@ ConfiguredTargetAndData ctadBase, RuleContext context, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { return new ConfiguredAspect.Builder(context).build(); } @@ -1023,7 +1024,7 @@ ConfiguredTargetAndData ctadBase, RuleContext context, AspectParameters parameters, - String toolsRepository) + RepositoryName toolsRepository) throws InterruptedException, ActionConflictException { return ConfiguredAspect.builder(context) .addProvider(Provider.class, new Provider(ctadBase.getConfiguredTarget().getLabel()))
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/BUILD b/src/test/java/com/google/devtools/build/lib/bazel/rules/BUILD index c0ed534..62f7a3e 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/rules/BUILD +++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/BUILD
@@ -31,6 +31,7 @@ "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_class_set", "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_options", "//src/main/java/com/google/devtools/build/lib/bazel/rules", + "//src/main/java/com/google/devtools/build/lib/cmdline:cmdline-primitives", "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/rules:core_rules", "//src/main/java/com/google/devtools/build/lib/rules:core_workspace_rules",
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java index 5e3020b..769b5ae 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
@@ -30,6 +30,7 @@ import com.google.devtools.build.lib.analysis.config.FragmentClassSet; import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider.StrictActionEnvOptions; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.rules.config.ConfigRules; import com.google.devtools.build.lib.rules.core.CoreRules; @@ -71,7 +72,7 @@ private static void checkModule(RuleSet top) { ConfiguredRuleClassProvider.Builder builder = new ConfiguredRuleClassProvider.Builder(); - builder.setToolsRepository(BazelRuleClassProvider.TOOLS_REPOSITORY); + builder.setToolsRepository(RepositoryName.BAZEL_TOOLS); Set<RuleSet> result = new HashSet<>(); result.add(BazelRuleClassProvider.BAZEL_SETUP); collectTransitiveClosure(result, top);
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java index 529c576..6c4cfa7 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java +++ b/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java
@@ -18,13 +18,10 @@ import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; -import com.google.common.base.Verify; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.PackageIdentifier; -import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.util.Crosstool.CcToolchainConfig; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.ExpansionException; import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables; @@ -331,14 +328,8 @@ public abstract String getMockCrosstoolPath(); public static PackageIdentifier getMockCrosstoolsTop() { - try { - return PackageIdentifier.create( - RepositoryName.create(TestConstants.TOOLS_REPOSITORY), - PathFragment.create(TestConstants.MOCK_CC_CROSSTOOL_PATH)); - } catch (LabelSyntaxException e) { - Verify.verify(false); - throw new AssertionError(e); - } + return PackageIdentifier.create( + TestConstants.TOOLS_REPOSITORY, PathFragment.create(TestConstants.MOCK_CC_CROSSTOOL_PATH)); } protected String readCcToolchainConfigFile() throws IOException {
diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java b/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java index 9d0f1cb..c9b13a8 100644 --- a/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java +++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java
@@ -31,6 +31,7 @@ import com.google.devtools.build.lib.analysis.util.DummyTestFragment; import com.google.devtools.build.lib.analysis.util.MockRule; import com.google.devtools.build.lib.analysis.util.TestAspects; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.graph.Digraph; import com.google.devtools.build.lib.graph.DotOutputVisitor; @@ -1063,7 +1064,7 @@ // Works for implicit edges too. This is for consistency with --output // xml, which exposes them too. - String toolsRepository = helper.getToolsRepository(); + RepositoryName toolsRepository = helper.getToolsRepository(); assertThat(eval("labels(\"$py_toolchain_type\", //k)")) .isEqualTo(eval(toolsRepository + "//tools/python:toolchain_type")); @@ -2097,8 +2098,8 @@ return evaluateQuery(query).results; } - default String getToolsRepository() { - return ""; + default RepositoryName getToolsRepository() { + return RepositoryName.MAIN; } /**
diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java b/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java index c179864..8e49db3 100644 --- a/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java +++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.util.AnalysisMock; import com.google.devtools.build.lib.clock.BlazeClock; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.ConstantRuleVisibility; import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.packages.PackageFactory.EnvironmentExtension; @@ -87,7 +88,7 @@ new InMemoryFileSystem(BlazeClock.instance(), DigestHashFunction.SHA256); protected Path rootDirectory; protected BlazeDirectories directories; - private String toolsRepository; + private RepositoryName toolsRepository; protected AnalysisMock analysisMock; private QueryEnvironmentFactory queryEnvironmentFactory; @@ -268,7 +269,7 @@ } @Override - public String getToolsRepository() { + public RepositoryName getToolsRepository() { return toolsRepository; }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java b/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java index 679061f..ece176a 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java
@@ -30,6 +30,7 @@ import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.License.LicenseType; import com.google.devtools.build.lib.packages.Provider; @@ -411,7 +412,7 @@ @Test public void testRedirectChasing() throws Exception { - String toolsRepository = ruleClassProvider.getToolsRepository(); + RepositoryName toolsRepository = ruleClassProvider.getToolsRepository(); scratch.file("a/BUILD", "alias(name='cc', actual='" + toolsRepository + "//tools/cpp:toolchain')", "cc_library(name='a', srcs=['a.cc'])");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java index bfc8a07..19315ff 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
@@ -289,7 +289,7 @@ String.format( "option 'nonselectable_allowlisted_option' cannot be used in a config_setting (it is " + "allowlisted to %s//tools/... only)", - RepositoryName.create(TestConstants.TOOLS_REPOSITORY).getCanonicalForm()), + TestConstants.TOOLS_REPOSITORY.getCanonicalForm()), "config_setting(", " name = 'badoption',", " values = {",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryStarlarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryStarlarkApiTest.java index 4c905f7..55b4b67 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryStarlarkApiTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryStarlarkApiTest.java
@@ -16,6 +16,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.testutil.Scratch; import com.google.devtools.build.lib.testutil.TestConstants; import java.io.IOException; @@ -54,7 +55,7 @@ @Before public final void setup() throws Exception { scratch.file("test_starlark/BUILD"); - String toolsRepo = TestConstants.TOOLS_REPOSITORY; + RepositoryName toolsRepo = TestConstants.TOOLS_REPOSITORY; String toolsLoc = toolsRepo + "//tools/objc"; scratch.file(
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/BUILD b/src/test/java/com/google/devtools/build/lib/testutil/BUILD index df88b12..b3c28bf 100644 --- a/src/test/java/com/google/devtools/build/lib/testutil/BUILD +++ b/src/test/java/com/google/devtools/build/lib/testutil/BUILD
@@ -185,6 +185,7 @@ "TestConstants.java", ], deps = [ + "//src/main/java/com/google/devtools/build/lib/cmdline:cmdline-primitives", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//third_party:guava", ],
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java index 669db8f..c8381ac 100644 --- a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java +++ b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
@@ -17,6 +17,7 @@ import static com.google.devtools.build.lib.rules.cpp.CppRuleClasses.CROSSTOOL_LABEL; import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.cmdline.RepositoryName; /** * Various constants required by the tests. @@ -98,7 +99,7 @@ public static final String MOCK_CC_CROSSTOOL_PATH = "tools/cpp"; /** The workspace repository label under which built-in tools reside. */ - public static final String TOOLS_REPOSITORY = "@bazel_tools"; + public static final RepositoryName TOOLS_REPOSITORY = RepositoryName.BAZEL_TOOLS; /** The file path in which to create files so that they end up under {@link #TOOLS_REPOSITORY}. */ public static final String TOOLS_REPOSITORY_SCRATCH = "embedded_tools/";
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java b/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java index f81aad1..b0d8b4d 100644 --- a/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java +++ b/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
@@ -38,6 +38,7 @@ import com.google.devtools.build.lib.analysis.config.CoreOptions; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.packages.RuleClass; @@ -112,7 +113,7 @@ // TODO(bazel-team): See also TrimmableTestConfigurationFragments#installFragmentsAndNativeRules // for alternative/additional setup. Consider factoring that one to use this method. builder - .setToolsRepository("@") + .setToolsRepository(RepositoryName.MAIN) .setRunfilesPrefix("test") .setPrerequisiteValidator(new MinimalPrerequisiteValidator()); CoreRules.INSTANCE.init(builder);