Automatic BuildRequires; platform independent specfiles
Stefan van der Eijk
stefan at eijk.nu
Tue Mar 9 22:32:15 UTC 2004
Axel Thimm wrote:
>On Mon, Mar 08, 2004 at 09:22:36PM +0100, Stefan van der Eijk wrote:
>
>
>>I've been advocating getting the right BuildRequires into the src.rpm
>>packages:
>> http://qa.mandrakesoft.com/twiki/bin/view/Main/BuildRequires
>>
>>Due to the fact that -devel packages have no *automatic* dependencies
>>added to them, there is no significant dependency structure in them.
>>This makes getting the right BuildRequires for the packages nearly
>>impossible. This issue and the solution Mandrake chose to implement are
>>documented here:
>> http://qa.mandrakesoft.com/twiki/bin/view/Main/RpmDevelDependencies
>>
>>
>
>This is very interesting stuff, especially deriving the recursive
>-devel dependencies that way.
>
>Is there a tool which can be used right away to generate these
>Provides/Requires hooks? Does the Mandrake rpm carry such patches?
>
>
Yes. Mandrake implemented option 3. The exact code from the Mandrake
find-provides and find-requires are on the page (Implementation
examples), with the version number of the mandrake rpm package it was
taken from. It may have changed in later releases of the rpm package.
Here's and example on how the dependencies are implemented on the package:
# rpm -qpR libpng3-devel-1.2.5-10mdk.alpha.rpm | sort -u
bash
*devel(libm(64bit))
devel(libz(64bit)) *
libpng3 = 2:1.2.5-10mdk
pkgconfig
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(VersionedDependencies) <= 3.0.3-1
zlib-devel
# rpm -qp --provides libpng3-devel-1.2.5-10mdk.alpha.rpm | sort -u
*devel(libpng(64bit))
devel(libpng12(64bit))
*libpng-devel = 2:1.2.5-10mdk
libpng3-devel = 2:1.2.5-10mdk
png-devel = 2:1.2.5-10mdk
As you can see the "zlib-devel" requires is redundant, since
"devel(libz(64bit))" already pulls it in.
The things we learned at Mandrakesoft when implementing this:
- Do it quickly, put a team on it to rebuild all the packages affected
against the new find-provides and find-requires scripts. If you don't do
it quickly the distro will be broken, as packages will be asking for
dependencies that aren't provided yet. At Mandrake we had quite some
resistance against the new scheme, users that didn't understand what it
brought and only saw the downside during the transition became quite vocal.
- Choose the same naming scheme as Mandrake "devel(libname)" for 32bit
libs, "devel(libname(64bit))" for 64bit systems. At Mandrake we first
used "libname.so" like dependencies, but some of these were already
being provided by some packages. The libdb3.3-devel package being the
perfect example on where it went wrong. Mandrake ended up making the
transition twice :-(
>>Esspecially with the RpmDevelDependencies I think all distributions
>>would benefit from this, perhaps we can try to make it part of a
>>cross-distro rpm naming standard.
>>
>>
>
>Yes! :)
>
>But this is probably the wrong list to address these issues. There is
>an rpm-devel list (http://rpm-devel.colug.net/, Cced) where embedding
>of these Provides/Requires hooks could be discussed.
>
I've tried on the rpm list noted on rpm.org, but I've had little / no
response.
>There is also a
>packaging list (http://www.freestandards.org/cgi-bin/mailman/listinfo/packaging),
>which would look appropriate for such a discussion, but it looks quite
>silent in the last year.
>
>As for the common naming issue, you will get into serious trouble
>convincing all parties.
>
I'm expecting some resistance against change. This is always the case. :-/
>It has been tough to discuss this within the
>Red Hat community, so adding Mandrake and SuSE will certainly not make
>it easier ;)
>
>Unless the external name is independent of the internal
>Provides/Requires hooks, so that Red Hat can continue calling
>zlib{-devel} that way etc., and some small monolithic packages can
>remain monolithic and need not be split into devel/lib etc.
>
>
For this scheme the external name can remain unchanged. What I'm
actually aiming on is to make more of a distros dependencies consist out
of automatically generated dependencies (conforming to a cross-distro
naming standard) so that the external names aren't loose their
importance. What's really important is the *capability* a package
provides or requires, the external name is of less importance.
>In this case you will probably be able to choose the internal naming
>convention yourself, nobody would object. It seems that your scheme is
>indeed independent of the external names and splitting of
>sub-packages, isn't it?
>
>
Indeed. This was my objective, to make it completely independant from
existing naming, and completely based on a capability a package provides
and / or requires.
>Writing cross-distro specfiles! I am looking forward to that day! :)
>
>
This day isn't that far away. I think many people are looking forward to
it. I'm also involved with plf (plf.zarb.org) and the plf would also
love to make fedora packages. Issue at the moment is that the lack of
standardisation is making this difficult.
regards,
Stefan van der Eijk
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3403 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/fedora-legacy-list/attachments/20040309/2937001f/attachment.bin>
More information about the fedora-legacy-list
mailing list