diff options
Diffstat (limited to 'src/main')
4 files changed, 27 insertions, 1 deletions
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 b03af4fe97..f7c28c8587 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 @@ -588,7 +588,12 @@ public final class PackageFactory { } GlobList<String> globList = GlobList.captureResults(includes, excludes, matches); - return MutableList.copyOf(env, globList); + if (env.getSemantics().incompatibleDisableGlobTracking()) { + // Converting to ImmutableList will remove glob information from the list. + return MutableList.copyOf(env, ImmutableList.copyOf(globList)); + } else { + return MutableList.copyOf(env, globList); + } } /** diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java index f0ad5bb43f..29b3b5d0c2 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java @@ -46,6 +46,7 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics codedOut.writeBoolNoTag(semantics.incompatibleDepsetIsNotIterable()); codedOut.writeBoolNoTag(semantics.incompatibleDepsetUnion()); codedOut.writeBoolNoTag(semantics.incompatibleDictLiteralHasNoDuplicates()); + codedOut.writeBoolNoTag(semantics.incompatibleDisableGlobTracking()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowDictPlus()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowKeywordOnlyArgs()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowToplevelIfStatement()); @@ -70,6 +71,7 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics builder.incompatibleDepsetIsNotIterable(codedIn.readBool()); builder.incompatibleDepsetUnion(codedIn.readBool()); builder.incompatibleDictLiteralHasNoDuplicates(codedIn.readBool()); + builder.incompatibleDisableGlobTracking(codedIn.readBool()); builder.incompatibleDisallowDictPlus(codedIn.readBool()); builder.incompatibleDisallowKeywordOnlyArgs(codedIn.readBool()); builder.incompatibleDisallowToplevelIfStatement(codedIn.readBool()); diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java index 8cc1e9e469..d588118588 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java @@ -137,6 +137,17 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable public boolean incompatibleDictLiteralHasNoDuplicates; @Option( + name = "incompatible_disable_glob_tracking", + defaultValue = "false", + category = "incompatible changes", + documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, + effectTags = {OptionEffectTag.UNKNOWN}, + metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE}, + help = "If set to true, do not track the values of globs (this is used by rare specific cases" + ) + public boolean incompatibleDisableGlobTracking; + + @Option( name = "incompatible_disallow_dict_plus", defaultValue = "false", category = "incompatible changes", @@ -267,6 +278,7 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable .incompatibleDepsetIsNotIterable(incompatibleDepsetIsNotIterable) .incompatibleDepsetUnion(incompatibleDepsetUnion) .incompatibleDictLiteralHasNoDuplicates(incompatibleDictLiteralHasNoDuplicates) + .incompatibleDisableGlobTracking(incompatibleDisableGlobTracking) .incompatibleDisallowDictPlus(incompatibleDisallowDictPlus) .incompatibleDisallowKeywordOnlyArgs(incompatibleDisallowKeywordOnlyArgs) .incompatibleDisallowToplevelIfStatement(incompatibleDisallowToplevelIfStatement) diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java index c0ebebe974..9a6f9159bf 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java @@ -47,6 +47,9 @@ public abstract class SkylarkSemantics { public abstract boolean incompatibleDepsetUnion(); public abstract boolean incompatibleDictLiteralHasNoDuplicates(); + + public abstract boolean incompatibleDisableGlobTracking(); + public abstract boolean incompatibleDisallowDictPlus(); public abstract boolean incompatibleDisallowKeywordOnlyArgs(); public abstract boolean incompatibleDisallowToplevelIfStatement(); @@ -79,6 +82,7 @@ public abstract class SkylarkSemantics { .incompatibleDepsetIsNotIterable(false) .incompatibleDepsetUnion(false) .incompatibleDictLiteralHasNoDuplicates(true) + .incompatibleDisableGlobTracking(false) .incompatibleDisallowDictPlus(false) .incompatibleDisallowKeywordOnlyArgs(true) .incompatibleDisallowToplevelIfStatement(true) @@ -104,6 +108,9 @@ public abstract class SkylarkSemantics { public abstract Builder incompatibleDepsetUnion(boolean value); public abstract Builder incompatibleDictLiteralHasNoDuplicates(boolean value); + + public abstract Builder incompatibleDisableGlobTracking(boolean value); + public abstract Builder incompatibleDisallowDictPlus(boolean value); public abstract Builder incompatibleDisallowKeywordOnlyArgs(boolean value); public abstract Builder incompatibleDisallowToplevelIfStatement(boolean value); |