use DBI;
use lib '/org/wanna-build/bin';
use lib '/org/wanna-build/lib';
+#use lib 'lib';
use WannaBuild;
use YAML::Tiny;
use Data::Dumper;
);
our $Pas = '/org/buildd.debian.org/etc/packages-arch-specific/Packages-arch-specific';
our $simulate = 0;
+our $simulate_edos = 0;
our $api = 0; # allow buildds to specify an different api
# global vars
"give-back-build" => "set-needs-build",
"dep-wait-build" => "set-dep-wait",
"forget-build" => "forget",
- "merge-quinn" => "merge-quinn",
- "merge-packages" => "merge-packages",
- "merge-sources" => "merge-sources",
"build-info" => "info" );
%short_category = ( u => "uploaded-fixed-pkg",
my %options =
(# flags
simulate => { flag => \$simulate }, # this is not supported by all operations (yet)!
+ "simulate-edos" => { flag => \$simulate_edos },
+ "simulate-all" => { code => sub { $simulate = 1; $simulate_edos = 1; } },
api => { arg => \$api, code => sub {
# official apis are numeric
die "$api isn't numeric" unless int($api) eq $api;
"dep-wait" => { mode => "set-dep-wait" },
forget => { mode => "forget" },
'forget-user' => { mode => 'forget-user' },
- "merge-quinn" => { mode => "merge-quinn" },
- "merge-partial-quinn" => { mode => "merge-partial-quinn" },
- "merge-packages" => { mode => "merge-packages" },
- "merge-sources" => { mode => "merge-sources" },
+ #"merge-quinn" => { mode => "merge-quinn" },
+ #"merge-partial-quinn" => { mode => "merge-partial-quinn" },
+ #"merge-packages" => { mode => "merge-packages" },
+ #"merge-sources" => { mode => "merge-sources" },
"pretend-avail" => { short => "p", mode => "pretend-avail" },
- "merge-all" => { mode => "merge-all" },
- "merge-all-secondary" => { mode => "merge-all-secondary" },
+ #"merge-all" => { mode => "merge-all" },
+ #"merge-all-secondary" => { mode => "merge-all-secondary" },
"merge-v3" => { mode => "merge-v3" },
info => { short => "i", mode => "info" },
'binNMU' => { mode => 'set-binary-nmu', arg => \$binNMUver,
}
my $schema_suffix = '';
-if (isin( $op_mode, qw(list info)) && $distribution !~ /security/ && !(not -t and $user =~ /-/) && !($privmode eq 'yes')) {
+if (isin( $op_mode, qw(list info)) && $distribution !~ /security/ && !(not -t and $user =~ /buildd-/) && !($privmode eq 'yes')) {
$dbh = DBI->connect("DBI:Pg:service=wanna-build") ||
die "FATAL: Cannot open database: $DBI::errstr\n";
$schema_suffix = '_public';
die "Unexpected operation mode $op_mode\n";
}
- if (not -t and $user =~ /-/) {
+ if (not -t and $user =~ /buildd-/) {
my $userinfo = get_user_info($user);
if (!defined $userinfo)
{
sub call_edos_depcheck {
+ return if $simulate_edos;
my $args = shift;
my $srcs = $args->{'srcs'};
my $key;
sub update_source_info {
my $pkg = shift;
+ print Dumper $pkg if $verbose and $simulate;
return if $simulate;
my $pkg2 = get_source_info($pkg->{'package'});
}
$pkg->{'package'} = $name;
}
- my $logstr = "merge-v3 $vars->{'time'} ".$name."_$pkgs->{'version'} ($vars->{'arch'}, $vars->{'suite'}, previous: $pkg->{'version'}, $pkg->{'state'}):";
+ my $logstr = "merge-v3 $vars->{'time'} ".$name."_$pkgs->{'version'}".
+ " ($vars->{'arch'}, $vars->{'suite'}, previous: $pkg->{'version'}".
+ ", $pkg->{'state'}):";
- if (isin($pkgs->{'status'}, qw (installed related)) && $pkg->{'binary_nmu_version'} && $pkgs->{'binnmu'} < $pkg->{'binary_nmu_version'}) {
+ if (isin($pkgs->{'status'}, qw (installed related)) && $pkg->{'binary_nmu_version'} && $pkgs->{'binnmu'} < int($pkg->{'binary_nmu_version'})) {
$pkgs->{'status'} = 'out-of-date';
}
if (isin($pkgs->{'status'}, qw (installed related))) {
if ($pkg->{'state'} ne 'Installed') {
change_state( \$pkg, 'Installed');
delete $pkg->{'depends'};
+ delete $pkg->{'binary_nmu_version'};
+ # delete $pkg->{'binary_nmu_changelog'}; - we keep the changelog for now in case there are bugs; activate in August 2010 or later
$change++;
}
- my $attrs = { 'version' => 'version', 'installed_version' => 'version', 'binary_nmu_version' => 'binnmu', 'section' => 'section', 'priority' => 'priority' };
+ my $attrs = { 'version' => 'version', 'installed_version' => 'version', 'section' => 'section', 'priority' => 'priority' };
foreach my $k (keys %$attrs) {
if ($pkg->{$k} ne $pkgs->{$attrs->{$k}}) {
$pkg->{$k} = $pkgs->{$attrs->{$k}};
$change++;
}
}
- if (isin($pkgs->{'status'}, qw (related))) {
+ if ($pkg->{'binary_nmu_version'}) { # cleanup only
+ delete $pkg->{'binary_nmu_version'};
+ $change++;
+ }
+ if (isin($pkgs->{'status'}, qw (related)) and $pkg->{'notes'} ne "related") {
$pkg->{'notes'} = "related";
$change++;
}
print "$logstr package in unknown state: $pkgs->{'status'}\n";
next SRCS;
}
- next if $pkgs->{'version'} eq $pkg->{'version'};
+ next if $pkgs->{'version'} eq $pkg->{'version'} and $pkgs->{'binnmu'} >= int($pkg->{'binary_nmu_version'});
+ next if $pkgs->{'version'} eq $pkg->{'version'} and !isin( $pkg->{'state'}, qw(Installed));
next if isin( $pkg->{'state'}, qw(Not-For-Us Failed-Removed));
if (defined( $pkg->{'state'} ) && isin( $pkg->{'state'}, qw(Building Built Build-Attempted))) {
$pkg->{'dep'} = $pkgs->{'depends'};
$pkg->{'conf'} = $pkgs->{'conflicts'};
delete $pkg->{'builder'};
- delete $pkg->{'binary_nmu_version'};
- delete $pkg->{'binary_nmu_changelog'};
+ delete $pkg->{'binary_nmu_version'} unless $pkgs->{'binnmu'};
+ delete $pkg->{'binary_nmu_changelog'} unless $pkgs->{'binnmu'};
log_ta( $pkg, "--merge-v3: needs-build" ) unless $simulate;
update_source_info($pkg) unless $simulate;
print "$logstr set to needs-builds\n" if $simulate || $verbose;