259
276
$SIG{'TERM'} = \&shutdown;
260
277
$SIG{'ALRM'} = \&shutdown;
261
278
$SIG{'PIPE'} = \&shutdown;
262
read_deps( map { m,(?:.*/)?([^_/]+)[^/]*, } @ARGV );
264
280
write_jobs_file();
267
foreach $pkgv (@ARGV) {
283
foreach $dscfile (@ARGV) {
270
($urlbase, $pkgv) = ($1, $3) if $pkgv =~ m,^(\w+://(\S+/)?)([^/]+)$,;
285
my $dir = dirname($dscfile);
286
my $dscbase = basename($dscfile);
287
my $pkgv = basename($dscfile);
271
288
$pkgv =~ s/\.dsc$//;
272
(my $pkg = $pkgv) =~ s/_.*$//;
289
my ($pkg, $version) = split /_/, $pkgv;
291
# Download if package does not have a .dsc extension and no
292
# directory was specified.
294
if ($dscbase =~ m/\.dsc$/) {
298
print STDERR "D: dscfile = $dscfile\n" if $conf::debug;
299
print STDERR "D: dir = $dir\n" if $conf::debug;
300
print STDERR "D: dscbase = $dscbase\n" if $conf::debug;
301
print STDERR "D: pkgv = $pkgv\n" if $conf::debug;
302
print STDERR "D: pkg = $pkg\n" if $conf::debug;
303
print STDERR "D: version = $version\n" if $conf::debug;
304
print STDERR "D: download = $download\n" if $conf::debug;
306
if ($download && $dscfile ne $pkgv) {
307
print PLOG "Invalid source: $dscfile\n";
308
print PLOG "Skipping $pkg\n";
309
$main::pkg_status = "skipped";
276
314
my $tpkg = basename($pkgv);
366
403
sub fetch_source_files {
367
404
my $dscfile_ref = shift;
368
my $dscfile = $$dscfile_ref;
369
my ($dir, $dscbase, $files, @other_files, $dscarchs, @made);
408
my $download = shift;
410
my ($dscbase, $files, @other_files, $dscarchs, @made);
412
$dscbase = "${pkg}_${version}.dsc";
370
414
my $build_depends = "";
371
415
my $build_depends_indep = "";
372
416
my $build_conflicts = "";
373
417
my $build_conflicts_indep = "";
376
$dscfile =~ m,^(.*)/([^/]+)$,;
377
($dir, $dscbase) = ($1, $2);
379
$urlbase = $1 if $dscfile =~ m,^(\w+://(\S+/)?)([^/]+)$,;
380
(my $pkgv = $dscfile) =~ s,^(.*/)?([^/]+)\.dsc$,$2,;
381
my ($pkg, $version) = split /_/, $pkgv;
382
420
@main::have_dsc_build_deps = ();
384
if (!defined($dscfile) || !defined($pkg) || !defined($version)) {
385
print PLOG "Invalid source: $dscfile\n";
422
if (!defined($pkg) || !defined($version) || !defined($dir) || !defined($dscbase)) {
423
print PLOG "Invalid source: $$dscfile_ref\n";
386
424
return ("ERROR");
389
$dscbase = $pkg . "_" . $version if !defined($dscbase);
392
if (-f "$dscfile/debian/.sbuild-build-deps") {
393
open( F, "<$dscfile/debian/.sbuild-build-deps" );
397
/^Package:\s*(.*)/i and $pkg = $1;
398
/^Build-Depends:\s*(.*)/i and $build_depends = $1;
399
/^Build-Depends-Indep:\s*(.*)/i and $build_depends_indep = $1;
400
/^Build-Conflicts:\s*(.*)/i and $build_conflicts = $1;
401
/^Build-Conflicts-Indep:\s*(.*)/i and $build_conflicts_indep = $1;
404
merge_pkg_build_deps( $pkg, $build_depends,
405
$build_depends_indep,
407
$build_conflicts_indep );
412
if (!defined($dir) || $dir ne ".") {
413
if (-f "${pkgv}.dsc" && !verify_md5sums(dsc_md5sums("${pkgv}.dsc"))) {
414
print PLOG "${pkgv}.dsc exists in cwd\n";
421
print PLOG "Checking available source versions...\n";
422
my $command = get_apt_command("$conf::apt_cache", "-q showsrc $pkg", $main::username, 0);
423
my $pid = open3(\*main::DEVNULL, \*PIPE, '>&PLOG', "$command" );
425
print PLOG "Can't open pipe to $conf::apt_cache: $!\n";
434
$package = $1 if /^Package:\s+(\S+)\s*$/mi;
435
$ver = $1 if /^Version:\s+(\S+)\s*$/mi;
436
$tfile = $1 if /^Files:\s*\n((\s+.*\s*\n)+)/mi;
437
if (defined $package && defined $ver && defined $tfile) {
438
@{$entries{"$package $ver"}} = map { (split( /\s+/, $_ ))[3] }
439
split( "\n", $tfile );
446
if (! scalar keys %entries) {
447
print PLOG "$conf::apt_cache returned no information about $pkg source\n";
448
print PLOG "Are there any deb-src lines in your /etc/apt/sources.list?\n";
456
print PLOG "$conf::apt_cache failed\n";
460
if (!defined($entries{"$pkg $version"})) {
462
# try to update apt's cache if nothing found
463
run_apt_command("$conf::apt_get", "update >/dev/null", "root", 0);
467
print PLOG "Can't find source for $pkgv\n";
468
print PLOG "(only different version(s) ",
469
join( ", ", sort keys %entries), " found)\n"
474
print PLOG "Fetching source files...\n";
475
@made = @{$entries{"$pkg $version"}};
477
my $command2 = get_apt_command("$conf::apt_get", "--only-source -q -d source $pkg=$version 2>&1 </dev/null", $main::username, 0);
478
if (!open( PIPE, "$command2 |" )) {
479
print PLOG "Can't open pipe to $conf::apt_get: $!\n";
427
# TODO: Only call dsc_md5sums once.
428
my $md5sums = dsc_md5sums("${dir}/${dscbase}");
429
if (-f "${dir}/${dscbase}" && !$download && !verify_md5sums($md5sums)) {
430
print PLOG "${dscbase} exists in ${dir}; copying to chroot\n";
431
my @cwd_files = ("${dir}/${dscbase}");
432
push @cwd_files, keys %$md5sums;
433
foreach (@cwd_files) {
434
if (system ("cp '$_' '$main::chroot_build_dir'")) {
435
print PLOG "ERROR: Could not copy $_ to $main::chroot_build_dir \n";
480
436
return ("ERROR", @made);
438
push(@made, "${main::chroot_build_dir}/" . basename($_));
444
print PLOG "Checking available source versions...\n";
445
my $command = get_apt_command("$conf::apt_cache", "-q showsrc $pkg", $main::username, 0);
446
my $pid = open3(\*main::DEVNULL, \*PIPE, '>&PLOG', "$command" );
448
print PLOG "Can't open pipe to $conf::apt_cache: $!\n";
482
456
while( <PIPE> ) {
487
print PLOG "$conf::apt_get for sources failed\n";
488
return( "ERROR", @made );
490
# touch the downloaded files, otherwise buildd-watcher
491
# will complain that they're old :)
492
$$dscfile_ref = $dscfile = (grep { /\.dsc$/ } @made)[0];
457
$package = $1 if /^Package:\s+(\S+)\s*$/mi;
458
$ver = $1 if /^Version:\s+(\S+)\s*$/mi;
459
$tfile = $1 if /^Files:\s*\n((\s+.*\s*\n)+)/mi;
460
if (defined $package && defined $ver && defined $tfile) {
461
@{$entries{"$package $ver"}} = map { (split( /\s+/, $_ ))[3] }
462
split( "\n", $tfile );
469
if (! scalar keys %entries) {
470
print PLOG "$conf::apt_cache returned no information about $pkg source\n";
471
print PLOG "Are there any deb-src lines in your /etc/apt/sources.list?\n";
479
print PLOG "$conf::apt_cache failed\n";
483
if (!defined($entries{"$pkg $version"})) {
485
# try to update apt's cache if nothing found
486
run_apt_command("$conf::apt_get", "update >/dev/null", "root", 0);
490
print PLOG "Can't find source for ${pkg}_${version}\n";
491
print PLOG "(only different version(s) ",
492
join( ", ", sort keys %entries), " found)\n"
497
print PLOG "Fetching source files...\n";
498
foreach (@{$entries{"$pkg $version"}}) {
499
push(@made, "$main::chroot_build_dir/$_");
502
my $command2 = get_apt_command("$conf::apt_get", "--only-source -q -d source $pkg=$version 2>&1 </dev/null", $main::username, 0);
503
if (!open( PIPE, "$command2 |" )) {
504
print PLOG "Can't open pipe to $conf::apt_get: $!\n";
505
return ("ERROR", @made);
512
print PLOG "$conf::apt_get for sources failed\n";
513
return( "ERROR", @made );
515
# touch the downloaded files, otherwise buildd-watcher
516
# will complain that they're old :)
517
$$dscfile_ref = (grep { /\.dsc$/ } @made)[0];
496
if (verify_md5sums(dsc_md5sums($dscfile))) {
520
if (verify_md5sums(dsc_md5sums("${main::chroot_build_dir}/${dscbase}"))) {
497
521
print PLOG "FAILED [dsc verification]\n";
498
522
return( "ERROR", @made );
501
if (!open( F, "<$dscfile" )) {
502
print PLOG "Can't open $dscfile: $!\n";
525
if (!open( F, "<${main::chroot_build_dir}/${dscbase}" )) {
526
print PLOG "Can't open ${main::chroot_build_dir}/${dscbase}: $!\n";
503
527
return( "ERROR", @made );
619
627
print PLOG "FAILED [dpkg-source died]\n";
621
system ("rm -fr $tmpunpackdir") if -d $tmpunpackdir;
629
system ("rm -fr '$tmpunpackdir'") if -d $tmpunpackdir;
625
633
print PLOG "Couldn't find directory of $dsc in dpkg-source output\n";
626
system ("rm -fr $tmpunpackdir") if -d $tmpunpackdir;
634
system ("rm -fr '$tmpunpackdir'") if -d $tmpunpackdir;
629
$dir = "$main::chroot_build_dir$dir";
637
$dir = "$main::chroot_build_dir/$dir";
631
639
if (system( "chmod -R g-s,go+rX $dir" ) != 0) {
632
640
print PLOG "chmod -R g-s,go+rX $dir failed.\n";
636
if (@main::have_dsc_build_deps && !defined $main::build_source) {
637
my ($d, $di, $c, $ci) = @main::have_dsc_build_deps;
638
open( F, ">$dir/debian/.sbuild-build-deps" );
639
print F "Package: $pkg\n";
640
print F "Build-Depends: $d\n" if $d;
641
print F "Build-Depends-Indep: $di\n" if $di;
642
print F "Build-Conflicts: $c\n" if $c;
643
print F "Build-Conflicts-Indep: $ci\n" if $ci;
648
$dir = "$main::chroot_build_dir$dsc";
649
$do_apply_patches = 0;
645
$dir = "$main::chroot_build_dir/$dsc";
651
647
$main::pkg_fail_stage = "check-unpacked-version";
652
648
# check if the unpacked tree is really the version we need
793
781
my $binopt = $main::build_source ?
794
782
$conf::force_orig_source ? "-sa" : "" :
795
$main::build_arch_all ? "-b" : "-B";
783
$main::build_arch_all ? "-b" : "-B";
797
if ($main::chroot_dir) {
799
$bdir =~ s/^\Q$main::chroot_dir\E//;
800
if (-f "$main::chroot_dir/etc/ld.so.conf" &&
801
! -r "$main::chroot_dir/etc/ld.so.conf") {
802
run_command("chmod a+r /etc/ld.so.conf", "root", 1, 0);
803
print PLOG "ld.so.conf was not readable! Fixed.\n";
805
chdir( $main::cwd ); # schroot doesn't need to be in $dir, and this quells a harmless warning
806
my $buildcmd = "cd $bdir && PATH=$conf::path ".
807
(defined($main::ld_library_path) ?
808
"LD_LIBRARY_PATH=".$main::ld_library_path." " : "").
785
my $bdir = strip_chroot_path($dir);
786
if (-f "$main::chroot_dir/etc/ld.so.conf" &&
787
! -r "$main::chroot_dir/etc/ld.so.conf") {
788
run_command("chmod a+r /etc/ld.so.conf", "root", 1, 0);
789
print PLOG "ld.so.conf was not readable! Fixed.\n";
791
chdir( $main::cwd ); # schroot doesn't need to be in $dir, and this quells a harmless warning
792
my $buildcmd = "cd $bdir && PATH=$conf::path ".
793
(defined($main::ld_library_path) ?
794
"LD_LIBRARY_PATH=".$main::ld_library_path." " : "").
809
795
"exec $conf::build_env_cmnd dpkg-buildpackage $conf::pgp_options ".
810
"$binopt $main::dpkg_buildpackage_signopt -r$conf::fakeroot 2>&1";
811
exec_command($buildcmd, $main::username, 1, 0);
814
if (-f "/etc/ld.so.conf" && ! -r "/etc/ld.so.conf") {
815
run_command("chmod a+r /etc/ld.so.conf", "root", 0, 0);
816
print PLOG "ld.so.conf was not readable! Fixed.\n";
818
exec_command("$conf::build_env_cmnd dpkg-buildpackage $conf::pgp_options $binopt ".
819
"$main::dpkg_buildpackage_signopt -r$conf::fakeroot 2>&1", $main::username, 0, 1);
796
"$binopt $main::dpkg_buildpackage_signopt -r$conf::fakeroot 2>&1";
797
exec_command($buildcmd, $main::username, 1, 0);
822
799
$main::sub_task = "dpkg-buildpackage";
979
956
if ($conf::purge_build_directory eq "always" ||
980
957
($conf::purge_build_directory eq "successful" && $rv == 0)) {
981
958
print PLOG "Purging $dir\n";
983
$bdir =~ s/^\Q$main::chroot_dir\E//;
984
run_command("rm -rf $bdir", "root", 1, 0);
959
my $bdir = strip_chroot_path($dir);
960
run_command("rm -rf '$bdir'", "root", 1, 0);
987
963
print PLOG "-"x78, "\n";
988
964
return $rv == 0 ? 1 : 0;
995
$main::pkg_fail_stage = "apply-patch";
996
foreach $name ((map { $_->{'Package'} } @{$main::deps{$pkg}}),
997
@main::global_patches) {
998
if ($name =~ /^\*/ && exists $main::specials{$name}->{'patch'}) {
999
if (exists $main::specials{$name}->{'patchcond'}) {
1000
print "Testing condition for $name patch:\n"
1002
if (run_script("+e",$main::specials{$name}->{'patchcond'})!=0){
1003
print PLOG "Condition for $name patch not true -- ",
1004
"not applying\n" if $name !~ /^\*\*/;
1007
print PLOG "Condition for $name patch ok\n";
1009
print PLOG "Applying $name patch\n";
1010
$main::sub_pid = open( PIPE, "|-" );
1011
if (!defined $main::sub_pid) {
1012
print PLOG "Can't spawn patch: $! -- can't patch\n";
1015
if ($main::sub_pid == 0) {
1016
open( STDOUT, ">&PLOG" );
1017
open( STDERR, ">&PLOG" );
1018
exec_command("patch --batch --quiet -p1 -E -N --no-backup-if-mismatch", $main::username, 0, 0);
1020
$main::sub_task = "patch";
1022
print PIPE $main::specials{$name}->{'patch'};
1024
undef $main::sub_pid;
1025
if ($name !~ /^\*\*/ && $?) {
1026
print PLOG "FAILED [patch died]\n";
1034
967
sub analyze_fail_stage {
1035
968
my $pkgv = shift;
1219
sub unpack_special_source {
1224
foreach my $s (@s) {
1228
my $command = get_apt_command("$conf::apt_get", "--only-source -q -d source $s 2>&1 </dev/null", $main::username, 0);
1229
if (!open( PIPE, "$command |" )) {
1230
print PLOG "Can't open pipe to apt-get: $!\n";
1234
$dsc = "$1_$2.dsc" if /(\S+) (?:[^:]+:)?(\S+) \(dsc\)/;
1239
print PLOG "Apt-get of special unpack sources failed\n";
1242
push( @files, $dsc );
1243
if (!open( F, "<$dsc" )) {
1244
print PLOG "Can't open $dsc: $!\n";
1248
{ local($/); $dsctext = <F>; }
1251
$dsctext =~ /^Files:\s*\n((\s+.*\s*\n)+)/mi and $files = $1;
1252
push(@files, map { (split( /\s+/, $_ ))[3] } split( "\n", $files ));
1255
my $pid = open( PIPE, "-|" );
1256
if (!defined $pid) {
1257
print PLOG "Can't spawn dpkg-source: $! -- special unpack failed\n";
1261
if ($main::chroot_build_dir && !chdir( $main::chroot_build_dir )) {
1262
print PLOG "Couldn't cd to $main::chroot_build_dir: $! -- special unpack failed\n";
1265
exec_command("$conf::dpkg_source -sn -x $main::cwd/$dsc 2>&1", $main::username, 0);
1270
$dir = $1 if /^dpkg-source: extracting \S+ in (\S+)/;
1274
print PLOG "dpkg-source failure -- special unpack failed\n";
1277
push( @dirs, "$main::chroot_build_dir$dir" );
1285
system( "rm", "-rf", @dirs );
1289
1112
sub wait_for_srcdep_conflicts {
1290
1113
my @confl = @_;
1833
1626
return \%result;
1841
if ($conf::debug >= 2) {
1842
$x_mode = "set -x -v\n";
1844
elsif ($conf::debug) {
1845
print "Running script:\n ",
1846
join( "\n ", split( "\n", "set $e_mode\n$script" )), "\n";
1849
if (!defined $pid) {
1850
print PLOG "Can't fork: $! -- can't execute script\n";
1854
open( STDOUT, ">&PLOG" );
1855
open( STDERR, ">&PLOG" );
1856
if ($main::chroot_dir) {
1857
exec_command("cd /build/$main::username && set $e_mode && $x_mode$script", $main::username, 1, 0);
1859
exec_command("set $e_mode && $x_mode$script", $main::username, 0, 0);
1861
die "Can't exec /bin/sh: $!\n";
1864
print "Script return value: $?\n" if $conf::debug;
1874
open( F, $fname = "<$conf::source_dependencies-$main::distribution" )
1875
or open( F, $fname = "<$conf::source_dependencies" )
1877
$fname = substr( $fname, 1 );
1878
print "Reading source dependencies from $fname\n"
1882
next if /^\s*$/ || /^\s*#/;
1888
if (/^(\*\*?[\w\d.+-]+):\s*$/) {
1889
# is a special definition
1891
get_special( $fname, $sp, \*F );
1894
if (/^abbrev\s+([\w\d.+-]+)\s*=\s*(.*)\s*$/) {
1895
my ($abbrev, $def) = ($1, $2);
1896
parse_one_srcdep( $abbrev, $def, \%main::abbrevs );
1899
if (!/^([a-zA-Z\d.+-]+):\s*(.*)\s*$/) {
1900
warn "Syntax error in line $. in $fname\n";
1903
my( $pkg, $deps ) = ($1, $2);
1904
if (exists $main::deps{$pkg}) {
1905
warn "Ignoring double entry for package $pkg at line $. ".
1909
next if !isin( $pkg, @for_pkgs );
1910
parse_one_srcdep( $pkg, $deps, \%main::deps );
1914
foreach (@main::manual_srcdeps) {
1915
if (!/^([fa])([a-zA-Z\d.+-]+):\s*(.*)\s*$/) {
1916
warn "Syntax error in manual source dependency: ",
1917
substr( $_, 1 ), "\n";
1920
my ($mode, $pkg, $deps) = ($1, $2, $3);
1921
next if !isin( $pkg, @for_pkgs );
1922
@{$main::deps{$pkg}} = () if $mode eq 'f';
1923
parse_one_srcdep( $pkg, $deps, \%main::deps );
1926
# substitute abbrevs and warn about undefined special deps
1927
my( $pkg, $i, %warned );
1928
foreach $pkg (keys %main::deps) {
1930
my $dl = $main::deps{$pkg};
1931
for( $i = 0; $i < @$dl; ++$i ) {
1932
my $dep = $dl->[$i];
1933
my $name = $dep->{'Package'};
1934
if ($name =~ /^\*/) {
1935
if (!$warned{$name} && !exists $main::specials{$name}) {
1936
warn "Warning: $pkg: No definition for special ",
1937
"dependency $name!\n";
1941
elsif (defined $main::abbrevs{$name}) {
1942
my @l = @{$main::abbrevs{$name}};
1943
if (defined $dep->{'Alternatives'}) {
1944
warn "Warning: $pkg: abbrev $name not allowed ",
1948
if ($dep->{'Neg'}) {
1949
warn "Warning: $pkg: Negation of abbrev $name ",
1953
if ($dep->{'Rel'}) {
1954
warn "Warning: $pkg: No relation with abbrev $name ",
1958
if (my $ov = $dep->{'Override'}) {
1959
@l = map { my $x = copy($_);
1960
$x->{'Override'} = $ov; $x } @l;
1962
splice @$dl, $i, 1, @l;
1965
elsif (defined $dep->{'Alternatives'}) {
1967
foreach $alt (@{$dep->{'Alternatives'}}) {
1968
if (defined $main::abbrevs{$alt->{'Package'}}) {
1969
warn "Warning: $pkg: abbrev $alt->{'Package'} not ",
1970
"allowed in alternative\n";
2607
2195
print "Found ", ($neg ? "neg " : ""), "entry $pkg\n"
2608
2196
if $conf::debug;
2610
if ($pkg =~ /^\*/) {
2611
print PLOG "Build of $job by $user (pid $pid) has ",
2612
"installed the global special dependency $pkg.\n";
2198
if (isin( $pkg, @$to_inst, @$to_remove )) {
2199
print PLOG "Source dependency conflict with build of ",
2200
"$job by $user (pid $pid):\n";
2201
print PLOG " $job ", ($neg ? "conflicts with" : "needs"),
2203
print PLOG " $main::current_job wants to ",
2204
(isin( $pkg, @$to_inst ) ? "update" : "remove"),
2613
2206
$conflict_builds{$file} = 1;
2616
if (isin( $pkg, @$to_inst, @$to_remove )) {
2617
print PLOG "Source dependency conflict with build of ",
2618
"$job by $user (pid $pid):\n";
2619
print PLOG " $job ", ($neg ? "conflicts with" : "needs"),
2621
print PLOG " $main::current_job wants to ",
2622
(isin( $pkg, @$to_inst ) ? "update" : "remove"),
2624
$conflict_builds{$file} = 1;
2631
foreach (@$special) {
2632
if ($main::specials{$_}->{'global'} =~ /yes/m) {
2633
print PLOG "$main::current_job wants to apply global ",
2634
"special dependency $_\n",
2635
"Must wait for other builds to finish\n";
2637
$conflict_builds{$_} = 1;
2642
2212
my @conflict_builds = keys %conflict_builds;
2643
2213
if (@conflict_builds) {
2644
2214
print "Srcdep conflicts with: @conflict_builds\n" if $conf::debug;
3105
2670
return $chroot_arch;
2673
sub check_group_membership {
2674
my $user = getpwuid($<);
2675
my ($name,$passwd,$gid,$members) = getgrnam("sbuild");
2678
die "Group sbuild does not exist";
2682
foreach (split(' ', $members)) {
2683
$in_group = 1 if $_ eq $main::username;
2687
print STDERR "User $user is not a member of group $name\n";
2688
print STDERR "See \"User Setup\" in sbuild-setup(7)\n";
2695
sub dump_main_state {
2696
print STDERR Data::Dumper->Dump([\@main::additional_deps,
2698
$main::auto_giveback,
2699
$main::auto_giveback_host,
2700
$main::auto_giveback_socket,
2701
$main::auto_giveback_user,
2702
$main::auto_giveback_wb_user,
2707
$main::build_arch_all,
2708
$main::build_source,
2709
$main::build_start_time,
2711
$main::chroot_build_dir,
2718
$main::distribution,
2719
$main::dpkg_buildpackage_signopt,
2720
\@main::have_dsc_build_deps,
2724
$main::ld_library_path,
2725
$main::lock_interval,
2726
\@main::manual_srcdeps,
2727
$main::max_lock_trys,
2728
$main::override_distribution,
2729
$main::pkg_end_time,
2730
$main::pkg_fail_stage,
2731
$main::pkg_start_time,
2734
$main::srcdep_lock_cnt,
2735
$main::srcdep_lock_dir,
2740
\%main::this_watches,
2741
\@main::toolchain_pkgs,
2745
[qw(@main::additional_deps
2747
$main::auto_giveback
2748
$main::auto_giveback_host
2749
$main::auto_giveback_socket
2750
$main::auto_giveback_user
2751
$main::auto_giveback_wb_user
2756
$main::build_arch_all
2758
$main::build_start_time
2760
$main::chroot_build_dir
2762
$main::current_job $main::cwd
2763
$main::database %main::deps
2766
$main::dpkg_buildpackage_signopt
2767
@main::have_dsc_build_deps
2771
$main::ld_library_path
2772
$main::lock_interval
2773
@main::manual_srcdeps
2774
$main::max_lock_trys
2775
$main::override_distribution
2777
$main::pkg_fail_stage
2778
$main::pkg_start_time
2781
$main::srcdep_lock_cnt
2782
$main::srcdep_lock_dir
2788
@main::toolchain_pkgs