);
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)
{
$ok = 1;
my $pkg = get_source_info($name);
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
if (defined($pkg)) {
if ($pkg->{'state'} eq "Not-For-Us") {
$ok = 0;
print "$name: not registered yet.\n";
return;
}
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
if (($pkg->{'state'} ne "Building") && ($pkg->{'state'} ne "Build-Attempted")) {
print "$name: not taken for building (state is $pkg->{'state'}). ",
print "$name: not registered yet.\n";
return;
}
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
if (($pkg->{'state'} ne "Building") && ($pkg->{'state'} ne "Build-Attempted")) {
print "$name: not taken for building (state is $pkg->{'state'}). ",
print "$name: not registered yet.\n";
return;
}
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
if ($pkg->{'state'} eq "Uploaded" &&
pkg_version_eq($pkg,$version)) {
print "$name: not registered yet.\n";
return;
}
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
$state = $pkg->{'state'};
if ($state eq "Not-For-Us") {
my $name = shift;
my $version = shift;
my $pkg = get_source_info($name);
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
if ($pkg->{'state'} eq 'Not-For-Us') {
# reset Not-For-Us state in case it's called twice; this is
print "$name: not registered; can't give back.\n";
return;
}
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
$state = $pkg->{'state'};
if ($state eq "BD-Uninstallable") {
print "$name: not registered; can't register for binNMU.\n";
return;
}
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
my $db_ver = $pkg->{'version'};
if (!version_eq($db_ver, $version)) {
print "$name: not registered; can't set priority.\n";
return;
}
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
$state = $pkg->{'state'};
if ($state eq "Not-For-Us") {
print "$name: not registered yet.\n";
return;
}
+ $pkg->{'version'} =~ s/\+b[0-9]+$//;
$state = $pkg->{'state'};
if ($state eq "Dep-Wait") {
my $db = get_all_source_info(state => $state, user => $user, category => $category, list_min_age => $list_min_age);
foreach $name (keys %$db) {
next if $name =~ /^_/;
+ $db->{$name}->{'version'} =~ s/\+b[0-9]+$//;
push @list, calculate_prio($db->{$name});
}
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'}".
- ($pkgs->{'binnmu'} ? ";b".$pkgs->{'binnmu'} : "").
- "($vars->{'arch'}, $vars->{'suite'}, previous: $pkg->{'version'}".
- ($pkg->{'binary_nmu_version'} ? ";b".$pkg->{'binary_nmu_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 ($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;