Bug 15455 - logind packageconfig flag in shadow causes circular dependendency
Summary: logind packageconfig flag in shadow causes circular dependendency
Status: NEW
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: core (show other bugs)
Version: 5.0
Hardware: x86 Multiple
: Medium normal
Target Milestone: 6.99
Assignee: Unassigned
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2024-03-22 16:10 UTC by Pavel Zhukov
Modified: 2026-05-08 13:18 UTC (History)
5 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: Don't know


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pavel Zhukov 2024-03-22 16:10:48 UTC
Introduced in fda06b441655cfa4e5f93e8f5587f27aa3610bb8


# local.conf
PACKAGECONFIG:append:pn-systemd = " logind"
PACKAGECONFIG:append:pn-shadow = " logind"

IMAGE_INSTALL:append = " busybox"

DISTRO_FEATURES:append = " systemd usrmerge"

DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"


$ bitbake core-image-minimal -g 

ERROR: 1817 unbuildable tasks were found.
These are usually caused by circular dependencies and any circular dependency chains found will be printed below. Increase the debug level to see a list of unbuildable tasks.

Identifying dependency loops (this may take a short while)...

ERROR: 
Dependency loop #1 found:
  Task /mnt/builds/yocto/sources/meta/recipes-core/systemd/systemd_255.1.bb:do_collect_spdx_deps (dependent Tasks ['systemd_255.1.bb:do_unpack', 'gperf_3.1.bb:do_create_spdx', 'qemu-native_8.2.1.bb:do_create_spdx', 'gcc-runtime_13.2.bb:do_create_spdx', 'gcc-cross_13.2.bb:do_create_spdx', 'shadow_4.14.2.bb:do_create_spdx', 'shadow-sysroot_4.6.bb:do_create_spdx', 'systemd-systemctl-native.bb:do_create_spdx', 'libxkbcommon_1.6.0.bb:do_create_spdx', 'meson_1.3.1.bb:do_create_spdx', 'zstd_1.5.5.bb:do_create_spdx', 'gettext_0.22.4.bb:do_create_spdx', 'bash-completion_2.11.bb:do_create_spdx', 'shadow_4.14.2.bb:do_create_spdx', 'python3-jinja2_3.1.3.bb:do_create_spdx', 'quilt-native_0.67.bb:do_populate_sysroot', 'perl_5.38.2.bb:do_create_spdx', 'patch_2.7.6.bb:do_populate_sysroot', 'initscripts_1.0.bb:do_create_spdx', 'kmod_31.bb:do_create_spdx', 'python3_3.12.1.bb:do_create_spdx', 'libseccomp_2.5.5.bb:do_create_spdx', 'base-files_3.0.14.bb:do_create_spdx', 'libcap_2.69.bb:do_create_spdx', 'util-linux_2.39.3.bb:do_create_spdx', 'acl_2.3.1.bb:do_create_spdx', 'pkgconfig_git.bb:do_create_spdx', 'glibc_2.39.bb:do_create_spdx', 'base-passwd_3.6.3.bb:do_create_spdx', 'opkg-utils_0.6.3.bb:do_create_spdx', 'update-rc.d_0.8.bb:do_create_spdx', 'ninja_1.11.1.bb:do_create_spdx', 'intltool_0.51.0.bb:do_create_spdx'])
  Task /mnt/builds/yocto/sources/meta/recipes-core/systemd/systemd_255.1.bb:do_create_spdx (dependent Tasks ['systemd_255.1.bb:do_unpack', 'systemd_255.1.bb:do_packagedata', 'quilt-native_0.67.bb:do_populate_sysroot', 'systemd_255.1.bb:do_collect_spdx_deps', 'patch_2.7.6.bb:do_populate_sysroot', 'systemd_255.1.bb:do_package'])
  Task /mnt/builds/yocto/sources/meta/recipes-extended/shadow/shadow_4.14.2.bb:do_collect_spdx_deps (dependent Tasks ['gcc-cross_13.2.bb:do_create_spdx', 'systemd_255.1.bb:do_create_spdx', 'libxcrypt_4.4.36.bb:do_create_spdx', 'attr_2.5.1.bb:do_create_spdx', 'pkgconfig_git.bb:do_create_spdx', 'quilt-native_0.67.bb:do_populate_sysroot', 'shadow_4.14.2.bb:do_unpack', 'autoconf_2.72e.bb:do_create_spdx', 'libtool-native_2.4.7.bb:do_create_spdx', 'glibc_2.39.bb:do_create_spdx', 'automake_1.16.5.bb:do_create_spdx', 'patch_2.7.6.bb:do_populate_sysroot', 'opkg-utils_0.6.3.bb:do_create_spdx', 'gcc-runtime_13.2.bb:do_create_spdx', 'gettext_0.22.4.bb:do_create_spdx', 'libtool-cross_2.4.7.bb:do_create_spdx'])
  Task /mnt/builds/yocto/sources/meta/recipes-extended/shadow/shadow_4.14.2.bb:do_create_spdx (dependent Tasks ['shadow_4.14.2.bb:do_collect_spdx_deps', 'shadow_4.14.2.bb:do_package', 'shadow_4.14.2.bb:do_packagedata', 'quilt-native_0.67.bb:do_populate_sysroot', 'shadow_4.14.2.bb:do_unpack', 'patch_2.7.6.bb:do_populate_sysroot'])

