aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-02-09 14:42:21 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-02-09 14:42:21 +0000
commit9f212f7efffddf81a261be9bcd4e43cc1749a515 (patch)
tree256ce0139a220e2847a8fd4b683888496d5c42f6 /src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java
parent4fdd776a8177efd52fbdfc4e3a03ee498e4891ad (diff)
Skylark: enable relative paths in load statements. Only paths with 1 segment are treated as relative paths.
Obsolete tests are removed from ASTFileLookupFunctionTest. -- MOS_MIGRATED_REVID=85885578
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java
index 3c87431129..fc46f78398 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.packages.PackageIdentifier;
import com.google.devtools.build.lib.packages.PackageIdentifier.RepositoryName;
@@ -56,11 +57,28 @@ public class SkylarkImportLookupValue implements SkyValue {
return dependency;
}
+ @VisibleForTesting
static SkyKey key(PackageIdentifier pkgIdentifier) throws ASTLookupInputException {
return key(pkgIdentifier.getRepository(), pkgIdentifier.getPackageFragment());
}
- static SkyKey key(RepositoryName repo, PathFragment fileToImport) throws ASTLookupInputException {
+ static SkyKey key(RepositoryName repo, PathFragment fromFile, PathFragment fileToImport)
+ throws ASTLookupInputException {
+ PathFragment computedPath;
+ if (fileToImport.isAbsolute()) {
+ computedPath = fileToImport.toRelative();
+ } else if (fileToImport.segmentCount() > 1) {
+ // TODO(bazel-team): we treat paths with more then 1 segments as absolute paths
+ // for a transition period. Remove this after the transition is over.
+ computedPath = fileToImport;
+ } else {
+ computedPath = fromFile.getParentDirectory().getRelative(fileToImport);
+ }
+ return key(repo, computedPath);
+ }
+
+ private static SkyKey key(RepositoryName repo, PathFragment fileToImport)
+ throws ASTLookupInputException {
// Skylark import lookup keys need to be valid AST file lookup keys.
ASTFileLookupValue.checkInputArgument(fileToImport);
return new SkyKey(