Would it make sense to show some shortened version of inherited_classes?

The whole variable is too long, e.g. in my case with:
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 3597943ddd..03481489c3 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -1387,7 +1387,7 @@ python () {
                             break
                     else:
                         pn = d.getVar('PN')
-                        package_qa_handle_error("native-last", "%s:
native/nativesdk class is not inherited last, this can result in unexpected
behaviour. " % pn, d)
+                        package_qa_handle_error("native-last", "%s:
native/nativesdk class is not inherited last, this can result in unexpected
behaviour. Current order: '%s'" % (pn, inherited_classes), d)
                         break
                 else:
                     break

it shows:
WARNING: /jenkins/mjansa/build/ose-github/hardknott/meta-qt5/recipes-qt/qt5/
qtbase-native_git.bb: QA Issue: qtbase-native: native/nativesdk class is
not inherited last, this can result in unexpected behaviour. Current order:
'['/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/image-artifact-names.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/base.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/patch.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/terminal.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/staging.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-webosose/meta-webos/classes/mirrors.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/utils.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/utility-tasks.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/metadata_scm.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/logging.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-virtualization/classes/sanity-meta-virt.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/own-mirrors.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/rm_work.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-updater/classes/sota.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-updater/classes/sota_sanity.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-webosose/meta-webos-raspberrypi/classes/sota_webos-rpi.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/reproducible_build_simple.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/uninative.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/package_ipk.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/package.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/packagedata.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/chrpath.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/package_pkgdata.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/insane.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/buildhistory.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/buildstats.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/image-mklibs.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/linuxloader.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-virtualization/classes/meta-virt-cfg.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-virtualization/classes/meta-virt-k8s-cfg.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-virtualization/classes/meta-virt-xen-cfg.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/debian.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/devshell.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/sstate.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/license.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/buildstats-summary.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-webosose/meta-webos/classes/webos_base.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/remove-libtool.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/image-buildinfo.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/icecc.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/blacklist.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/sanity.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-qt5/classes/qmake5_base.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-qt5/classes/qmake5_paths.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/native.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/relocatable.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/oe-core/meta/classes/nopackages.bbclass',
'/jenkins/mjansa/build/ose-github/hardknott/meta-webosose/meta-webos/classes/webos_qmake5_base.bbclass']'
[native-last]

It would make it a bit easier to find out, what was inheritted after
native/nativesdk as "bitbake -e" doesn't show it very clearly (or I don't
see it there).

Which also points to interesting case caused by
https://github.com/webosose/meta-webosose/blob/master/meta-webos/recipes-qt/qt5/qtbase-native_git.bbappend
which inherits:
https://github.com/webosose/meta-webosose/blob/master/meta-webos/classes/webos_qmake5_base.bbclass
but because it's a bbappend, it's not easy to re-order inherits to make
this QA check happy (the webos_qmake5_base.bbclass should be safe to
inherit after native(sdk) anyway).

So I guess when someone needs to inherit something for native recipe from
bbappend, then the only option is to use .inc file instead of .bbclass or
ignore this warning? Unfortunately INSANE_SKIP doesn't seem to work with
native-last as well. Is this expected?
https://bugzilla.yoctoproject.org/show_bug.cgi?id=5729 doesn't really show
what exact issues this QA check is going to prevent.

Regards,

On Sun, Jan 24, 2021 at 10:53 AM Tomasz Dziendzielski <
tomasz.dziendziel...@gmail.com> wrote:

> Classes native/nativesdk should be inherited last to prevent unexpected
> behaviour.
>
> [YOCTO #5729]
>
> Signed-off-by: Tomasz Dziendzielski <tomasz.dziendziel...@gmail.com>
> ---
>  meta/classes/insane.bbclass | 28 +++++++++++++++++++++++++++-
>  1 file changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
> index 105d2a5ce8..3597943ddd 100644
> --- a/meta/classes/insane.bbclass
> +++ b/meta/classes/insane.bbclass
> @@ -27,7 +27,7 @@ WARN_QA ?= " libdir xorg-driver-abi \
>              infodir build-deps src-uri-bad symlink-to-sysroot multilib \
>              invalid-packageconfig host-user-contaminated uppercase-pn
> patch-fuzz \
>              mime mime-xdg unlisted-pkg-lics unhandled-features-check \
> -            missing-update-alternatives \
> +            missing-update-alternatives native-last \
>              "
>  ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
>              perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
> @@ -1366,6 +1366,32 @@ python () {
>          d.setVarFlag('do_package_qa', 'rdeptask', '')
>      for i in issues:
>          package_qa_handle_error("pkgvarcheck", "%s: Variable %s is set as
> not being package specific, please fix this." % (d.getVar("FILE"), i), d)
> +
> +    for native_class in ['native', 'nativesdk']:
> +        if bb.data.inherits_class(native_class, d):
> +
> +            inherited_classes = d.getVar('__inherit_cache', False) or []
> +            needle = os.path.join('classes', native_class)
> +
> +            bbclassextend = (d.getVar('BBCLASSEXTEND') or '').split()
> +            # BBCLASSEXTEND items are always added in the end
> +            skip_classes = bbclassextend
> +            if bb.data.inherits_class('native', d) or 'native' in
> bbclassextend:
> +                # native also inherits nopackages and relocatable
> bbclasses
> +                skip_classes.extend(['nopackages', 'relocatable'])
> +
> +            for class_item in reversed(inherited_classes):
> +                if needle not in class_item:
> +                    for extend_item in skip_classes:
> +                        if os.path.join('classes', '%s.bbclass' %
> extend_item) in class_item:
> +                            break
> +                    else:
> +                        pn = d.getVar('PN')
> +                        package_qa_handle_error("native-last", "%s:
> native/nativesdk class is not inherited last, this can result in unexpected
> behaviour. " % pn, d)
> +                        break
> +                else:
> +                    break
> +
>      qa_sane = d.getVar("QA_SANE")
>      if not qa_sane:
>          bb.fatal("Fatal QA errors found, failing task.")
> --
> 2.29.2
>
>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#147368): 
https://lists.openembedded.org/g/openembedded-core/message/147368
Mute This Topic: https://lists.openembedded.org/mt/80075083/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to