From e35c29fe4670c779e8b96133450959eddf2dae5e Mon Sep 17 00:00:00 2001 From: Ivo List Date: Mon, 4 Dec 2023 19:44:30 +0100 Subject: [PATCH] [7.0.0] Experimental extend rule and subrule functionality (#20429) Following commits were cleanly cherry-picked: e4c7cb6ecb ilist@google.com Support incoming configuration transition in extended rules faa2f3d6a1 ilist@google.com Support subrules in extended rules d70d198e92 ilist@google.com Add an escape hatch for any type attributes in the initializer c00c272097 ilist@google.com Cleanup incoming configuration transitions on Starlark rules 82a469ffc0 ilist@google.com Copy and lift labels in arguments of initializers 6733c1844b ilist@google.com Remove unused OBJECT_LIST type e7a3dabfb6 ilist@google.com Remove unused FILESET_ENTRY label class c95999046a ilist@google.com Implement type checks and label conversion for Starlark values c4f4073aa8 ilist@google.com Move convertFromBuildLangType into BuildType class Additional commit "Define function_transition_allowlist in StarlarkRuleClassFunctionsTest" just fixes the mocking of the the tests. --- .../analysis/RuleConfiguredTargetBuilder.java | 4 - .../starlark/StarlarkRuleClassFunctions.java | 108 ++++--- .../starlark/StarlarkRuleContext.java | 6 +- .../analysis/starlark/StarlarkSubrule.java | 2 +- .../build/lib/packages/BuildType.java | 152 ++++++++- .../build/lib/packages/RuleClass.java | 120 ++----- .../build/lib/packages/RuleFactory.java | 7 +- .../devtools/build/lib/packages/Type.java | 49 ++- .../StarlarkRuleFunctionsApi.java | 4 +- .../transitions/NoConfigTransitionTest.java | 3 +- .../starlark/StarlarkSubruleTest.java | 115 +++++++ .../build/lib/packages/BuildTypeTest.java | 75 ++++- .../build/lib/packages/RuleClassTest.java | 1 + .../ConfiguredTargetQuerySemanticsTest.java | 3 +- .../TransitionsOutputFormatterTest.java | 2 +- .../testutil/PostAnalysisQueryTest.java | 5 +- .../google/devtools/build/lib/starlark/BUILD | 1 + .../StarlarkRuleClassFunctionsTest.java | 303 +++++++++++++++++- .../starlark_configurations_test.sh | 2 +- 19 files changed, 794 insertions(+), 168 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java index 7365330045a37a..6031a709d5ba94 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java @@ -338,10 +338,6 @@ private NestedSet