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 <Qi.Chen@windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Chen Qi
2017-04-24 16:06:41 +08:00
committed by Martin Jansa
parent 7e4166e80b
commit 7f17da1543
9 changed files with 104 additions and 75 deletions
@@ -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"
-75
View File
@@ -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"
@@ -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"