From d13404b6b3856c1c6635d5f08df3a2ca5141b2c5 Mon Sep 17 00:00:00 2001 From: Andreas Barth Date: Sun, 28 Feb 2010 19:29:44 +0000 Subject: [PATCH] factor out priority configuration, and allow per user and arch files --- bin/wanna-build | 38 +++++++++++++++++++++++--------------- etc/yaml/wanna-build.yaml | 22 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 15 deletions(-) create mode 100644 etc/yaml/wanna-build.yaml diff --git a/bin/wanna-build b/bin/wanna-build index 2541de5..27b732c 100755 --- a/bin/wanna-build +++ b/bin/wanna-build @@ -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 index 0000000..fcb2587 --- /dev/null +++ b/etc/yaml/wanna-build.yaml @@ -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 -- 2.39.2