Hi,
some small things are missing in my last patch. Here is the new version.
cheers, josch
--- a/bin/sbuild
+++ b/bin/sbuild
@@ -115,6 +115,8 @@ sub main () {
if $conf->get('DEBUG' && defined($conf->get('HOST_ARCH')));
print "Selected build architecture " . $conf->get('BUILD_ARCH') . "\n"
if $conf->get('DEBUG' && defined($conf->get('BUILD_ARCH')));
+ print "Selected build profiles " . $conf->get('BUILD_PROFILES') . "\n"
+ if $conf->get('DEBUG' && defined($conf->get('BUILD_PROFILES')));
$job = Sbuild::Build->new($jobname, $conf);
$job->set('Pkg Status Trigger', \&status_trigger);
--- a/lib/Sbuild/Build.pm
+++ b/lib/Sbuild/Build.pm
@@ -264,6 +264,7 @@ sub run {
# Acquire the architectures we're building for and on.
$self->set('Host Arch', $self->get_conf('HOST_ARCH'));
$self->set('Build Arch', $self->get_conf('BUILD_ARCH'));
+ $self->set('Build Profiles', $self->get_conf('BUILD_PROFILES'));
my $dist = $self->get_conf('DISTRIBUTION');
if (!defined($dist) || !$dist) {
@@ -461,6 +462,7 @@ sub run_chroot_session {
$resolver->set('Arch', $self->get_conf('ARCH'));
$resolver->set('Host Arch', $self->get_conf('HOST_ARCH'));
$resolver->set('Build Arch', $self->get_conf('BUILD_ARCH'));
+ $resolver->set('Build Profiles', $self->get_conf('BUILD_PROFILES'));
$resolver->set('Chroot Build Dir', $self->get('Chroot Build Dir'));
$self->set('Dependency Resolver', $resolver);
@@ -1413,6 +1415,13 @@ sub build {
push (@{$buildcmd}, '-a' . $host_arch);
}
+ if (defined($self->get_conf('BUILD_PROFILES')) &&
+ $self->get_conf('BUILD_PROFILES')) {
+ my $profiles = $self->get_conf('BUILD_PROFILES');
+ $profiles =~ tr/ /,/;
+ push (@{$buildcmd}, '-P' . $profiles);
+ }
+
if (defined($self->get_conf('PGP_OPTIONS')) &&
$self->get_conf('PGP_OPTIONS')) {
if (ref($self->get_conf('PGP_OPTIONS')) eq 'ARRAY') {
@@ -1889,6 +1898,8 @@ sub generate_stats {
$self->add_stat('Machine Architecture', $self->get_conf('ARCH'));
$self->add_stat('Host Architecture', $self->get('Host Arch'));
$self->add_stat('Build Architecture', $self->get('Build Arch'));
+ $self->add_stat('Build Profiles', $self->get('Build Profiles'))
+ if $self->get('Build Profiles');
$self->add_stat('Distribution', $self->get_conf('DISTRIBUTION'));
$self->add_stat('Space', $self->get('This Space'));
$self->add_stat('Build-Time',
@@ -2156,6 +2167,7 @@ sub open_build_log {
$self->log("Machine Architecture: " . $self->get_conf('ARCH') . "\n");
$self->log("Host Architecture: " . $self->get('Host Arch') . "\n");
$self->log("Build Architecture: " . $self->get('Build Arch') . "\n");
+ $self->log("Build Profiles: " . $self->get('Build Profiles') . "\n") if $self->get('Build Profiles');
$self->log("\n");
}
--- a/lib/Sbuild/ConfBase.pm
+++ b/lib/Sbuild/ConfBase.pm
@@ -169,6 +169,13 @@ sub init_allowed_keys {
DEFAULT => $native_arch,
HELP => 'Build architecture (Arch we are building on).'
},
+ 'BUILD_PROFILES' => {
+ TYPE => 'STRING',
+ VARNAME => 'build_profiles',
+ GROUP => 'Build options',
+ DEFAULT => $ENV{'DEB_BUILD_PROFILES'},
+ HELP => 'Build profiles. Separated by spaces.'
+ },
'HOSTNAME' => {
TYPE => 'STRING',
GROUP => '__INTERNAL',
--- a/lib/Sbuild/Options.pm
+++ b/lib/Sbuild/Options.pm
@@ -55,6 +55,10 @@ sub set_options {
"no-arch-all" => sub {
$self->set_conf('BUILD_ARCH_ALL', 0);
},
+ "profiles=s" => sub {
+ $_[1] =~ tr/,/ /;
+ $self->set_conf('BUILD_PROFILES', $_[1]);
+ },
"add-depends=s" => sub {
push(@{$self->get_conf('MANUAL_DEPENDS')}, $_[1]);
},
--- a/lib/Sbuild/ResolverBase.pm
+++ b/lib/Sbuild/ResolverBase.pm
@@ -58,6 +58,7 @@ sub new {
# Typically set by Sbuild::Build, but not outside a build context.
$self->set('Host Arch', $self->get_conf('HOST_ARCH'));
$self->set('Build Arch', $self->get_conf('BUILD_ARCH'));
+ $self->set('Build Profiles', $self->get_conf('BUILD_PROFILES'));
my $dummy_archive_list_file = $session->get('Location') .
'/etc/apt/sources.list.d/sbuild-build-depends-archive.list';
@@ -738,14 +739,18 @@ EOF
reduce_arch => 1,
host_arch => $self->get('Host Arch'),
build_arch => $self->get('Build Arch'),
- build_dep => 1);
+ build_dep => 1,
+ reduce_profiles => 1,
+ build_profiles => [ split / /, $self->get('Build Profiles') ]);
my $negative = deps_parse(join(", ", @negative,
@negative_arch, @negative_indep),
reduce_arch => 1,
host_arch => $self->get('Host Arch'),
build_arch => $self->get('Build Arch'),
build_dep => 1,
- union => 1);
+ union => 1,
+ reduce_profiles => 1,
+ build_profiles => [ split / /, $self->get('Build Profiles') ]);
$self->log("Merged Build-Depends: $positive\n") if $positive;
$self->log("Merged Build-Conflicts: $negative\n") if $negative;
--- a/man/sbuild.1.in
+++ b/man/sbuild.1.in
@@ -31,6 +31,7 @@ sbuild \- build debian packages from sou
.RB [ \-\-arch=\fIarchitecture\fP ]
.RB [ \-\-build=\fIarchitecture\fP ]
.RB [ \-\-host=\fIarchitecture\fP ]
+.RB [ \-\-profiles=\fIprofile[,...]\fP ]
.RB [ \-s \[or] \-\-source ]
.RB [ \-\-force\-orig\-source ]
.RB [ \-\-make\-binNMU=\fIchangelog-entry\fP ]
@@ -260,6 +261,11 @@ log file, but print everything to stdout
Convenience option to set \fIpurge-mode\fR for build directory, build
dependencies and session.
.TP
+.BR \-\-profiles=\fIprofile[,...]\fP"
+Specify the profile(s) we build, as a comma-separated list, without the
+"\fBprofile.\fP" namespace prefix. Defaults to the space separated list of
+profiles in the \fBDEB_BUILD_PROFILES\fP environment variable.
+.TP
.BR "\-\-purge\-build=\fIpurge-mode\fP"
\fIpurge-mode\fR determines if the build directory will be deleted after a
build. Possible values are \fBalways\fR (default), \fBnever\fR, and