Bug#209008: How should the build logs be handled?

2007-04-18 Thread Aurelien Jarno
Hi,

I have just noticed that that things are moving. Nice :)

First of all, I am personally in favor of DEB_BUILD_OPTIONS=parallel=n
because it is consistent with all other options that can be set when
building a package. If the code to parse it is too long, it could be put
for example in debhelper.

On Tue, Apr 10, 2007 at 03:19:56PM +0200, Loïc Minier wrote:
  I added support for DEB_BUILD_OPTIONS_PARALLEL to some big packages
  which are building multiple flavors of the software.  First, there's
  a choice of what to parallelize: do you parallelize ./configure runs
  and multiple builds when you have multiple configure + build runs to
  achieve?  Second, I noticed that the output wasn't very easy to read,
  especially with libtool based builds which produce several line of
  output and run multiple commands per object.

On glibc we are running configure normally, and then invoking the build
phase with make -j. We still build all flavour sequentially. I can't say
what is the best solution. Building all the flavours sequentially has
the advantage to fail faster if some code does not compile. Not really
useful on the build daemon, but that can be useful locally.

  So while I think it's a good thing to add such a support in packages
  for some use cases (perhaps archive rebuilds, repetitive builds of the
  same software after each commit etc.), I wonder how we will deal with
  build logs.
 
  Should we recommend that such builds have to save their build logs and
  output it at the end of the build?  e.g.:
make debian/build.log || (cat debian/build.log; exit 1)
cat debian/build.log
 
  This is what I used in my packages:
 MAKEFLAGS += $(if $(DEB_BUILD_OPTIONS_PARALLEL),-j2 
 $(DEB_BUILD_OPTIONS_PARALLEL))
 
  (It wont work with packages calling $(MAKE) -f debian/rules which should
  protect against adding another -j flag in the submake.)

I should warn about using MAKEFLAGS. A lot of software do support using 
-j for the make all phase, but do not for the make install phase. In the
case of the glibc, using -j for the make install phase was causing a
build failure, rarely but enough often to bother us (and the SRM team).

That's why I would advise to call make -j explicitely in the parts that
have been well tested.

Bye,
Aurelien

-- 
  .''`.  Aurelien Jarno | GPG: 1024D/F1BCDB73
 : :' :  Debian developer   | Electrical Engineer
 `. `'   [EMAIL PROTECTED] | [EMAIL PROTECTED]
   `-people.debian.org/~aurel32 | www.aurel32.net


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#209008: How should the build logs be handled?

2007-04-10 Thread Loïc Minier
Hi,

 I added support for DEB_BUILD_OPTIONS_PARALLEL to some big packages
 which are building multiple flavors of the software.  First, there's
 a choice of what to parallelize: do you parallelize ./configure runs
 and multiple builds when you have multiple configure + build runs to
 achieve?  Second, I noticed that the output wasn't very easy to read,
 especially with libtool based builds which produce several line of
 output and run multiple commands per object.

 So while I think it's a good thing to add such a support in packages
 for some use cases (perhaps archive rebuilds, repetitive builds of the
 same software after each commit etc.), I wonder how we will deal with
 build logs.

 Should we recommend that such builds have to save their build logs and
 output it at the end of the build?  e.g.:
   make debian/build.log || (cat debian/build.log; exit 1)
   cat debian/build.log

 This is what I used in my packages:
MAKEFLAGS += $(if $(DEB_BUILD_OPTIONS_PARALLEL),-j2 
$(DEB_BUILD_OPTIONS_PARALLEL))

 (It wont work with packages calling $(MAKE) -f debian/rules which should
 protect against adding another -j flag in the submake.)

   Bye,
-- 
Loïc Minier
For subalterns, saying something intelligent is as risky as saying something
 stupid.