Dependency loop #2 found:
  Task /mnt/builds/yocto/sources/meta/recipes-core/systemd/systemd_255.1.bb:do_package (dependent Tasks ['bash-completion_2.11.bb:do_packagedata', 'opkg-utils_0.6.3.bb:do_packagedata', 'pseudo_git.bb:do_populate_sysroot', 'acl_2.3.1.bb:do_packagedata', 'libcap_2.69.bb:do_packagedata', 'base-files_3.0.14.bb:do_packagedata', 'libxkbcommon_1.6.0.bb:do_packagedata', 'libseccomp_2.5.5.bb:do_packagedata', 'kmod_31.bb:do_packagedata', 'systemd_255.1.bb:do_install', 'dwarfsrcfiles.bb:do_populate_sysroot', 'rpm_4.19.1.bb:do_populate_sysroot', 'zstd_1.5.5.bb:do_packagedata', 'base-passwd_3.6.3.bb:do_packagedata', 'util-linux_2.39.3.bb:do_packagedata', 'glibc_2.39.bb:do_packagedata', 'shadow_4.14.2.bb:do_packagedata', 'gcc-runtime_13.2.bb:do_packagedata', 'update-rc.d_0.8.bb:do_packagedata', 'initscripts_1.0.bb:do_packagedata'])
  Task /mnt/builds/yocto/sources/meta/recipes-core/systemd/systemd_255.1.bb:do_packagedata (dependent Tasks ['systemd_255.1.bb:do_package'])
  Task /mnt/builds/yocto/sources/meta/recipes-extended/shadow/shadow_4.14.2.bb:do_package (dependent Tasks ['glibc_2.39.bb:do_packagedata', 'dwarfsrcfiles.bb:do_populate_sysroot', 'systemd_255.1.bb:do_packagedata', 'gcc-runtime_13.2.bb:do_packagedata', 'shadow_4.14.2.bb:do_install', 'opkg-utils_0.6.3.bb:do_packagedata', 'attr_2.5.1.bb:do_packagedata', 'pseudo_git.bb:do_populate_sysroot', 'rpm_4.19.1.bb:do_populate_sysroot', 'libxcrypt_4.4.36.bb:do_packagedata'])
  Task /mnt/builds/yocto/sources/meta/recipes-extended/shadow/shadow_4.14.2.bb:do_packagedata (dependent Tasks ['shadow_4.14.2.bb:do_package'])

