X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bin%2Fwanna-build;h=b1a3a3a6f5190835a0b1fed74950ace244637de4;hb=189ef750ba7c3e2a9d4e1f00e5d20ca077c8b312;hp=6ced74391379af1458d42e39f9975ad658528c51;hpb=87f1c5534a52e69ac352e75fc0e6f1318257345f;p=wannabuild.git diff --git a/bin/wanna-build b/bin/wanna-build index 6ced743..b1a3a3a 100755 --- a/bin/wanna-build +++ b/bin/wanna-build @@ -239,8 +239,6 @@ while( @ARGV && $ARGV[0] =~ /^-/ ) { $op_mode = $category ? "set-failed" : "set-building" if !$op_mode; # default operation -$list_order = { "failed" => 'fPcpsn', "needs-build" => "CWn" }->{$list_state} if !$list_order and $list_state; -$list_order ||= 'PScpsn'; $distribution ||= "unstable"; die "Bad distribution '$distribution'\n" if !isin($distribution, keys %conf::distributions); @@ -318,6 +316,8 @@ foreach my $file (@files) { if (not $yamlmap) { die "FATAL: no configuration found\n"; } +$list_order = $yamlmap->{"list-order"}{$list_state} if !$list_order and $list_state; +$list_order ||= $yamlmap->{"list-order"}{'default'}; my $dbh; @@ -1850,19 +1850,21 @@ Within an format string, the following values are allowed (need to be preceded b This can be combined to e.g. wanna-build --format='wanna-build -A %a --give-back %p_%v' -A mipsel --list=failed -p Package name a Architecture -s Time in this state in full seconds since epoch -v Package version -S Package state -u Builder (e.g. buildd_mipsel-rem) -X the string normally between [], e.g. optional:out-of-date:calprio{61}:days{25} c section (e.g. libs or utils) -P previous state -E in case of Dep-Wait the packages being waited on, in case of Needs-Build the number in the queue D in case of BD-Uninstallable the reason for the uninstallability d distribution +E in case of Dep-Wait the packages being waited on, in case of Needs-Build the number in the queue +P previous state +p Package name +S Package state +s Time in this state in full seconds since epoch t time of state change +u Builder (e.g. buildd_mipsel-rem) +v Package version +V full Package version (i.e. with +b.., = %v%{+b}B%B +X the string normally between [], e.g. optional:out-of-date:calprio{61}:days{25} +F in case of Failed the fail reason %{Text}? print Text in case ? is not empty; ? is never printed %{!Text}? print Text in case ? is empty; ? is never printed @@ -1874,6 +1876,7 @@ Text could contain further %. To start with !, use %! 'a' => make_fmt( $arch, $pkg, $var), 's' => make_fmt( sub { return floor(str2time($pkg->{'state_change'})); }, $pkg, $var), 'v' => make_fmt( $pkg->{'version'}, $pkg, $var), + 'V' => make_fmt( sub { $pkg->{'binary_nmu_version'} ? $pkg->{'version'}."+b".$pkg->{'binary_nmu_version'} : $pkg->{'version'} }, $pkg, $var), 'S' => make_fmt( $pkg->{'state'}, $pkg, $var), 'u' => make_fmt( $pkg->{'builder'}, $pkg, $var), 'X' => make_fmt( sub { @@ -1890,6 +1893,11 @@ Text could contain further %. To start with !, use %! 'E' => make_fmt( sub { return $pkg->{'depends'} if $pkg->{'state'} eq "Dep-Wait"; return $var->{scnt}{'Needs-Build'} + 1 if $pkg->{'state'} eq 'Needs-Build'; return ""; }, $pkg, $var), + 'F' => make_fmt( sub { return "" unless $pkg->{'failed'}; + my $failed = $pkg->{'failed'}; + $failed =~ s/\\/\\\\/g; + return $pkg->{'package'}."#".$arch."-failure\n ". + join("\\0a",split("\n",$failed))."\\0a\n"; }, $pkg, $var), 'D' => make_fmt( sub { return "" unless $pkg->{'bd_problem'}; return $pkg->{'package'}."#".$arch."-bd-problem\n". join("\\0a",split("\n",$pkg->{'bd_problem'}))."\\0a\n"; }, $pkg, $var), @@ -1912,6 +1920,9 @@ sub list_packages { push @list, calculate_prio($db->{$name}); } + # filter components + @list = grep { my $i = $_->{'component'}; grep { $i eq $_ } split /[, ]+/, $yamlmap->{"restrict"}{'component'} } @list; + foreach $pkg (sort sort_list_func @list) { if ($printformat) { print print_format($printformat, $pkg, {'cnt' => $cnt, 'scnt' => \%scnt})."\n"; @@ -2460,7 +2471,7 @@ sub transactions_table_name { sub get_readonly_source_info { my $name = shift; # SELECT FLOOR(EXTRACT('epoch' FROM age(localtimestamp, '2010-01-22 23:45')) / 86400) -- change to that? - my $pkg = $dbh->selectrow_hashref('SELECT *, extract(days from date_trunc(\'days\', now() - state_change::timestamp)) as state_days FROM ' . + my $pkg = $dbh->selectrow_hashref('SELECT *, extract(days from date_trunc(\'days\', now() - state_change)) as state_days FROM ' . table_name() . ' WHERE package = ? AND distribution = ?', undef, $name, $distribution); return $pkg; @@ -2468,7 +2479,7 @@ sub get_readonly_source_info { sub get_source_info { my $name = shift; - my $pkg = $dbh->selectrow_hashref('SELECT *, extract(days from date_trunc(\'days\', now() - state_change::timestamp)) as state_days FROM ' . + my $pkg = $dbh->selectrow_hashref('SELECT *, extract(days from date_trunc(\'days\', now() - state_change)) as state_days FROM ' . table_name() . ' WHERE package = ? AND distribution = ?' . ' FOR UPDATE', undef, $name, $distribution); @@ -2479,8 +2490,8 @@ sub get_all_source_info { my %options = @_; my $q = 'SELECT *, '. - 'extract(days from date_trunc(\'days\', now() - state_change::timestamp)) as state_days, '. - 'date_trunc(\'seconds\', now() - state_change::timestamp) as state_time'. + 'extract(days from date_trunc(\'days\', now() - state_change)) as state_days, '. + 'date_trunc(\'seconds\', now() - state_change) as state_time'. ' FROM ' . table_name() . ' WHERE distribution = ? '; my @args = ($distribution); @@ -2503,12 +2514,12 @@ sub get_all_source_info { } if ($options{list_min_age} > 0) { - $q .= ' AND age(state_change::timestamp) > ? '; + $q .= ' AND age(state_change) > ? '; push @args, $options{list_min_age} . " days"; } if ($options{list_min_age} < 0) { - $q .= ' AND age(state_change::timestamp) < ? '; + $q .= ' AND age(state_change) < ? '; push @args, -$options{list_min_age} . " days"; }