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


Reply via email to