libvirt: apply patch to build 1.3.0 on BSD/Darwin

Upstream bug: https://bugzilla.redhat.com/show_bug.cgi?id=1293060

This patch is based on the one attached to that bug report, but
instead of patching the .x files (parsing of which apparently
fails as well) it modifies the pre-generated .c files directly.

This ought to fix #12139.
This commit is contained in:
Tobias Geerinckx-Rice 2016-01-04 16:50:34 +01:00
parent 4b14ebc16d
commit 286cd8378c
2 changed files with 67 additions and 4 deletions

View File

@ -0,0 +1,58 @@
diff -Naur libvirt-1.3.0.orig/src/admin/admin_protocol.c libvirt-1.3.0/src/admin/admin_protocol.c
--- libvirt-1.3.0.orig/src/admin/admin_protocol.c 2015-12-02 16:17:07.000000000 +0100
+++ libvirt-1.3.0/src/admin/admin_protocol.c 2016-01-04 17:57:10.043412857 +0100
@@ -6,6 +6,25 @@
#include "admin_protocol.h"
+/* cygwin's xdr implementation defines xdr_u_int64_t instead of xdr_uint64_t
+ * and lacks IXDR_PUT_INT32 and IXDR_GET_INT32
+ */
+#ifdef HAVE_XDR_U_INT64_T
+# define xdr_uint64_t xdr_u_int64_t
+#endif
+#ifndef IXDR_PUT_INT32
+# define IXDR_PUT_INT32 IXDR_PUT_LONG
+#endif
+#ifndef IXDR_GET_INT32
+# define IXDR_GET_INT32 IXDR_GET_LONG
+#endif
+#ifndef IXDR_PUT_U_INT32
+# define IXDR_PUT_U_INT32 IXDR_PUT_U_LONG
+#endif
+#ifndef IXDR_GET_U_INT32
+# define IXDR_GET_U_INT32 IXDR_GET_U_LONG
+#endif
+
bool_t
xdr_admin_nonnull_string (XDR *xdrs, admin_nonnull_string *objp)
{
diff -Naur libvirt-1.3.0.orig/src/logging/log_protocol.c libvirt-1.3.0/src/logging/log_protocol.c
--- libvirt-1.3.0.orig/src/logging/log_protocol.c 2015-12-08 13:07:35.000000000 +0100
+++ libvirt-1.3.0/src/logging/log_protocol.c 2016-01-04 17:56:50.673463563 +0100
@@ -7,6 +7,25 @@
#include "log_protocol.h"
#include "internal.h"
+/* cygwin's xdr implementation defines xdr_u_int64_t instead of xdr_uint64_t
+ * and lacks IXDR_PUT_INT32 and IXDR_GET_INT32
+ */
+#ifdef HAVE_XDR_U_INT64_T
+# define xdr_uint64_t xdr_u_int64_t
+#endif
+#ifndef IXDR_PUT_INT32
+# define IXDR_PUT_INT32 IXDR_PUT_LONG
+#endif
+#ifndef IXDR_GET_INT32
+# define IXDR_GET_INT32 IXDR_GET_LONG
+#endif
+#ifndef IXDR_PUT_U_INT32
+# define IXDR_PUT_U_INT32 IXDR_PUT_U_LONG
+#endif
+#ifndef IXDR_GET_U_INT32
+# define IXDR_GET_U_INT32 IXDR_GET_U_LONG
+#endif
+
bool_t
xdr_virLogManagerProtocolUUID (XDR *xdrs, virLogManagerProtocolUUID objp)
{

View File

@ -1,6 +1,8 @@
{ stdenv, fetchurl, pkgconfig, libxml2, gnutls, devicemapper, perl, python
{ stdenv, fetchurl, fetchpatch
, pkgconfig, makeWrapper
, libxml2, gnutls, devicemapper, perl, python
, iproute, iptables, readline, lvm2, utillinux, udev, libpciaccess, gettext
, libtasn1, ebtables, libgcrypt, yajl, makeWrapper, pmutils, libcap_ng
, libtasn1, ebtables, libgcrypt, yajl, pmutils, libcap_ng
, dnsmasq, libnl, libpcap, libxslt, xhtml1, numad, numactl, perlPackages
, curl, libiconv, gmp, xen
}:
@ -14,9 +16,12 @@ stdenv.mkDerivation rec {
sha256 = "ebcf5645fa565e3fe2fe94a86e841db9b768cf0e0a7e6cf395c6327f9a23bd64";
};
patches = [ ./build-on-bsd.patch ];
nativeBuildInputs = [ makeWrapper pkgconfig ];
buildInputs = [
pkgconfig libxml2 gnutls perl python readline
gettext libtasn1 libgcrypt yajl makeWrapper
libxml2 gnutls perl python readline
gettext libtasn1 libgcrypt yajl
libxslt xhtml1 perlPackages.XMLXPath curl libpcap
] ++ stdenv.lib.optionals stdenv.isLinux [
libpciaccess devicemapper lvm2 utillinux udev libcap_ng