From 7f17da154372b5ec33947766783444961e8aa67c Mon Sep 17 00:00:00 2001 From: Chen Qi Date: Mon, 24 Apr 2017 16:06:41 +0800 Subject: [PATCH] lvm2: separate libdevmapper to avoid circular dependency If we enable 'cryptsetup' PACKAGECONFIG for systemd, there would be circular dependency issue among 'systemd', 'cryptsetup' and 'lvm2'. cryptsetup only needs libdevmapper from lvm2. So we separte libdevmapper into a new recipe to solve this circular dependency issue. Signed-off-by: Chen Qi Signed-off-by: Martin Jansa --- .../0001-Avoid-bashisms-in-init-scripts.patch | 0 ...mplement-libc-specific-reopen_stream.patch | 0 ...Guard-use-of-mallinfo-with-__GLIBC__.patch | 0 ...h-for-O_-defines-and-fcntl-signature.patch | 0 ...tweak-MODPROBE_CMD-for-cross-compile.patch | 0 .../lvm2/{lvm2 => files}/lvm.conf | 0 .../lvm2/libdevmapper_2.02.166.bb | 31 ++++++++ meta-oe/recipes-support/lvm2/lvm2.inc | 75 ------------------- meta-oe/recipes-support/lvm2/lvm2_2.02.166.bb | 73 ++++++++++++++++++ 9 files changed, 104 insertions(+), 75 deletions(-) rename meta-oe/recipes-support/lvm2/{lvm2 => files}/0001-Avoid-bashisms-in-init-scripts.patch (100%) rename meta-oe/recipes-support/lvm2/{lvm2 => files}/0001-implement-libc-specific-reopen_stream.patch (100%) rename meta-oe/recipes-support/lvm2/{lvm2 => files}/0002-Guard-use-of-mallinfo-with-__GLIBC__.patch (100%) rename meta-oe/recipes-support/lvm2/{lvm2 => files}/0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch (100%) rename meta-oe/recipes-support/lvm2/{lvm2 => files}/0004-tweak-MODPROBE_CMD-for-cross-compile.patch (100%) rename meta-oe/recipes-support/lvm2/{lvm2 => files}/lvm.conf (100%) create mode 100644 meta-oe/recipes-support/lvm2/libdevmapper_2.02.166.bb diff --git a/meta-oe/recipes-support/lvm2/lvm2/0001-Avoid-bashisms-in-init-scripts.patch b/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch similarity index 100% rename from meta-oe/recipes-support/lvm2/lvm2/0001-Avoid-bashisms-in-init-scripts.patch rename to meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch diff --git a/meta-oe/recipes-support/lvm2/lvm2/0001-implement-libc-specific-reopen_stream.patch b/meta-oe/recipes-support/lvm2/files/0001-implement-libc-specific-reopen_stream.patch similarity index 100% rename from meta-oe/recipes-support/lvm2/lvm2/0001-implement-libc-specific-reopen_stream.patch rename to meta-oe/recipes-support/lvm2/files/0001-implement-libc-specific-reopen_stream.patch diff --git a/meta-oe/recipes-support/lvm2/lvm2/0002-Guard-use-of-mallinfo-with-__GLIBC__.patch b/meta-oe/recipes-support/lvm2/files/0002-Guard-use-of-mallinfo-with-__GLIBC__.patch similarity index 100% rename from meta-oe/recipes-support/lvm2/lvm2/0002-Guard-use-of-mallinfo-with-__GLIBC__.patch rename to meta-oe/recipes-support/lvm2/files/0002-Guard-use-of-mallinfo-with-__GLIBC__.patch diff --git a/meta-oe/recipes-support/lvm2/lvm2/0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch b/meta-oe/recipes-support/lvm2/files/0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch similarity index 100% rename from meta-oe/recipes-support/lvm2/lvm2/0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch rename to meta-oe/recipes-support/lvm2/files/0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch diff --git a/meta-oe/recipes-support/lvm2/lvm2/0004-tweak-MODPROBE_CMD-for-cross-compile.patch b/meta-oe/recipes-support/lvm2/files/0004-tweak-MODPROBE_CMD-for-cross-compile.patch similarity index 100% rename from meta-oe/recipes-support/lvm2/lvm2/0004-tweak-MODPROBE_CMD-for-cross-compile.patch rename to meta-oe/recipes-support/lvm2/files/0004-tweak-MODPROBE_CMD-for-cross-compile.patch diff --git a/meta-oe/recipes-support/lvm2/lvm2/lvm.conf b/meta-oe/recipes-support/lvm2/files/lvm.conf similarity index 100% rename from meta-oe/recipes-support/lvm2/lvm2/lvm.conf rename to meta-oe/recipes-support/lvm2/files/lvm.conf diff --git a/meta-oe/recipes-support/lvm2/libdevmapper_2.02.166.bb b/meta-oe/recipes-support/lvm2/libdevmapper_2.02.166.bb new file mode 100644 index 0000000000..462e8fb01b --- /dev/null +++ b/meta-oe/recipes-support/lvm2/libdevmapper_2.02.166.bb @@ -0,0 +1,31 @@ +require lvm2.inc + +SRC_URI[md5sum] = "c5a54ee0b86703daaad6e856439e115a" +SRC_URI[sha256sum] = "e120b066b85b224552efda40204488c5123de068725676fd6e5c8bc655051b94" + +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} +} + +RRECOMMENDS_${PN} += "lvm2-udevrules" diff --git a/meta-oe/recipes-support/lvm2/lvm2.inc b/meta-oe/recipes-support/lvm2/lvm2.inc index e295e20fa8..cb5a9e0427 100644 --- a/meta-oe/recipes-support/lvm2/lvm2.inc +++ b/meta-oe/recipes-support/lvm2/lvm2.inc @@ -18,15 +18,6 @@ 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 \ -" - -PACKAGECONFIG ??= "${LVM2_PACKAGECONFIG}" - # 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 @@ -40,69 +31,3 @@ 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 \ -" - -CACHED_CONFIGUREVARS += "MODPROBE_CMD=${base_sbindir}/modprobe" - -do_install_append() { - # Install machine specific configuration file - install -d ${D}${sysconfdir}/lvm - install -m 0644 ${WORKDIR}/lvm.conf ${D}${sysconfdir}/lvm/lvm.conf - sed -i -e 's:@libdir@:${libdir}:g' ${D}${sysconfdir}/lvm/lvm.conf - if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then - oe_runmake 'DESTDIR=${D}' install install_systemd_units - sed -i -e 's:/usr/bin/true:${base_bindir}/true:g' ${D}${systemd_system_unitdir}/blk-availability.service - else - oe_runmake 'DESTDIR=${D}' install install_initscripts - mv ${D}${sysconfdir}/rc.d/init.d ${D}${sysconfdir}/init.d - rm -rf ${D}${sysconfdir}/rc.d - fi -} - -PACKAGE_BEFORE_PN = "${PN}-scripts libdevmapper libdevmapper-dev" - -SYSTEMD_PACKAGES = "${PN}" -SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'dmeventd', 'lvm2-monitor.service dm-event.socket dm-event.service', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'lvmetad', 'lvm2-lvmetad.socket lvm2-pvscan@.service', '', d)} \ - blk-availability.service" -SYSTEMD_AUTO_ENABLE = "disable" - -TARGET_CC_ARCH += "${LDFLAGS}" - -FILES_${PN} += "${libdir}/device-mapper/*.so" -FILES_${PN}-scripts = " \ - ${sbindir}/blkdeactivate \ - ${sbindir}/fsadm \ - ${sbindir}/lvmconf \ - ${sbindir}/lvmdump \ -" -# Specified explicitly for the udev rules, just in case that it does not get picked -# up automatically: -RDEPENDS_${PN}_append_class-target = " libdevmapper" -FILES_libdevmapper = "${sbindir}/dmsetup ${libdir}/libdevmapper.so.* ${nonarch_base_libdir}/udev/rules.d" -FILES_libdevmapper-dev = " \ - ${libdir}/libdevmapper.so \ - ${libdir}/pkgconfig/devmapper.pc \ - ${includedir}/libdevmapper.h \ -" - -RDEPENDS_${PN}-scripts = "${PN} (= ${EXTENDPKGV}) bash" -RDEPENDS_libdevmapper-dev = "libdevmapper (= ${EXTENDPKGV})" -RRECOMMENDS_${PN}_class-target = "${PN}-scripts (= ${EXTENDPKGV})" - -CONFFILES_${PN} += "${sysconfdir}/lvm/lvm.conf" diff --git a/meta-oe/recipes-support/lvm2/lvm2_2.02.166.bb b/meta-oe/recipes-support/lvm2/lvm2_2.02.166.bb index c81faa7e5a..7939f05522 100644 --- a/meta-oe/recipes-support/lvm2/lvm2_2.02.166.bb +++ b/meta-oe/recipes-support/lvm2/lvm2_2.02.166.bb @@ -5,4 +5,77 @@ SRC_URI[sha256sum] = "e120b066b85b224552efda40204488c5123de068725676fd6e5c8bc655 DEPENDS += "autoconf-archive-native" +LVM2_PACKAGECONFIG = "dmeventd lvmetad" +LVM2_PACKAGECONFIG_append_class-target = " \ + ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \ + thin-provisioning-tools \ + udev \ +" + +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 \ +" + +CACHED_CONFIGUREVARS += "MODPROBE_CMD=${base_sbindir}/modprobe" + +do_install_append() { + # Install machine specific configuration file + install -d ${D}${sysconfdir}/lvm + install -m 0644 ${WORKDIR}/lvm.conf ${D}${sysconfdir}/lvm/lvm.conf + sed -i -e 's:@libdir@:${libdir}:g' ${D}${sysconfdir}/lvm/lvm.conf + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + oe_runmake 'DESTDIR=${D}' install install_systemd_units + sed -i -e 's:/usr/bin/true:${base_bindir}/true:g' ${D}${systemd_system_unitdir}/blk-availability.service + else + oe_runmake 'DESTDIR=${D}' install install_initscripts + 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" + +SYSTEMD_PACKAGES = "${PN}" +SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'dmeventd', 'lvm2-monitor.service dm-event.socket dm-event.service', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'lvmetad', 'lvm2-lvmetad.socket lvm2-pvscan@.service', '', d)} \ + blk-availability.service" +SYSTEMD_AUTO_ENABLE = "disable" + +TARGET_CC_ARCH += "${LDFLAGS}" + +FILES_${PN} += "${libdir}/device-mapper/*.so" +FILES_${PN}-scripts = " \ + ${sbindir}/blkdeactivate \ + ${sbindir}/fsadm \ + ${sbindir}/lvmconf \ + ${sbindir}/lvmdump \ +" +# Specified explicitly for the udev rules, just in case that it does not get picked +# up automatically: +FILES_${PN}-udevrules = "${nonarch_base_libdir}/udev/rules.d" +RDEPENDS_${PN}_append_class-target = " libdevmapper" + +RDEPENDS_${PN}-scripts = "${PN} (= ${EXTENDPKGV}) bash" +RRECOMMENDS_${PN}_class-target = "${PN}-scripts (= ${EXTENDPKGV})" + +CONFFILES_${PN} += "${sysconfdir}/lvm/lvm.conf" + BBCLASSEXTEND = "native nativesdk"