
At 05/12/2011 02:40 PM, Wen Congyang Write:
My steps to build libvirt: 1. # export CFLAGS=-Werror 2. # ./autogen.sh 3. # make dist && rpmbuild --nodeps --define "_sourcedir `pwd`" -ba libvirt.spec ... checking for msgmerge... /usr/bin/msgmerge checking whether NLS is requested... yes checking for GNU gettext in libc... no checking for iconv... yes checking for GNU gettext in libintl... no checking whether to use NLS... no checking for UDEV... yes checking for PCIACCESS... yes ... + rm -f /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64/etc/libvirt/qemu/networks/default.xml + rm -f /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64/etc/libvirt/qemu/networks/autostart/default.xml + sed -i -e '/<uuid>/d' /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64/usr/share/libvirt/networks/default.xml + /usr/lib/rpm/find-lang.sh /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64 libvirt No translations found for libvirt in /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64 error: Bad exit status from /var/tmp/rpm-tmp.nSgCNo (%install)
RPM build errors: Bad exit status from /var/tmp/rpm-tmp.nSgCNo (%install)
4. # cat config.log ... configure:82567: checking for GNU gettext in libc configure:82596: gcc -std=gnu99 -o conftest -Werror conftest.c -ldl >&5 cc1: warnings being treated as errors conftest.c: In function 'main': conftest.c:468: error: cast from pointer to integer of different size configure:82603: $? = 1 configure: failed program was: ... | int | main () | { | bindtextdomain ("", ""); | return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings | ; | return 0; | }
This test program is generated according to gettext.m4. It's a bug of old version gettext, and it's fixed in gettext-0.14.4. I modify configure.ac to require gettext-0.14.4, build libvirt with -Werror, and receive the following error messages: RPM build errors: File not found: /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64/etc/libvirt/lxc.conf File not found: /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64/var/run/libvirt/lxc File not found: /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64/var/lib/libvirt/lxc File not found: /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64/usr/share/augeas/lenses/libvirtd_lxc.aug File not found: /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64/usr/share/augeas/lenses/tests/test_libvirtd_lxc.aug File not found: /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.1-1.el6.x86_64/usr/libexec/libvirt_lxc The following patch can fix the problem:
From 95a02c3f6c594a623c01183067a1abd0d925d492 Mon Sep 17 00:00:00 2001 From: Wen Congyang <wency@cn.fujitsu.com> Date: Thu, 12 May 2011 17:51:21 +0800 Subject: [PATCH] build: fix building error with -Werror
--- configure.ac | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 71c4968..0d369ac 100644 --- a/configure.ac +++ b/configure.ac @@ -638,7 +638,10 @@ if test "$with_libvirtd" = "no" ; then with_lxc=no fi if test "$with_lxc" = "yes" || test "$with_lxc" = "check"; then - AC_TRY_LINK([#define _GNU_SOURCE + AC_TRY_LINK([ + #ifndef _GNU_SOURCE + #define _GNU_SOURCE + #endif #include <sched.h> ], [ unshare (1); @@ -1981,7 +1984,7 @@ dnl Enable building libvirtd? AM_CONDITIONAL([WITH_LIBVIRTD],[test "x$with_libvirtd" = "xyes"]) dnl Check for gettext -AM_GNU_GETTEXT_VERSION([0.14.1]) +AM_GNU_GETTEXT_VERSION([0.14.4]) AM_GNU_GETTEXT([external]) dnl Since we're using such an old version of gettext, we must also define dnl this symbol, in order to make the autopoint-supplied Makefile.in.in -- 1.7.1
configure:82623: result: no ...
5. # cat po/Makefile.in.in ... install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all $(mkinstalldirs) $(DESTDIR)$(datadir) ... gettext() returns char *, and we try to convert it to int. The size of pointer and int is different, and gcc will give a warning. I build it with -Werror, so the test program can not be built, and NLS is disabled. But We only install translations when NLS is enabled.
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list