Bug 772050

Summary: only link in libtirpc to binaries that need it
Product: Red Hat Enterprise Linux 6 Reporter: Jeff Layton <jlayton>
Component: nfs-utilsAssignee: Steve Dickson <steved>
Status: CLOSED ERRATA QA Contact: yanfu,wang <yanwang>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.3CC: steved, yanwang
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: nfs-utils-1.2.3-16.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-20 15:08:16 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
config.log none

Description Jeff Layton 2012-01-05 19:34:23 UTC
Currently, libtirpc gets linked into every binary in the nfs-utils build. For instance:

$ ldd /usr/sbin/nfsstat
	linux-vdso.so.1 =>  (0x00007fffdd3ff000)
	libtirpc.so.1 => /lib64/libtirpc.so.1 (0x00007fd99664a000)
	libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fd996431000)
	libgssglue.so.1 => /lib64/libgssglue.so.1 (0x00007fd996227000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fd996023000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd995e07000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fd995a65000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fd996a88000)

...nfsstat clearly doesn't need to be linked against libtirpc, but it gets it anyway. I've proposed some patches upstream to clean that up and we should probably consider pulling them into RHEL6 too. See:

    http://marc.info/?l=linux-nfs&m=132466975019648&w=2

We especially want to avoid the bug that prompted that whole set in the first place -- the change that made libnfsidmap get linked into everything in the build. If we plan to pull in the nfsidmap patches then we should take these at the same time...

Comment 2 Steve Dickson 2012-02-05 20:16:25 UTC
commit d33381555310aacaa9a5da05ccb3b156abea2971
Author: Jeff Layton <jlayton>
Date:   Fri Dec 23 09:04:54 2011 -0500

    autoconf: fix up libevent autoconf test
    
    Have it set LIBEVENT to -levent and use that in the Makefiles instead
    of hardcoding it.
    
    Signed-off-by: Jeff Layton <jlayton>

Comment 7 yanfu,wang 2012-04-09 04:34:23 UTC
hi Steve,
Run package build/configure, got "configure: error: libevent headers not found" failure:
# rpmbuild -ba SPECS/nfs-utils.spec 
error: Failed build dependencies:
	libgssglue-devel is needed by nfs-utils-1:1.2.3-20.el6.i686
	libevent-devel is needed by nfs-utils-1:1.2.3-20.el6.i686
	libcap-devel is needed by nfs-utils-1:1.2.3-20.el6.i686
	nfs-utils-lib-devel >= 1.1.0-3 is needed by nfs-utils-1:1.2.3-20.el6.i686
	libtirpc-devel is needed by nfs-utils-1:1.2.3-20.el6.i686
	libblkid-devel is needed by nfs-utils-1:1.2.3-20.el6.i686
	tcp_wrappers-devel is needed by nfs-utils-1:1.2.3-20.el6.i686

run build after install dependency packages:
...
checking event.h presence... no
checking for event.h... no
configure: error: libevent headers not found.
error: Bad exit status from /var/tmp/rpm-tmp.YVYSBk (%build)


From checking nfs-utils-1.2.3-link-libtirpc.patch:
+  AC_CHECK_LIB([event], [event_dispatch], [LIBEVENT=-levent],
                [AC_MSG_ERROR([libevent not found.])])
+  AC_SUBST(LIBEVENT)

   AC_CHECK_HEADERS([event.h], ,
                    [AC_MSG_ERROR([libevent headers not found.])])

Comment 8 Jeff Layton 2012-04-09 11:47:56 UTC
If libevent-devel got installed correctly, then there should be a /usr/include/event.h file.

Is that not present?

