aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2018-02-09 06:54:21 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-09 06:57:52 -0800
commit220d650b3f47712a5b82748141f3381075c35c80 (patch)
tree3b3110a751932f6511381bcf41f2acdc6136290a
parent037c9dcf873e8037f7e6a03d4e4c6230dd5a1b27 (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.java6
-rwxr-xr-xsrc/test/shell/bazel/external_integration_test.sh44
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}"