Emit QA notices for setuptools warnings such as: * QA Notice: setuptools warnings detected: * * Usage of dash-separated 'build-requires' will not be supported in future versions. Please use the underscore name 'build_requires' instead * Usage of dash-separated 'description-file' will not be supported in future versions. Please use the underscore name 'description_file' instead * Usage of dash-separated 'upload-dir' will not be supported in future versions. Please use the underscore name 'upload_dir' instead
Signed-off-by: Michał Górny <mgo...@gentoo.org> --- lib/portage/package/ebuild/doebuild.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/portage/package/ebuild/doebuild.py b/lib/portage/package/ebuild/doebuild.py index 86c1d40b4..b1557edd7 100644 --- a/lib/portage/package/ebuild/doebuild.py +++ b/lib/portage/package/ebuild/doebuild.py @@ -1863,6 +1863,10 @@ def _check_build_log(mysettings, out=None): re.compile(r'g?make\[\d+\]: warning: jobserver unavailable:') make_jobserver = [] + # we deduplicate these since they is repeated for every setup.py call + setuptools_warn = set() + setuptools_warn_re = re.compile(r'.*\/setuptools\/.*: UserWarning: (.*)') + def _eerror(lines): for line in lines: eerror(line, phase="install", key=mysettings.mycpv, out=out) @@ -1892,6 +1896,10 @@ def _check_build_log(mysettings, out=None): if make_jobserver_re.match(line) is not None: make_jobserver.append(line.rstrip("\n")) + m = setuptools_warn_re.match(line) + if m is not None: + setuptools_warn.add(m.group(1)) + except (EOFError, zlib.error) as e: _eerror(["portage encountered a zlib error: '%s'" % (e,), "while reading the log file: '%s'" % logfile]) @@ -1945,6 +1953,12 @@ def _check_build_log(mysettings, out=None): msg.extend("\t" + line for line in make_jobserver) _eqawarn(msg) + if setuptools_warn: + msg = [_("QA Notice: setuptools warnings detected:")] + msg.append("") + msg.extend("\t" + line for line in sorted(setuptools_warn)) + _eqawarn(msg) + f.close() if f_real is not None: f_real.close() -- 2.31.1