aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar laurentlb <laurentlb@google.com>2018-03-01 08:07:14 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-01 08:09:26 -0800
commit940dbc531bf79907806bcf4f09543b3a2468d9b1 (patch)
tree5ee410c3cefa2e1913e57d2bd7b22235e13d2b72 /src/main/java/com
parent06e687495b4c85f86215c7cc7f1a01dc7f6709f9 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Eval.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java30
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);
}
}