Remove glob list from native rules
Since the glob() function now returns a standard list, some code can be
simplified.
RELNOTES: None.
PiperOrigin-RevId: 196867957
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java b/src/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java
index e48dbb4..cda20bd 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java
@@ -304,8 +304,6 @@
void addFilesetListValue(Build.FilesetEntry.Builder builder);
- void addGlobCriteria(Build.GlobCriteria.Builder builder);
-
void addLabelDictUnaryValue(LabelDictUnaryEntry.Builder builder);
void addLabelKeyedStringDictValue(LabelKeyedStringDictEntry.Builder builder);
@@ -358,11 +356,6 @@
}
@Override
- public void addGlobCriteria(Build.GlobCriteria.Builder builder) {
- attributeBuilder.addGlobCriteria(builder);
- }
-
- @Override
public void addLabelDictUnaryValue(LabelDictUnaryEntry.Builder builder) {
attributeBuilder.addLabelDictUnaryValue(builder);
}
@@ -484,11 +477,6 @@
}
@Override
- public void addGlobCriteria(Build.GlobCriteria.Builder builder) {
- selectorEntryBuilder.addGlobCriteria(builder);
- }
-
- @Override
public void addLabelDictUnaryValue(LabelDictUnaryEntry.Builder builder) {
selectorEntryBuilder.addLabelDictUnaryValue(builder);
}
@@ -544,4 +532,3 @@
}
}
}
-
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index c65b4aa..ad682b6 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -48,7 +48,6 @@
import com.google.devtools.build.lib.syntax.EvalUtils;
import com.google.devtools.build.lib.syntax.FuncallExpression;
import com.google.devtools.build.lib.syntax.FunctionSignature;
-import com.google.devtools.build.lib.syntax.GlobList;
import com.google.devtools.build.lib.syntax.Mutability;
import com.google.devtools.build.lib.syntax.ParserInputSource;
import com.google.devtools.build.lib.syntax.Runtime;
@@ -578,11 +577,7 @@
throw new EvalException(ast.getLocation(), e.getMessage());
}
- GlobList<String> globList = GlobList.captureResults(includes, excludes, matches);
-
- // TODO(laurentlb): Get rid of globList type.
- // Converting to ImmutableList will remove glob information from the list.
- return MutableList.copyOf(env, ImmutableList.copyOf(globList));
+ return MutableList.copyOf(env, matches);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Rule.java b/src/main/java/com/google/devtools/build/lib/packages/Rule.java
index 027d292..c7cca63 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Rule.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Rule.java
@@ -35,7 +35,6 @@
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.License.DistributionType;
import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.GlobList;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.BinaryPredicate;
import java.util.Collection;
@@ -695,18 +694,6 @@
}
}
- /**
- * Returns the globs that were expanded to create an attribute value, or
- * null if unknown or not applicable.
- */
- public static GlobList<?> getGlobInfo(Object attributeValue) {
- if (attributeValue instanceof GlobList<?>) {
- return (GlobList<?>) attributeValue;
- } else {
- return null;
- }
- }
-
private void checkForNullLabel(Label labelToCheck, Object context) {
if (labelToCheck == null) {
throw new IllegalStateException(String.format(
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index bd1f4b4..0389764 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -50,7 +50,6 @@
import com.google.devtools.build.lib.syntax.BaseFunction;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.FuncallExpression;
-import com.google.devtools.build.lib.syntax.GlobList;
import com.google.devtools.build.lib.syntax.Runtime;
import com.google.devtools.build.lib.syntax.SkylarkList;
import com.google.devtools.build.lib.syntax.Type;
@@ -1976,11 +1975,11 @@
/**
* Converts the build-language-typed {@code buildLangValue} to a native value via {@link
- * BuildType#selectableConvert}. Canonicalizes the value's order if it is a {@link List} type
- * (but not a {@link GlobList}) and {@code attr.isOrderIndependent()} returns {@code true}.
+ * BuildType#selectableConvert}. Canonicalizes the value's order if it is a {@link List} type and
+ * {@code attr.isOrderIndependent()} returns {@code true}.
*
- * <p>Throws {@link ConversionException} if the conversion fails, or if {@code buildLangValue}
- * is a selector expression but {@code attr.isConfigurable()} is {@code false}.
+ * <p>Throws {@link ConversionException} if the conversion fails, or if {@code buildLangValue} is
+ * a selector expression but {@code attr.isConfigurable()} is {@code false}.
*/
private static Object convertFromBuildLangType(Rule rule, Attribute attr, Object buildLangValue)
throws ConversionException {
@@ -1995,7 +1994,7 @@
String.format("attribute \"%s\" is not configurable", attr.getName()));
}
- if ((converted instanceof List<?>) && !(converted instanceof GlobList<?>)) {
+ if (converted instanceof List<?>) {
if (attr.isOrderIndependent()) {
@SuppressWarnings("unchecked")
List<? extends Comparable<?>> list = (List<? extends Comparable<?>>) converted;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Type.java b/src/main/java/com/google/devtools/build/lib/syntax/Type.java
index d8509e3..62336d1 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Type.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Type.java
@@ -23,7 +23,6 @@
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.syntax.Printer.BasePrinter;
-import com.google.devtools.build.lib.syntax.SkylarkList.MutableList;
import com.google.devtools.build.lib.util.LoggingUtil;
import com.google.devtools.build.lib.util.StringCanonicalizer;
import java.util.ArrayList;
@@ -599,19 +598,6 @@
}
++index;
}
- // We preserve GlobList-s so they can make it to attributes;
- // some external code relies on attributes preserving this information.
- // TODO(bazel-team): somehow make Skylark extensible enough that
- // GlobList support can be wholly moved out of Skylark into an extension.
- if (x instanceof GlobList<?>) {
- return new GlobList<>(((GlobList<?>) x).getCriteria(), result);
- }
- if (x instanceof MutableList) {
- GlobList<?> globList = ((MutableList) x).getGlobList();
- if (globList != null) {
- return new GlobList<>(globList.getCriteria(), result);
- }
- }
return result;
}
diff --git a/src/main/protobuf/build.proto b/src/main/protobuf/build.proto
index ff328fe..bf92015 100644
--- a/src/main/protobuf/build.proto
+++ b/src/main/protobuf/build.proto
@@ -173,11 +173,11 @@
repeated FilesetEntry fileset_list_value = 9;
repeated LabelListDictEntry label_list_dict_value = 10;
repeated StringListDictEntry string_list_dict_value = 11;
- repeated GlobCriteria glob_criteria = 12;
repeated int32 int_list_value = 13;
repeated LabelDictUnaryEntry label_dict_unary_value = 15;
repeated LabelKeyedStringDictEntry label_keyed_string_dict_value = 17;
+ repeated DEPRECATED_GlobCriteria DEPRECATED_glob_criteria = 12;
repeated bytes DEPRECATED_string_dict_unary_value = 14;
}
@@ -260,11 +260,6 @@
// If this is a string list dict, each entry will be stored here.
repeated StringListDictEntry string_list_dict_value = 11;
- // The glob criteria. This is non-empty if:
- // 1. This attribute is a list of strings or labels, and,
- // 2. It contained a glob() expression
- repeated GlobCriteria glob_criteria = 16;
-
// The value of the attribute has a list of int32 values
repeated int32 int_list_value = 17;
@@ -279,6 +274,7 @@
// stored here.
optional SelectorList selector_list = 21;
+ repeated DEPRECATED_GlobCriteria DEPRECATED_glob_criteria = 16;
repeated bytes DEPRECATED_string_dict_unary_value = 18;
}
@@ -543,7 +539,7 @@
repeated MakeVarBinding binding = 2;
}
-message GlobCriteria {
+message DEPRECATED_GlobCriteria {
// List of includes (or items if this criteria did not come from a glob)
repeated string include = 1;
@@ -566,4 +562,3 @@
optional Location DEPRECATED_location = 2;
optional string message = 3;
}
-