aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2018-06-13 05:48:18 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-13 05:49:23 -0700
commitea21195ff0973c4bba0bda5887bb7c5fa5e7c5c2 (patch)
tree5dfe93b2b0d6d97c4e5b4e780f0520c1de909edd
parent348225e4d25b9259489c1ed66eb7eca7612cddcc (diff)
Skylark repos: for failed patch command, also report stdout
The patch(1) utility usually gives error messages on stdout. So it is not useful to report only stderr in case a patch failed. Report both. Fixes #5379. Change-Id: Ief198849e29ca989dfdefe2fadf495a0b0949972 PiperOrigin-RevId: 200377306
-rwxr-xr-xsrc/test/shell/bazel/external_patching_test.sh32
-rw-r--r--tools/build_defs/repo/utils.bzl3
2 files changed, 34 insertions, 1 deletions
diff --git a/src/test/shell/bazel/external_patching_test.sh b/src/test/shell/bazel/external_patching_test.sh
index b9d6fd7b4f..ee3c938fe8 100755
--- a/src/test/shell/bazel/external_patching_test.sh
+++ b/src/test/shell/bazel/external_patching_test.sh
@@ -110,6 +110,38 @@ EOF
grep -q 'env' $foopath || fail "expected unpatched file"
}
+test_patch_failed() {
+ EXTREPODIR=`pwd`
+
+ cat > my_patch_tool <<'EOF'
+#!/bin/sh
+
+echo Helpful message
+exit 1
+EOF
+ chmod u+x my_patch_tool
+
+ # Test that the patches attribute of http_archive is honored
+ mkdir main
+ cd main
+ echo "ignored anyway" > patch_foo.sh
+ cat > WORKSPACE <<EOF
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+http_archive(
+ name="ext",
+ strip_prefix="ext-0.1.2",
+ urls=["file://${EXTREPODIR}/ext.zip"],
+ build_file_content="exports_files([\"foo.sh\"])",
+ patches = ["//:patch_foo.sh"],
+ patch_tool = "${EXTREPODIR}/my_patch_tool",
+)
+EOF
+ touch BUILD
+
+ bazel build @ext//... >"${TEST_log}" 2>&1 && fail "expected failure" || :
+ expect_log 'Helpful message'
+}
+
test_patch_git() {
EXTREPODIR=`pwd`
export GIT_CONFIG_NOSYSTEM=YES
diff --git a/tools/build_defs/repo/utils.bzl b/tools/build_defs/repo/utils.bzl
index 4839b3e73b..e23556cce6 100644
--- a/tools/build_defs/repo/utils.bzl
+++ b/tools/build_defs/repo/utils.bzl
@@ -76,7 +76,8 @@ def patch(ctx):
)
st = ctx.execute([bash_exe, "-c", command])
if st.return_code:
- fail("Error applying patch %s:\n%s" % (str(patchfile), st.stderr))
+ fail("Error applying patch %s:\n%s%s" %
+ (str(patchfile), st.stderr, st.stdout))
for cmd in ctx.attr.patch_cmds:
st = ctx.execute([bash_exe, "-c", cmd])
if st.return_code: