X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bin%2Fwanna-build;h=4a528a3d9ac15c80bdb15027dda424c505bdd3f9;hb=30ab6ba69dbe3cc3955f5e89995870d0e9da649a;hp=5b6fd6784b3ed1a748b5f189dad5a8eebe918a3e;hpb=7b763e902e29b81ecf3ed75560ec428f8814325b;p=wannabuild.git diff --git a/bin/wanna-build b/bin/wanna-build index 5b6fd67..4a528a3 100755 --- a/bin/wanna-build +++ b/bin/wanna-build @@ -25,7 +25,7 @@ $basedir ||= "/var/lib/debbuild"; $dbbase ||= "build-db"; $transactlog ||= "transactions.log"; $mailprog ||= "/usr/sbin/sendmail"; -require "/etc/wanna-build.conf"; +require "/org/wanna-build/etc/wanna-build.conf"; die "$conf::basedir is not a directory\n" if ! -d $conf::basedir; die "dbbase is empty\n" if ! $dbbase; die "transactlog is empty\n" if ! $transactlog; @@ -39,6 +39,7 @@ use POSIX; use FileHandle; use File::Copy; use DBI; +use lib '/org/wanna-build/bin'; use WannaBuild; our ($verbose, $mail_logs, $list_order, $list_state, @@ -301,8 +302,18 @@ END { } } -$dbh = DBI->connect("DBI:Pg:database=wanna-build") || - die "FATAL: Cannot open database: $DBI::errstr\n"; +my $schema_suffix = ''; +# TODO: Base this on something else, like an option that is passed. +if ($real_user eq 'nobody') { + $dbh = DBI->connect("DBI:Pg:service=wanna-build") || + die "FATAL: Cannot open database: $DBI::errstr\n"; + $schema_suffix = '_public'; +} +else +{ + $dbh = DBI->connect("DBI:Pg:service=wanna-build-privileged") || + die "FATAL: Cannot open database: $DBI::errstr\n"; +} # TODO: This shouldn't be needed, file a bug. $dbh->{pg_server_prepare} = 0; @@ -927,7 +938,8 @@ sub add_one_needsbuild { } } if (defined ($pkg->{'builder'}) && $user ne $pkg->{'builder'} && - !($pkg->{'builder'} =~ /^(\w+)-\w+/ && $1 eq $user)) { + !($pkg->{'builder'} =~ /^(\w+)-\w+/ && $1 eq $user) && + !$opt_override) { print "$name: not taken by you, but by ". "$pkg->{'builder'}. Skipping.\n"; return; @@ -1758,9 +1770,9 @@ sub list_packages { next if $category && $pkg->{'state'} eq "Failed" && $pkg->{'failed_category'} ne $category; next if ($list_min_age > 0 && - ($ctime-parse_date($pkg->{'State-Change'})) < $list_min_age)|| + ($ctime-parse_date($pkg->{'state_change'})) < $list_min_age)|| ($list_min_age < 0 && - ($ctime-parse_date($pkg->{'State-Change'})) > -$list_min_age); + ($ctime-parse_date($pkg->{'state_change'})) > -$list_min_age); push( @list, $pkg ); } @@ -1790,7 +1802,7 @@ sub list_packages { join("\n ",split("\n",$pkg->{'bd_problem'})), "\n" if $pkg->{'state'} eq "BD-Uninstallable"; print " Previous state was $pkg->{'previous_state'} until ", - "$pkg->{'State-Change'}\n" + "$pkg->{'state_change'}\n" if $verbose && $pkg->{'previous_state'}; print " No previous state recorded\n" if $verbose && !$pkg->{'previous_state'}; @@ -1833,15 +1845,39 @@ sub info_packages { chomp( $val ); $val = "\n$val" if isin( $key, qw(Failed Old-Failed)); $val =~ s/\n/\n /g; - printf " %-20s: %s\n", $key, $val; + my $print_key = $key; + $print_key = 'Package' if ($key eq 'package'); + $print_key = 'Version' if ($key eq 'version'); + $print_key = 'Builder' if ($key eq 'builder'); + $print_key = 'State' if ($key eq 'state'); + $print_key = 'Section' if ($key eq 'section'); + $print_key = 'Priority' if ($key eq 'priority'); + $print_key = 'Installed-Version' if ($key eq 'installed_version'); + $print_key = 'Previous-State' if ($key eq 'previous_state'); + $print_key = 'State-Change' if ($key eq 'state_change'); + printf " %-20s: %s\n", $print_key, $val; } foreach $key (sort keys %$pkg) { next if isin( $key, @firstkeys ); my $val = $pkg->{$key}; + next if !defined($val); chomp( $val ); $val = "\n$val" if isin( $key, qw(Failed Old-Failed)); $val =~ s/\n/\n /g; - printf " %-20s: %s\n", $key, $val; + my $print_key = $key; + $print_key = 'BD-Problem' if ($key eq 'bd_problem'); + $print_key = 'Binary-NMU-Changelog' if ($key eq 'binary_nmu_changelog'); + $print_key = 'Binary-NMU-Version' if ($key eq 'binary_nmu_version'); + $print_key = 'BuildPri' if ($key eq 'buildpri'); + $print_key = 'Depends' if ($key eq 'depends'); + $print_key = 'Failed' if ($key eq 'failed'); + $print_key = 'Failed-Category' if ($key eq 'failed_category'); + $print_key = 'Notes' if ($key eq 'notes'); + $print_key = 'Distribution' if ($key eq 'distribution'); + $print_key = 'Old-Failed' if ($key eq 'old_failed'); + $print_key = 'PermBuildPri' if ($key eq 'permbuildpri'); + $print_key = 'Rel' if ($key eq 'rel'); + printf " %-20s: %s\n", $print_key, $val; } } } @@ -1962,7 +1998,7 @@ sub change_state { return if defined($$state) and $$state eq $newstate; $pkg->{'previous_state'} = $$state if defined($$state); - $pkg->{'State-Change'} = $curr_date; + $pkg->{'state_change'} = $curr_date; if (defined($$state) and $$state eq 'Failed') { $pkg->{'old_failed'} = @@ -2374,11 +2410,11 @@ sub pkg_version_eq { } sub table_name { - return '"' . $arch . '".packages'; + return '"' . $arch . $schema_suffix . '".packages'; } sub user_table_name { - return '"' . $arch . '".users'; + return '"' . $arch . $schema_suffix . '".users'; } sub get_source_info {