aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-07-30 15:38:25 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-07-30 15:43:41 +0000
commit8647e5fbe93766338f164fc1957f38b83b7d6edc (patch)
tree0760d57679eba037dc64decaf1529997257ae8de
parentb424f4316e3c06b758841d380f565fa9c3aacb2c (diff)
Make OutputFileConfiguredTarget create artifacts that are consistent with RuleContext#internalCreateOutputArtifact().
Fixes #351. -- MOS_MIGRATED_REVID=99478770
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java4
-rwxr-xr-xsrc/test/shell/bazel/local_repository_test.sh20
2 files changed, 23 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index c5d7a671f2..1d2eb5bf58 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -138,7 +138,9 @@ public final class ConfiguredTargetFactory {
: configuration.getGenfilesDirectory();
ArtifactOwner owner =
new ConfiguredTargetKey(rule.getLabel(), configuration.getArtifactOwnerConfiguration());
- PathFragment rootRelativePath = Util.getWorkspaceRelativePath(outputFile);
+ PathFragment rootRelativePath =
+ outputFile.getLabel().getPackageIdentifier().getPathFragment().getRelative(
+ outputFile.getLabel().getName());
Artifact result = isFileset
? artifactFactory.getFilesetArtifact(rootRelativePath, root, owner)
: artifactFactory.getDerivedArtifact(rootRelativePath, root, owner);
diff --git a/src/test/shell/bazel/local_repository_test.sh b/src/test/shell/bazel/local_repository_test.sh
index bde15c7bd9..4697660d26 100755
--- a/src/test/shell/bazel/local_repository_test.sh
+++ b/src/test/shell/bazel/local_repository_test.sh
@@ -594,4 +594,24 @@ EOF
bazel build --nobuild @r//:bin || fail "build failed"
}
+function test_output_file_in_local_repository() {
+ local r=$TEST_TMPDIR/r
+ rm -fr $r
+ mkdir $r
+ touch $r/WORKSPACE
+ cat > $r/BUILD <<'EOF'
+genrule(name="r", srcs=[], outs=["r.out"], cmd="touch $@")
+EOF
+
+ cat > WORKSPACE <<EOF
+local_repository(name="r", path="$r")
+EOF
+
+ cat > BUILD <<'EOF'
+genrule(name="m", srcs=["@r//:r.out"], outs=["m.out"], cmd="touch $@")
+EOF
+
+ bazel build //:m
+}
+
run_suite "local repository tests"