[oe] [meta-oe][PATCH 4/4] lvm2/libdevmapper: fix invoking lvcreate failed
ChenQi
Qi.Chen at windriver.com
Tue May 15 09:33:05 UTC 2018
I think I've got to reply. But frankly, I don't have any idea how to
solve this circular dependency problem.
Normally we have two ways to solve circular dependency problems:
1) Add some new recipe to replace one in the chain
2) Break some recipe in the chain into multiple recipes, giving them
different dependencies
In this systemd/cryptsetup/libdevmapper case, I don't think the above
approaches would work.
Hope someone in the mailing list could give me some suggestions.
Best Regards,
Chen Qi
On 05/11/2018 10:48 PM, Chris Patterson wrote:
> Sorry to resurrect such an old thread... :)
>
> The dependency on udev brings back the c the libdevmapper circular
> dependency when systemd is used with cryptsetup. (systemd ->
> cryptsetup -> libdevmapper -> udev|systemd).
>
> Any thoughts on how to properly fix that (other than removing udev
> from PACKAGECONFIG)?
>
> On Fri, May 26, 2017 at 3:37 AM, Hongxu Jia <hongxu.jia at windriver.com> wrote:
>> Previously, libdevmapper is separated from lvm2 in the following commit:
>> ---
>> commit 7f17da154372b5ec33947766783444961e8aa67c
>> Author: Chen Qi <Qi.Chen at windriver.com>
>> Date: Mon Apr 24 16:06:41 2017 +0800
>>
>> lvm2: separate libdevmapper to avoid circular dependency
>> ---
>>
>> It caused invoking lvcreate failed:
>> ---
>> root at qemux86-64:~# lvm pvcreate /dev/sda
>> Physical volume "/dev/sda" successfully created.
>> root at qemux86-64:~# lvm vgcreate -s 4096K wrl /dev/sda
>> Volume group "wrl" successfully created
>> root at qemux86-64:~# lvm lvcreate -n swap -L 2293648K -y --type linear wrl
>> Rounding up size to full physical extent 2.19 GiB
>> /dev/wrl/swap: not found: device not cleared
>> Aborting. Failed to wipe start of new LV.
>> ---
>>
>> The lvm2 and libdevmapper should use the same PACKAGECONFIG
>> and EXTRA_OECONF.
>>
>> And do not manually remove useless files.
>>
>> Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
>> ---
>> .../recipes-support/lvm2/libdevmapper_2.02.166.bb | 21 ++-----------
>> meta-oe/recipes-support/lvm2/lvm2.inc | 26 +++++++++++++++-
>> .../0001-explicitly-do-not-install-libdm.patch | 36 ++++++++++++++++++++++
>> meta-oe/recipes-support/lvm2/lvm2_2.02.171.bb | 31 ++-----------------
>> 4 files changed, 65 insertions(+), 49 deletions(-)
>> create mode 100644 meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
>>
>> diff --git a/meta-oe/recipes-support/lvm2/libdevmapper_2.02.166.bb b/meta-oe/recipes-support/lvm2/libdevmapper_2.02.166.bb
>> index fd1fc2c..3cf939d 100644
>> --- a/meta-oe/recipes-support/lvm2/libdevmapper_2.02.166.bb
>> +++ b/meta-oe/recipes-support/lvm2/libdevmapper_2.02.166.bb
>> @@ -5,27 +5,10 @@ SRC_URI[sha256sum] = "e120b066b85b224552efda40204488c5123de068725676fd6e5c8bc655
>>
>> DEPENDS += "autoconf-archive-native"
>>
>> -PACKAGECONFIG = ""
>> -
>> -# Unset user/group to unbreak install.
>> -EXTRA_OECONF = "--with-user= \
>> - --with-group= \
>> - --enable-pkgconfig \
>> - --with-usrlibdir=${libdir} \
>> -"
>> -
>> TARGET_CC_ARCH += "${LDFLAGS}"
>>
>> -do_install_append() {
>> - # Remove things unrelated to libdevmapper
>> - rm -rf ${D}${sysconfdir}
>> - for i in `ls ${D}${sbindir}/*`; do
>> - if [ $i != ${D}${sbindir}/dmsetup ]; then
>> - rm $i
>> - fi
>> - done
>> - # Remove docs
>> - rm -rf ${D}${datadir}
>> +do_install() {
>> + oe_runmake 'DESTDIR=${D}' -C libdm install
>> }
>>
>> RRECOMMENDS_${PN}_append_class-target = " lvm2-udevrules"
>> diff --git a/meta-oe/recipes-support/lvm2/lvm2.inc b/meta-oe/recipes-support/lvm2/lvm2.inc
>> index cb5a9e0..c2dac95 100644
>> --- a/meta-oe/recipes-support/lvm2/lvm2.inc
>> +++ b/meta-oe/recipes-support/lvm2/lvm2.inc
>> @@ -18,11 +18,18 @@ S = "${WORKDIR}/LVM2.${PV}"
>>
>> inherit autotools-brokensep pkgconfig systemd
>>
>> +LVM2_PACKAGECONFIG = "dmeventd lvmetad"
>> +LVM2_PACKAGECONFIG_append_class-target = " \
>> + ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
>> + thin-provisioning-tools \
>> + udev \
>> +"
>> +
>> # odirect is always enabled because there currently is a bug in
>> # lib/device/dev-io.c which prevents compiling without it. It is
>> # better to stick to configurations that were actually tested by
>> # upstream...
>> -PACKAGECONFIG_append = " odirect"
>> +PACKAGECONFIG ??= "odirect ${LVM2_PACKAGECONFIG}"
>>
>> PACKAGECONFIG[dmeventd] = "--enable-dmeventd,--disable-dmeventd"
>> PACKAGECONFIG[lvmetad] = "--enable-lvmetad,--disable-lvmetad"
>> @@ -31,3 +38,20 @@ PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline"
>> PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
>> PACKAGECONFIG[thin-provisioning-tools] = "--with-thin=internal,--with-thin=none,,thin-provisioning-tools"
>> PACKAGECONFIG[udev] = "--enable-udev_sync --enable-udev_rules --with-udevdir=${nonarch_base_libdir}/udev/rules.d,--disable-udev_sync --disable-udev_rules,udev"
>> +
>> +# Unset user/group to unbreak install.
>> +EXTRA_OECONF = "--with-user= \
>> + --with-group= \
>> + --enable-realtime \
>> + --enable-applib \
>> + --enable-cmdlib \
>> + --enable-pkgconfig \
>> + --with-usrlibdir=${libdir} \
>> + --with-systemdsystemunitdir=${systemd_system_unitdir} \
>> + --disable-thin_check_needs_check \
>> + --with-thin-check=${sbindir}/thin_check \
>> + --with-thin-dump=${sbindir}/thin_dump \
>> + --with-thin-repair=${sbindir}/thin_repair \
>> + --with-thin-restore=${sbindir}/thin_restore \
>> +"
>> +
>> diff --git a/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch b/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
>> new file mode 100644
>> index 0000000..e85818d
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
>> @@ -0,0 +1,36 @@
>> +From 0a8e466fcf99622896e070c5133165e4278e8cfb Mon Sep 17 00:00:00 2001
>> +From: Hongxu Jia <hongxu.jia at windriver.com>
>> +Date: Thu, 25 May 2017 05:27:11 -0400
>> +Subject: [PATCH] explicitly do not install libdm
>> +
>> +Already have package libdevmapper which split from lvm2,
>> +explicitly do not do the installation here.
>> +
>> +Upstream-Status: Inappropriate [meta-oe specific]
>> +
>> +Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
>> +---
>> + libdm/Makefile.in | 6 ++++--
>> + 1 file changed, 4 insertions(+), 2 deletions(-)
>> +
>> +diff --git a/libdm/Makefile.in b/libdm/Makefile.in
>> +index 3c9a4ce..45c91c6 100644
>> +--- a/libdm/Makefile.in
>> ++++ b/libdm/Makefile.in
>> +@@ -77,9 +77,11 @@ ifeq ("@PKGCONFIG@", "yes")
>> + INSTALL_TYPE += install_pkgconfig
>> + endif
>> +
>> +-install: $(INSTALL_TYPE) install_include
>> ++install:
>> ++ echo "Do not install device mappler in lvm2"
>> +
>> +-install_device-mapper: install
>> ++install_device-mapper:
>> ++ echo "Do not install device mappler in lvm2"
>> +
>> + install_include: $(srcdir)/libdevmapper.h
>> + $(INSTALL_DATA) -D $< $(includedir)/$(<F)
>> +--
>> +2.8.1
>> +
>> diff --git a/meta-oe/recipes-support/lvm2/lvm2_2.02.171.bb b/meta-oe/recipes-support/lvm2/lvm2_2.02.171.bb
>> index 38c4414..84881e7 100644
>> --- a/meta-oe/recipes-support/lvm2/lvm2_2.02.171.bb
>> +++ b/meta-oe/recipes-support/lvm2/lvm2_2.02.171.bb
>> @@ -3,32 +3,9 @@ require lvm2.inc
>> SRC_URI[md5sum] = "153b7bb643eb26073274968e9026fa8f"
>> SRC_URI[sha256sum] = "b815a711a2fabaa5c3dc1a4a284df0268bf0f325f0fc0f5c9530c9bbb54b9964"
>>
>> -DEPENDS += "autoconf-archive-native"
>> -
>> -LVM2_PACKAGECONFIG = "dmeventd lvmetad"
>> -LVM2_PACKAGECONFIG_append_class-target = " \
>> - ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
>> - thin-provisioning-tools \
>> - udev \
>> -"
>> +SRC_URI += "file://0001-explicitly-do-not-install-libdm.patch"
>>
>> -PACKAGECONFIG ??= "${LVM2_PACKAGECONFIG}"
>> -
>> -# Unset user/group to unbreak install.
>> -EXTRA_OECONF = "--with-user= \
>> - --with-group= \
>> - --enable-realtime \
>> - --enable-applib \
>> - --enable-cmdlib \
>> - --enable-pkgconfig \
>> - --with-usrlibdir=${libdir} \
>> - --with-systemdsystemunitdir=${systemd_system_unitdir} \
>> - --disable-thin_check_needs_check \
>> - --with-thin-check=${sbindir}/thin_check \
>> - --with-thin-dump=${sbindir}/thin_dump \
>> - --with-thin-repair=${sbindir}/thin_repair \
>> - --with-thin-restore=${sbindir}/thin_restore \
>> -"
>> +DEPENDS += "autoconf-archive-native"
>>
>> CACHED_CONFIGUREVARS += "MODPROBE_CMD=${base_sbindir}/modprobe"
>>
>> @@ -45,10 +22,6 @@ do_install_append() {
>> mv ${D}${sysconfdir}/rc.d/init.d ${D}${sysconfdir}/init.d
>> rm -rf ${D}${sysconfdir}/rc.d
>> fi
>> - # Remove things related to libdevmapper
>> - rm -f ${D}${sbindir}/dmsetup
>> - rm -f ${D}${libdir}/libdevmapper.so.*
>> - rm -f ${D}${libdir}/libdevmapper.so ${D}${libdir}/pkgconfig/devmapper.pc ${D}${includedir}/libdevmapper.h
>> }
>>
>> PACKAGE_BEFORE_PN = "${PN}-scripts ${PN}-udevrules"
>> --
>> 2.8.1
>>
>> --
>> _______________________________________________
>> Openembedded-devel mailing list
>> Openembedded-devel at lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
More information about the Openembedded-devel
mailing list