From 6e3a04d1532db375c74b38c71963316ef4a466f0 Mon Sep 17 00:00:00 2001 From: Thomas Deutschmann Date: Sat, 2 May 2020 09:28:43 +0200 Subject: [PATCH] sys-fs/multipath-tools: add json-c-0.14 support Closes: https://bugs.gentoo.org/720330 Package-Manager: Portage-2.3.99, Repoman-2.3.22 Signed-off-by: Thomas Deutschmann --- .../multipath-tools-0.8.3-json-c-0.14.patch | 28 ++++++ .../multipath-tools-0.8.3-r2.ebuild | 92 +++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 sys-fs/multipath-tools/files/multipath-tools-0.8.3-json-c-0.14.patch create mode 100644 sys-fs/multipath-tools/multipath-tools-0.8.3-r2.ebuild 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 index 000000000000..34d02f7b5d7f --- /dev/null +++ b/sys-fs/multipath-tools/files/multipath-tools-0.8.3-json-c-0.14.patch @@ -0,0 +1,28 @@ +From 8438a9cd8d7ed88645fa8e6a8f19c0fd9ae872a7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= +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 index 000000000000..feb9ba35c845 --- /dev/null +++ b/sys-fs/multipath-tools/multipath-tools-0.8.3-r2.ebuild @@ -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 +} -- 2.26.2