diff options
author | dannark <dannark@google.com> | 2018-06-12 09:28:45 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-12 09:30:48 -0700 |
commit | f4b9ff40b8f1612571cc711560177af240d034d0 (patch) | |
tree | 2b2bf5415d7b4a0ab5db78d916cebfec0775f810 /src/main/java/com/google/devtools/build/lib/packages | |
parent | 1b94e64ee8a1d385e92a8d9f4c9a06e2d99c82bf (diff) |
Remap repository names inside load statements in BUILD files if the repository name is remapped.
For example if main/WORKSPACE contains:
local_repository(
name = "a",
path = "../a",
repo_mapping = {"@x" : "@y"},
)
a/BUILD
load("@x//:sample.bzl", "sample")
Then the load in a/BUILD will be resolved as "@y//:sample.bzl"
RELNOTES: None
PiperOrigin-RevId: 200227431
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java index d9da36f945..108a0cf426 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java @@ -1246,12 +1246,17 @@ public final class PackageFactory { // Run the lexer and parser with a local reporter, so that errors from other threads do not // show up below. BuildFileAST buildFileAST = - parseBuildFile(packageId, input, preludeStatements, localReporterForParsing); + parseBuildFile( + packageId, + input, + preludeStatements, + /* repositoryMapping= */ ImmutableMap.of(), + localReporterForParsing); AstParseResult astParseResult = new AstParseResult(buildFileAST, localReporterForParsing); return createPackageFromAst( workspaceName, - /*repositoryMapping=*/ ImmutableMap.of(), + /* repositoryMapping= */ ImmutableMap.of(), packageId, buildFile, astParseResult, @@ -1266,10 +1271,12 @@ public final class PackageFactory { PackageIdentifier packageId, ParserInputSource in, List<Statement> preludeStatements, + ImmutableMap<RepositoryName, RepositoryName> repositoryMapping, ExtendedEventHandler eventHandler) { // Logged messages are used as a testability hook tracing the parsing progress logger.fine("Starting to parse " + packageId); - BuildFileAST buildFileAST = BuildFileAST.parseBuildFile(in, preludeStatements, eventHandler); + BuildFileAST buildFileAST = + BuildFileAST.parseBuildFile(in, preludeStatements, repositoryMapping, eventHandler); logger.fine("Finished parsing of " + packageId); return buildFileAST; } @@ -1373,10 +1380,10 @@ public final class PackageFactory { packageId, buildFile, input, - /*preludeStatements=*/ ImmutableList.<Statement>of(), - /*imports=*/ ImmutableMap.<String, Extension>of(), - /*skylarkFileDependencies=*/ ImmutableList.<Label>of(), - /*defaultVisibility=*/ ConstantRuleVisibility.PUBLIC, + /* preludeStatements= */ ImmutableList.<Statement>of(), + /* imports= */ ImmutableMap.<String, Extension>of(), + /* skylarkFileDependencies= */ ImmutableList.<Label>of(), + /* defaultVisibility= */ ConstantRuleVisibility.PUBLIC, semantics, globber) .build(); |