Since 6b553a5042b9d5828a9da675ede16e10f06dae90 in master "base/bitbake.conf: Rework DISTRO_FEATURES and MACHINE_FEATURES default handling", i get the following build error ERROR: Nothing PROVIDES 'libseccomp-native' (but virtual:native:/path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb DEPENDS on or otherwise requires it). Close matches: libcomps-native libsm-native libsoup-native ERROR: Required build target 'glibc' has no buildable providers. Missing or unbuildable dependency chain was: ['glibc', 'rpm-native', 'elfutils-native', 'libmicrohttpd-native', 'gnutls-native', 'libseccomp-native'] In before that was fine. I guess having PACKAGE_CLASSES = "package_rpm" contributes to the problem. seccomp is active in my custom distro.
It's not surprising that you may have to make changes in your distro due to this commit. The question is do you have a good reason to enable libseccomp-native and if so why? seccomp is a distro feature and you maybe be filtering it as a native distro feature.
See previous comment.
I do not set an native distro features. The custom distro is basically include poky.conf DISTRO = "something" DISTRO_FEATURES_DEFAULTS:remove = "opengl ptest wayland vulkan pulseaudio" DISTRO_FEATURES = "systemd ext2" which made it surprising to me that this error popped up. What needs to be set to resolve this? And no I do not need libseccomp-native for any reason
documentation.conf mentions: DISTRO_FEATURES_DEFAULTS[doc] = "The default set of distribution features, prior to any filtering. Usually you should leave this alone and modify DISTRO_FEATURES and/or DISTRO_FEATURES_OPTED_OUT." so the :remove isn't really the preferred way to use it. Having said that, I'm not sure it is the cause of the issue. I just tried your config and it worked for me: $ bitbake-getvar -r gnutls-native PACKAGECONFIG [...] # pre-expansion value: # "libidn libtasn1 ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)}" PACKAGECONFIG="libidn libtasn1 and bitbake gnutls-native doesn't show the provides error. There has to be something about your config which we're not seeing...
It's indeed something very weird and I have no idea why this is happening. After some playing around here's the new testcase distro.conf include conf/distro/poky.conf DISTRO_FEATURES_DEFAULTS:remove = "opengl ptest wayland vulkan pulseaudio sysvinit" DISTRO_FEATURES:append = " systemd usrmerge ${A}" results in bitbake-getvar -r gnutls-native PACKAGECONFIG # # $PACKAGECONFIG [15 operations] # :append[pn-qemu-system-native] /mnt/ssd/build-sca-master/conf/local.conf:17 # " sdl" # set /path/layer/openembedded-core/meta/conf/documentation.conf:311 # [doc] "This variable provides a means of enabling or disabling features of a recipe on a per-recipe basis." # set /path/layer/openembedded-core/meta/conf/bitbake.conf:943 # [vardepvalue] "${PACKAGECONFIG}" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:33 # [_defaultval] "libidn libtasn1 ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)}" # :append[class-native] /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:34 # " p11-kit" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:38 # [seccomp] "--with-libseccomp-prefix=${STAGING_DIR_HOST},ac_cv_libseccomp=no,libseccomp" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:39 # [libidn] "--with-idn,--without-idn,libidn2" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:40 # [libtasn1] "--without-included-libtasn1,--with-included-libtasn1,libtasn1" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:41 # [p11-kit] "--with-p11-kit,--without-p11-kit,p11-kit" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:42 # [tpm] "--with-tpm,--without-tpm,trousers" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:43 # [fips] "--enable-fips140-mode --with-libdl-prefix=${STAGING_DIR_HOST}" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:44 # [dane] "--enable-libdane,--disable-libdane,unbound" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:46 # [brotli] "--with-brotli,--without-brotli,brotli" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:47 # [zlib] "--with-zlib,--without-zlib,zlib" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:48 # [zstd] "--with-zstd,--without-zstd,zstd" # pre-expansion value: # "libidn libtasn1 ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} p11-kit" PACKAGECONFIG="libidn libtasn1 seccomp p11-kit" while include conf/distro/poky.conf # Remove all audio and graphics related distro backfills # we do not need them for our purposes DISTRO_FEATURES_DEFAULTS:remove = "opengl ptest wayland vulkan pulseaudio sysvinit" DISTRO_FEATURES:append = " systemd usrmerge" bitbake-getvar -r gnutls-native PACKAGECONFI # # $PACKAGECONFIG [15 operations] # :append[pn-qemu-system-native] /mnt/ssd/build-sca-master/conf/local.conf:17 # " sdl" # set /path/layer/openembedded-core/meta/conf/documentation.conf:311 # [doc] "This variable provides a means of enabling or disabling features of a recipe on a per-recipe basis." # set /path/layer/openembedded-core/meta/conf/bitbake.conf:943 # [vardepvalue] "${PACKAGECONFIG}" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:33 # [_defaultval] "libidn libtasn1 ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)}" # :append[class-native] /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:34 # " p11-kit" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:38 # [seccomp] "--with-libseccomp-prefix=${STAGING_DIR_HOST},ac_cv_libseccomp=no,libseccomp" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:39 # [libidn] "--with-idn,--without-idn,libidn2" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:40 # [libtasn1] "--without-included-libtasn1,--with-included-libtasn1,libtasn1" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:41 # [p11-kit] "--with-p11-kit,--without-p11-kit,p11-kit" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:42 # [tpm] "--with-tpm,--without-tpm,trousers" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:43 # [fips] "--enable-fips140-mode --with-libdl-prefix=${STAGING_DIR_HOST}" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:44 # [dane] "--enable-libdane,--disable-libdane,unbound" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:46 # [brotli] "--with-brotli,--without-brotli,brotli" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:47 # [zlib] "--with-zlib,--without-zlib,zlib" # set /path/layer/openembedded-core/meta/recipes-support/gnutls/gnutls_3.8.12.bb:48 # [zstd] "--with-zstd,--without-zstd,zstd" # pre-expansion value: # "libidn libtasn1 ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} p11-kit" PACKAGECONFIG="libidn libtasn1 p11-kit" has no seccomp set. Only difference is the undefined variable A (something similar I have in my custom distro) Changing DISTRO_FEATURES_DEFAULTS:remove to DISTRO_FEATURES:remove yields the same results. @Richard I'm aware of the bad design choice of :remove, but it's an easy way for testing purposes to stay close to poky without the burden of some features, like graphics and ptests, if there's a better design that doesn't need to be constantly patched, I'm open to hear about it
I worked out what was going on, there is a patch on list, "utils: Handle unexpanded variables in DISTRO_FEATURES" which detects the issue and shows warnings as well as working around the issue.
Rather than use :remove with DISTRO_FEATURES you should be able to use DISTRO_FEATURES_OPTED_OUT
Thanks Richard
Patch merged: https://git.openembedded.org/openembedded-core/commit/?id=7782a9bfc4e2ddc67185ac3f5ed14c5268f078b0
Fixed in the above commit