Bug 99295

Summary: Failure to detect shared library dependencies
Product: [Retired] Red Hat Raw Hide Reporter: Nigel Kukard <nkukard>
Component: rpmAssignee: Jeff Johnson <jbj>
Status: CLOSED DUPLICATE QA Contact: Mike McLean <mikem>
Severity: medium Docs Contact:
Priority: medium    
Version: 1.0CC: leonard-rh-bugzilla
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-02-21 18:57:05 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Nigel Kukard 2003-07-17 05:38:14 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030314

Description of problem:
RPM 4.2.1 fails to detect the dependency list of programs which use libraries,
and the library's provide list. IE. libacl provides libacl.so.x.x

Check....   http://www.lbsd.net/~nkukard/bug/

libacl-provides.txt is the provide list i get from  
    rpm -qp --provides libacl.......

readelf-acl.txt is the output i get from 
    readelf -a /usr/lib/libacl.so.1.0.3

samba-requires.txt is the list of requires I get from
    rpm -qp --requires samba.......

smbd-ldd.txt is the output i get from
    ldd /usr/sbin/smbd


I see smbd requires the libacl libraries, I also see that libacl's provides do
not include them.

I have managed to fix this bug if I add the following to
/usr/lib/rpm/find-provides....

--snip--
            objdump -p $f | awk '
BEGIN { START=0 ; }
/Version References:/ { START=1; }
/[:blank:]*0x/ && (START==1) { print $4; }
/^$/ { START=0; }
            ' | \
                grep -v $soname | \
                while read symbol ; do
                    echo "$soname($symbol)`echo $lib64 | sed 's/()//'`"
                done
            objdump -p $f | awk '
                BEGIN { START=0 ; }
                /Version definitions:/ { START=1; print $4; }
                /^[0-9]/ && (START==1) { print $4; }
                /^$/ { START=0; }
            ' | \
                grep -v $soname | \
                while read symbol ; do
                    echo "$soname($symbol)`echo $lib64 | sed 's/()//'`"
                done
--/snip--

this addition at the top correctly creates a usable provide list which satisfies
the requires section. I also disabled the internal dep generator using %define
..... 0. This satisfies our build system but I'm sure it is the incorrect way to
do it.


Regards
Nigel

Version-Release number of selected component (if applicable):
4.2.1

How reproducible:
Always

Steps to Reproduce:
1. Build libacl with either internal dep generator or external
2. Build samba 2.2.8a as above
3. Try install libacl and samba or either/or.

It throws deps not provided.
    

Additional info:

Comment 1 Jeff Johnson 2003-07-17 14:39:37 UTC
Can you supply the packages (URL or pointer preferred)
that you are building? I can't tell what's going on without
seeing how the build is performed. Thanks.

Comment 2 Leonard den Ottolander 2004-04-13 15:38:43 UTC
This is a dup of bug 99244. Closing as such.


*** This bug has been marked as a duplicate of 99244 ***

Comment 3 Red Hat Bugzilla 2006-02-21 18:57:05 UTC
Changed to 'CLOSED' state since 'RESOLVED' has been deprecated.