diff options
-rw-r--r-- | bbot/worker.cxx | 7 | ||||
-rw-r--r-- | doc/manual.cli | 75 |
2 files changed, 61 insertions, 21 deletions
diff --git a/bbot/worker.cxx b/bbot/worker.cxx index 3e0def5..261dded 100644 --- a/bbot/worker.cxx +++ b/bbot/worker.cxx @@ -207,9 +207,10 @@ build (size_t argc, const char* argv[]) regexes wre ({ regex ("^warning: ", f), - regex ("^.+: warning: ", f), - regex ("^.+:\\d+: warning: ", f), - regex ("^.+:\\d+:\\d+: warning: ", f)}); + regex ("^.+: warning: ", f)}); + + for (const auto& re: tm.unquoted_warning_regex ()) + wre.emplace_back (re, f); // Configure. // diff --git a/doc/manual.cli b/doc/manual.cli index d581264..8e0d745 100644 --- a/doc/manual.cli +++ b/doc/manual.cli @@ -260,9 +260,10 @@ version: <package-version> repository: <repository-url> trust: <repository-fp> -machine: <machine-name> -target: <target-triplet> -config: <config-vars> +machine: <machine-name> +target: <target-triplet> +config: <config-vars> +warning-regex: <warning-regexes> \ The task manifest describes a build task. It consists of two groups of values. @@ -328,9 +329,38 @@ build configuration to use for building the package. config.cc.coptions=-O3 -stdlib='libc++' \ - Variables can be separated with spaces or newlines. + Variables can be separated with spaces or newlines.| - || +\li|\n\c{warning-regex: <warning-regexes>}\n + + Additional regular expressions that should be used to detect warnings in + the logs. + + A single level of quotes (either single or double) is removed in each + expression before being used for search. For example, the following value: + + \ + warning-regex: \"warning C4\d{3}: \" + \ + + Will be treated as the following (single) regular expression (with a + trailing space): + + \ + warning C4\d{3}: + \ + + Expressions can be separated with spaces or newlines. They will be added to + the following default list of regular expressions that detect the \c{build2} + toolchain warnings: + + \ + ^warning: + ^.+: warning: + \ + + Note that this built-in list also covers GCC and Clang warnings (for the + English locale).|| \h#arch-result-manifest|Result Manifest| @@ -581,16 +611,22 @@ machines (as reported by agents) to \i{build configurations} according to the are ignored. All other lines in this file have the following format: \ -<machine-name-pattern> <config-name> [<target>] [<config-vars>] +<machine-pattern> <config> [<target>] [<config-vars>] [<warning-regex>] \ -Where \c{<machine-name-pattern>} is filesystem wildcard pattern that is -matched against available machine names, \c{<config-name>} is the -configuration name, optional \c{<target>} is the build target, and optional -\c{<config-vars>} is a list of additional build system configuration variables -with the same quoting semantics as in the \c{config} value in the build task -manifest. The matched machine name, the target, and configuration variables -are included into the build task manifest. +Where \c{<machine-pattern>} is filesystem wildcard pattern that is +matched against available machine names, \c{<config>} is the +configuration name, optional \c{<target>} is the build target, optional +\c{<config-vars>} is a list of additional build system configuration +variables, and optional \c{<warning-regex>} is a list of additional regular +expressions that should be used to detect warnings in the logs. + +Regular expressions must start with \c{~}, to be distinguished from +configuration variables. Note that \c{<config-vars>} and \c{<warning-regex>} +lists have the same quoting semantics as in the \c{config} and the +\c{warning-regex} values in the build task manifest. The matched machine name, +the target, configuration variables, and regular expressions are included into +the build task manifest. Note that each machine name is matched against every pattern and all the patterns that match produce a configuration. If a machine does not match any @@ -599,15 +635,18 @@ testing its packages with this machine). If multiple machines match the same pattern, then only a single configuration using any of the machines is produced (meaning that this controller considers these machines equivalent). -As an example, let's say we have a machine named \c{windows_10-vc_14u3}. If +As an example, let's say we have a machine named \c{windows_10-vc_14u3}. If we wanted to test both 32 and 64-bit builds as well as debug and release, then we could have generated the following configurations: \ -windows*-vc_14* windows-vc_14-32-debug i686-microsoft-win32-msvc14.0 config.cc.coptions=/Z7 config.cc.loptions=/DEBUG -windows*-vc_14* windows-vc_14-32-release i686-microsoft-win32-msvc14.0 config.cc.coptions=\"/O2 /Oi\" -windows*-vc_14* windows-vc_14-64-debug x86_64-microsoft-win32-msvc14.0 config.cc.coptions=/Z7 config.cc.loptions=/DEBUG -windows*-vc_14* windows-vc_14-64-release x86_64-microsoft-win32-msvc14.0 config.cc.coptions=\"/O2 /Oi\" +windows*-vc_14* windows-vc_14-32-debug i686-microsoft-win32-msvc14.0 config.cc.coptions=/Z7 config.cc.loptions=/DEBUG ~\"warning C4\d{3}: \" + +windows*-vc_14* windows-vc_14-32-release i686-microsoft-win32-msvc14.0 config.cc.coptions=\"/O2 /Oi\" ~\"warning C4\d{3}: \" + +windows*-vc_14* windows-vc_14-64-debug x86_64-microsoft-win32-msvc14.0 config.cc.coptions=/Z7 config.cc.loptions=/DEBUG ~\"warning C4\d{3}: \" + +windows*-vc_14* windows-vc_14-64-release x86_64-microsoft-win32-msvc14.0 config.cc.coptions=\"/O2 /Oi\" ~\"warning C4\d{3}: \" \ As another example, let's say we have \c{linux_fedora_25-gcc_6} and |