diff options
author | 2018-03-01 08:07:14 -0800 | |
---|---|---|
committer | 2018-03-01 08:09:26 -0800 | |
commit | 940dbc531bf79907806bcf4f09543b3a2468d9b1 (patch) | |
tree | 5ee410c3cefa2e1913e57d2bd7b22235e13d2b72 /src/main/java/com | |
parent | 06e687495b4c85f86215c7cc7f1a01dc7f6709f9 (diff) |
Remove --incompatible_load_argument_is_label flag
RELNOTES:
Removed flag `--incompatible_load_argument_is_label`.
PiperOrigin-RevId: 187479614
Diffstat (limited to 'src/main/java/com')
4 files changed, 22 insertions, 47 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java index a4cf6e421e..ef8118fec8 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java @@ -95,7 +95,6 @@ import com.google.devtools.build.lib.syntax.SkylarkImports.SkylarkImportSyntaxEx import com.google.devtools.build.lib.util.OrderedSetMultimap; import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.RegexFilter; -import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.WalkableGraph; import com.google.devtools.common.options.Converter; @@ -519,15 +518,26 @@ public class BuildView { int delimiterPosition = aspect.indexOf('%'); if (delimiterPosition >= 0) { // TODO(jfield): For consistency with Skylark loads, the aspect should be specified - // as an absolute path. Also, we probably need to do at least basic validation of - // path well-formedness here. + // as an absolute label. + // We convert it for compatibility reasons (this will be removed in the future). String bzlFileLoadLikeString = aspect.substring(0, delimiterPosition); if (!bzlFileLoadLikeString.startsWith("//") && !bzlFileLoadLikeString.startsWith("@")) { // "Legacy" behavior of '--aspects' parameter. - bzlFileLoadLikeString = PathFragment.create("/" + bzlFileLoadLikeString).toString(); - if (bzlFileLoadLikeString.endsWith(".bzl")) { - bzlFileLoadLikeString = bzlFileLoadLikeString.substring(0, - bzlFileLoadLikeString.length() - ".bzl".length()); + if (bzlFileLoadLikeString.startsWith("/")) { + bzlFileLoadLikeString = bzlFileLoadLikeString.substring(1); + } + int lastSlashPosition = bzlFileLoadLikeString.lastIndexOf('/'); + if (lastSlashPosition >= 0) { + bzlFileLoadLikeString = + "//" + + bzlFileLoadLikeString.substring(0, lastSlashPosition) + + ":" + + bzlFileLoadLikeString.substring(lastSlashPosition + 1); + } else { + bzlFileLoadLikeString = "//:" + bzlFileLoadLikeString; + } + if (!bzlFileLoadLikeString.endsWith(".bzl")) { + bzlFileLoadLikeString = bzlFileLoadLikeString + ".bzl"; } } SkylarkImport skylarkImport; 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 3f22d8ca2c..1bcd5a1ee2 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 @@ -152,9 +152,7 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, effectTags = {OptionEffectTag.UNKNOWN}, metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE}, - help = - "If set to true, the first argument of 'load' statements is a label (not a path). " - + "It must start with '//' or ':'." + help = "no op - will be removed soon" ) public boolean incompatibleLoadArgumentIsLabel; diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Eval.java b/src/main/java/com/google/devtools/build/lib/syntax/Eval.java index 33ce4426bb..98130ae3ff 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Eval.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Eval.java @@ -124,17 +124,6 @@ public class Eval { } void execLoad(LoadStatement node) throws EvalException, InterruptedException { - if (env.getSemantics().incompatibleLoadArgumentIsLabel()) { - String s = node.getImport().getValue(); - if (!s.startsWith("//") && !s.startsWith(":") && !s.startsWith("@")) { - throw new EvalException( - node.getLocation(), - "First argument of 'load' must be a label and start with either '//', ':', or '@'. " - + "Use --incompatible_load_argument_is_label=false to temporarily disable this " - + "check."); - } - } - for (Map.Entry<Identifier, String> entry : node.getSymbolMap().entrySet()) { try { Identifier name = entry.getKey(); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java index dc08f4a19a..71f1bffc8d 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java @@ -228,15 +228,11 @@ public class SkylarkImports { @VisibleForTesting static final String INVALID_PATH_SYNTAX = - "Don't use paths for Load statements; " - + "use a label instead, e.g. '//foo:bar.bzl' or ':bar.bzl'"; + "First argument of 'load' must be a label and start with either '//', ':', or '@'."; @VisibleForTesting static final String INVALID_TARGET_PREFIX = "Invalid target: "; - @VisibleForTesting - static final String INVALID_FILENAME_PREFIX = "Invalid filename: "; - /** * Creates and syntactically validates a {@link SkylarkImports} instance from a string. * <p> @@ -263,16 +259,8 @@ public class SkylarkImports { throw new SkylarkImportSyntaxException(EXTERNAL_PKG_NOT_ALLOWED_MSG); } return new AbsoluteLabelImport(importString, importLabel); - } else if (importString.startsWith("/")) { - // Absolute path. - if (importString.endsWith(".bzl")) { - throw new SkylarkImportSyntaxException(INVALID_PATH_SYNTAX); - } - PathFragment importPath = PathFragment.create(importString + ".bzl"); - return new AbsolutePathImport(importString, importPath); } else if (importString.startsWith(":")) { - // Relative label. We require that relative labels use an explicit ':' prefix to distinguish - // them from relative paths, which have a different semantics. + // Relative label. We require that relative labels use an explicit ':' prefix. String importTarget = importString.substring(1); if (!importTarget.endsWith(".bzl")) { throw new SkylarkImportSyntaxException(MUST_HAVE_BZL_EXT_MSG); @@ -283,18 +271,8 @@ public class SkylarkImports { throw new SkylarkImportSyntaxException(INVALID_TARGET_PREFIX + maybeErrMsg); } return new RelativeLabelImport(importString, importTarget); - } else { - // Relative path. - if (importString.endsWith(".bzl") || importString.contains("/")) { - throw new SkylarkImportSyntaxException(INVALID_PATH_SYNTAX); - } - String importTarget = importString + ".bzl"; - String maybeErrMsg = LabelValidator.validateTargetName(importTarget); - if (maybeErrMsg != null) { - // Null indicates successful target validation. - throw new SkylarkImportSyntaxException(INVALID_FILENAME_PREFIX + maybeErrMsg); - } - return new RelativePathImport(importString, importTarget); } + + throw new SkylarkImportSyntaxException(INVALID_PATH_SYNTAX); } } |