Dependency loop #3 found:
  Task /mnt/builds/yocto/sources/meta/recipes-core/systemd/systemd_255.1.bb:do_compile (dependent Tasks ['systemd_255.1.bb:do_configure'])
  Task /mnt/builds/yocto/sources/meta/recipes-core/systemd/systemd_255.1.bb:do_install (dependent Tasks ['pseudo_git.bb:do_populate_sysroot', 'systemd_255.1.bb:do_compile'])
  Task /mnt/builds/yocto/sources/meta/recipes-core/systemd/systemd_255.1.bb:do_populate_sysroot (dependent Tasks ['binutils-cross_2.42.bb:do_populate_sysroot', 'systemd_255.1.bb:do_install'])
  Task /mnt/builds/yocto/sources/meta/recipes-extended/shadow/shadow_4.14.2.bb:do_prepare_recipe_sysroot (dependent Tasks ['opkg-utils_0.6.3.bb:do_populate_sysroot', 'automake_1.16.5.bb:do_populate_sysroot', 'libtool-native_2.4.7.bb:do_populate_sysroot', 'gcc-cross_13.2.bb:do_populate_sysroot', 'autoconf_2.72e.bb:do_populate_sysroot', 'attr_2.5.1.bb:do_populate_sysroot', 'pkgconfig_git.bb:do_populate_sysroot', 'libxcrypt_4.4.36.bb:do_populate_sysroot', 'libtool-cross_2.4.7.bb:do_populate_sysroot', 'shadow_4.14.2.bb:do_fetch', 'gcc-runtime_13.2.bb:do_populate_sysroot', 'systemd_255.1.bb:do_populate_sysroot', 'gettext_0.22.4.bb:do_populate_sysroot', 'pseudo_git.bb:do_populate_sysroot', 'glibc_2.39.bb:do_populate_sysroot'])
  Task /mnt/builds/yocto/sources/meta/recipes-extended/shadow/shadow_4.14.2.bb:do_configure (dependent Tasks ['shadow_4.14.2.bb:do_deploy_source_date_epoch', 'shadow_4.14.2.bb:do_patch', 'shadow_4.14.2.bb:do_prepare_recipe_sysroot'])
  Task /mnt/builds/yocto/sources/meta/recipes-extended/shadow/shadow_4.14.2.bb:do_compile (dependent Tasks ['shadow_4.14.2.bb:do_configure'])
  Task /mnt/builds/yocto/sources/meta/recipes-extended/shadow/shadow_4.14.2.bb:do_install (dependent Tasks ['pseudo_git.bb:do_populate_sysroot', 'shadow_4.14.2.bb:do_compile'])
  Task /mnt/builds/yocto/sources/meta/recipes-extended/shadow/shadow_4.14.2.bb:do_populate_sysroot (dependent Tasks ['shadow_4.14.2.bb:do_install', 'binutils-cross_2.42.bb:do_populate_sysroot'])
  Task /mnt/builds/yocto/sources/meta/recipes-core/systemd/systemd_255.1.bb:do_prepare_recipe_sysroot (dependent Tasks ['systemd_255.1.bb:do_fetch', 'libcap_2.69.bb:do_populate_sysroot', 'python3-jinja2_3.1.3.bb:do_populate_sysroot', 'gcc-cross_13.2.bb:do_populate_sysroot', 'base-passwd_3.6.3.bb:do_populate_sysroot', 'pseudo_git.bb:do_populate_sysroot', 'kmod_31.bb:do_populate_sysroot', 'qemu-native_8.2.1.bb:do_populate_sysroot', 'shadow_4.14.2.bb:do_populate_sysroot', 'initscripts_1.0.bb:do_populate_sysroot', 'bash-completion_2.11.bb:do_populate_sysroot', 'libseccomp_2.5.5.bb:do_populate_sysroot', 'python3_3.12.1.bb:do_populate_sysroot', 'meson_1.3.1.bb:do_populate_sysroot', 'gcc-runtime_13.2.bb:do_populate_sysroot', 'gettext_0.22.4.bb:do_populate_sysroot', 'update-rc.d_0.8.bb:do_populate_sysroot', 'shadow-sysroot_4.6.bb:do_populate_sysroot', 'ninja_1.11.1.bb:do_populate_sysroot', 'libxkbcommon_1.6.0.bb:do_populate_sysroot', 'opkg-utils_0.6.3.bb:do_populate_sysroot', 'intltool_0.51.0.bb:do_populate_sysroot', 'base-files_3.0.14.bb:do_populate_sysroot', 'util-linux_2.39.3.bb:do_populate_sysroot', 'systemd-systemctl-native.bb:do_populate_sysroot', 'pkgconfig_git.bb:do_populate_sysroot', 'perl_5.38.2.bb:do_populate_sysroot', 'acl_2.3.1.bb:do_populate_sysroot', 'gperf_3.1.bb:do_populate_sysroot', 'shadow_4.14.2.bb:do_populate_sysroot', 'zstd_1.5.5.bb:do_populate_sysroot', 'glibc_2.39.bb:do_populate_sysroot'])
  Task /mnt/builds/yocto/sources/meta/recipes-core/systemd/systemd_255.1.bb:do_configure (dependent Tasks ['systemd_255.1.bb:do_patch', 'systemd_255.1.bb:do_deploy_source_date_epoch', 'systemd_255.1.bb:do_write_config', 'systemd_255.1.bb:do_warn_musl', 'systemd_255.1.bb:do_prepare_recipe_sysroot'])


ERROR: Command execution failed: Exited with 1
Comment 1 Alexander Kanavin 2024-03-26 09:44:38 UTC
shadow needs libsystemd when the logind option is enabled. The logind option was added recently to avoid host contamination by explicitly disabling logind, and was/is not tested otherwise.

systemd inherits useradd class, which DEPENDS on target shadow.

That dependency was added in 2011:
https://git.yoctoproject.org/poky/commit/?id=605d0116414fe0ca2796b36c7a042af81c69e41b

The dependency is needed so that the class can then dynamically inject RDEPENDS on shadow into generated packages (which is needed to run preinst scripts that create users). And indeed, if I remove the dependency, I get:

WARNING: ptest-runner-2.4.3+git-r0 do_package_qa: QA Issue: ptest-runner rdepends on shadow, but it isn't a build dependency? [build-deps]
WARNING: dbus-1.14.10-r0 do_package_qa: QA Issue: dbus-common rdepends on shadow, but it isn't a build dependency, missing shadow in DEPENDS or PACKAGECONFIG? [build-deps]
WARNING: systemd-1_255.4-r0 do_package_qa: QA Issue: systemd rdepends on shadow, but it isn't a build dependency, missing shadow in DEPENDS or PACKAGECONFIG? [build-deps]
WARNING: systemd-1_255.4-r0 do_package_qa: QA Issue: udev rdepends on shadow, but it isn't a build dependency, missing shadow in DEPENDS or PACKAGECONFIG? [build-deps]


I'm not sure how to break this loop. We can convert the shadow packageconfig option into hard disabling, but that wouldn't be a proper solution.