]> git.donarmstrong.com Git - wannabuild.git/commitdiff
Merge branch 'master' of /org/buildd.debian.org/git/wanna-build
authorDebian wanna-build admins <debian-wb-team@lists.debian.org>
Sat, 26 Feb 2011 15:10:01 +0000 (15:10 +0000)
committerDebian wanna-build admins <debian-wb-team@lists.debian.org>
Sat, 26 Feb 2011 15:10:01 +0000 (15:10 +0000)
bin/keep-latest
bin/wanna-build
etc/cron/crontab
etc/yaml/wanna-build.yaml

index dedef69666bd6bc565d658ac42bc5df63878b2d9..ebc4fa9d7d048c7c03a002283ace2edf897cbdb4 100755 (executable)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use lib '/org/wanna-build/bin';
+use lib '/org/wanna-build/lib';
 use WannaBuild; # for version compare
 
 if (!@ARGV) {
index 5b3afb15c92017c2ab9c8f2e527a984b08cbad8c..96bd10f41e8fa85d4790491a853595db32a785b4 100755 (executable)
@@ -181,7 +181,7 @@ my %options =
         { short => "O", arg => \$list_order,
           code => sub {
                   die "Bad ordering character\n"
-                          if $list_order !~ /^[PSpsncbCW]+$/;
+                          if $list_order !~ /^[PSpsncbCWT]+$/;
           } },
         message        => { short => "m", arg => \$fail_reason },
         # database is deprecated, use arch instead.
@@ -269,6 +269,15 @@ END {
        }
 }
 
