buildreq

Gene Heskett gene.heskett at verizon.net
Wed Dec 27 16:07:34 UTC 2006


On Wednesday 27 December 2006 02:29, Todd Zullinger wrote:
>Gene Heskett wrote:
>> Apparently not Rahul, according to its manpage its married to the
>> requirement that the src package is also an rpm, which in the two
>> cases at hand, don't exist, one of them as only an svn checkout I
>> haven't even ./configured yet.  I'm trying to build a fully
>> compatible rpm, using checkinstall, from the already built and
>> installed tarball.  I've built it as an rpm and installed it, but
>> the dependency list is pretty close to a null entry in the one I've
>> built.
>
>So if you do rpm -qp --requires "your_package.rpm" is the list empty?
>Or is it just a lack of explicit Requires in the spec file?

Good question, Todd.  So I ran the above command against my 
checkinstall-1.6.0 generated rpm and was rather surprised to see all 
this:

[root at coyote i386]# rpm -qp --requires kino-0.9.4-3.i386.rpm
/bin/bash
/bin/sh
/bin/sh
/usr/bin/perl
libICE.so.6
libSM.so.6
libX11.so.6
libXext.so.6
libXv.so.1
libasound.so.2
libasound.so.2(ALSA_0.9)
libasound.so.2(ALSA_0.9.0rc4)
libatk-1.0.so.0
libavc1394.so.0
libavcodec.so.51
libavformat.so.50
libavutil.so.49
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)
libcairo.so.2
libdl.so.2
libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libdv.so.4
libdvtitler.so.0
libgcc_s.so.1
libgcc_s.so.1(GCC_3.0)
libgcc_s.so.1(GLIBC_2.0)
libgdk-x11-2.0.so.0
libgdk_pixbuf-2.0.so.0
libglade-2.0.so.0
libglib-2.0.so.0
libgmodule-2.0.so.0
libgobject-2.0.so.0
libgthread-2.0.so.0
libgtk-x11-2.0.so.0
libiec61883.so.0
libkinoplus.so.0
libm.so.6
libm.so.6(GLIBC_2.0)
libpango-1.0.so.0
libpangocairo-1.0.so.0
libpangoft2-1.0.so.0
libpthread.so.0
libpthread.so.0(GLIBC_2.0)
libpthread.so.0(GLIBC_2.1)
libpthread.so.0(GLIBC_2.2)
libpthread.so.0(GLIBC_2.3.2)
libraw1394.so.8
librom1394.so.0
libsamplerate.so.0
libsamplerate.so.0(libsamplerate.so.0.0)
libsamplerate.so.0(libsamplerate.so.0.1)
libstdc++.so.6
libstdc++.so.6(CXXABI_1.3)
libstdc++.so.6(CXXABI_1.3.1)
libstdc++.so.6(GLIBCXX_3.4)
libtimfx.so.0
libxml2.so.2
perl(integer)
perl(strict)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)

And that actually looks fairly complete to my untrained eyes.

>> That doesn't matter here as the ./configure step took care of those
>> as it built the Makefile and such, but it will matter greatly on
>> someone elses machine that doesn't have all the deps installed
>> already.
>
>It should mostly only matter to someone trying to rebuild that SRPM.
>rpm generally does a pretty decent job of finding Requires for binary
>rpms.  It's the BuildRequires (stuff need just to build the package)
>that usally needs some manual feeding.  Someone rebuilding the SRPM
>would still be running configure and they could then find the missing
>stuff and add it.  Putting it in the SRPM is simply a more helpful way
>to prevent someone from chasing down deps.
>
>> There has to be, someplace, a utility than can scan the files in a
>> tarballs unpacked and configured tree, or in an svn checkout tree
>> after its been ./configured, and build a list of the dependencies
>> this package has.  If there is not, I can't believe its not on
>> somebodies list of usefull tools.
>
>There may well be such a tool and it would indeed be handy.  But it
>would also be fairly difficult to do right.  Some dependencies are
>optional and the package will work fine without them if it's built
>without them.  For rpm packages though, it's important that someone
>rebuilding the rpm gets the same capabilities in the rebuilt package,
>so the BuildRequires are listed explicitly.
>
>One way I find what should be required is to check out the
>configure.ac (or configure.in).  This is the source file that
>configure is generated from.  It isn't perfectly readable without some
>practice, but it's infinitely more readable than configure is. :)
>
>It's also quite helpful to run configure and then check the output and
>the config.log and config.status.  It is mostly a manual task to
>figure out what rpms provide certain capabilities.  For example, the
>configure.ac file for libgpod use pkg-config to find the devel files
>and settings needed to compile.  It has stuff like this:
>
>PKG_CHECK_MODULES(LIBGPOD, glib-2.0>= 2.4.0 gobject-2.0)
>
>This use the pkg-config program to find the headers and compile flags
>for glib and gobject, ensuring that the version of glib found is
>greater than 2.4.0.  It does this by reading the glib-2.0.pc in
>/usr/lib/pkgconfig.  To find the rpm that provides this file I run
>"rpm -qf /usr/lib/pkgconfig/glib-2.0.pc" (you could likely do this
>with yum as well, but rpm is faster).
>
>> build-dep from the rpm-utils package, has been suggested as one
>> possibility, which is why I ask why this package isn't available in
>> a fedora compatible rpm.
>
>Do you have any references to the rpm-utils you're talking about?
>There was an rpm-utils by Kirk Bauer (sp?) a long time ago, but it
>doesn't contain any buildreq script.  There's also an ALTlinux package
>named rpm-utils which does have a buildreq script.  I'm not sure if
>this is something ALTlinux specific or not.  The specfile doesn't list
>a URL for the upstream source.

I'd answer at greater length, but I'm playing chauffer today.  And its 
time to stick the key in the switch else the missus misses her bowling 
league.

-- 
Cheers, Gene
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
Yahoo.com and AOL/TW attorneys please note, additions to the above
message by Gene Heskett are:
Copyright 2006 by Maurice Eugene Heskett, all rights reserved.




More information about the fedora-list mailing list