From 015707c6e095c8dc3693ee2789b5efa372d67cd6 Mon Sep 17 00:00:00 2001 From: Googler Date: Fri, 21 Apr 2023 10:41:33 -0700 Subject: [PATCH] Hard code preferred Starlark rule kinds in `--compile_one_dependency` PiperOrigin-RevId: 526079318 Change-Id: Ie425490b1ac524eb9a0c3303f285cb28760662a5 --- .../starlark/StarlarkRuleClassFunctions.java | 15 --------------- .../com/google/devtools/build/lib/pkgcache/BUILD | 1 + .../CompileOneDependencyTransformer.java | 16 +++++++++++++++- .../lib/rules/test/StarlarkTestingModule.java | 1 - .../StarlarkRuleFunctionsApi.java | 13 ------------- .../FakeStarlarkRuleFunctionsApi.java | 1 - .../builtins_bzl/common/cc/cc_library.bzl | 1 - .../builtins_bzl/common/java/java_library.bzl | 1 - .../builtins_bzl/common/python/py_library.bzl | 3 --- 9 files changed, 16 insertions(+), 36 deletions(-) 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 84f91134adc2ea..78acff368f5daa 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 @@ -91,7 +91,6 @@ import com.google.devtools.build.lib.packages.Type; import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant; import com.google.devtools.build.lib.starlarkbuildapi.StarlarkRuleFunctionsApi; -import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.util.FileTypeSet; import com.google.devtools.build.lib.util.Pair; import com.google.errorprone.annotations.FormatMethod; @@ -295,7 +294,6 @@ public StarlarkRuleFunction rule( Object buildSetting, Object cfg, Object execGroups, - Object compileOneFiletype, Object name, StarlarkThread thread) throws EvalException { @@ -316,7 +314,6 @@ public StarlarkRuleFunction rule( buildSetting, cfg, execGroups, - compileOneFiletype, name, thread); } @@ -338,7 +335,6 @@ public static StarlarkRuleFunction createRule( Object buildSetting, Object cfg, Object execGroups, - Object compileOneFiletype, Object name, StarlarkThread thread) throws EvalException { @@ -491,17 +487,6 @@ public static StarlarkRuleFunction createRule( builder.addExecutionPlatformConstraints(parseExecCompatibleWith(execCompatibleWith, thread)); } - if (compileOneFiletype instanceof Sequence) { - if (!bzlModule.label().getRepository().getNameWithAt().equals("@_builtins")) { - throw Starlark.errorf( - "Rule in '%s' cannot use private API", bzlModule.label().getPackageName()); - } - ImmutableList filesTypes = - Sequence.cast(compileOneFiletype, String.class, "compile_one_filetype") - .getImmutableList(); - builder.setPreferredDependencyPredicate(FileType.of(filesTypes)); - } - StarlarkRuleFunction starlarkRuleFunction = new StarlarkRuleFunction( builder, diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/BUILD b/src/main/java/com/google/devtools/build/lib/pkgcache/BUILD index 96f0ae16cecaba..3d52551332714e 100644 --- a/src/main/java/com/google/devtools/build/lib/pkgcache/BUILD +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/BUILD @@ -38,6 +38,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/skyframe:detailed_exceptions", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code", + "//src/main/java/com/google/devtools/build/lib/util:filetype", "//src/main/java/com/google/devtools/build/lib/util:resource_converter", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformer.java b/src/main/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformer.java index 4cec7c7f9d7863..9c31be1d0ca2ec 100644 --- a/src/main/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformer.java +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformer.java @@ -13,6 +13,9 @@ // limitations under the License. package com.google.devtools.build.lib.pkgcache; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.devtools.build.lib.cmdline.Label; @@ -29,6 +32,7 @@ import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.server.FailureDetails.TargetPatterns; +import com.google.devtools.build.lib.util.FileType; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -41,6 +45,14 @@ */ public final class CompileOneDependencyTransformer { private final TargetProvider targetProvider; + private static final ImmutableMap> preferredRules = + ImmutableMap.of( + "cc_library", + FileType.of(".cc", ".h", ".c"), + "java_library", + FileType.of(".java"), + "py_library", + FileType.of(".py")); public CompileOneDependencyTransformer(TargetProvider targetProvider) { this.targetProvider = targetProvider; @@ -76,7 +88,9 @@ private Target transformCompileOneDependency(ExtendedEventHandler eventHandler, for (Rule rule : orderedRuleList) { Set