aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax/CommaSeparatedPackageNameListConverter.java
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-07-07 07:30:35 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-07-07 08:42:19 +0000
commit7d02845041bbd0342f9e6dca69627bff5864aa71 (patch)
tree8256ffc0d88a97c5338fee538b5a5fe59d246a8d /src/main/java/com/google/devtools/build/lib/syntax/CommaSeparatedPackageNameListConverter.java
parent69d20b26b50360221849a4860265150f9c66ef25 (diff)
Make globs work in remote repositories.
This involved quite a few changes, mainly changing a bunch of places where we refer to packages by a PathFragment to PackageIdentifier. The only wart is the code in PathPackageLocator: ideally, it would just call into PackageLookupFunction. Unfortunately, it is (through globbing and Parser.include) called from within a Skyframe function, and we don't want to have two eval() calls going on at the same time, so we cannot use that. There is a potential correctness issue there: PathPackageLocator now assumes where external repositories are put and assumes that they are there when it gets control, but my understanding is that the associated RepositoryValue is always evaluated before, so it works out okay. -- MOS_MIGRATED_REVID=97647787
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/CommaSeparatedPackageNameListConverter.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/CommaSeparatedPackageNameListConverter.java16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/CommaSeparatedPackageNameListConverter.java b/src/main/java/com/google/devtools/build/lib/syntax/CommaSeparatedPackageNameListConverter.java
index 070e928eb9..ce7680ce3e 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/CommaSeparatedPackageNameListConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/CommaSeparatedPackageNameListConverter.java
@@ -16,7 +16,7 @@ package com.google.devtools.build.lib.syntax;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.cmdline.LabelValidator;
+import com.google.devtools.build.lib.packages.PackageIdentifier;
import com.google.devtools.common.options.Converter;
import com.google.devtools.common.options.OptionsParsingException;
@@ -26,22 +26,22 @@ import java.util.List;
* A converter from strings containing comma-separated names of packages to lists of strings.
*/
public class CommaSeparatedPackageNameListConverter
- implements Converter<List<String>> {
+ implements Converter<List<PackageIdentifier>> {
private static final Splitter SPACE_SPLITTER = Splitter.on(',');
@Override
- public List<String> convert(String input) throws OptionsParsingException {
+ public List<PackageIdentifier> convert(String input) throws OptionsParsingException {
if (Strings.isNullOrEmpty(input)) {
return ImmutableList.of();
}
- ImmutableList.Builder<String> list = ImmutableList.builder();
+ ImmutableList.Builder<PackageIdentifier> list = ImmutableList.builder();
for (String s : SPACE_SPLITTER.split(input)) {
- String errorMessage = LabelValidator.validatePackageName(s);
- if (errorMessage != null) {
- throw new OptionsParsingException(errorMessage);
+ try {
+ list.add(PackageIdentifier.parse(s));
+ } catch (Label.SyntaxException e) {
+ throw new OptionsParsingException(e.getMessage());
}
- list.add(s);
}
return list.build();
}