seeing dependency loops
http://sprunge.us/E5c3NC

On Thu, Feb 25, 2021 at 7:30 AM Luca Bocassi <[email protected]> wrote:
>
> From: Luca Boccassi <[email protected]>
>
> 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 <[email protected]>
> ---
> 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.inc
>
> diff --git a/meta/recipes-core/util-linux/util-linux-uuid_2.36.2.bb 
> b/meta/recipes-core/util-linux/util-linux-uuid_2.36.2.bb
> new file mode 100644
> index 0000000000..ffb2c87270
> --- /dev/null
> +++ b/meta/recipes-core/util-linux/util-linux-uuid_2.36.2.bb
> @@ -0,0 +1,22 @@
> +# To allow util-linux to optionally build-depend on cryptsetup, libuuid is
> +# split out of the main recipe, as it's needed by cryptsetup
> +
> +require util-linux.inc
> +
> +inherit autotools gettext pkgconfig
> +
> +S = "${WORKDIR}/util-linux-${PV}"
> +EXTRA_OECONF += "--disable-all-programs --enable-libuuid"
> +DEBIAN_NOAUTONAME_util-linux-libuuid = "1"
> +DEBIAN_NOAUTONAME_util-linux-libuuid-dev = "1"
> +DEBIAN_NOAUTONAME_util-linux-libuuid-dbg = "1"
> +PACKAGES = "util-linux-libuuid util-linux-libuuid-dev util-linux-libuuid-dbg"
> +FILES_util-linux-libuuid = "${libdir}/libuuid.so.*"
> +FILES_util-linux-libuuid-dev = "${libdir}/libuuid.so ${includedir} 
> ${libdir}/pkgconfig"
> +FILES_util-linux-libuuid-dbg = "/usr/src ${libdir}/.debug"
> +
> +do_install_append() {
> +       rm -rf ${D}${datadir} ${D}${bindir} ${D}${base_bindir} ${D}${sbindir} 
> ${D}${base_sbindir} ${D}${exec_prefix}/sbin
> +}
> +
> +BBCLASSEXTEND = "native nativesdk"
> diff --git a/meta/recipes-core/util-linux/util-linux.inc 
> b/meta/recipes-core/util-linux/util-linux.inc
> new file mode 100644
> index 0000000000..b4f817ed82
> --- /dev/null
> +++ b/meta/recipes-core/util-linux/util-linux.inc
> @@ -0,0 +1,41 @@
> +SUMMARY = "A suite of basic system administration utilities"
> +HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux";
> +DESCRIPTION = "Util-linux includes a suite of basic system administration 
> utilities \
> +commonly found on most Linux systems.  Some of the more important utilities 
> include \
> +disk partitioning, kernel message management, filesystem creation, and 
> system login."
> +
> +SECTION = "base"
> +
> +LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause"
> +LICENSE_${PN}-libblkid = "LGPLv2.1+"
> +LICENSE_${PN}-libfdisk = "LGPLv2.1+"
> +LICENSE_${PN}-libmount = "LGPLv2.1+"
> +LICENSE_${PN}-libsmartcols = "LGPLv2.1+"
> +LICENSE_${PN}-libuuid = "BSD-3-Clause"
> +
> +LIC_FILES_CHKSUM = 
> "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \
> +                    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
> +                    
> file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263
>  \
> +                    
> file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c
>  \
> +                    
> file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af
>  \
> +                    
> file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262
>  \
> +                    
> file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \
> +                    
> file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \
> +                    
> file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
> +                    
> file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
> +                    
> file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
> +"
> +
> +FILESEXTRAPATHS_prepend := "${THISDIR}/util-linux:"
> +MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
> +BPN = "util-linux"
> +SRC_URI = 
> "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \
> +           file://configure-sbindir.patch \
> +           file://runuser.pamd \
> +           file://runuser-l.pamd \
> +           file://ptest.patch \
> +           file://run-ptest \
> +           file://display_testname_for_subtest.patch \
> +           file://avoid_parallel_tests.patch \
> +           "
> +SRC_URI[sha256sum] = 
> "f7516ba9d8689343594356f0e5e1a5f0da34adfbc89023437735872bb5024c5f"
> diff --git a/meta/recipes-core/util-linux/util-linux_2.36.2.bb 
> b/meta/recipes-core/util-linux/util-linux_2.36.2.bb
> index 19950a2726..d4406695f6 100644
> --- a/meta/recipes-core/util-linux/util-linux_2.36.2.bb
> +++ b/meta/recipes-core/util-linux/util-linux_2.36.2.bb
> @@ -1,46 +1,8 @@
> -SUMMARY = "A suite of basic system administration utilities"
> -HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux";
> -DESCRIPTION = "Util-linux includes a suite of basic system administration 
> utilities \
> -commonly found on most Linux systems.  Some of the more important utilities 
> include \
> -disk partitioning, kernel message management, filesystem creation, and 
> system login."
> -
> -SECTION = "base"
> -
> -LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause"
> -LICENSE_${PN}-libblkid = "LGPLv2.1+"
> -LICENSE_${PN}-libfdisk = "LGPLv2.1+"
> -LICENSE_${PN}-libmount = "LGPLv2.1+"
> -LICENSE_${PN}-libsmartcols = "LGPLv2.1+"
> -LICENSE_${PN}-libuuid = "BSD-3-Clause"
> -
> -LIC_FILES_CHKSUM = 
> "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \
> -                    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
> -                    
> file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263
>  \
> -                    
> file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c
>  \
> -                    
> file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af
>  \
> -                    
> file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262
>  \
> -                    
> file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \
> -                    
> file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \
> -                    
> file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
> -                    
> file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
> -                    
> file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
> -"
> +require util-linux.inc
>
>  #gtk-doc is not enabled as it requires xmlto which requires util-linux
>  inherit autotools gettext manpages pkgconfig systemd update-alternatives 
> python3-dir bash-completion ptest
> -DEPENDS = "libcap-ng ncurses virtual/crypt zlib"
> -
> -MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
> -SRC_URI = 
> "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \
> -           file://configure-sbindir.patch \
> -           file://runuser.pamd \
> -           file://runuser-l.pamd \
> -           file://ptest.patch \
> -           file://run-ptest \
> -           file://display_testname_for_subtest.patch \
> -           file://avoid_parallel_tests.patch \
> -           "
> -SRC_URI[sha256sum] = 
> "f7516ba9d8689343594356f0e5e1a5f0da34adfbc89023437735872bb5024c5f"
> +DEPENDS = "libcap-ng ncurses virtual/crypt zlib util-linux-uuid"
>
>  PACKAGES =+ "${PN}-swaponoff"
>  PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pylibmount', 
> '${PN}-pylibmount', '', d)}"
> @@ -87,8 +49,9 @@ python util_linux_binpackages () {
>  # we must execute before update-alternatives PACKAGE_PREPROCESS_FUNCS
>  PACKAGE_PREPROCESS_FUNCS =+ "util_linux_binpackages "
>
> +# skip libuuid as it will be packaged by the util-linux-uuid recipe
>  python util_linux_libpackages() {
> -    do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), 
> file_regex=r'^lib(.*)\.so\..*$',
> +    do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), 
> file_regex=r'^lib(?!uuid)(.*)\.so\..*$',
>                        output_pattern='${PN}-lib%s',
>                        description='${PN} lib%s',
>                        extra_depends='', prepend=True, allow_links=True)
> @@ -141,6 +104,7 @@ PACKAGECONFIG[pylibmount] = "--with-python=3 
> --enable-pylibmount,--without-pytho
>  PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
>  # PCRE support in hardlink
>  PACKAGECONFIG[pcre2] = ",,libpcre2"
> +PACKAGECONFIG[cryptsetup] = 
> "--with-cryptsetup,--without-cryptsetup,cryptsetup"
>
>  EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} CPU= CPUOPT= 'OPT=${CFLAGS}'"
>
> @@ -165,6 +129,8 @@ RRECOMMENDS_${PN}_class-nativesdk = ""
>  RDEPENDS_${PN}_class-native = ""
>  RDEPENDS_${PN}_class-nativesdk = ""
>
> +RDEPENDS_${PN}_append += " util-linux-uuid"
> +
>  RPROVIDES_${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev 
> ${PN}-libuuid-dev"
>
>  RDEPENDS_${PN}-bash-completion += "${PN}-lsblk"
> @@ -316,6 +282,11 @@ ALTERNATIVE_LINK_NAME[utmpdump.1] = 
> "${mandir}/man1/utmpdump.1"
>  ALTERNATIVE_LINK_NAME[uuid.3] = "${mandir}/man3/uuid.3"
>  ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
>
> +# dm-verity support introduces a circular build dependency, so 
> util-linux-uuid is split out for target builds
> +# Need to build libuuid for uuidgen, but then delete it and let the other 
> recipe ship it
> +do_install_append() {
> +    rm -rf ${D}${includedir}/uuid ${D}${libdir}/pkgconfig/uuid.pc 
> ${D}${libdir}/libuuid* ${D}/lib/libuuid*
> +}
>
>  BBCLASSEXTEND = "native nativesdk"
>
> --
> 2.29.2
>
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#148706): 
https://lists.openembedded.org/g/openembedded-core/message/148706
Mute This Topic: https://lists.openembedded.org/mt/80904162/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to