Bug 664570

Summary: rpm misses requires
Product: [Fedora] Fedora Reporter: Dennis Gilmore <dennis>
Component: rpmAssignee: Panu Matilainen <pmatilai>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: rawhideCC: ffesti, jnovy, mikeb, pmatilai, rdieter
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-12-21 04:58:59 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 Dennis Gilmore 2010-12-20 19:42:39 UTC
[dennis@athosian python-pycurl (master)]$ ldd /usr/lib64/python2.7/site-packages/pycurl.so
	linux-vdso.so.1 =>  (0x00007fff00e64000)
	libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007fef3d3b0000)
	libpython2.7.so.1.0 => /usr/lib64/libpython2.7.so.1.0 (0x00007fef3cfde000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fef3cdc1000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fef3ca1d000)
	libidn.so.11 => /lib64/libidn.so.11 (0x00007fef3c7ea000)
	liblber-2.4.so.2 => /usr/lib64/liblber-2.4.so.2 (0x00007fef3c5dc000)
	libldap-2.4.so.2 => /usr/lib64/libldap-2.4.so.2 (0x00007fef3c392000)
	librt.so.1 => /lib64/librt.so.1 (0x00007fef3c188000)
	libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fef3bf4e000)
	libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fef3bc73000)
	libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fef3ba49000)
	libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fef3b846000)
	libz.so.1 => /lib64/libz.so.1 (0x00007fef3b62f000)
	libssl3.so => /usr/lib64/libssl3.so (0x00007fef3b3f9000)
	libsmime3.so => /usr/lib64/libsmime3.so (0x00007fef3b1cd000)
	libnss3.so => /usr/lib64/libnss3.so (0x00007fef3ae91000)
	libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007fef3ac71000)
	libplds4.so => /lib64/libplds4.so (0x00007fef3aa6e000)
	libplc4.so => /lib64/libplc4.so (0x00007fef3a86a000)
	libnspr4.so => /lib64/libnspr4.so (0x00007fef3a62c000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fef3a428000)
	libssh2.so.1 => /usr/lib64/libssh2.so.1 (0x00007fef3a203000)
	libutil.so.1 => /lib64/libutil.so.1 (0x00007fef39fff000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fef39d7a000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003865e00000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fef39b5f000)
	libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00007fef39944000)
	libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fef3973a000)
	libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fef39538000)
	libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007fef392db000)
	libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fef38f44000)
	libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fef38d0c000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fef38aed000)
	libfreebl3.so => /lib64/libfreebl3.so (0x00007fef38889000)
[dennis@athosian python-pycurl (master)]$ rpm -q --requires python-pycurl
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libcurl >= 7.21.1
libcurl.so.4()(64bit)  
libpthread.so.0()(64bit)  
libpython2.7.so.1.0()(64bit)  
python(abi) = 2.7
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(VersionedDependencies) <= 3.0.3-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1
[dennis@athosian python-pycurl (master)]$ 

while the python module in python-pycurl links to lots of different things the rpm doesnt have requires for them. this can result in a non working package if noting else pulls in what is required

rpm should add requires automatically

Comment 1 Panu Matilainen 2010-12-21 04:58:59 UTC
Nope, ldd is just reporting the libraries recursively while rpm only collects the directly linked libraries. Contrast the above with eg

[pmatilai@localhost ~]$ objdump -p /usr/lib64/python2.7/site-packages/pycurl.so|grep NEEDED
  NEEDED               libcurl.so.4
  NEEDED               libpython2.7.so.1.0
  NEEDED               libpthread.so.0
  NEEDED               libc.so.6

Run objdump -p recursively on the above four libraries and everything they link to and you'll get the same list as with ldd.