# 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>
+# Copyright (C) 2010 Andreas Barth <aba@not.so.argh.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
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;
$$srcs->{$k} = $pkg;
}
}
- parse_all_v3($$srcs);
+ parse_all_v3($$srcs, {'arch' => $arch, 'suite' => $distribution, 'time' => $curr_date});
@bpkgs = @ipkgs unless @bpkgs;
- call_edos_depcheck( {'arch' => $arch, 'pkgs' => @bpkgs, 'srcs' => $$srcs, 'depwait' => 1 });
+ call_edos_depcheck( {'arch' => $arch, 'pkgs' => \@bpkgs, 'srcs' => $$srcs, 'depwait' => 1 });
last SWITCH;
};
/^import/ && do {
my $sourceprefix="source---";
my $architecture=$args->{'arch'};
my $edosoptions = "-failures -explain -quiet";
- my @packagefiles = $args->{'pkgs'};
+ my $packagefiles = $args->{'pkgs'};
my $sourcesfile = $args->{'src'};
my $packagearch="";
- foreach my $packagefile (@packagefiles) {
+ foreach my $packagefile (@$packagefiles) {
open(P,$packagefile);
while (<P>) {
next unless /^Architecture/;
}
}
- print "calling: edos-debcheck $edosoptions < $sourcesfile ".join('', map {" '-base FILE' ".$_ } @packagefiles)."\n";
+ print "calling: edos-debcheck $edosoptions < $sourcesfile ".join('', map {" '-base FILE' ".$_ } @$packagefiles)."\n";
open(RESULT, '-|',
- "edos-debcheck $edosoptions < $sourcesfile ".join('', map {" '-base FILE' ".$_ } @packagefiles));
+ "edos-debcheck $edosoptions < $sourcesfile ".join('', map {" '-base FILE' ".$_ } @$packagefiles));
my $explanation="";
my $result={};
sub parse_all_v3() {
my $srcs = shift;
+ my $vars = shift;
my $db = get_all_source_info();
my $binary = $srcs->{'_binary'};
unless ($pkg) {
next SRCS if $pkgs->{'status'} eq 'not-for-us';
- my $logstr = "merge-v3 ".$name." ($arch):";
+ my $logstr = "merge-v3 $vars->{'time'} ".$name."_$pkgs->{'version'} ($vars->{'arch'}, $vars->{'suite'}):";
# does at least one binary exist in the database and is more recent - if so, we're probably just outdated, ignore the source package
for my $bin (@{$pkgs->{'binary'}}) {
- if ($binary->{$bin} and vercmp($pkgs->{'version'}, $binary->{$bin}) < 0) {
+ if ($binary->{$bin} and vercmp($pkgs->{'version'}, $binary->{$bin}->{'version'}) < 0) {
print "$logstr skipped because binaries (assumed to be) overwritten\n" if $verbose || $simulate;
next SRCS;
}
}
$pkg->{'package'} = $name;
}
- my $logstr = "merge-v3 ".$name."_$pkgs->{'version'} ($arch, previous-state: $pkg->{'state'}):";
+ 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'} : "").
+ ", $pkg->{'state'}):";
if (isin($pkgs->{'status'}, qw (installed related)) && $pkg->{'binary_nmu_version'} && $pkgs->{'binnmu'} < $pkg->{'binary_nmu_version'}) {
$pkgs->{'status'} = 'out-of-date';
}
if (isin($pkgs->{'status'}, qw (installed related))) {
+ my $change = 0;
if ($pkg->{'state'} ne 'Installed') {
change_state( \$pkg, 'Installed');
- $pkg->{'version'} = $pkgs->{'version'};
- $pkg->{'installed_version'} = $pkgs->{'version'};
- $pkg->{'binary_nmu_version'} = $pkgs->{'binnmu'};
- $pkg->{'section'} = $pkgs->{'section'};
- $pkg->{'priority'} = $pkgs->{'priority'};
- if (isin($pkgs->{'status'}, qw (related))) {
- $pkg->{'notes'} = "related";
+ delete $pkg->{'depends'};
+ $change++;
+ }
+ my $attrs = { 'version' => 'version', 'installed_version' => 'version', 'binary_nmu_version' => 'binnmu', '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)) and $pkg->{'notes'} ne "related") {
+ $pkg->{'notes'} = "related";
+ $change++;
+ }
+ if ($change) {
print "$logstr set to installed/".$pkg->{'notes'}."\n" if $verbose || $simulate;
log_ta( $pkg, "--merge-v3: installed" ) unless $simulate;
update_source_info($pkg) unless $simulate;
next SRCS;
}
next if $pkgs->{'version'} eq $pkg->{'version'};
+ next if isin( $pkg->{'state'}, qw(Not-For-Us Failed-Removed));
if (defined( $pkg->{'state'} ) && isin( $pkg->{'state'}, qw(Building Built Build-Attempted))) {
send_mail( $pkg->{'builder'},
foreach my $name (keys %$db) {
next if $srcs->{$name};
my $pkg = $db->{$name};
- my $logstr = "merge-v3 ".$name."_$pkg->{'version'} ($arch, previous-state: $pkg->{'state'}):";
+ my $logstr = "merge-v3 $vars->{'time'} ".$name."_$pkg->{'version'} ($vars->{'arch'}, $vars->{'suite'}, previous: $pkg->{'state'}):";
# package disappeared - delete
change_state( \$pkg, 'deleted' );
log_ta( $pkg, "--merge-v3: deleted" ) unless $simulate;