Comment 9 yanfu,wang 2012-04-10 03:26:41 UTC
(In reply to comment #8)
> If libevent-devel got installed correctly, then there should be a
> /usr/include/event.h file.
> 
> Is that not present?
The package is installed and the head file is there, but configure still got failed:
[root@intel-chiefriver-04 ~]# rpm -qa|grep libevent-devel
libevent-devel-1.4.13-3.el6.i686
[root@intel-chiefriver-04 ~]# ls -l /usr/include/event.h
-rw-r--r--. 1 root root 37776 Apr  4 09:49 /usr/include/event.h

[root@intel-chiefriver-04 rpmbuild]# cd BUILD/nfs-utils-1.2.3/
[root@intel-chiefriver-04 nfs-utils-1.2.3]# ./configure 
...
checking for getservbyname... yes
checking for crypt in -lcrypt... yes
checking for event_dispatch in -levent... yes
checking event.h usability... no
checking event.h presence... no
checking for event.h... no
configure: error: libevent headers not found.

Comment 10 Jeff Layton 2012-04-10 10:47:44 UTC
Is it possible to get the config.log file so we can see what happened?

Comment 11 yanfu,wang 2012-04-11 03:07:43 UTC
Created attachment 576645 [details]
config.log

Comment 12 yanfu,wang 2012-04-11 03:08:12 UTC
(In reply to comment #10)
> Is it possible to get the config.log file so we can see what happened?

Attached it, pls help to check, thanks.

Comment 13 Jeff Layton 2012-04-17 11:28:01 UTC
Looks like it failed because event-config.h wasn't present.

------------------------[snip]-----------------------

configure:19388: checking event.h usability
configure:19405: gcc -c -g -O2  -D_GNU_SOURCE conftest.c >&5
In file included from conftest.c:67:
/usr/include/event.h:162:26: error: event-config.h: No such file or directory
In file included from /usr/include/event.h:175,
                 from conftest.c:67:
/usr/include/evutil.h:68:2: error: #error "No way to define ev_uint64_t"
/usr/include/evutil.h:80:2: error: #error "No way to define ev_uint32_t"
/usr/include/evutil.h:92:2: error: #error "No way to define ev_uint16_t"
In file included from /usr/include/event.h:175,
                 from conftest.c:67:

------------------------[snip]-----------------------

The latest version of libevent has this in the changelog:

* Wed Apr 04 2012 Steve Dickson <steved> 1.4.13-2
- Removed the event-config.h file (bz 658051)

...maybe it would be a good idea to reopen that bug and see if there's a better
way to deal with the multilib conflict?

Comment 14 yanfu,wang 2012-04-18 08:46:13 UTC
(In reply to comment #13)
> Looks like it failed because event-config.h wasn't present.
> 
> ------------------------[snip]-----------------------
> 
> configure:19388: checking event.h usability
> configure:19405: gcc -c -g -O2  -D_GNU_SOURCE conftest.c >&5
> In file included from conftest.c:67:
> /usr/include/event.h:162:26: error: event-config.h: No such file or directory
> In file included from /usr/include/event.h:175,
>                  from conftest.c:67:
> /usr/include/evutil.h:68:2: error: #error "No way to define ev_uint64_t"
> /usr/include/evutil.h:80:2: error: #error "No way to define ev_uint32_t"
> /usr/include/evutil.h:92:2: error: #error "No way to define ev_uint16_t"
> In file included from /usr/include/event.h:175,
>                  from conftest.c:67:
> 
> ------------------------[snip]-----------------------
> 
> The latest version of libevent has this in the changelog:
> 
> * Wed Apr 04 2012 Steve Dickson <steved> 1.4.13-2
> - Removed the event-config.h file (bz 658051)
> 
> ...maybe it would be a good idea to reopen that bug and see if there's a better
> way to deal with the multilib conflict?

Thanks Jeff!

Steve, how about re-open bug 658051? Could you help to resolve it?

Comment 15 Steve Dickson 2012-04-24 14:30:30 UTC
I just fix the problem in bug 658051

Comment 16 yanfu,wang 2012-04-25 03:17:06 UTC
(In reply to comment #15)
> I just fix the problem in bug 658051

thanks Steve.
rpmbuild is ok now after update libevent to 1.4.13-4.el6:
...
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/nfs-utils-1.2.3-21.el6.x86_64
Wrote: /root/rpmbuild/SRPMS/nfs-utils-1.2.3-21.el6.src.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/nfs-utils-1.2.3-21.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/nfs-utils-debuginfo-1.2.3-21.el6.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.CCpI0Y
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd nfs-utils-1.2.3
+ echo rm -rf /root/rpmbuild/BUILDROOT/nfs-utils-1.2.3-21.el6.x86_64
rm -rf /root/rpmbuild/BUILDROOT/nfs-utils-1.2.3-21.el6.x86_64
+ exit 0

Comment 17 errata-xmlrpc 2012-06-20 15:08:16 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2012-0964.html