diff options
author | Lukacs Berki <lberki@google.com> | 2015-07-30 15:38:25 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2015-07-30 15:43:41 +0000 |
commit | 8647e5fbe93766338f164fc1957f38b83b7d6edc (patch) | |
tree | 0760d57679eba037dc64decaf1529997257ae8de | |
parent | b424f4316e3c06b758841d380f565fa9c3aacb2c (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.java | 4 | ||||
-rwxr-xr-x | src/test/shell/bazel/local_repository_test.sh | 20 |
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" |