Re: [OE-core] [PATCH v5] util-linux: split uuid in separate recipe to allow bootstrapping
From: Luca Bocassi <hidden>
Date: 2021-03-02 17:31:18
On Sat, 2021-02-27 at 16:15 +0100, Alexandre Belloni wrote:
On 27/02/2021 16:08:02+0100, Alexandre Belloni wrote:quoted
On 27/02/2021 15:52:25+0100, Alexandre Belloni wrote:quoted
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'
I see those kind of errors without this patch all the time, when a build directory is hosed, and normally it means it's time for a rm -rf and start over. It happens quite often when building in the same directory multiple times. Are you sure it's related to this particular patch?
quoted
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]
Uhm I don't understand this warning, it _is_ a build dependency? Any idea? -DEPENDS = "libcap-ng ncurses virtual/crypt zlib" +DEPENDS = "libcap-ng ncurses virtual/crypt zlib util-linux-uuid"
and I'm adding https://autobuilder.yoctoproject.org/typhoon/#/builders/47/builds/3137/steps/12/logs/stdio : ERROR: util-linux-uuid-2.36.2-r0 do_package: QA Issue: util-linux-uuid: Files/directories were installed but not shipped in any package: /usr/lib/libuuid.a Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
Whops, indeed I forgot the static archive, fixed now. -- Kind regards, Luca Boccassi
Attachments
- signature.asc [application/pgp-signature] 499 bytes