libvirt: 6.3.0 -> 6.6.0

Also upgrades `python3Packages.libvirt`
and patches the `rpcgen` tool from Apple's `developer_cmds` package.
This commit is contained in:
Bas van Dijk
2020-09-29 00:18:24 +02:00
parent a7218d6914
commit d5b0c8bcdf
5 changed files with 92 additions and 121 deletions
@@ -1,106 +0,0 @@
From a9ce1217742d542a5ae4b154b6f55342aace374e Mon Sep 17 00:00:00 2001
From: Maximilian Bosch <maximilian@mbosch.me>
Date: Mon, 17 Aug 2020 19:35:44 +0200
Subject: [PATCH] Fix build with libtirpc
Derived from https://github.com/libvirt/libvirt/commit/d7147b3797380de2d159ce6324536f3e1f2d97e3.patch
---
libvirt.spec.in | 4 +++-
src/Makefile.am | 2 +-
src/admin/Makefile.inc.am | 1 +
src/locking/Makefile.inc.am | 2 ++
src/logging/Makefile.inc.am | 1 +
src/remote/Makefile.inc.am | 1 +
6 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 6abf97d..71fc4e6 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -405,11 +405,13 @@ BuildRequires: wireshark-devel >= 2.4.0
BuildRequires: libssh-devel >= 0.7.0
%endif
+# On RHEL-7 rpcgen is still part of glibc-common package
%if 0%{?fedora} || 0%{?rhel} > 7
BuildRequires: rpcgen
-BuildRequires: libtirpc-devel
%endif
+BuildRequires: libtirpc-devel
+
%if %{with_firewalld_zone}
BuildRequires: firewalld-filesystem
%endif
diff --git a/src/Makefile.am b/src/Makefile.am
index 12dd6b8..8d0d4e1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -439,7 +439,7 @@ libvirt_la_LDFLAGS += -Wl,-flat_namespace
endif WITH_MACOS
libvirt_la_LDFLAGS += $(NULL)
libvirt_la_LIBADD += \
- $(DRIVER_MODULES_LIBS)
+ $(DRIVER_MODULES_LIBS) $(XDR_LIBS)
libvirt_la_CFLAGS = -DIN_LIBVIRT $(AM_CFLAGS)
# Because we specify libvirt_la_DEPENDENCIES for $(LIBVIRT_SYMBOL_FILE), we
# lose automake's automatic dependencies on an appropriate subset of
diff --git a/src/admin/Makefile.inc.am b/src/admin/Makefile.inc.am
index 0a9717a..8556a3b 100644
--- a/src/admin/Makefile.inc.am
+++ b/src/admin/Makefile.inc.am
@@ -72,6 +72,7 @@ libvirt_admin_la_LDFLAGS = \
libvirt_admin_la_LIBADD = \
libvirt.la \
+ $(XDR_LIBS) \
$(CAPNG_LIBS) \
$(YAJL_LIBS) \
$(DEVMAPPER_LIBS) \
diff --git a/src/locking/Makefile.inc.am b/src/locking/Makefile.inc.am
index d1bf49c..ab01d8e 100644
--- a/src/locking/Makefile.inc.am
+++ b/src/locking/Makefile.inc.am
@@ -120,6 +120,7 @@ lockd_la_LDFLAGS = $(AM_LDFLAGS_MOD_NOUNDEF)
lockd_la_LIBADD = \
libvirt.la \
$(GLIB_LIBS) \
+ $(XDR_LIBS) \
$(NULL)
augeas_DATA += locking/libvirt_lockd.aug
if WITH_DTRACE_PROBES
@@ -161,6 +162,7 @@ virtlockd_CFLAGS = \
virtlockd_LDFLAGS = \
$(AM_LDFLAGS) \
$(PIE_LDFLAGS) \
+ $(XDR_LIBS) \
$(NO_UNDEFINED_LDFLAGS) \
$(NULL)
virtlockd_LDADD = \
diff --git a/src/logging/Makefile.inc.am b/src/logging/Makefile.inc.am
index dc09cfe..4be3376 100644
--- a/src/logging/Makefile.inc.am
+++ b/src/logging/Makefile.inc.am
@@ -99,6 +99,7 @@ virtlogd_CFLAGS = \
virtlogd_LDFLAGS = \
$(AM_LDFLAGS) \
$(PIE_LDFLAGS) \
+ $(XDR_LIBS) \
$(NO_UNDEFINED_LDFLAGS) \
$(NULL)
virtlogd_LDADD = \
diff --git a/src/remote/Makefile.inc.am b/src/remote/Makefile.inc.am
index 1b1be83..8a40c96 100644
--- a/src/remote/Makefile.inc.am
+++ b/src/remote/Makefile.inc.am
@@ -69,6 +69,7 @@ REMOTE_DAEMON_LD_ADD = \
$(LIBXML_LIBS) \
$(GNUTLS_LIBS) \
$(SASL_LIBS) \
+ $(XDR_LIBS) \
$(DBUS_LIBS) \
$(LIBNL_LIBS) \
$(NULL)
--
2.25.4
+14 -10
View File
@@ -4,7 +4,7 @@
, iproute, iptables, readline, lvm2, utillinux, systemd, libpciaccess, gettext , iproute, iptables, readline, lvm2, utillinux, systemd, libpciaccess, gettext
, libtasn1, ebtables, libgcrypt, yajl, pmutils, libcap_ng, libapparmor , libtasn1, ebtables, libgcrypt, yajl, pmutils, libcap_ng, libapparmor
, dnsmasq, libnl, libpcap, libxslt, xhtml1, numad, numactl, perlPackages , dnsmasq, libnl, libpcap, libxslt, xhtml1, numad, numactl, perlPackages
, curl, libiconv, gmp, zfs, parted, bridge-utils, dmidecode, dbus, libtirpc, rpcsvc-proto , curl, libiconv, gmp, zfs, parted, bridge-utils, dmidecode, dbus, libtirpc, rpcsvc-proto, darwin
, enableXen ? false, xen ? null , enableXen ? false, xen ? null
, enableIscsi ? false, openiscsi , enableIscsi ? false, openiscsi
, enableCeph ? false, ceph , enableCeph ? false, ceph
@@ -17,34 +17,38 @@ let
buildFromTarball = stdenv.isDarwin; buildFromTarball = stdenv.isDarwin;
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "libvirt"; pname = "libvirt";
version = "6.3.0"; version = "6.6.0";
src = src =
if buildFromTarball then if buildFromTarball then
fetchurl { fetchurl {
url = "http://libvirt.org/sources/${pname}-${version}.tar.xz"; url = "http://libvirt.org/sources/${pname}-${version}.tar.xz";
sha256 = "1xcng497hs1gary3pz3fp590a4r1kqs4d0d8k5p370j0scw981kl"; sha256 = "1y8y13zvh820f4b15287wb77wq7ra7kbfnpblzhm1dki5pfjvrcl";
} }
else else
fetchgit { fetchgit {
url = "git://libvirt.org/libvirt.git"; url = "git://libvirt.org/libvirt.git";
rev = "v${version}"; rev = "v${version}";
sha256 = "129b3p72jlb40dsidak3nvpssv75xx2v99y63gzp5k074fp8y8x4"; sha256 = "09hsbm2qmx0jfmm418rf5lx374g85bwgg0kzlga62x5180jhsssn";
fetchSubmodules = true; fetchSubmodules = true;
}; };
patches = [ nativeBuildInputs = [
./0001-Fix-build-with-libtirpc.patch makeWrapper pkgconfig docutils
] ++ optionals (!buildFromTarball) [
autoreconfHook
] ++ optional (!stdenv.isDarwin) [
rpcsvc-proto
] ++ optionals stdenv.isDarwin [
darwin.developer_cmds # needed for rpcgen
]; ];
nativeBuildInputs = [ makeWrapper pkgconfig docutils rpcsvc-proto ]
++ optionals (!buildFromTarball) [ autoreconfHook ];
buildInputs = [ buildInputs = [
libxml2 gnutls perl python2 readline gettext libtasn1 libgcrypt yajl libxml2 gnutls perl python2 readline gettext libtasn1 libgcrypt yajl
libxslt xhtml1 perlPackages.XMLXPath curl libpcap glib dbus libtirpc libxslt xhtml1 perlPackages.XMLXPath curl libpcap glib dbus
] ++ optionals stdenv.isLinux [ ] ++ optionals stdenv.isLinux [
libpciaccess lvm2 utillinux systemd libnl numad zfs libpciaccess lvm2 utillinux systemd libnl numad zfs
libapparmor libcap_ng numactl attr parted libapparmor libcap_ng numactl attr parted libtirpc
] ++ optionals (enableXen && stdenv.isLinux && stdenv.isx86_64) [ ] ++ optionals (enableXen && stdenv.isLinux && stdenv.isx86_64) [
xen xen
] ++ optionals enableIscsi [ ] ++ optionals enableIscsi [
@@ -2,12 +2,12 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "libvirt"; pname = "libvirt";
version = "6.3.0"; version = "6.6.0";
src = assert version == libvirt.version; fetchgit { src = assert version == libvirt.version; fetchgit {
url = "git://libvirt.org/libvirt-python.git"; url = "git://libvirt.org/libvirt-python.git";
rev = "v${version}"; rev = "v${version}";
sha256 = "088cksq59jxkkzbvmwl8jw9v2k3zibwksl7j57yb51bxaa2sa1cx"; sha256 = "0jj6b2nlx7qldwbvixz74abn3p0sq4lkf6ak74vynrv5xvlycb9v";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
@@ -1,11 +1,18 @@
{ stdenv, appleDerivation, xcbuildHook }: { stdenv, appleDerivation, xcbuildHook, llvmPackages }:
appleDerivation { appleDerivation {
nativeBuildInputs = [ xcbuildHook ]; nativeBuildInputs = [ xcbuildHook ];
patchPhase = '' patches = [
# The following copied from
# https://github.com/Homebrew/homebrew-core/commit/712ed3e948868e17f96b7e59972b5f45d4faf688
# is needed to build libvirt.
./rpcgen-support-hyper-and-quad-types.patch
];
postPatch = ''
substituteInPlace rpcgen/rpc_main.c \ substituteInPlace rpcgen/rpc_main.c \
--replace "/usr/bin/cpp" "${stdenv.cc}/bin/cpp" --replace "/usr/bin/cpp" "${llvmPackages.clang-unwrapped}/bin/clang-cpp"
''; '';
# temporary install phase until xcodebuild has "install" support # temporary install phase until xcodebuild has "install" support
@@ -0,0 +1,66 @@
diff --git a/rpcgen/rpc_parse.c b/rpcgen/rpc_parse.c
index 52edc9f..db0c1f1 100644
--- a/rpcgen/rpc_parse.c
+++ b/rpcgen/rpc_parse.c
@@ -580,6 +580,10 @@ get_type(prefixp, typep, dkind)
*typep = "long";
(void) peekscan(TOK_INT, &tok);
break;
+ case TOK_HYPER:
+ *typep = "int64_t";
+ (void) peekscan(TOK_INT, &tok);
+ break;
case TOK_VOID:
if (dkind != DEF_UNION && dkind != DEF_PROGRAM) {
error("voids allowed only inside union and program definitions with one argument");
@@ -592,6 +596,7 @@ get_type(prefixp, typep, dkind)
case TOK_INT:
case TOK_FLOAT:
case TOK_DOUBLE:
+ case TOK_QUAD:
case TOK_BOOL:
*typep = tok.str;
break;
@@ -622,6 +627,11 @@ unsigned_dec(typep)
*typep = "u_long";
(void) peekscan(TOK_INT, &tok);
break;
+ case TOK_HYPER:
+ get_token(&tok);
+ *typep = "u_int64_t";
+ (void) peekscan(TOK_INT, &tok);
+ break;
case TOK_INT:
get_token(&tok);
*typep = "u_int";
diff --git a/rpcgen/rpc_scan.c b/rpcgen/rpc_scan.c
index a8df441..4130107 100644
--- a/rpcgen/rpc_scan.c
+++ b/rpcgen/rpc_scan.c
@@ -419,8 +419,10 @@ static token symbols[] = {
{TOK_UNSIGNED, "unsigned"},
{TOK_SHORT, "short"},
{TOK_LONG, "long"},
+ {TOK_HYPER, "hyper"},
{TOK_FLOAT, "float"},
{TOK_DOUBLE, "double"},
+ {TOK_QUAD, "quadruple"},
{TOK_STRING, "string"},
{TOK_PROGRAM, "program"},
{TOK_VERSION, "version"},
diff --git a/rpcgen/rpc_scan.h b/rpcgen/rpc_scan.h
index bac2be4..e4c57c8 100644
--- a/rpcgen/rpc_scan.h
+++ b/rpcgen/rpc_scan.h
@@ -66,9 +66,11 @@ enum tok_kind {
TOK_INT,
TOK_SHORT,
TOK_LONG,
+ TOK_HYPER,
TOK_UNSIGNED,
TOK_FLOAT,
TOK_DOUBLE,
+ TOK_QUAD,
TOK_OPAQUE,
TOK_CHAR,
TOK_STRING,