# wanna-build: coordination script for Debian buildds
# Copyright (C) 1998 Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>
# Copyright (C) 2005-2008 Ryan Murray <rmurray@debian.org>
# wanna-build: coordination script for Debian buildds
# Copyright (C) 1998 Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>
# Copyright (C) 2005-2008 Ryan Murray <rmurray@debian.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
$short_date, $list_min_age, $list_max_age, $dbbase, @curr_time,
$build_priority, %new_vers, $binNMUver, %merge_srcvers, %merge_binsrc,
$printformat, $ownprintformat, $privmode, $extra_depends, $extra_conflicts,
$short_date, $list_min_age, $list_max_age, $dbbase, @curr_time,
$build_priority, %new_vers, $binNMUver, %merge_srcvers, %merge_binsrc,
$printformat, $ownprintformat, $privmode, $extra_depends, $extra_conflicts,
# this is not supported by all operations (yet)!
'simulate' => \$simulate,
'simulate-edos' => \$simulate_edos,
# this is not supported by all operations (yet)!
'simulate' => \$simulate,
'simulate-edos' => \$simulate_edos,
when ('s') { $distribution = 'stable'; }
when ('t') { $distribution = 'testing'; }
when ('u') { $distribution = 'unstable'; }
when ('s') { $distribution = 'stable'; }
when ('t') { $distribution = 'testing'; }
when ('u') { $distribution = 'unstable'; }
+ # If they didn't specify an arch, try to get it from database name which
+ # is in the form of $arch/build-db
+ # This is for backwards compatibity with older versions that didn't
+ # specify the arch yet.
'format=s' => \$printformat,
'own-format=s' => \$ownprintformat,
'Pas=s' => \$Pas,
'format=s' => \$printformat,
'own-format=s' => \$ownprintformat,
'Pas=s' => \$Pas,
'manual-edit' => \&_set_mode,
'distribution-architectures' => \&_set_mode,
'distribution-aliases' => \&_set_mode,
'manual-edit' => \&_set_mode,
'distribution-architectures' => \&_set_mode,
'distribution-aliases' => \&_set_mode,
-) or usage();
-$list_min_age = -1 * $list_max_age if $list_max_age;
+
+ 'ssh-wrapper' => \$sshwrapper,
+ 'recorduser' => \$recorduser,
+ );
+
+GetOptions(@wannabuildoptions) or usage();
if ((isin( $op_mode, qw(list info distribution-architectures distribution-aliases)) && $distribution !~ /security/ && !$recorduser && !($privmode)) || $simulate) {
$dbh = DBI->connect("DBI:Pg:service=wanna-build") ||
die "FATAL: Cannot open database: $DBI::errstr\n";
if ((isin( $op_mode, qw(list info distribution-architectures distribution-aliases)) && $distribution !~ /security/ && !$recorduser && !($privmode)) || $simulate) {
$dbh = DBI->connect("DBI:Pg:service=wanna-build") ||
die "FATAL: Cannot open database: $DBI::errstr\n";
-# If they didn't specify an arch, try to get it from database name which
-# is in the form of $arch/build-db
-# This is for backwards compatibity with older versions that didn't
-# specify the arch yet.
-$conf::dbbase =~ m#^([^/]+)#;
-$arch ||= $1;
-
-process();
-
-$dbh->commit;
-$dbh->disconnect;
-
-if ($mail_logs && $conf::log_mail) {
- send_mail( $conf::log_mail,
- "wanna-build $distribution state changes $curr_date",
- "State changes at $curr_date for distribution ".
- "$distribution:\n\n$mail_logs\n" );
+if (isin($op_mode, qw<forget-user merge-v3 import>) && defined @conf::admin_users && !isin( $real_user, @conf::admin_users) && !$simulate ) {
+ die "This operation is restricted to admin users";
+}
+if (!isin($op_mode, qw<distribution-architectures distribution-aliases>)) {
+ die "need an architecture" unless $arch;
# call with installed-packages+ . installed-sources+ [ . available-for-build-packages* [ . consider-as-installed-source* ] ]
# in case available-for-build-packages is not specified, installed-packages are used
lock_table() unless $simulate;
# call with installed-packages+ . installed-sources+ [ . available-for-build-packages* [ . consider-as-installed-source* ] ]
# in case available-for-build-packages is not specified, installed-packages are used
lock_table() unless $simulate;
- die "This operation is restricted to admin users\n"
- if (defined @conf::admin_users and
- !isin( $real_user, @conf::admin_users));
- $dbh->do("DELETE from " . table_name() .
- " WHERE distribution = ?", undef,
- $distribution)
+ $dbh->do("DELETE from ".table_name()." WHERE distribution = ?", undef, $distribution)
+
+
+$dbh->commit unless $simulate;
+$dbh->disconnect;
+
+if ($mail_logs && $conf::log_mail) {
+ send_mail( $conf::log_mail,
+ "wanna-build $distribution state changes $curr_date",
+ "State changes at $curr_date for distribution ".
+ "$distribution:\n\n$mail_logs\n" );
- if ($pkg->{'state'} eq "Not-For-Us") {
- $ok = 0;
- $reason = "not suitable for this architecture";
- }
- elsif ($pkg->{'state'} =~ /^Dep-Wait/) {
- $ok = 0;
- $reason = "not all source dependencies available yet";
- }
- elsif ($pkg->{'state'} =~ /^BD-Uninstallable/) {
+ my $pkgnack = {
+ 'Not-For-Us' => 'not suitable for this architecture',
+ 'Dep-Wait' => 'not all source dependencies available yet',
+ 'BD-Uninstallable' => 'source dependencies are not installable',
+ };
+ if ($pkgnack->{$pkg->{'state'}}) {
}
elsif ($pkg->{'state'} eq "Uploaded" &&
(version_lesseq($version, $pkg->{'version'}))) {
}
elsif ($pkg->{'state'} eq "Uploaded" &&
(version_lesseq($version, $pkg->{'version'}))) {
# If such a "binary" package is installable, the corresponding source package is buildable.
print $SOURCES "Package: source---$key\n";
print $SOURCES "Version: $pkg->{'version'}\n";
# If such a "binary" package is installable, the corresponding source package is buildable.
print $SOURCES "Package: source---$key\n";
print $SOURCES "Version: $pkg->{'version'}\n";
- my $t = &filterarch($srcs->{$key}{'dep'} || $srcs->{$key}{'depends'}, $arch);
- my $tt = &filterarch($pkg->{'extra_depends'}, $arch);
+ my $t = &filterarch($srcs->{$key}{'dep'} || $srcs->{$key}{'depends'}, $args->{'arch'});
+ my $tt = &filterarch($pkg->{'extra_depends'}, $args->{'arch'});
$t = $t ? ($tt ? "$t, $tt" : $t) : $tt;
print $SOURCES "Depends: $t\n" if $t;
$t = $t ? ($tt ? "$t, $tt" : $t) : $tt;
print $SOURCES "Depends: $t\n" if $t;
- my $u = &filterarch($srcs->{$key}{'conf'} || $srcs->{$key}{'conflicts'}, $arch);
- my $uu = &filterarch($pkg->{'extra_conflicts'}, $arch);
+ my $u = &filterarch($srcs->{$key}{'conf'} || $srcs->{$key}{'conflicts'}, $args->{'arch'});
+ my $uu = &filterarch($pkg->{'extra_conflicts'}, $args->{'arch'});
$u = $u ? ($uu ? "$u, $uu" : $u) : $uu;
print $SOURCES "Conflicts: $u\n" if $u;
print $SOURCES "Architecture: all\n";
$u = $u ? ($uu ? "$u, $uu" : $u) : $uu;
print $SOURCES "Conflicts: $u\n" if $u;
print $SOURCES "Architecture: all\n";