diff options
author | 2015-02-09 14:42:21 +0000 | |
---|---|---|
committer | 2015-02-09 14:42:21 +0000 | |
commit | 9f212f7efffddf81a261be9bcd4e43cc1749a515 (patch) | |
tree | 256ce0139a220e2847a8fd4b683888496d5c42f6 /src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java | |
parent | 4fdd776a8177efd52fbdfc4e3a03ee498e4891ad (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.java | 20 |
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( |