diff --git a/libvirt-0.9.6-Avoid-crash-in-shunloadtest.patch b/libvirt-0.9.6-Avoid-crash-in-shunloadtest.patch new file mode 100644 index 0000000..e1a2b95 --- /dev/null +++ b/libvirt-0.9.6-Avoid-crash-in-shunloadtest.patch @@ -0,0 +1,45 @@ +From 7a1eb2ead5d441e3604070e8fe89cce475cc45a8 Mon Sep 17 00:00:00 2001 +From: "Daniel P. Berrange" +Date: Thu, 1 Dec 2011 11:33:50 -0500 +Subject: [PATCH] Avoid crash in shunloadtest + +For unknown reasons, the shunloadtest will crash on Fedora 16 +inside dlopen() + + (gdb) bt + #0 0x00000000000050e6 in ?? () + #1 0x00007ff61a77b9d5 in floor () from /lib64/libm.so.6 + #2 0x00007ff61e522963 in _dl_relocate_object () from /lib64/ld-linux-x86-64.so.2 + #3 0x00007ff61e5297e6 in dl_open_worker () from /lib64/ld-linux-x86-64.so.2 + #4 0x00007ff61e525006 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2 + #5 0x00007ff61e52917a in _dl_open () from /lib64/ld-linux-x86-64.so.2 + #6 0x00007ff61e0f6f26 in dlopen_doit () from /lib64/libdl.so.2 + #7 0x00007ff61e525006 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2 + #8 0x00007ff61e0f752f in _dlerror_run () from /lib64/libdl.so.2 + #9 0x00007ff61e0f6fc1 in dlopen@@GLIBC_2.2.5 () from /lib64/libdl.so.2 + #10 0x0000000000400a15 in main (argc=, argv=) at shunloadtest.c:105 + +Changing from RTLD_NOW to RTLD_LAZY avoids this problem, +but quite possibly does not fix the root cause. + +* shunloadtest.c: s/NOW/LAZY/ +--- + tests/shunloadtest.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/tests/shunloadtest.c b/tests/shunloadtest.c +index 2cdb8b8..ab6e56f 100644 +--- a/tests/shunloadtest.c ++++ b/tests/shunloadtest.c +@@ -102,7 +102,7 @@ int main(int argc ATTRIBUTE_UNUSED, char **argv) + fprintf(stderr, " .%*s 1 ", 39, ""); + signal(SIGSEGV, sigHandler); + +- if (!(lib = dlopen("./.libs/libshunload.so", RTLD_NOW))) { ++ if (!(lib = dlopen("./.libs/libshunload.so", RTLD_LAZY))) { + fprintf(stderr, "Cannot load ./.libs/libshunload.so %s\n", dlerror()); + return 1; + } +-- +1.7.7.4 + diff --git a/libvirt-0.9.6-qemu-replace-deprecated-fedora-13-machine.patch b/libvirt-0.9.6-qemu-replace-deprecated-fedora-13-machine.patch index 50cea33..4562df7 100644 --- a/libvirt-0.9.6-qemu-replace-deprecated-fedora-13-machine.patch +++ b/libvirt-0.9.6-qemu-replace-deprecated-fedora-13-machine.patch @@ -1,7 +1,8 @@ -From 3007fc36e4b437bf5ffe9dee4883e68e49740c92 Mon Sep 17 00:00:00 2001 +From eaf056bf995558ecf6620ce031287f3aa81b66de Mon Sep 17 00:00:00 2001 From: Laine Stump Date: Tue, 6 Dec 2011 12:47:28 -0500 -Subject: [PATCH] qemu: replace deprecated fedora-13 machine type with pc-0.14 +Subject: [PATCH 1/2] qemu: replace deprecated fedora-13 machine type with + pc-0.14 This addresses https://bugzilla.redhat.com/show_bug.cgi?id=754772 . It should only be applied to Fedora builds of libvirt, F15 and @@ -60,11 +61,11 @@ and since that machine type is treated specially by the rest of this patch, it was failing. That has been changed in a separate patch, which must be applied with this patch, and which *is* also upstream). --- - src/conf/domain_conf.c | 52 +++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 49 insertions(+), 3 deletions(-) + src/conf/domain_conf.c | 62 +++++++++++++++++++++++++++++++++++++++++++++-- + 1 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c -index 318f523..4f4163e 100644 +index 318f523..7906bb8 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7500,7 +7500,25 @@ virDomainDefPtr virDomainDefParseString(virCapsPtr caps, @@ -94,14 +95,15 @@ index 318f523..4f4163e 100644 } virDomainDefPtr virDomainDefParseFile(virCapsPtr caps, -@@ -10648,8 +10666,20 @@ virDomainDefFormatInternal(virDomainDefPtr def, +@@ -10648,8 +10666,30 @@ virDomainDefFormatInternal(virDomainDefPtr def, virBufferAddLit(buf, " os.arch) virBufferAsprintf(buf, " arch='%s'", def->os.arch); - if (def->os.machine) - virBufferAsprintf(buf, " machine='%s'", def->os.machine); + if (def->os.machine) { -+ /* Fedora-specific HACK - replace "fedora-13" with "pc-0.14". ++ /* Fedora-specific HACK - replace "fedora-13" with "pc-0.14" ++ * (in the original DomainDef as well as in the xml output). + * This will catch XML being written to save/migration images + * of domains that were running when libvirtd was restarted at + * the time of upgrade. @@ -110,6 +112,15 @@ index 318f523..4f4163e 100644 + virBufferAddLit(buf, " machine='pc-0.14'"); + VIR_WARN("substituting machine type 'fedora-13' with 'pc-0.14' " + "in domain %s", def->name); ++ /* It's not exactly nice to modify the source object, ++ * but sometimes virDomainFormat is called > 100 times for the ++ * same object, which would result in far too many warning logs. ++ */ ++ VIR_FREE(def->os.machine); ++ if (!(def->os.machine = strdup("pc-0.14"))) { ++ virReportOOMError(); ++ goto cleanup; ++ } + } else { + virBufferAsprintf(buf, " machine='%s'", def->os.machine); + } @@ -117,7 +128,7 @@ index 318f523..4f4163e 100644 /* * HACK: For xen driver we previously used bogus 'linux' as the * os type for paravirt, whereas capabilities declare it to -@@ -11100,6 +11130,22 @@ static virDomainObjPtr virDomainLoadConfig(virCapsPtr caps, +@@ -11100,6 +11140,22 @@ static virDomainObjPtr virDomainLoadConfig(virCapsPtr caps, VIR_DOMAIN_XML_INACTIVE))) goto error; @@ -141,5 +152,5 @@ index 318f523..4f4163e 100644 goto error; -- -1.7.7.3 +1.7.7.4 diff --git a/libvirt-0.9.6-spec-make-it-easier-to-autoreconf-when-building-rpm.patch b/libvirt-0.9.6-spec-make-it-easier-to-autoreconf-when-building-rpm.patch new file mode 100644 index 0000000..be78831 --- /dev/null +++ b/libvirt-0.9.6-spec-make-it-easier-to-autoreconf-when-building-rpm.patch @@ -0,0 +1,109 @@ +From 473e5ca36260011a330e1e3bf8f4f3b6865b5638 Mon Sep 17 00:00:00 2001 +From: Eric Blake +Date: Mon, 5 Dec 2011 10:22:10 -0700 +Subject: [PATCH 2/2] spec: make it easier to autoreconf when building rpm + +Over time, Fedora and RHEL RPMs have often backported upstream +patches that touched configure.ac and/or Makefile.am; this +necessitates rerunning the autotools for the patch to be effective. +Making this a one-liner spec tweak will make it easier for future +backports to pull patches without having to find all the places +to touch to properly use the autotools. Meanwhile, there have been +historical instances where an update in the autotools caused FTBFS +situations, so this is not on by default. + +* libvirt.spec.in (enable_autotools): New variable, default off. +(BuildRequires): Conditionally add autotools. +(%build): Conditionally use them before configure. +* mingw32-libvirt.spec.in: Likewise. + +Conflicts: + + mingw32-libvirt.spec.in - caused by change in context +--- + libvirt.spec.in | 14 ++++++++++++++ + mingw32-libvirt.spec.in | 15 +++++++++++++++ + 2 files changed, 29 insertions(+), 0 deletions(-) + +diff --git a/libvirt.spec.in b/libvirt.spec.in +index cfc3a43..8579ba8 100644 +--- a/libvirt.spec.in ++++ b/libvirt.spec.in +@@ -8,6 +8,11 @@ + sed -ne 's/^\.fc\?\([0-9]\+\).*/%%define fedora \1/p')} + %endif + ++# Default to skipping autoreconf. Distros can change just this one line ++# (or provide a command-line override) if they backport any patches that ++# touch configure.ac or Makefile.am. ++%{!?enable_autotools:%define enable_autotools 0} ++ + # A client only build will create a libvirt.so only containing + # the generic RPC driver, and test driver and no libvirtd + # Default to a full server + client build +@@ -330,6 +335,12 @@ Requires: libcgroup + Requires: dmidecode + + # All build-time requirements ++%if 0%{?enable_autotools} ++BuildRequires: autoconf ++BuildRequires: automake ++BuildRequires: gettext-devel ++BuildRequires: libtool ++%endif + BuildRequires: python-devel + + %if %{with_xen} +@@ -700,6 +711,9 @@ of recent versions of Linux (and other OSes). + %define with_packager_version --with-packager-version="%{release}" + + ++%if 0%{?enable_autotools} ++autoreconf -if ++%endif + %configure %{?_without_xen} \ + %{?_without_qemu} \ + %{?_without_openvz} \ +diff --git a/mingw32-libvirt.spec.in b/mingw32-libvirt.spec.in +index f651d11..e071c38 100644 +--- a/mingw32-libvirt.spec.in ++++ b/mingw32-libvirt.spec.in +@@ -5,6 +5,11 @@ + %define __find_provides %{_mingw32_findprovides} + %define __debug_install_post %{_mingw32_debug_install_post} + ++# Default to skipping autoreconf. Distros can change just this one line ++# (or provide a command-line override) if they backport any patches that ++# touch configure.ac or Makefile.am. ++%{!?enable_autotools:%define enable_autotools 0} ++ + Name: mingw32-libvirt + Version: @VERSION@ + Release: 3%{?dist}%{?extra_release} +@@ -28,6 +33,12 @@ BuildRequires: mingw32-portablexdr + BuildRequires: pkgconfig + # Need native version for msgfmt + BuildRequires: gettext ++%if 0%{?enable_autotools} ++BuildRequires: autoconf ++BuildRequires: automake ++BuildRequires: gettext-devel ++BuildRequires: libtool ++%endif + + BuildArch: noarch + +@@ -42,6 +53,10 @@ MinGW Windows libvirt virtualization library. + + + %build ++%if 0%{?enable_autotools} ++autoreconf -if ++%endif ++ + # XXX enable SASL in future + %{_mingw32_configure} \ + --without-sasl \ +-- +1.7.7.4 + diff --git a/libvirt.spec b/libvirt.spec index 8ad5578..b761536 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -8,6 +8,14 @@ sed -ne 's/^\.fc\?\([0-9]\+\).*/%%define fedora \1/p')} %endif +# Default to skipping autoreconf. Distros can change just this one line +# (or provide a command-line override) if they backport any patches that +# touch configure.ac or Makefile.am. +# (Fedora 16 has to turn this on because changes have been made to +# configure.ac and Makefile.am for the addition of the virtime internal +# api) +%{!?enable_autotools:%define enable_autotools 1} + # A client only build will create a libvirt.so only containing # the generic RPC driver, and test driver and no libvirtd # Default to a full server + client build @@ -254,6 +262,8 @@ Patch12:%{name}-%{version}-spec-fix-logic-bug-in-deciding-to-turn-on-cgconfig.pa Patch13:%{name}-%{version}-network-don-t-add-iptables-rules-for-externally-mana.patch Patch14:%{name}-%{version}-test-replace-deprecated-fedora-13-machine.patch Patch15:%{name}-%{version}-qemu-replace-deprecated-fedora-13-machine.patch +Patch16:%{name}-%{version}-spec-make-it-easier-to-autoreconf-when-building-rpm.patch +Patch17:%{name}-%{version}-Avoid-crash-in-shunloadtest.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root URL: http://libvirt.org/ @@ -347,6 +357,12 @@ Requires: libcgroup Requires: dmidecode # All build-time requirements +%if 0%{?enable_autotools} +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: gettext-devel +BuildRequires: libtool +%endif BuildRequires: python-devel %if %{with_xen} @@ -583,6 +599,8 @@ of recent versions of Linux (and other OSes). %patch13 -p1 %patch14 -p1 %patch15 -p1 +%patch16 -p1 +%patch17 -p1 %build %if ! %{with_xen} @@ -736,6 +754,9 @@ of recent versions of Linux (and other OSes). %define with_packager_version --with-packager-version="%{release}" +%if 0%{?enable_autotools} +autoreconf -if +%endif %configure %{?_without_xen} \ %{?_without_qemu} \ %{?_without_openvz} \ @@ -1188,7 +1209,7 @@ fi %endif %changelog -* Sun Dec 18 2011 Laine Stump - 0.9.6-4 +* Mon Dec 19 2011 Laine Stump - 0.9.6-4 - replace "fedora-13" machine type with "pc-0.14" to prepare systems for removal of "fedora-13" from qemu - Bug 754772 - don't add iptables rules for externally managed networks @@ -1199,7 +1220,8 @@ fi - Bug 738725 fix logic bug in deciding to turn on cgconfig - Bug 754909 add dmidecode as a prerequisite - new async-safe time API + make logging async signal sage wrt. - time stamp generation - Bug 757382 + time stamp generation - Bug 757382 (this required + enabling autoconf during the build) * Tue Oct 11 2011 Dan HorĂ¡k - 0.9.6-3 - xenlight available only on Xen arches (#745020)