[CentOS-devel] build-from-scratch: SRPM Build order now working

Fri Aug 22 15:57:49 UTC 2008
"Brian Schüler" <Brian.Schueler at gmx.de>

Hi folks,

Calculating the build order out of a set of source RPMs is now possible (even with BuildRequires
from sources which are not included). The little trick  rpm -E "`cat foo.spec`"  did it. Special thanks
to Jeff J.! But I have to shorten the output to the essentials because 'rpm' is crashing when the output
of the spec file is too long.

Here an example for alsa-lib package:

[root at centosmirror alsa-lib-1.0.14-1.rc4.el5]# rpm -E "`cat alsa-lib.spec`"
*** buffer overflow detected ***: rpm terminated
======= Backtrace: =========
/lib64/libc.so.6(__chk_fail+0x2f)[0x300fee55ff]
/usr/lib64/librpmio-4.4.so(rpmExpand+0x66)[0x3011e1a2f6]
/usr/lib64/librpm-4.4.so[0x3012622d1c]
/usr/lib64/libpopt.so.0[0x301b4023e0]
/usr/lib64/libpopt.so.0[0x301b402419]
/usr/lib64/libpopt.so.0(poptGetNextOpt+0x402)[0x301b403242]
rpm[0x403779]
/lib64/libc.so.6(__libc_start_main+0xf4)[0x300fe1d8b4]
rpm[0x4034c9]

-

build-from-scratch only need a subdirectory called SRPMS with source packages and
their additional (not included in CentOS-base) dependencies in. The packages are
built on a (remote) mock build server where the ssh-agent must be running and the
build server's key added to avoid interaction. The resulting sub directory (i.e. i386)
must be published on a http server just-in-time to make it accessible for the mock
build server.
build-from-scratch checks the setting of the build server, then it calculates the
build-order and does some sanity checks on the SRPMs. After that it begins to
compile all SRPMs each in a clean build root in the right order. Build errors and
dependency lacks are reported on the __BAD subdirectory within the output directory.
This is also a great tool for writing high-quality .spec-files.

Build-from-scratch can be downloaded from:
http://c.dyndns.org/brian/pub/centos/5/tools/
(it needs createrepo and httpd installed.)

My hint: Please read it with care before executing.

VDR (the digital video disk recorder) is now completely mock-buildable on
CentOS-5 and may be added to a contrib-testing-like repository
(it is located at http://c.dyndns.org/brian/pub/centos/5/vdr).
RPMforge does only accept .spec files where the original URLs to the source
tarballs have partially been vanished or are changing in the future (which
is not a good idea, I think). So I would have to get storage space there. 

I hope the build order calculation function helps accelerating the build process
for the people who build CentOS and packages for it.


Greetings,

Brian.
-- 
GMX Kostenlose Spiele: Einfach online spielen und Spaß haben mit Pastry Passion!
http://games.entertainment.gmx.net/de/entertainment/games/free/puzzle/6169196