50
51
exit 1 if !defined($options);
51
52
check_group_membership();
54
if (!$conf->get('MAINTAINER_NAME') &&
55
($conf->get('BIN_NMU') || $conf->get('APPEND_TO_VERSION'))) {
56
die "A maintainer name, uploader name or key ID must be specified in .sbuildrc,\nor use -m, -e or -k, when performing a binNMU or appending a version suffix\n";
83
89
push @ARGV, '.' unless (@ARGV);
86
foreach my $job (@ARGV) {
87
$jobs{$job} = Sbuild::Build->new($job, $conf);
88
$jobs{$job}->set('Pkg Status Trigger', \&status_trigger)
90
write_jobs_file(); # Will now update on trigger.
92
# Run each job. Potential for parallelising this step.
93
foreach (keys %jobs) {
96
my $job = $jobs{$jobname};
97
$current_job = $jobname;
102
dump_main_state() if $conf->get('DEBUG');
93
foreach my $job (@ARGV) {
94
$jobs{$job} = Sbuild::Build->new($job, $conf);
95
$jobs{$job}->set('Pkg Status Trigger', \&status_trigger)
97
write_jobs_file(); # Will now update on trigger.
99
# Run each job. Potential for parallelising this step.
100
foreach (keys %jobs) {
103
my $job = $jobs{$jobname};
104
$current_job = $jobname;
109
dump_main_state() if $conf->get('DEBUG');
114
if ($e = Exception::Class->caught('Sbuild::Exception::Build')) {
115
print STDERR "E: $e\n";
116
print STDERR "I: " . $e->info . "\n"
120
print STDERR $e->trace->as_string, "\n";
105
124
close_log($conf);
194
211
$job = $jobs{$current_job} if (defined($current_job) &&
195
212
defined($jobs{$current_job}));
199
$job->log("sbuild received SIG$signame -- shutting down\n");
203
my $session = $job->get('Session');
204
my $resolver = $job->get('Dependency Resolver');
206
# Kill currently running command (if any)
207
if ($job->get('Sub PID')) {
208
print "Killing " . $job->get('Sub Task') .
209
" subprocess " . $job->get('Sub PID') . "\n";
210
$job->get('Session')->run_command(
211
{ COMMAND => ['perl', '-e',
212
"\"kill( \\\"TERM\\\", " .
213
$job->get('Sub PID') .
220
if (defined($session) && $conf->get('BATCH_MODE') &&
221
!$conf->get('SBUILD_MODE') eq "buildd") {
222
# next: say which packages should be uninstalled
223
if (defined ($session->get('Session Purged')) && $session->get('Session Purged') == 1) {
224
print "Not removing build depends: cloned chroot in use\n";
226
@pkgs = keys %{$resolver->get('Changes')->{'installed'}};
228
if (open( F, ">>NEED-TO-UNINSTALL" )) {
232
print "The following packages still need to be uninstalled ",
233
"(--purge):\n@pkgs\n";
238
# Close logs and send mails
239
if (defined($session) &&
240
$conf->get('PURGE_BUILD_DIRECTORY') eq "always" &&
241
defined($job->get('Chroot Build Dir'))) {
242
$job->log("Purging " . $job->get('Chroot Build Dir') . "\n");
243
my $bdir = $job->get('Session')->strip_chroot_path($job->get('Chroot Build Dir'));
244
$job->get('Session')->run_command(
245
{ COMMAND => ['rm', '-rf', $bdir],
251
if (defined($resolver)) {
252
$resolver->cleanup();
255
if (defined($session)) {
256
$session->unlock_chroot();
257
$session->end_session();
258
$job->set('Session', undef);
261
$job->close_build_log();
262
$job->set('binNMU Name', undef);
267
# Restore the signal handler to let a self-kill result in the appropriate
269
$SIG{$signame} = 'DEFAULT';
270
kill($signame, $$) or die("self-kill failed");
215
$job->request_abort("Received $signame signal");
220
$SIG{'INT'} = \&main::shutdown;
221
$SIG{'TERM'} = \&main::shutdown;
222
$SIG{'ALRM'} = \&main::shutdown;
223
$SIG{'PIPE'} = \&main::shutdown;
273
226
sub dump_main_state () {