On Tue, 2024-01-09 at 11:31 +0000, Richard Purdie via lists.openembedded.org wrote: > On Mon, 2024-01-08 at 19:53 -0800, Khem Raj wrote: > > On Mon, Jan 8, 2024 at 7:49 PM Khem Raj <raj.k...@gmail.com> wrote: > > > > > > On Mon, Jan 8, 2024 at 2:39 PM Richard Purdie > > > <richard.pur...@linuxfoundation.org> wrote: > > > > > > > > On Mon, 2024-01-08 at 17:14 +0000, Ross Burton wrote: > > > > > On 3 Jan 2024, at 14:59, Richard Purdie via lists.openembedded.org > > > > > <richard.purdie=linuxfoundation....@lists.openembedded.org> wrote: > > > > > > --- a/meta/classes-recipe/gnomebase.bbclass > > > > > > +++ b/meta/classes-recipe/gnomebase.bbclass > > > > > > @@ -28,7 +28,7 @@ FILES:${PN} += "${datadir}/application-registry \ > > > > > > FILES:${PN}-doc += "${datadir}/devhelp" > > > > > > > > > > > > GNOMEBASEBUILDCLASS ??= "meson" > > > > > > -inherit ${GNOMEBASEBUILDCLASS} pkgconfig > > > > > > +inherit_defer ${GNOMEBASEBUILDCLASS} pkgconfig > > > > > > > > > > Feels like this should be split into inherit pkgconfig and > > > > > inher_defer ${GNOMEBASEBUILDCLASS}. > > > > > > > > I guess did it this way for ease in the patch, it won't really make > > > > much difference either way, particularly for pkgconfig given how simple > > > > that class is. > > > > > > > > > > > > > > > +inherit populate_sdk_base > > > > > > +IMGCLASSES += "${@['', 'populate_sdk_ext']['linux' in > > > > > > d.getVar("SDK_OS")]}" > > > > > > > > > > Whilst you’re here change this to foo if bar else flob, this boolean > > > > > subsetting idiom drives me insane. > > > > > > > > I don't really mixing up changes as it just makes review harder so > > > > whilst I don't mind changing that, I think it should be done > > > > separately. > > > > > > > > > > --- a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc > > > > > > +++ b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc > > > > > > @@ -14,7 +14,7 @@ SRC_URI = > > > > > > "${XORG_MIRROR}/individual/driver/${BPN}-${PV}${XORG_DRIVER_COMPRESSOR > > > > > > FILES:${PN} += " ${libdir}/xorg/modules/drivers/*.so" > > > > > > > > > > > > XORGBUILDCLASS ??= "autotools" > > > > > > -inherit ${XORGBUILDCLASS} pkgconfig features_check > > > > > > +inherit_defer ${XORGBUILDCLASS} pkgconfig features_check > > > > > > > > > > As above. > > > > > > > > > > > -inherit autotools texinfo binconfig-disabled pkgconfig > > > > > > ${PYTHON_INHERIT} python3native multilib_header > > > > > > +inherit autotools texinfo binconfig-disabled pkgconfig > > > > > > multilib_header > > > > > > +inherit_defer ${PYTHON_INHERIT} python3native > > > > > > > > > > Why is python3native defered? > > > > > > > > In the past there were some ordering issues around the python classes > > > > so I was just being careful not to cause more problems in the patchset > > > > than I was already trying to debug. It probably isn't necessary but at > > > > the time I wasn't 100% sure and there were bigger issues. > > > > > > > > I can make the above tweaks if they really bother you... > > > > > > > > > > Look into evolution-data-server-native.bb from meta-gnome > > > it inherits native and provides own default do_compile/do_install > > > functions > > > > > > it now needs to use > > > inherit_defer native > > > > > > which parses but then the functions provided by the recipe are overridden > > > by ones from autotools class perhaps because it is deferred too ? > > > > > > > To add a bit more > > diff --git > > a/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server-native.bb > > b/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server-native.bb > > index 8f5c9ffb67..e163576c02 100644 > > --- > > a/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server-native.bb > > +++ > > b/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server-native.bb > > @@ -5,7 +5,7 @@ inherit_defer native > > DEPENDS = "glib-2.0-native" > > > > # build native helpers > > -do_compile() { > > +do_compile:class-native() { > > cd ${S}/src/camel > > sed -i 's:#include "evolution-data-server-config.h"::g' > > camel-gen-tables.c > > ${CC} -o ${B}/camel-gen-tables camel-gen-tables.c ${CFLAGS} ${LDFLAGS} > > @@ -17,7 +17,7 @@ do_compile() { > > ${CC} -o ${B}/gen-western-table gen-western-table.c ${CFLAGS} > > ${CFLAGS_glib} ${LDFLAGS} ${LDFLAGS_glib} > > } > > > > -do_install() { > > +do_install:class-native() { > > install -d ${D}${bindir} > > install -m 755 ${B}/* ${D}${bindir} > > } > > > > works, but it seems wrong to do it like this > > This is the unfortunate corner case this change triggers unfortunately. > > The gnomebase class has a conditional variable for whether to use > autotools or meson. This means meson/autotools are put into > inherit_defer since they depend on the value of GNOMEBASEBUILDCLASS. > > This means autotools is deferred to after these variables are set and > the values from the class override the originals. That said, autotools > uses EXPORT_FUNCTIONS against do_compile this so it should not happen. > > I did dive into what is actually going on and the issue is that > do_compile is an EXPORT_FUNCTION from both base.bbclass and from > autotools.bbclass. > > export functions overwrite their own versions, the issue looks to be > that the setting from base.bbclass sets the magic flag to say it is > special and the new value from the recipe doesn't clear the magic flag. > That would be a separate bug. I think we can improve the > export_functions logic to fix that. > > I do agree this kind of issue isn't optimal however I think some of the > current behaviours are probably worse and if we can move core classes > away from deferred inherits (e.g. let gnome recipes pick autotools or > meson directly), these issues should be rare.
There is a patch for bitbake on master-next which fixes EXPORT_FUNCTIONS and adds tests for it. That should fix the issue here. Cheers, Richard
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#193460): https://lists.openembedded.org/g/openembedded-core/message/193460 Mute This Topic: https://lists.openembedded.org/mt/103502916/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-