diff --git a/src/main/java/com/google/devtools/build/lib/runtime/StarlarkOptionsParser.java b/src/main/java/com/google/devtools/build/lib/runtime/StarlarkOptionsParser.java index 7461ae4cd2419e..ec15860841f440 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/StarlarkOptionsParser.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/StarlarkOptionsParser.java @@ -17,6 +17,7 @@ import static com.google.devtools.build.lib.analysis.config.CoreOptionConverters.BUILD_SETTING_CONVERTERS; import static com.google.devtools.build.lib.packages.RuleClass.Builder.STARLARK_BUILD_SETTING_DEFAULT_ATTR_NAME; import static com.google.devtools.build.lib.packages.Type.BOOLEAN; +import static java.util.stream.Collectors.joining; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; @@ -27,7 +28,7 @@ import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.TargetParsingException; import com.google.devtools.build.lib.packages.BuildSetting; -import com.google.devtools.build.lib.packages.Rule; +import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.packages.Type; import com.google.devtools.build.lib.packages.Types; @@ -38,10 +39,13 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.SequencedSet; import java.util.TreeMap; +import java.util.stream.Stream; import javax.annotation.Nullable; /** @@ -282,7 +286,7 @@ private boolean parseArg(String arg, Multimap> unpa } /** - * Returns the given build setting's {@link Target}. + * Returns the given build setting's {@link Target}, following (unconfigured) aliases if needed. * * @return the target, or null if the {@link BuildSettingLoader} needs to do more work to retrieve * the target @@ -293,23 +297,67 @@ private Target loadBuildSetting(String targetToBuild) throws OptionsParsingExcep return buildSettings.get(targetToBuild); } - Target buildSetting; - try { - buildSetting = buildSettingLoader.loadBuildSetting(targetToBuild); - if (buildSetting == null) { - return null; + Target target; + String targetToLoadNext = targetToBuild; + SequencedSet