From: Justin Pryzby Date: Wed, 25 May 2022 21:53:22 -0500 Subject: [PATCH 4/8] cirrus/windows: add compiler_warnings_script I'm not sure how to write this test in windows shell; it's also not easy to write it in posix sh, since windows shell is somehow interpretting && and ||... https://www.postgresql.org/message-id/20220212212310.f645c6vw3njkgxka%40alap3.anarazel.de See also: 8a1ce5e54f6d144e4f8e19af7c767b026ee0c956 https://cirrus-ci.com/task/6241060062494720 https://cirrus-ci.com/task/6496366607204352 ci-os-only: windows --- .cirrus.yml | 10 +++++++++- src/tools/ci/windows-compiler-warnings | 24 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100755 src/tools/ci/windows-compiler-warnings diff --git a/.cirrus.yml b/.cirrus.yml index 9f2282471a9..99ac09dc679 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -451,12 +451,20 @@ task: build_script: | vcvarsall x64 - ninja -C build + ninja -C build |tee build/meson-logs/build.txt + REM Since pipes lose exit status of the preceding command, rerun compilation, + REM without the pipe exiting now if it fails, rather than trying to run checks + ninja -C build > nul check_world_script: | vcvarsall x64 meson test %MTEST_ARGS% --num-processes %TEST_JOBS% + # This should be last, so check_world is always run + always: + compiler_warnings_script: + - sh src\tools\ci\windows-compiler-warnings build/meson-logs/build.txt build/meson-logs/build-warnings.txt + on_failure: <<: *on_failure_meson crashlog_artifacts: diff --git a/src/tools/ci/windows-compiler-warnings b/src/tools/ci/windows-compiler-warnings new file mode 100755 index 00000000000..685aa995d5c --- /dev/null +++ b/src/tools/ci/windows-compiler-warnings @@ -0,0 +1,24 @@ +#! /bin/sh +# Success if the given exists and is empty, else fail +# This is a separate file to avoid dealing with windows shell quoting and escaping, +# or giving the impression that one-liner scripts will work trivially. +set -e + +infile=$1 +outfile=$2 + +# Looks like: +# [19:39:27.130] c:\cirrus\src\backend\backup\basebackup_zstd.c(80) : warning C4715: 'bbsink_zstd_new': not all control paths return a value +# should include linker warnings? +grep ": warning " "$infile" > $outfile || + [ $? -eq 1 ] + +if [ -s "$outfile" ] +then + # Display the file's content, then exit indicating failure + cat "$outfile" + exit 1 +else + # Success + exit 0 +fi -- 2.25.1 --rPFbv4B2w2tcwGo5 Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0005-cirrus-build-docs-as-a-separate-task.patch"