Commit Graph

3 Commits

Author SHA1 Message Date
Yoann Congal
140edb96aa waf: Improve version parsing to avoid failing on warnings
waf uses an inline tar file extracted by the tarfile module. The tarfile
module may print a warning when used with default 'filter' argument[0].

When called to get the version, the first time after unpack, the output
may look like:
  # output from lower modules (e.g: warnings from tarfile, ...)
  waf X.Y.Z ...

This patch makes the version parsing more precise by looking at the
first line matching "waf ".

[0]: https://docs.python.org/3.12/library/tarfile.html#extraction-filters

(From OE-Core rev: 643b799a0c11d82907dd82991c19b003fe20a8b0)

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-03-01 09:31:10 +00:00
Yoann Congal
e898f65b33 waf.bbclass: Print waf output on unparsable version
On AB runs of reproducible-meta-oe/Repro meta-oe/meta-oe,
"waf --version" does not seem to contain the version but an error
message with "RuntimeWarning: <something>" [0].

Since the actual output is not saved anywhere, it is quite hard to
debug.

This patch detects the problematic case and send it to the log where it
will be seen and fixed. As a side-effect, this error will now only be a
warning.

Here is a partial backtrace for this (full back trace visible in [0]):
  NOTE: recipe mpv-0.35.1-r0: task do_configure: Started
  ERROR: mpv-0.35.1-r0 do_configure: Error executing a python function in exec_func_python() autogenerated:

  The stack trace of python calls that resulted in this exception/failure was:
  File: 'exec_func_python() autogenerated', lineno: 2, function: <module>
   *** 0002:waf_preconfigure(d)
  File: '$TOP/meta/classes-recipe/waf.bbclass', lineno: 58, function: waf_preconfigure
       0056:        result = subprocess.check_output([python, wafbin, '--version'], cwd=subsrcdir, stderr=subprocess.STDOUT)
       0057:        version = result.decode('utf-8').split()[1]
   *** 0058:        if bb.utils.vercmp_string_op(version, "1.8.7", ">="):
  [...]
  File: '$TOP/bitbake/lib/bb/utils.py', lineno: 91, function: split_version
   *** 0091:        e = int(s.split(":")[0])
  Exception: ValueError: invalid literal for int() with base 10: 'RuntimeWarning'

[0]: https://autobuilder.yoctoproject.org/typhoon/#/builders/155/builds/11/steps/32/logs/stdio line 31883

(From OE-Core rev: 4a82c7ca74075b4c22be94891eecc24238bd0e65)

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-02-16 15:14:26 +00:00
Richard Purdie
fd1517e2b5 classes: Update classes to match new bitbake class scope functionality
Move classes to classes-global or classes-recipe as appropriate to take
advantage of new bitbake functionality to check class scope/usage.

(From OE-Core rev: f5c128008365e141082c129417eb72d2751e8045)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-08-12 15:27:17 +01:00