Re: [OE-core] [PATCH v5] util-linux: split uuid in separate recipe to allow bootstrapping
From: "Alexandre Belloni" <alexandre.belloni@bootlin.com>
Date: 2021-02-27 15:08:05
On 27/02/2021 15:52:25+0100, Alexandre Belloni wrote:
Hello, On 25/02/2021 15:30:35+0000, Luca Bocassi wrote:quoted
From: Luca Boccassi <redacted> Recently util-linux gained an (optional) build dependency on libcryptsetup. But libcryptsetup build-depends on util-linux for blkid (optional, can be disabled) and uuid (mandatory). Split out util-linux-uuid in a different recipe to break the cycle. https://github.com/karelzak/util-linux/pull/898 Signed-off-by: Luca Boccassi <redacted> --- v1: util-linux 2.35 is not out yet, but I'd like to get the preparatory work underway as I'm not sure if this is the best approach or if there are alternatives. Suggestions and comments very welcome. Thanks! v2: changed packages names to reflect old ones (eg: libuuid1 -> util-linux-libuuid) and leave uuid build enable in main recipe to allow for uuidgen build to happen, as it does not have its own autoconf switch. Delete the library manualy from the main recipe after build instead, and add dependency. Might help to break loop python3 -> util-linux -> libselinux -> python3, as it's only libuuid that is needed, see https://lists.yoctoproject.org/g/yocto/message/47570 v3: rebased and refactored to have a common util-linux.inc file v4: added RDEPENDS on util-linux-libuuid on various packages to fix QA warnings v5: remove RDEPENDS and instead have util-linux RDEPEND on util-linux-uuid. Removed PACKAGES_remove and instead filter out libuuid via the package generation regex. Rebased on util-linux 2.36.2. .../util-linux/util-linux-uuid_2.36.2.bb | 22 ++++++++ meta/recipes-core/util-linux/util-linux.inc | 41 ++++++++++++++ .../util-linux/util-linux_2.36.2.bb | 53 +++++-------------- 3 files changed, 75 insertions(+), 41 deletions(-) create mode 100644 meta/recipes-core/util-linux/util-linux-uuid_2.36.2.bb create mode 100644 meta/recipes-core/util-linux/util-linux.incWith this patch, there is a very weird failure on the autobuilders, two a-full builds failed with this: ERROR: musl-1.2.2+gitAUTOINC+e5d2823631-r0 do_package: Error executing a python function in exec_python_func() autogenerated: The stack trace of python calls that resulted in this exception/failure was: File: 'exec_python_func() autogenerated', lineno: 2, function: <module> 0001: *** 0002:extend_recipe_sysroot(d) 0003: File: '/home/pokybuild/yocto-worker/poky-tiny/build/meta/classes/staging.bbclass', lineno: 582, function: extend_recipe_sysroot 0578: if "/bin/" in l or "/sbin/" in l: 0579: # defer /*bin/* files until last in case they need libs 0580: binfiles[l] = (targetdir, dest) 0581: else: *** 0582: staging_copyfile(l, targetdir, dest, postinsts, seendirs) 0583: 0584: # Handle deferred binfiles 0585: for l in binfiles: 0586: (targetdir, dest) = binfiles[l] File: '/home/pokybuild/yocto-worker/poky-tiny/build/meta/classes/staging.bbclass', lineno: 157, function: staging_copyfile 0153: os.symlink(linkto, dest) 0154: #bb.warn(c) 0155: else: 0156: try: *** 0157: os.link(c, dest) 0158: except OSError as err: 0159: if err.errno == errno.EXDEV: 0160: bb.utils.copyfile(c, dest) 0161: else: Exception: FileExistsError: [Errno 17] File exists: '/home/pokybuild/yocto-worker/poky-tiny/build/build/tmp/sysroots-components/core2-32/libgcc/usr/lib/i686-poky-linux-musl/10.2.0/libgcc_eh.a' -> '/home/pokybuild/yocto-worker/poky-tiny/build/build/tmp/work/core2-32-poky-linux-musl/musl/1.2.2+gitAUTOINC+e5d2823631-r0/recipe-sysroot/usr/lib/i686-poky-linux-musl/10.2.0/libgcc_eh.a' ERROR: Logfile of failure stored in: /home/pokybuild/yocto-worker/poky-tiny/build/build/tmp/work/core2-32-poky-linux-musl/musl/1.2.2+gitAUTOINC+e5d2823631-r0/temp/log.do_package.4051328 NOTE: recipe musl-1.2.2+gitAUTOINC+e5d2823631-r0: task do_package: Failed ERROR: Task (/home/pokybuild/yocto-worker/poky-tiny/build/meta/recipes-core/musl/musl_git.bb:do_package) failed with exit code '1' This also happens with glibc-2.33-r0: ERROR: glibc-2.33-r0 do_package: Error executing a python function in exec_python_func() autogenerated: [...] Exception: FileExistsError: [Errno 17] File exists: '/home/pokybuild/yocto-worker/edgerouter/build/build/tmp/sysroots-components/mips64/libgcc/usr/lib/mips64-poky-linux/10.2.0/libgcc.a' -> '/home/pokybuild/yocto-worker/edgerouter/build/build/tmp/work/mips64-poky-linux/glibc/2.33-r0/recipe-sysroot/usr/lib/mips64-poky-linux/10.2.0/libgcc.a' ERROR: Logfile of failure stored in: /home/pokybuild/yocto-worker/edgerouter/build/build/tmp/work/mips64-poky-linux/glibc/2.33-r0/temp/log.do_package.29993 NOTE: recipe glibc-2.33-r0: task do_package: Failed ERROR: Task (/home/pokybuild/yocto-worker/edgerouter/build/meta/recipes-core/glibc/glibc_2.33.bb:do_package) failed with exit code '1'
Not sure this helps but we also get: WARNING: nativesdk-util-linux-2.36.2-r0 do_package_qa: QA Issue: nativesdk-util-linux rdepends on nativesdk-util-linux-uuid, but it isn't a build dependency? [build-deps] -- Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com