+if ($distribution eq 'any-priv') {
+    $privmode = 'yes';
+    $distribution = 'any';
+}
+if ($distribution eq 'any-unpriv') {
+    $privmode = 'no';
+    $distribution = 'any';
+}
+
 my $schema_suffix = '';
 $recorduser //= (not -t and $user =~ /^buildd_/);
 if (isin( $op_mode, qw(list info)) && $distribution !~ /security/ && !$recorduser && !($privmode eq 'yes')) {
@@ -305,14 +314,6 @@ $distribution = $distribution_aliases{$distribution} if (isin($distribution, key
 $op_mode = $category ? "set-failed" : "set-building"
        if !$op_mode; # default operation
 $distribution ||= "sid";
-if ($distribution eq 'any-priv') {
-    $privmode = 'yes';
-    $distribution = 'any';
-}
-if ($distribution eq 'any-unpriv') {
-    $privmode = 'no';
-    $distribution = 'any';
-}
 undef $distribution if $distribution eq 'any';
 if ($distribution) {
     my @dists = split(/[, ]+/, $distribution);
@@ -1900,9 +1901,9 @@ BEGIN {
 
 sub sort_list_func {
     my $map_funcs = {
-        'C' => ['<=>', sub { return (-1) * $_[0]->{'calprio'}; }],
-        'W' => ['<=>', sub { return (-1) * $_[0]->{'state_days'}; }],
-        'P' => ['<=>', sub { return (-1) * $_[0]->{'buildpri'}; }],
+        'C' => ['<->', sub { return $_[0]->{'calprio'}; }],
+        'W' => ['<->', sub { return $_[0]->{'state_days'}; }],
+        'P' => ['<->', sub { return $_[0]->{'buildpri'}; }],
         'p' => ['<=>', sub { return $prioval{$_[0]->{'priority'}}; }],
         's' => ['<=>', sub { return $sectval{$_[0]->{'section'}}; }],
         'n' => ['cmp', sub { return $_[0]->{'package'}; }],
@@ -1910,10 +1911,12 @@ sub sort_list_func {
         'c' => ['<=>', sub { return ($_[0]->{'notes'} =~ /^(out-of-date|partial)/) ? 0: ($_[0]->{'notes'} =~ /^uncompiled/) ? 2 : 1; }],
         'f' => ['<=>', sub { return $catval{ $_[0]->{'failed_category'} ? $_[0]->{'failed_category'}: "none" }; }],
         'S' => ['<=>', sub { return $prioval{$_[0]->{'priority'}} > $prioval{'standard'}; }],
+        'T' => ['<->', sub { return $_[0]->{'state_time'} % 86400;} ], # Fractions of a day
     };
 
        foreach my $letter (split( //, $list_order )) {
             my $r;
+            $r = &{$map_funcs->{$letter}[1]}($b) <=> &{$map_funcs->{$letter}[1]}($a) if $map_funcs->{$letter}[0] eq '<->';
             $r = &{$map_funcs->{$letter}[1]}($a) <=> &{$map_funcs->{$letter}[1]}($b) if $map_funcs->{$letter}[0] eq '<=>';
             $r = &{$map_funcs->{$letter}[1]}($a) cmp &{$map_funcs->{$letter}[1]}($b) if $map_funcs->{$letter}[0] eq 'cmp';
             return $r if $r != 0;
@@ -1938,6 +1941,13 @@ sub calculate_prio {
        my $scale = $priomap->{'waitingdays'}->{'scale'} || 1;
        $pkg->{'calprio'} += $days * $scale;
 
+        my $btime = max($pkg->{'anytime'}, $pkg->{'successtime'});
+        my $bhours = defined($btime) ? int($btime/3600) : ($priomap->{'buildhours'}->{'default'} || 2);
+       $bhours = $priomap->{'buildhours'}->{'min'} if $priomap->{'buildhours'}->{'min'} and $bhours < $priomap->{'buildhours'}->{'min'};
+       $bhours = $priomap->{'buildhours'}->{'max'} if $priomap->{'buildhours'}->{'max'} and $bhours > $priomap->{'buildhours'}->{'max'};
+       $scale = $priomap->{'buildhours'}->{'scale'} || 1;
+        $pkg->{'calprio'} -= $bhours * $scale;
+
        $pkg->{'calprio'} += $pkg->{'permbuildpri'} if  $pkg->{'permbuildpri'};
        $pkg->{'calprio'} += $pkg->{'buildpri'} if  $pkg->{'buildpri'};
 
@@ -2153,7 +2163,7 @@ sub info_packages {
                'failed_category' => 'Failed-Category', 'notes' => 'Notes',
                'distribution' => 'Distribution', 'old_failed' => 'Old-Failed',
                'permbuildpri' => 'PermBuildPri', 'rel' => 'Rel',
-               'calprio' => 'CalculatedPri', 'state_days' => 'State-Days',
+               'calprio' => 'CalculatedPri', 'state_days' => 'State-Days', 'state_time' => 'State-Time',
                 'successtime' => 'Success-build-time',
                 'anytime' => 'Build-time',
                 'extra_depends' => 'Extra-Dependencies',
@@ -2779,7 +2789,7 @@ sub pkg_history_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 $q = "SELECT rel, priority, state_change, permbuildpri, section, buildpri, failed, state, binary_nmu_changelog, bd_problem, version, package, distribution, installed_version, notes, failed_category, builder, old_failed, previous_state, binary_nmu_version, depends, extract(days from date_trunc('days', now() - state_change)) as state_days"
+        my $q = "SELECT rel, priority, state_change, permbuildpri, section, buildpri, failed, state, binary_nmu_changelog, bd_problem, version, package, distribution, installed_version, notes, failed_category, builder, old_failed, previous_state, binary_nmu_version, depends, extract(days from date_trunc('days', now() - state_change)) as state_days, floor(extract(epoch from now()) - extract(epoch from state_change)) as state_time"
             . ", (SELECT max(build_time) FROM ".pkg_history_table_name()." WHERE pkg_history.package = packages.package AND pkg_history.distribution = packages.distribution AND result = 'successful') AS successtime"
             . ", (SELECT max(build_time) FROM ".pkg_history_table_name()." WHERE pkg_history.package = packages.package AND pkg_history.distribution = packages.distribution ) AS anytime"
             . ", extra_depends, extra_conflicts"
@@ -2793,7 +2803,7 @@ sub get_readonly_source_info {
 sub get_source_info {
        my $name = shift;
         return get_readonly_source_info($name) if $simulate;
-       my $pkg = $dbh->selectrow_hashref('SELECT *, extract(days from date_trunc(\'days\', now() - state_change)) as state_days FROM ' . 
+       my $pkg = $dbh->selectrow_hashref('SELECT *, extract(days from date_trunc(\'days\', now() - state_change)) as state_days, floor(extract(epoch from now()) - extract(epoch from state_change)) as state_time FROM ' . 
                table_name() . ' WHERE package = ? AND distribution = ?' .
                ' FOR UPDATE',
                undef, $name, $distribution);
@@ -2803,7 +2813,7 @@ sub get_source_info {
 sub get_all_source_info {
        my %options = @_;
 
-        my $q = "SELECT rel, priority, state_change, permbuildpri, section, buildpri, failed, state, binary_nmu_changelog, bd_problem, version, package, distribution, installed_version, notes, failed_category, builder, old_failed, previous_state, binary_nmu_version, depends, extract(days from date_trunc('days', now() - state_change)) as state_days"
+        my $q = "SELECT rel, priority, state_change, permbuildpri, section, buildpri, failed, state, binary_nmu_changelog, bd_problem, version, package, distribution, installed_version, notes, failed_category, builder, old_failed, previous_state, binary_nmu_version, depends, extract(days from date_trunc('days', now() - state_change)) as state_days, floor(extract(epoch from now()) - extract(epoch from state_change)) as state_time"
 #            . ", (SELECT max(build_time) FROM ".pkg_history_table_name()." WHERE pkg_history.package = packages.package AND pkg_history.distribution = packages.distribution AND result = 'successful') AS successtime"
 #            . ", (SELECT max(build_time) FROM ".pkg_history_table_name()." WHERE pkg_history.package = packages.package AND pkg_history.distribution = packages.distribution ) AS anytime"
             . ", successtime.build_time as successtime, anytime.build_time as anytime, extra_depends, extra_conflicts"
index 24f92c23aae116dadfe17c07194bdfa35ae9c413..ed8e494985ca1eee72f849367941c095a6eb6c8e 100644 (file)
@@ -15,8 +15,6 @@ PATH=/bin:/usr/bin:/usr/local/bin:/srv/wanna-build/bin:/srv/buildd.debian.org/bi
 
 4  0 * * *       /srv/buildd.debian.org/mbox/fix-up-permissions
 
-*/15 * * * *   TZ=UTC /srv/buildd.debian.org/web/status/mkstats.aba
-
 0 0 * * *      /usr/sbin/logrotate /srv/wanna-build/etc/logrotate.conf -s /srv/wanna-build/etc/logrotate.status
 
 */15 * * * *   /srv/buildd.debian.org/wbpy/run-mqueue
index 9d5f24d15ba323c79277c722ab9fbf8a314a76c1..448cfc5fe373304087278d35da00c7b2397da34c 100644 (file)
@@ -20,10 +20,14 @@ priority:
         min: 0
         max: 6
         scale: 2
+    buildhours:
+        default: 2
+        min: 0
+        max: 15
 list-order:
     default: PScpsn
     failed: fPcpsn
-    needs-build: CWn
+    needs-build: CWTn
     building: bn
 restrict:
     component: main contrib