diff options
author | 2015-08-24 13:58:58 +0000 | |
---|---|---|
committer | 2015-08-25 07:39:46 +0000 | |
commit | 29c43874c05ec6a8365661c428b3a0639c8863fb (patch) | |
tree | 6dea6002b90b848acb0e82f49fcc85412b0c6c73 | |
parent | 81fb6e7bb8a5b9d818d4974e24a79628020c4dd0 (diff) |
Do not consider //external: a repository-local reference.
Fixes #360.
--
MOS_MIGRATED_REVID=101360551
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java | 6 | ||||
-rwxr-xr-x | src/test/shell/bazel/local_repository_test.sh | 38 |
2 files changed, 41 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java index 9365e9a7f3..931bcf9d96 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java @@ -30,6 +30,7 @@ import javax.annotation.Nullable; public abstract class AbstractAttributeMapper implements AttributeMap { private static final PathFragment VISIBILITY = new PathFragment("visibility"); + private static final PathFragment EXTERNAL = new PathFragment("external"); private final Package pkg; private final RuleClass ruleClass; @@ -164,8 +165,9 @@ public abstract class AbstractAttributeMapper implements AttributeMap { // generally tools, which go to the main repository. absoluteLabel = label; } else if (label.getPackageIdentifier().getRepository().isDefault() - && VISIBILITY.equals(label.getPackageIdentifier().getPackageFragment())) { - // //visibility: labels must also be special-cased :( + && (VISIBILITY.equals(label.getPackageIdentifier().getPackageFragment()) + || EXTERNAL.equals(label.getPackageIdentifier().getPackageFragment()))) { + // //visibility: and //external: labels must also be special-cased :( absoluteLabel = label; } else { absoluteLabel = ruleLabel.resolveRepositoryRelative(label); diff --git a/src/test/shell/bazel/local_repository_test.sh b/src/test/shell/bazel/local_repository_test.sh index ff6d38706b..e3f146044d 100755 --- a/src/test/shell/bazel/local_repository_test.sh +++ b/src/test/shell/bazel/local_repository_test.sh @@ -481,7 +481,7 @@ EOF assert_contains "Michaelangelo" bazel-genfiles/external/mutant/tmnt } -function test_local_deps() { +function test_external_deps_in_remote_repo() { local r=$TEST_TMPDIR/r rm -fr $r mkdir -p $r @@ -491,6 +491,42 @@ local_repository( path = "$r", ) +bind( + name = "e", + actual = "@r//:g", +) +EOF + + cat > $r/BUILD <<EOF +genrule( + name = "r", + srcs = ["//external:e"], + outs = ["r.out"], + cmd = "cp \$< \$@", +) + +genrule( + name = "g", + srcs = [], + outs = ["g.out"], + cmd = "echo GOLF > \$@", + visibility = ["//visibility:public"], +) +EOF + + bazel build @r//:r || fail "build failed" + assert_contains "GOLF" bazel-genfiles/external/r/r.out +} + +function test_local_deps() { + local r=$TEST_TMPDIR/r + rm -fr $r + mkdir -p $r + cat > WORKSPACE <<EOF +local_repository( + name = "r", + path = "$r", +) EOF mkdir -p $r/a |