From 286cd8378c7ebdad651ac9ba6f59fea6206e55d2 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 4 Jan 2016 16:50:34 +0100 Subject: [PATCH] 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. --- .../libraries/libvirt/build-on-bsd.patch | 58 +++++++++++++++++++ .../development/libraries/libvirt/default.nix | 13 +++-- 2 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 pkgs/development/libraries/libvirt/build-on-bsd.patch diff --git a/pkgs/development/libraries/libvirt/build-on-bsd.patch b/pkgs/development/libraries/libvirt/build-on-bsd.patch new file mode 100644 index 00000000000..830f0f30ff9 --- /dev/null +++ b/pkgs/development/libraries/libvirt/build-on-bsd.patch @@ -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) + { diff --git a/pkgs/development/libraries/libvirt/default.nix b/pkgs/development/libraries/libvirt/default.nix index 54addb397b7..980bccd39fb 100644 --- a/pkgs/development/libraries/libvirt/default.nix +++ b/pkgs/development/libraries/libvirt/default.nix @@ -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