Build system ideas/requirements

Warren Togami wtogami at redhat.com
Wed Mar 9 00:38:20 UTC 2005


seth vidal wrote:
> Items for thoughts:
> 
> 1. build system using comps.xml for chroot install definitions (base,
> build, minimal) - it would make sense and we could leverage the
> groupinstall/update/remove mechanism in yum.

I have no objection to yum groupinstall, but in my opinion none of the 
current defined groups are suitable for a minimal buildroot.  There have 
been objections in the past to this with the opinion that the 
"Development" tools group and -devel packages should be assumed to be 
installed in this minimum buildroot.  However this is a bad assumption 
because the set of -devel packages has been arbitrary, and dependencies 
don't make sure that particular tools exist in the buildroot.

For this reason none of the existing groups are suitable for the most 
important goal of the minimum buildroot: reproducible binary payloads.

I believe the following requirements describe a minimal buildroot:

* Absolute minimum needed for rpmbuild to function.
* BuildRequires should describe explicitly what is needed beyond the 
minimum buildroot to build a reproducible binary payload.
* Must NOT include autoconf*, automake*, gettext* or libtool.  While 
this seems counter-productive at first, it makes sense because sources 
theoretically shouldn't need it to build.  And in cases where patches 
require them during rpmbuild, they often require an explicit version of 
auto*.
* EXCEPTIONS: Stuff like gcc or g++ are included because it would be 
silly to list them explicitly in every package.  These exceptions should 
be VERY rare.

bash
bzip2
coreutils
cpio
diffutils
fedora-release
gcc
gcc-c++
gzip
make
patch
perl
python
rpm-build
redhat-rpm-config
sed
tar
unzip

Something like the list describes a very well tested minimum buildroot. 
  The dependencies pulled in by these packages form the minimum set 
necessary for rpmbuild to function.

We may also want to consider providing a "fake-build-provides" package 
in a buildroot repository that provides something like "kernel = 999", 
since stuff in the buildroot Requires kernel but it isn't actually 
needed to build stuff.

Warren Togami
wtogami at redhat.com




More information about the Fedora-buildsys-list mailing list