On 12/08/2011 08:12 AM, Daniel P. Berrange wrote:
On Thu, Dec 08, 2011 at 01:27:37PM +0000, Daniel P. Berrange wrote:
> On Thu, Dec 08, 2011 at 01:04:27PM +0000, Daniel P. Berrange wrote:
>> On Tue, Dec 06, 2011 at 04:47:27PM -0700, Eric Blake wrote:
>>> 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 (BuildRequires): Add autotools.
>>> (%build): Conditionally use them before configure.
>> +%{?enable_autotools:%define enable_autotools 0}
> I've just tried this and it doesn't actually work. You
need
Ah, you're right. It says:
if enable_autotools was defined, redefine it to 0
if enable_autotools was not defined, do nothing
>
> %define enable_autotools %{?enable_autotools:0}
That's not quite right, either. It says:
if enable_autotools was defined, redefine it to 0
if enable_autotools was undefined, define it to an empty string
I did more testing, and one correct answer is:
%{!?enable_autotools:%define enable_autotools 0}
read as:
if enable_autotools is not defined, define it to 0
if enable_autotools is defined, leave it alone (whether 0 or 1)
Another correct answer is:
%define enable_autotools 0%{?enable_autotools}
read as:
if enable_autotools is defined, redefine it to the concatenation of 0
and its previous value
if enable_autotools is undefined, define it to 0
There also needs to be a
BuildRequires: gettext-devel
since autoreconf runs autopoint which isn't in the build root
Glad we deferred this to post-0.9.8, then. Pushed with those fixes, as
well as copying to the mingw spec file:
diff --git i/libvirt.spec.in w/libvirt.spec.in
index 0584b0c..0a3b00d 100644
--- i/libvirt.spec.in
+++ w/libvirt.spec.in
@@ -11,7 +11,7 @@
# 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}
+%{!?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
@@ -357,6 +357,7 @@ Requires(postun): systemd-units
%if 0%{?enable_autotools}
BuildRequires: autoconf
BuildRequires: automake
+BuildRequires: gettext-devel
BuildRequires: libtool
%endif
BuildRequires: python-devel
diff --git i/mingw32-libvirt.spec.in w/mingw32-libvirt.spec.in
index 89d1d7f..06ff601 100644
--- i/mingw32-libvirt.spec.in
+++ w/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}
+
# The mingw build is client only. Set up defaults for hypervisor drivers
# that talk via a native remote protocol, and for which prereq mingw
# libraries exist.
@@ -44,6 +49,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
%if %{with_phyp}
BuildRequires: mingw32-libssh2
@@ -81,6 +92,9 @@ MinGW Windows libvirt virtualization library.
%define _without_xenapi --without-xenapi
%endif
+%if 0%{?enable_autotools}
+autoreconf -if
+%endif
# XXX enable SASL in future
%{_mingw32_configure} \
--without-xen \
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org