]> git.donarmstrong.com Git - wannabuild.git/commitdiff
factor out priority configuration, and allow per user and arch files
authorAndreas Barth <aba@not.so.argh.org>
Sun, 28 Feb 2010 19:29:44 +0000 (19:29 +0000)
committerAndreas Barth <aba@not.so.argh.org>
Sun, 28 Feb 2010 19:29:44 +0000 (19:29 +0000)
bin/wanna-build
etc/yaml/wanna-build.yaml [new file with mode: 0644]

index 2541de521fdbda4c0088955ec5fc2875cbc32451..27b732c89f79f014ca910b5807c32b0693fd5855 100755 (executable)
@@ -41,6 +41,9 @@ use File::Copy;
 use DBI;
 use lib '/org/wanna-build/bin';
 use WannaBuild;
+use YAML::Tiny;
+use Data::Dumper;
+use Hash::Merge qw ( merge );
 
 our ($verbose, $mail_logs, $list_order, $list_state,
     $curr_date, $op_mode, $user, $real_user, $distribution,
@@ -53,6 +56,7 @@ our ($verbose, $mail_logs, $list_order, $list_state,
 
 # global vars
 $ENV{'PATH'} = "/bin:/usr/bin:/usr/local/bin:/org/wanna-build/bin/";
+$ENV{'LC_ALL'} = 'C';
 $verbose = 0;
 $mail_logs = "";
 @curr_time = gmtime;
@@ -294,6 +298,22 @@ if (!$fail_reason) {
        }
 }
 
+my $yamlmap = ();
+my $yamldir = "/org/wanna-build/etc/yaml";
+my @files = ('wanna-build.yaml');
+if ($user =~ /(buildd.*)-/) { push (@files, "$1.yaml") };
+push ( @files, "$user.yaml");
+foreach my $file (@files) {
+       if ($verbose >= 2) { print "Trying to read $file ...\n"; }
+       next unless -f $yamldir."/".$file;
+       if ($verbose >= 2) { print "Read $file ...\n"; }
+       my $m = YAML::Tiny->read( $yamldir."/".$file )->[0];
+       $yamlmap = merge($m, $yamlmap);
+}
+if (not $yamlmap) {
+       die "FATAL: no configuration found\n";
+}
+
 my $dbh;
 
 END {
@@ -1812,23 +1832,11 @@ sub sort_list_func {
 }
 
 sub calculate_prio {
-######################
-# priority: required = 50, important = 40, standard = 30, optional = 5
-# section: libs = 4, devel = 2
-# component: contrib = -10, non-free = -20
-# never built = -20
-# max(floor(waitingdays),6)
-
-       my $priomap;
-       $priomap->{'priority'} = { 'required' => 50, 'important' => 40, 'standard' => 30, 'optional' => 5 };
-       $priomap->{'section'} = { 'libs' => 4, 'devel' => 2 };
-       $priomap->{'component'} = { 'contrib' => -10, 'non-free' => -20 };
-       $priomap->{'notes'} = { 'uncompiled' => 20, 'out-of-date' => 40, 'partial' => 40 };
-       $priomap->{'waitingdays'} = { 'min' => 0, 'max' => 6, scale => 2 };
+       my $priomap = $yamlmap->{priority};
        my $pkg = shift;
        $pkg->{'calprio'} = 0;
-       foreach my $k (keys %$priomap) {
-               $pkg->{'calprio'} += $priomap->{$k}{$pkg->{$k}} if $pkg->{$k} and $priomap->{$k}{$pkg->{$k}};
+       foreach my $k (keys %{$priomap->{keys}}) {
+               $pkg->{'calprio'} += $priomap->{keys}->{$k}{$pkg->{$k}} if $pkg->{$k} and $priomap->{keys}->{$k}{$pkg->{$k}};
        }
 
        my $days = $pkg->{'state_days'};
diff --git a/etc/yaml/wanna-build.yaml b/etc/yaml/wanna-build.yaml
new file mode 100644 (file)
index 0000000..fcb2587
--- /dev/null
@@ -0,0 +1,22 @@
+---
+priority:
+    keys:
+        priority: 
+            required: 50
+            important: 40
+            standard: 30
+            optional: 5
+        section:
+            libs: 4
+            devel: 2
+        component:
+            contrib: -10
+            non-free: -20
+        notes:
+            uncompiled: 20
+            out-of-date: 40
+            partial: 40
+    waitingdays:
+        min: 0
+        max: 6
+        scale: 2