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@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.
On Aug 22, 2008, at 11:57 AM, Brian Schüler wrote:
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.
There's a dinky standalone utility that will do the expansion w/o being limited by rpm's fixed buffer size in mezzanine.
Find Michael Jennings (who wrote mezzanine) on #cAos or @rpm5.org.
hth
73 de Jeff
Brian Schüler wrote:
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@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.
I have used thetango to figure out build order for SRPMS ... in fact, I used it to get the build order for sparc SRPMS a couple weeks ago.
On Fri, 22 Aug 2008, "Brian Schüler" wrote:
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@centosmirror alsa-lib-1.0.14-1.rc4.el5]# rpm -E "`cat alsa-lib.spec`" *** buffer overflow detected ***: rpm terminated ======= Backtrace: =========
thank you for this report -- as JBJ watches this mailing list I am sure he'll see it
build-from-scratch only need a subdirectory called SRPMS with source packages and ...
Build-from-scratch can be downloaded from: http://c.dyndns.org/brian/pub/centos/5/tools/ (it needs createrepo and httpd installed.)
so, I take it to some degree you are making a 'new project' release announcement?
I hope the build order calculation function helps accelerating the build process for the people who build CentOS and packages for it.
thank you.
-- Russ herrold