]> git.donarmstrong.com Git - wannabuild.git/blobdiff - bin/wanna-build
Allow state Dep-Wait-Removed when importing.
[wannabuild.git] / bin / wanna-build
index 585e4e0e7c81b35f7ef73fe45088709c98793666..8401dff42a9b8d93bd25682eb1c20cb53c4b9424 100755 (executable)
@@ -24,8 +24,7 @@ package conf;
 $basedir ||= "/var/lib/debbuild";
 $dbbase ||= "build-db";
 $transactlog ||= "transactions.log";
-#$mailprog ||= "/usr/sbin/sendmail";
-$mailprog = "/bin/true";
+$mailprog ||= "/usr/sbin/sendmail";
 require "/etc/wanna-build.conf";
 die "$conf::basedir is not a directory\n" if ! -d $conf::basedir;
 die "dbbase is empty\n" if ! $dbbase;
@@ -401,7 +400,9 @@ sub process {
                        die "This operation is restricted to admin users\n"
                                if (defined @conf::admin_users and
                                    !isin( $real_user, @conf::admin_users));
-                       $dbh->do("DELETE from " . table_name())
+                       $dbh->do("DELETE from " . table_name() . 
+                               " WHERE distribution = ?", undef,
+                               $distribution)
                                or die $dbh->errstr;
                        forget_users();
                        read_db( $import_from );
@@ -1553,7 +1554,8 @@ sub parse_quinn_diff {
 
        if ($dubious) {
                send_mail( $conf::db_maint,
-                                  "Dubious versions in " . table_name() . " table",
+                                  "Dubious versions in " . table_name() . " "
+                                  . $distribution . " table",
                                   "The following packages have a newer version in the ".
                                   "wanna-build database\n".
                                   "than what quinn-diff says, and this is strange for ".
@@ -1864,7 +1866,7 @@ sub forget_packages {
                        $data .= sprintf "  %-20s: %s\n", $key, $val;
                }
                send_mail( $conf::db_maint,
-                                  "$name deleted from DB " . table_name(),
+                                  "$name deleted from DB " . table_name() . " " . $distribution,
                                   "The package '$name' has been deleted from the database ".
                                   "by $user.\n\n".
                                   "Data registered about the deleted package:\n".
@@ -1877,7 +1879,8 @@ sub forget_packages {
 }
 
 sub forget_users {
-       $dbh->do("DELETE from " . user_table_name()) or die $dbh->errstr;
+       $dbh->do("DELETE from " . user_table_name() . 
+               " WHERE distribution = ?", undef, $distribution) or die $dbh->errstr;
 }
 
 sub read_db {
@@ -1909,8 +1912,10 @@ sub read_db {
                elsif(exists($thispkg{'user'})) {
                        # user in import, username in database.
                        $dbh->do('INSERT INTO ' . user_table_name() .
-                                       ' (username, last_seen) values (?, ?)',
-                               undef, $thispkg{'user'}, $thispkg{'last_seen'})
+                                       ' (username, distribution, last_seen)' .
+                                       ' values (?, ?, ?)',
+                               undef, $thispkg{'user'}, $distribution,
+                               $thispkg{'last_seen'})
                                or die $dbh->errstr;
                 }
        }
@@ -1944,7 +1949,7 @@ sub check_entry {
        # check state field
        die "Bad state $pkg->{'state'} of package $pkg->{Package}\n"
                if !isin( $pkg->{'state'},
-                                 qw(Needs-Build Building Built Build-Attempted Uploaded Installed Dep-Wait
+                                 qw(Needs-Build Building Built Build-Attempted Uploaded Installed Dep-Wait Dep-Wait-Removed
                                         Failed Failed-Removed Not-For-Us BD-Uninstallable
                                         ) );
 }
@@ -2369,24 +2374,25 @@ sub pkg_version_eq {
 }
 
 sub table_name {
-       return $arch . '_' . $distribution;
+       return '"' . $arch . '".packages';
 }
 
 sub user_table_name {
-       return $arch . '_' . $distribution . '_users';
+       return '"' . $arch . '".users';
 }
 
 sub get_source_info {
        my $name = shift;
        my $pkg = $dbh->selectrow_hashref('SELECT * FROM ' . 
-               table_name() . ' WHERE package = ?',
-               undef, $name);
+               table_name() . ' WHERE package = ? AND distribution = ?',
+               undef, $name, $distribution);
        return $pkg;
 }
 
 sub get_all_source_info {
-       my $db = $dbh->selectall_hashref('SELECT * FROM ' . table_name(),
-               'package');
+       my $db = $dbh->selectall_hashref('SELECT * FROM ' . table_name() .
+               ' WHERE distribution = ?',
+               'package', undef, $distribution);
        return $db;
 }
 
@@ -2419,7 +2425,7 @@ sub update_source_info {
                        'depends = ?, ' .
                        'rel = ?, ' .
                        'bd_problem = ? ' .
-                       'WHERE package = ?',
+                       'WHERE package = ? AND distribution = ?',
                undef,
                $pkg->{'version'},
                $pkg->{'state'},
@@ -2440,36 +2446,38 @@ sub update_source_info {
                $pkg->{'depends'},
                $pkg->{'rel'},
                $pkg->{'bd_problem'},
-               $pkg->{'package'}) or die $dbh->errstr;
+               $pkg->{'package'},
+               $distribution) or die $dbh->errstr;
 }
 
 sub add_source_info {
        my $pkg = shift;
        $dbh->do('INSERT INTO ' . table_name() .
-                       ' (package) values (?)',
-               undef, $pkg->{'package'}) or die $dbh->errstr;
+                       ' (package, distribution) values (?, ?)',
+               undef, $pkg->{'package'}, $distribution) or die $dbh->errstr;
 }
 
 sub del_source_info {
        my $name = shift;
        $dbh->do('DELETE FROM ' . table_name() .
-                       ' WHERE package = ?',
-               undef, $name) or die $dbh->errstr;
+                       ' WHERE package = ? AND distribution = ?',
+               undef, $name, $distribution) or die $dbh->errstr;
 }
 
 sub get_user_info {
        my $name = shift;
        my $user = $dbh->selectrow_hashref('SELECT * FROM ' . 
-               user_table_name() . ' WHERE username = ?',
-               undef, $name);
+               user_table_name() . ' WHERE username = ? AND distribution = ?',
+               undef, $name, $distribution);
        return $user;
 }
 
 sub update_user_info {
        my $user = shift;
        $dbh->do('UPDATE ' . user_table_name() .
-                       ' SET last_seen = now() WHERE username = ?',
-               undef, $user)
+                       ' SET last_seen = now() WHERE username = ?' .
+                       ' AND distribution = ?',
+               undef, $user, $distribution)
                or die $dbh->errstr;
 }
 
@@ -2477,8 +2485,9 @@ sub update_user_info {
 sub add_user_info {
        my $user = shift;
        $dbh->do('INSERT INTO ' . user_table_name() .
-                       ' (username, last_seen) values (?, now())',
-               undef, $user)
+                       ' (username, distribution, last_seen)' .
+                       ' values (?, ?, now())',
+               undef, $user, $distribution)
                or die $dbh->errstr;
 }