sys-fs/multipath-tools: add json-c-0.14 support
authorThomas Deutschmann <whissi@gentoo.org>
Sat, 2 May 2020 07:28:43 +0000 (09:28 +0200)
committerThomas Deutschmann <whissi@gentoo.org>
Sat, 2 May 2020 07:28:59 +0000 (09:28 +0200)
Closes: https://bugs.gentoo.org/720330
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
sys-fs/multipath-tools/files/multipath-tools-0.8.3-json-c-0.14.patch [new file with mode: 0644]
sys-fs/multipath-tools/multipath-tools-0.8.3-r2.ebuild [new file with mode: 0644]

diff --git a/sys-fs/multipath-tools/files/multipath-tools-0.8.3-json-c-0.14.patch b/sys-fs/multipath-tools/files/multipath-tools-0.8.3-json-c-0.14.patch
new file mode 100644 (file)
index 0000000..34d02f7
--- /dev/null
@@ -0,0 +1,28 @@
+From 8438a9cd8d7ed88645fa8e6a8f19c0fd9ae872a7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
+Date: Mon, 13 Apr 2020 19:22:02 +0200
+Subject: [PATCH] Add support for upcoming json-c 0.14.0.
+
+TRUE/FALSE are not defined anymore.  1 and 0 are used instead.
+This is backwards compatible, as earlier versions of json-c are
+using the same integer values in their present definitions.
+---
+ libdmmp/libdmmp_private.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libdmmp/libdmmp_private.h b/libdmmp/libdmmp_private.h
+index ac85b63f..4378962b 100644
+--- a/libdmmp/libdmmp_private.h
++++ b/libdmmp/libdmmp_private.h
+@@ -82,7 +82,7 @@ static out_type func_name(struct dmmp_context *ctx, const char *var_name) { \
+ do { \
+       json_type j_type = json_type_null; \
+       json_object *j_obj_tmp = NULL; \
+-      if (json_object_object_get_ex(j_obj, key, &j_obj_tmp) != TRUE) { \
++      if (json_object_object_get_ex(j_obj, key, &j_obj_tmp) != 1) { \
+               _error(ctx, "Invalid JSON output from multipathd IPC: " \
+                      "key '%s' not found", key); \
+               rc = DMMP_ERR_IPC_ERROR; \
+-- 
+2.26.0
+
diff --git a/sys-fs/multipath-tools/multipath-tools-0.8.3-r2.ebuild b/sys-fs/multipath-tools/multipath-tools-0.8.3-r2.ebuild
new file mode 100644 (file)
index 0000000..feb9ba3
--- /dev/null
@@ -0,0 +1,92 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit linux-info systemd toolchain-funcs udev vcs-snapshot toolchain-funcs
+
+DESCRIPTION="Device mapper target autoconfig"
+HOMEPAGE="http://christophe.varoqui.free.fr/"
+SRC_URI="https://git.opensvc.com/?p=multipath-tools/.git;a=snapshot;h=${PV};sf=tgz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~x86"
+IUSE="systemd rbd"
+
+BDEPEND="virtual/pkgconfig"
+
+RDEPEND="
+       dev-libs/json-c:=
+       dev-libs/libaio
+       dev-libs/userspace-rcu:=
+       >=sys-fs/lvm2-2.02.45
+       >=virtual/libudev-232-r3
+       sys-libs/readline:0=
+       rbd? ( sys-cluster/ceph )
+       systemd? ( sys-apps/systemd )
+"
+
+DEPEND="${RDEPEND}"
+
+CONFIG_CHECK="~DM_MULTIPATH"
+
+RESTRICT="test"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-0.7.5-respect-flags.patch
+       "${FILESDIR}"/${PN}-0.8.3-no-gziped-docs.patch
+       "${FILESDIR}"/${PN}-0.8.3-json-c-0.14.patch
+)
+
+get_systemd_pv() {
+       use systemd && \
+               $(tc-getPKG_CONFIG) --modversion systemd
+}
+
+src_prepare() {
+       default
+
+       # The upstream lacks any way to configure the build at present
+       # and ceph is a huge dependency, so we're using sed to make it
+       # optional until the upstream has a proper configure system
+       if ! use rbd ; then
+               sed \
+                       -e "s/libcheckrbd.so/# libcheckrbd.so/" \
+                       -e "s/-lrados//" \
+                       -i libmultipath/checkers/Makefile \
+                       || die
+       fi
+}
+
+src_compile() {
+       # LIBDM_API_FLUSH involves grepping files in /usr/include,
+       # so force the test to go the way we want #411337.
+       emake \
+               CC="$(tc-getCC)" \
+               LIBDM_API_FLUSH=1 SYSTEMD="$(get_systemd_pv)"
+}
+
+src_install() {
+       dodir /sbin /usr/share/man/man{5,8}
+       emake \
+               DESTDIR="${D}" \
+               RUN=run \
+               SYSTEMD=$(get_systemd_pv) \
+               unitdir="$(systemd_get_systemunitdir)" \
+               libudevdir='${prefix}'/"$(get_udevdir)" \
+               pkgconfdir='${prefix}'/usr/'${LIB}'/pkgconfig \
+               install
+
+       newinitd "${FILESDIR}"/multipathd-r1.rc multipathd
+       newinitd "${FILESDIR}"/multipath.rc multipath
+
+       einstalldocs
+}
+
+pkg_postinst() {
+       if [[ -z ${REPLACING_VERSIONS} ]]; then
+               elog "If you need multipath on your system, you must"
+               elog "add 'multipath' into your boot runlevel!"
+       fi
+}