[CentOS-devel] rhel-6 rebuild summary

Fri Dec 24 14:38:42 UTC 2010
Farkas Levente <lfarkas at lfarkas.org>

hi,
i write this mail after more people ask me in private. and since the
centos core devel team not share any info about it's build system,
status, there modifications, doesn't have any public revision system
and not really accept any help or advice for outside.
but i still believe these are useful info for many others so i try to
summarize our rhel-6 rebuild experience.

first question is the build host and base repo selection. it's advice to
choose both the build system and the base repo as close as to rhel-6 as
possible. unfortunately even with official rhel-6 isos you can't get the
optional packages in binary. so imho the best base system and base repo
is a union of rhel-6 rc2 and rhel-6 beta. both are available freely in
binary but only the beta include the optional packages in binary from.
after you finish you can rebuild packages on itself again.

another important note that most update packages (there're a few dozens)
have higher buildreq packages then in the base repo, but these buildreqs
are not versioned in the specs. so you've to add the updates pacakges to
the build system's base packages otherwise you'll get build errors.

i recommend mock-1.1.7 for building. unfortunately at rh it's not
required to be able to build src.rpm is mock, they use only rpmbuild (!)
which of course cause a few dozen of packages won't build:-(
imho it'd be useful something like this for rhel too:
http://fedoraproject.org/wiki/FTBFS

so let we see what's are the problematic packages (fortunately most of
the packages build clean). all of these packages bellow has a bugzilla
entry and most of them already contains the solutions. so just go and
search for it (i'd not like to link all bz entry:-()


- virt-top     (missing ocaml-camomile-data)
- spice-client (missing pixman-devel)
these two packages can't be rebuild on rhel-6 since they has such
buildreq which is not shipped in rhel-6 (simple rh forget about it:-) so
you can either add to the base repo these packages from epel or from a
rebuild from fedora or simple drop them.

- bash
- zsh
can't be rebuild in mock-1.x since a mock tty bug. in this case imho the
easiest solution:
mock <params> --rebuild bash...
ctrl-c during build, then
mock <params> --shell
rpmbuild --rebuild /builddir/build/originals/bash...

- nss
can't be rebuild in mock since during %check try to connect to the
localhost to test ssl, but it's not working in mock. i suggest the above
solution plus ctrl-c during the rpmbuild when the build hang at the ssl
connection test and after the you'll got a successful build:-)

- kernel
unfortunately kernel spec is not updated to the new noarch subpackage
style. which means you've to build the arch and noarch packages
separately (as in rhel-5). but the new spec file even worst then the
rhel-5 was so eg:
a simple:
mock <params> --target "noarch,i686" --rebuild kernel...
no longer works, but
mock <params> --target "noarch" --rebuild kernel...
mock <params> --target "i686" --rebuild kernel...
works:-) imho the best would be to update the kernel spec to the new
noarch style subpackage, but afais rh so conservative about kernel spec
it won't be happened in the rhel-6.x series:-(

- opal
has a wrong rh patch which cause ekiga not compile, so you've to fix
opal first.

- java-1.6.0-openjdk-1.6.0.0-1.21.b17.el6
can't be build, unfortunately bz with fixes for this package are not
public, but there's an update which can be build (may be we'd have to
leave this package out).

and the remaining packages has different problems in the spec file, but
all has (mostly a simple) solution in bz, but doesn't have update package:
- guile
- openmpi
- foomatic
- hivex
- mod_auth_kerb
- gnome-doc-utils
- pilot-link
- linuxdoc-tools
- perl-Sys-Virt
- perl-Test-MockObject
- perl-Test-Memory-Cycle
- perl-GSSAPI
- perl-Makefile-Parser
- perl-CGI-Session
- perl-IPC-Run3
- python-lxml
- python-sqlalchemy
- rome
- epydoc
- kdepim-runtime

i hope it can help for a few poeple.

anyway happy xmas!

-- 
  Levente                               "Si vis pacem para bellum!"