diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java index 4e6628d482..901e4154a9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java @@ -22,7 +22,6 @@ import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.events.Event; -import com.google.devtools.build.lib.packages.AggregatingAttributeMapper; import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException; import com.google.devtools.build.lib.packages.NoSuchPackageException; import com.google.devtools.build.lib.packages.Package; @@ -208,9 +207,15 @@ public abstract class RepositoryFunction { } @VisibleForTesting - protected static PathFragment getTargetPath(Rule rule, Path workspace) { - AggregatingAttributeMapper mapper = AggregatingAttributeMapper.of(rule); - String path = mapper.get("path", Type.STRING); + protected static PathFragment getTargetPath(Rule rule, Path workspace) + throws RepositoryFunctionException { + WorkspaceAttributeMapper mapper = WorkspaceAttributeMapper.of(rule); + String path; + try { + path = mapper.get("path", Type.STRING); + } catch (EvalException e) { + throw new RepositoryFunctionException(e, Transience.PERSISTENT); + } PathFragment pathFragment = new PathFragment(path); return workspace.getRelative(pathFragment).asFragment(); } @@ -397,8 +402,13 @@ public abstract class RepositoryFunction { // reflected in the SkyFrame tree, since it's not symlinked to it or anything. if (repositoryRule.getRuleClass().equals(NewLocalRepositoryRule.NAME) && repositoryPath.segmentCount() == 1) { - PathFragment pathDir = RepositoryFunction.getTargetPath( - repositoryRule, directories.getWorkspace()); + PathFragment pathDir; + try { + pathDir = RepositoryFunction.getTargetPath( + repositoryRule, directories.getWorkspace()); + } catch (RepositoryFunctionException e) { + throw new IOException(e.getMessage()); + } FileSystem fs = directories.getWorkspace().getFileSystem(); SkyKey dirKey = DirectoryListingValue.key( RootedPath.toRootedPath(fs.getRootDirectory(), fs.getPath(pathDir))); |