From b02cb29e726ba44da007dff1c68f02a2c921f474 Mon Sep 17 00:00:00 2001 From: Modestas Vainius Date: Fri, 4 Dec 2009 00:17:06 +0200 Subject: [PATCH] Add --parallel option. This patch adds --parallel option that enables parallel builds and does not impose limits on maximum concurrent processes. --max-parallel (that implies --parallel) can be used to specify that maximum limit. Also make necessary adjustments to debhelper.pod and buildsystem_tests for this option. --- Debian/Debhelper/Dh_Buildsystems.pm | 1 + debhelper.pod | 22 +++++++++++++--------- t/buildsystems/buildsystem_tests | 16 +++++++++++----- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/Debian/Debhelper/Dh_Buildsystems.pm b/Debian/Debhelper/Dh_Buildsystems.pm index d50c517..0f34a2e 100644 --- a/Debian/Debhelper/Dh_Buildsystems.pm +++ b/Debian/Debhelper/Dh_Buildsystems.pm @@ -152,6 +152,7 @@ sub buildsystems_init { "l" => \$opt_list, "list" => \$opt_list, + "parallel" => sub { $max_parallel = -1 }, "max-parallel=i" => \$max_parallel, ); $args{options}{$_} = $options{$_} foreach keys(%options); diff --git a/debhelper.pod b/debhelper.pod index 29687ad..19d1d49 100644 --- a/debhelper.pod +++ b/debhelper.pod @@ -217,20 +217,24 @@ If the build system prefers out of source tree building but still allows in source building, the latter can be re-enabled by passing a build directory path that is the same as the source directory path. -=item B<--max-parallel>I<=maximum> - -This option allows controlling how many parallel jobs can be used in a -build, if parallel builds are enabled by the DEB_BUILD_OPTIONS environment -variable. +=item B<--parallel> -If set to 1, parallel builds are disabled -- do this if the package build -is known not to work in parallel. If the package build is known to only -work with certian levels of concurrency, you can set this to the maximum -level that is known to work, or that you wish to support. +Enable support for parallel builds if underlying build system provides this +feature. The number of parallel processes is controlled by the +DEB_BUILD_OPTIONS environment variable (L) at +build time. It might also be subject to the build system specific limit. If this option is not specified, debhelper currently defaults to not supporting parallel package builds. +=item B<--max-parallel>I<=maximum> + +This option implies L<--parallel> and allows to further limit the number of +jobs that can be used in a parallel build. If the package build is known to +only work with certain levels of concurrency, you can set this to the maximum +level that is known to work, or that you wish to support. If set to 1, parallel +builds will be effectively forbidden. + =item B<--list>, B<-l> List all build systems supported by debhelper on this system. The list diff --git a/t/buildsystems/buildsystem_tests b/t/buildsystems/buildsystem_tests index 1a9e21c..e69367e 100755 --- a/t/buildsystems/buildsystem_tests +++ b/t/buildsystems/buildsystem_tests @@ -1,6 +1,6 @@ #!/usr/bin/perl -use Test::More tests => 291; +use Test::More tests => 295; use strict; use warnings; @@ -572,21 +572,27 @@ sub test_is_parallel { test_isnt_parallel( do_parallel_mk(), "No parallel by default" ); +test_isnt_parallel( do_parallel_mk("parallel"), + "No parallel by default with --parallel" ); +test_isnt_parallel( do_parallel_mk("--max-parallel=5"), + "No parallel by default with --max-parallel=5" ); $ENV{DEB_BUILD_OPTIONS}="parallel=5"; test_isnt_parallel( do_parallel_mk(), - "DEB_BUILD_OPTIONS=parallel=5 without --max-parallel" ); + "DEB_BUILD_OPTIONS=parallel=5 without parallel options" ); ++test_is_parallel( do_parallel_mk("--parallel"), ++ "DEB_BUILD_OPTIONS=parallel=5 with --parallel" ); test_is_parallel( do_parallel_mk("--max-parallel=2"), "DEB_BUILD_OPTIONS=parallel=5 with --max-parallel=2" ); test_isnt_parallel( do_parallel_mk("--max-parallel=1"), - "DEB_BUILD_OPTIONS=parallel=5 with --max-parallel=1 (off)" ); + "DEB_BUILD_OPTIONS=parallel=5 with --max-parallel=1" ); $ENV{MAKEFLAGS} = "--jobserver-fds=105,106 -j"; $ENV{DEB_BUILD_OPTIONS}=""; -test_isnt_parallel( do_parallel_mk("--max-parallel=5"), +test_isnt_parallel( do_parallel_mk(), "makefile.pm (no parallel): no make warnings about unavailable jobserver" ); $ENV{DEB_BUILD_OPTIONS}="parallel=5"; -test_is_parallel( do_parallel_mk("--max-paralle=5"), +test_is_parallel( do_parallel_mk("--parallel"), "DEB_BUILD_OPTIONS=parallel=5: no make warnings about unavail parent jobserver" ); $ENV{MAKEFLAGS} = "-j2"; -- 2.39.2