I took a closer look at find-provides. I seems that this Provides has nothing todo with wrong filelist being passed to it. It's got nothing todo with the -devel .so$ dependency system.

But it does break it...

in hindsight it might have been better to not name those Provides / Requires ".so", but something else... Any suggestions? ".dev", ".dso"??

Stefan

Stefan van der Eijk wrote:

Something strange is happening. I have the impression that the filelist that
is being passed to find-requires and find-provides is not the same as the
filelist that eventually builds the package. Let me explain.

The filelist in the .spec file is:

   %files -n libdb%{__soversion}
   %defattr(-,root,root)
   %doc LICENSE README
   /%{_lib}/libdb-%{__soversion}.so

%{__soversion} expands to "3.3"

the filelist in the package is:

   $ rpm -ql libdb3.3
   /lib/libdb-3.3.so
   /usr/share/doc/libdb3.3-3.3.11
   /usr/share/doc/libdb3.3-3.3.11/LICENSE
   /usr/share/doc/libdb3.3-3.3.11/README

These two are correct.

Now, using the test06.sh script on the installed package I get, no output, which is correct --> this package has no (-devel) .so dependencies.

But when I querry the Provides of the package, you can see that "libdb-3.3.so" is Provided, which is NOT correct.

   $ rpm -q --provides libdb3.3
   db3 = 3.3.11-14mdk
   libdb-3.3.so
   libdb3.3 = 3.3.11-14mdk

In the buildoutpu of the package you can see that "Provides: libdb-3.3.so" is found. See: http://eijk.homelinux.org/build/cooker/i586/OK/db3-3.3.11-14mdk

Processing files: libdb3.3-3.3.11-14mdk
Executing(%doc): /bin/sh -e /home/cooker/tmp/rpm-tmp.73100
+ umask 022
+ cd /home/cooker/RPM/BUILD
+ cd db-3.3.11
+ DOCDIR=/home/cooker/tmp/db3-root/usr/share/doc/libdb3.3-3.3.11
+ export DOCDIR
+ rm -rf /home/cooker/tmp/db3-root/usr/share/doc/libdb3.3-3.3.11
+ /bin/mkdir -p /home/cooker/tmp/db3-root/usr/share/doc/libdb3.3-3.3.11
+ cp -pr LICENSE README /home/cooker/tmp/db3-root/usr/share/doc/libdb3.3-3.3.11
+ exit 0
Finding Provides: /usr/lib/rpm/filter.sh ' ' /usr/lib/rpm/find-provides
Using BuildRoot: /home/cooker/tmp/db3-root to search libs
Finding Requires: /usr/lib/rpm/filter.sh ' ' /usr/lib/rpm/find-requires /home/cooker/tmp/db3-root i586
Provides: db3 = 3.3.11-14mdk _libdb-3.3.so
_ Requires(interp): /sbin/ldconfig /sbin/ldconfig
Requires(rpmlib): rpmlib(VersionedDependencies) <= 3.0.3-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.2) libc.so.6(GLIBC_2.3)

$ ls ~/tmp/db3-root/lib/ -l
total 668
-r-xr-xr-x 1 stefan stefan 679792 Jun 14 14:40 libdb-3.3.so*
lrwxrwxrwx 1 stefan stefan 12 Jun 14 14:40 libdb-3.so -> libdb-3.3.so*
lrwxrwxrwx 1 stefan stefan 12 Jun 14 14:40 libdb.so -> libdb-3.3.so*

The find-provides and find-requires script will skip non-symlink .so$ files. Why is "libdb-3.3.so" still being Provided? Which filelist is _really_ being passed to the find-[provides|requires]?

My only explanation to this is that libdb-3.so and / or libdb.so are in the filelist being passed to find-[provides|requires].

regards,

Stefan



Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to