1require lvm2.inc
2
3SRC_URI += " \
4            file://0001-fix-command-bin-findmnt-bin-lsblk-bin-sort-not-found.patch \
5            file://tweak-for-lvmdbusd.patch \
6            file://0001-lvmdbusd-create-dirs-for-lock-file.patch \
7           "
8
9DEPENDS += "autoconf-archive-native"
10
11inherit multilib_script python3native
12
13MULTILIB_SCRIPTS = "${PN}:${sysconfdir}/lvm/lvm.conf"
14
15CACHED_CONFIGUREVARS += "MODPROBE_CMD=${base_sbindir}/modprobe"
16
17do_install:append() {
18    # Install machine specific configuration file
19    install -d ${D}${sysconfdir}/lvm
20    install -m 0644 ${WORKDIR}/lvm.conf ${D}${sysconfdir}/lvm/lvm.conf
21    sed -i -e 's:@libdir@:${libdir}:g' ${D}${sysconfdir}/lvm/lvm.conf
22    # We don't want init scripts/systemd units for native SDK utilities
23    if [ "${PN}" != "nativesdk-lvm2" ]; then
24        if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
25            oe_runmake 'DESTDIR=${D}' install install_systemd_units
26            sed -i -e 's:/usr/bin/true:${base_bindir}/true:g' ${D}${systemd_system_unitdir}/blk-availability.service
27        else
28            oe_runmake 'DESTDIR=${D}' install install_initscripts
29            mv ${D}${sysconfdir}/rc.d/init.d ${D}${sysconfdir}/init.d
30            rm -rf ${D}${sysconfdir}/rc.d
31        fi
32    fi
33
34    # following files only exist when package config `dbus` enabled
35    sed -i -e '1s,#!.*python.*,#!${USRBINPATH}/env python3,' \
36        ${D}${sbindir}/lvmdbusd \
37        ${D}${PYTHON_SITEPACKAGES_DIR}/lvmdbusd/lvmdb.py \
38        ${D}${PYTHON_SITEPACKAGES_DIR}/lvmdbusd/lvm_shell_proxy.py \
39    || true
40}
41
42PACKAGE_BEFORE_PN = "${PN}-scripts ${PN}-udevrules"
43
44SYSTEMD_PACKAGES = "${PN}"
45SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'dmeventd', 'lvm2-monitor.service dm-event.socket dm-event.service', '', d)} \
46                         ${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'lvm2-lvmdbusd.service', '', d)} \
47                         blk-availability.service \
48                         "
49SYSTEMD_AUTO_ENABLE = "disable"
50
51TARGET_CC_ARCH += "${LDFLAGS}"
52
53EXTRA_OECONF:append:class-nativesdk = " --with-confdir=${sysconfdir}"
54
55DEPENDS += "util-linux"
56LVM2_PACKAGECONFIG:append:class-target = " \
57    udev \
58"
59
60PACKAGECONFIG[dbus] = "--enable-dbus-service,--disable-dbus-service,,python3-dbus python3-pyudev"
61PACKAGECONFIG[udev] = "--enable-udev_sync --enable-udev_rules --with-udevdir=${nonarch_base_libdir}/udev/rules.d,--disable-udev_sync --disable-udev_rules,udev,${PN}-udevrules"
62
63PACKAGES =+ "libdevmapper"
64FILES:libdevmapper = " \
65    ${libdir}/libdevmapper.so.* \
66    ${sbindir}/dmsetup \
67    ${sbindir}/dmstats \
68"
69
70FILES:${PN} += " \
71    ${libdir}/device-mapper/*.so \
72    ${systemd_system_unitdir}/lvm2-pvscan@.service \
73    ${PYTHON_SITEPACKAGES_DIR}/lvmdbusd \
74    ${datadir}/dbus-1/system-services/com.redhat.lvmdbus1.service \
75"
76
77FILES:${PN}-scripts = " \
78    ${sbindir}/blkdeactivate \
79    ${sbindir}/fsadm \
80    ${sbindir}/lvmconf \
81    ${sbindir}/lvmdump \
82"
83# Specified explicitly for the udev rules, just in case that it does not get picked
84# up automatically:
85FILES:${PN}-udevrules = "${nonarch_base_libdir}/udev/rules.d"
86RDEPENDS:${PN} = "bash"
87RDEPENDS:${PN}-udevrules = "libdevmapper"
88RDEPENDS:${PN}:append:class-target = " libdevmapper"
89RDEPENDS:${PN}:append:class-nativesdk = " libdevmapper"
90
91RDEPENDS:${PN}-scripts = "${PN} (= ${EXTENDPKGV}) \
92                          bash \
93                          util-linux-lsblk \
94                          util-linux-findmnt \
95                          coreutils \
96"
97RRECOMMENDS:${PN}:class-target = "${PN}-scripts (= ${EXTENDPKGV})"
98
99CONFFILES:${PN} += "${sysconfdir}/lvm/lvm.conf"
100
101SYSROOT_PREPROCESS_FUNCS:append = " remove_libdevmapper_sysroot_preprocess"
102remove_libdevmapper_sysroot_preprocess() {
103    rm -f ${SYSROOT_DESTDIR}${libdir}/libdevmapper.so* \
104       ${SYSROOT_DESTDIR}${sbindir}/dmsetup \
105       ${SYSROOT_DESTDIR}${sbindir}/dmstats \
106       ${SYSROOT_DESTDIR}${includedir}/libdevmapper.h \
107       ${SYSROOT_DESTDIR}${libdir}/pkgconfig/devmapper.pc
108}
109
110BBCLASSEXTEND = "native nativesdk"
111