diff options
author | 2018-02-09 06:54:21 -0800 | |
---|---|---|
committer | 2018-02-09 06:57:52 -0800 | |
commit | 220d650b3f47712a5b82748141f3381075c35c80 (patch) | |
tree | 3b3110a751932f6511381bcf41f2acdc6136290a | |
parent | 037c9dcf873e8037f7e6a03d4e4c6230dd5a1b27 (diff) |
distdir: also accept relative path
...and interpret them relative to the workspace directory.
Change-Id: I31a0ce3a179356c798f00c4218ddd22e16b256a3
PiperOrigin-RevId: 185136432
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java | 6 | ||||
-rwxr-xr-x | src/test/shell/bazel/external_integration_test.sh | 44 |
2 files changed, 49 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java index d535867c81..4d2c0328bd 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java @@ -218,7 +218,11 @@ public class BazelRepositoryModule extends BlazeModule { repoOptions .experimentalDistdir .stream() - .map(filesystem::getPath) + .map( + path -> + path.isAbsolute() + ? filesystem.getPath(path) + : env.getBlazeWorkspace().getWorkspace().getRelative(path)) .collect(Collectors.toList())); } diff --git a/src/test/shell/bazel/external_integration_test.sh b/src/test/shell/bazel/external_integration_test.sh index 0cbc64c2c7..451c49e809 100755 --- a/src/test/shell/bazel/external_integration_test.sh +++ b/src/test/shell/bazel/external_integration_test.sh @@ -1285,6 +1285,50 @@ EOF || fail "expected success" } +function test_distdir_relative_path() { + WRKDIR=$(mktemp -d "${TEST_TMPDIR}/testXXXXXX") + cd "${WRKDIR}" + mkdir ext + cat > ext/BUILD <<'EOF' +genrule( + name="foo", + outs=["foo.txt"], + cmd="echo Hello World > $@", + visibility = ["//visibility:public"], +) +EOF + zip ext.zip ext/* + rm -rf ext + sha256=$(sha256sum ext.zip | head -c 64) + + mkdir distfiles + mv ext.zip distfiles + + mkdir main + cd main + cat > WORKSPACE <<EOF +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +http_archive( + name="ext", + strip_prefix="ext", + urls=["http://doesnotexist.example.com/outdatedpath/ext.zip"], + sha256="${sha256}", +) +EOF + cat > BUILD <<'EOF' +genrule( + name = "local", + srcs = ["@ext//:foo"], + outs = ["local.txt"], + cmd = "cp $< $@", +) +EOF + + bazel clean --expunge + bazel build --experimental_distdir="../distfiles" //:local \ + || fail "expected success" +} + function test_good_symlinks() { WRKDIR=$(mktemp -d "${TEST_TMPDIR}/testXXXXXX") cd "${WRKDIR}" |