Feel free to edit/change/move/enhance/fix/... this page!
A common log format, used by all the packagers would be nice. The current log formats are quite different, so probably it isn't easy to switch each buildsystem to 1 fixed common format. Possible solution:
- define a format for sections, for example with the '---' as used in Dag's logformat.
- define a set of required sections, at least:
- a general header with info about the build
- the output of rpmbuild
- the result of the rpmbuild command
- allow additional sections, just like you can add additional X- headers in a mail
- a standard name for the log file
Current log format used by Dag
Copied from http://lists.rpmforge.net/pipermail/packagers/2008-November/000743.html
- A single compressed file per build:
- _buildlogs/viewvc-1.1.0-0.beta1.el5.test.noarch.ok.log.gz
- where the ok indicates a succesful build, and ko indicates a failure.
- Headers containing general information about the build environment
- A copy of the SPEC file
- A copy of the (macros substituted) expanded SPEC file
- The buildlog itself
- Return code
That is what I use lately. The macros-substituted (expanded) version of the SPEC file is very handy to explain newcomers how macros work and affect the resulting SPEC file.
The file looks like this:
----- Build information -----
Package name: viewvc
Package version: 1.1.0
Package release: 0.beta1.el5.test
Packager:
Distribution: el5/x86_64
Package arch: noarch
Build host: lisse.hasselt.wieers.com
Build date: Wed Nov 19 14:20:41 CET 2008
Soapbox: disabled
BuildAsRoot: disabled (dag)
Distcc: disabled
Ccache: disabled
Build command: /usr/bin/rpmbuild -bb --clean --define "rhel 5" -vv --target noarch --define "_smp_mflags -j1" --define "_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" --define "_initrddir %{_sysconfdir}/rc.d/init.d" --define "_rpmdir /dar/pub/packages/viewvc" --define "_sourcedir /dar/rpms/viewvc" --define "_builddir /dar/build" --define "_tmppath /dar/tmp" --define "_buildroot /dar/tmp/viewvc-1.1.0-0.beta1-root" --define "debug_package %nil" --define "dtag el5" --define "disttag el5" --define "el5 1" --define "el5a 1" "/dar/tmp/viewvc-1.1.0-0.beta1.test.spec"
Build path: /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
----- Spec file -----
-snip-
----- Expanded spec file -----
-snip-
----- Build log -----
-snip-
----- Return code -----
0
----- End of file -----
Current log format used by Fabian
All the el4/el5 PPC buildlogs are located (until a decision is made) on http://rpms.arrfab.net/rpmforge/_buildlogs
example : http://rpms.arrfab.net/rpmforge/_buildlogs/viewvc/viewvc-1.0.7-1.el5.rf.ppc.log
Sections :
- analysis of the spec file coming from svn and download the sources
- parsing the spec file and if necessary modify it , create a srpm (+results)
- (embedded ) mock full log file + final result
Current log format used by Dries
You can find an example at http://ftp.belnet.be/packages/dries.ulyssis.org/buildlogs/tintin/tintin/el5-i386/tintin-el5-i386-buildlog.txt.gz
Sections:
- Some general information: the id of the build, the name of the spec file, a timestamp
The list of files in /etc/profile.d/ (=> defines the environment) and also the list of files in /usr/src/redhat/*/. The list of files in /etc/profile.d/ isn't used anymore and can be removed.
'check files' section: try to create a source rpm without checking the dependencies => if this fails, then some patch or some source file is missing
- 'deps' section: get the list of dependencies and try to install them in the buildroot
- 'profiled2' section: print the current environment after the dependencies are installed, this is sometimes useful when a build fails because it expects a certain environment variable like QTDIR
- 'build' section: output of the build + at the end the contents of /usr/src/redhat/RPMS/*/ is listed
