1SUMMARY = "The upstream project used to drive the Device Mapper multipathing driver" 2 3DESCRIPTION = "It provides tools to manage multipath devices \ 4by instructing the device-mapper kernel module what to do. These \ 5tools include: \ 61. multipath - Scan the system for multipath devices and assemble them.\ 72. multipathd - Detects when paths fail and execs multipath to update \ 8things.\ 93. mpathpersist - Persistent reservation management feature allows \ 10cluster management software to manage persistent reservation through \ 11mpath device. It processes management requests from callers and hides \ 12the management task details. It also handles persistent reservation \ 13management of data path life cycle and state changes.\ 144. kpartx - This tool, derived from util-linux's partx, reads partition \ 15tables on specified device and create device maps over partitions \ 16segments detected. It is called from hotplug upon device maps creation \ 17and deletion" 18 19HOMEPAGE = "http://christophe.varoqui.free.fr/" 20 21DEPENDS = "libdevmapper \ 22 lvm2 \ 23 libaio \ 24 liburcu \ 25 readline \ 26 udev \ 27 json-c \ 28 " 29 30LICENSE = "GPL-2.0-only" 31 32SRC_URI = "git://github.com/opensvc/multipath-tools.git;protocol=http;branch=master \ 33 file://multipathd.oe \ 34 file://multipath.conf.example \ 35 file://0021-RH-fixup-udev-rules-for-redhat.patch \ 36 file://0022-RH-Remove-the-property-blacklist-exception-builtin.patch \ 37 file://0023-RH-don-t-start-without-a-config-file.patch \ 38 file://0024-RH-use-rpm-optflags-if-present.patch \ 39 file://0025-RH-add-mpathconf.patch \ 40 file://0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch \ 41 file://0027-RH-warn-on-invalid-regex-instead-of-failing.patch \ 42 file://0028-RH-reset-default-find_mutipaths-value-to-off.patch \ 43 file://0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch \ 44 file://0030-Always-use-devmapper.patch \ 45 file://0031-Always-use-devmapper-for-kpartx.patch \ 46 file://0032-libdmmp-Makefile-replace-perl-with-sed-in-install-ta.patch \ 47 file://0001-fix-bug-of-do_compile-and-do_install.patch \ 48 file://0001-add-explicit-dependency-on-libraries.patch \ 49 file://0001-fix-boolean-value-with-json-c-0.14.patch \ 50 file://0001-libmultipath-uevent.c-fix-error-handling-for-udev_mo.patch \ 51 file://0001-multipath-tools-use-run-instead-of-dev-shm.patch \ 52 file://CVE-2022-41974.patch \ 53 " 54 55LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2" 56 57SRCREV = "d4915917655b3d205aa0e339ca13080ed8182d0d" 58 59S = "${WORKDIR}/git" 60 61inherit systemd pkgconfig 62 63SYSTEMD_SERVICE:${PN} = "multipathd.service" 64SYSTEMD_AUTO_ENABLE = "disable" 65 66TARGET_CC_ARCH += "${LDFLAGS}" 67 68# multipath-tools includes a copy of the valgrind.h header 69# file and uses the macros to suppress some false positives. However, 70# that only works on ARM when thumb is disabled. Otherwise one gets: 71# Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r12,r12,ror#3' 72# ../Makefile.inc:66: recipe for target 'debug.o' failed 73ARM_INSTRUCTION_SET:armv4 = "arm" 74ARM_INSTRUCTION_SET:armv5 = "arm" 75 76# The exact version of SYSTEMD does not matter but should be greater than 209. 77# 78EXTRA_OEMAKE = 'MULTIPATH_VERSION=${PV} DESTDIR=${D} syslibdir=${base_libdir} \ 79 OPTFLAGS="${CFLAGS}" \ 80 bindir=${base_sbindir} \ 81 LIB=${base_libdir} libdir=${base_libdir}/multipath \ 82 unitdir=${systemd_system_unitdir} \ 83 libudevdir=${nonarch_base_libdir}/udev \ 84 ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "SYSTEMD=216", "", d)} \ 85 ' 86 87do_install() { 88 oe_runmake install 89 90 # We copy an initscript, but do not start multipathd at init time. 91 # 92 if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)};then 93 install -d ${D}${sysconfdir}/init.d 94 cp ${WORKDIR}/multipathd.oe ${D}${sysconfdir}/init.d/multipathd 95 fi 96 97 sed -i "s:/usr/lib/udev/kpartx_id:${nonarch_base_libdir}/udev/kpartx_id:g" \ 98 ${D}${nonarch_base_libdir}/udev/rules.d/11-dm-mpath.rules 99 100 install -d ${D}${sysconfdir} 101 install -m 0644 ${WORKDIR}/multipath.conf.example \ 102 ${D}${sysconfdir}/multipath.conf.example 103} 104 105FILES:${PN}-dbg += "${base_libdir}/multipath/.debug" 106 107PACKAGES =+ "${PN}-libs" 108FILES:${PN}-libs = "${base_libdir}/lib*.so.* \ 109 ${base_libdir}/multipath/lib*.so*" 110RDEPENDS:${PN} += "${PN}-libs bash" 111 112PROVIDES += "device-mapper-multipath" 113RPROVIDES:${PN} += "device-mapper-multipath" 114RPROVIDES:${PN}-libs += "device-mapper-multipath-libs" 115 116FILES:${PN}-dev += "${base_libdir}/pkgconfig" 117 118PACKAGES =+ "kpartx" 119FILES:kpartx = "${base_sbindir}/kpartx \ 120 ${nonarch_base_libdir}/udev/kpartx_id \ 121 " 122 123RDEPENDS:${PN} += "kpartx" 124PARALLEL_MAKE = "" 125 126FILES:${PN}-libs += "usr/lib/*.so.*" 127FILES:${PN}-libs += "usr/lib/tmpfiles.d/*" 128