OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Thomas Lotterer
  Root:   /v/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-tools                    Date:   17-Feb-2005 11:00:26
  Branch: HEAD                             Handle: 2005021710002600

  Modified files:
    openpkg-tools/cmd       bf-db.pl

  Log:
    modify amendment logic to fill in color for previously missing
    records, too

  Summary:
    Revision    Changes     Path
    1.11        +48 -24     openpkg-tools/cmd/bf-db.pl
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-tools/cmd/bf-db.pl
  ============================================================================
  $ cvs diff -u -r1.10 -r1.11 bf-db.pl
  --- openpkg-tools/cmd/bf-db.pl        11 Feb 2005 15:35:13 -0000      1.10
  +++ openpkg-tools/cmd/bf-db.pl        17 Feb 2005 10:00:26 -0000      1.11
  @@ -255,23 +255,63 @@
                   exit(2);
               }
           }
  -        else {
  -            if ($amend) {
  -                printf STDERR "amendment for inst=%s, package=%s skipped\n", 
$inst, $package;
  -                return;
  -            }
  +        elsif ($sth->rows > 1) {
  +            printf STDERR "internal application problem getting %d rows 
where only 0 or 1 expected\n", $sth->rows;
  +            exit(2);
           }
       }
   
       if (defined $color) {
  +        unless ($amend) {
  +            $sth = $dbh->prepare(
  +                "UPDATE status SET st_build_end = ?, st_build_color = ? 
WHERE ( " .
  +                "    st_inst_host = ? and st_inst_arch = ? and st_inst_os = 
? and st_inst_tag = ? and " .
  +                "    st_package_name = ? );"
  +            );
  +            $retries = $lockretries; do {
  +                $rv = $sth->execute(
  +                    $time, $color,
  +                    $host, $arch, $os, $tag,
  +                    $name
  +                );
  +            } while (not $rv and $dbh->errstr =~ m|lock|i and sleep(1) and 
$retries-- >= 1);
  +            printf STDERR "DEBUG:$0: countdown from %d to %d\n", 
$lockretries, $retries if($opt_verbose);
  +            if (not $rv) {
  +                print STDERR "ERROR:$0: SQLite error: ".$dbh->errstr."\n";
  +                exit(2);
  +            }
  +        }
  +        else {
  +            $sth = $dbh->prepare(
  +                "UPDATE status SET st_build_color = ? WHERE ( " .
  +                "    st_inst_host = ? and st_inst_arch = ? and st_inst_os = 
? and st_inst_tag = ? and " .
  +                "    st_package_name = ? );"
  +            );
  +            $retries = $lockretries; do {
  +                $rv = $sth->execute(
  +                    $color,
  +                    $host, $arch, $os, $tag,
  +                    $name
  +                );
  +            } while (not $rv and $dbh->errstr =~ m|lock|i and sleep(1) and 
$retries-- >= 1);
  +            printf STDERR "DEBUG:$0: countdown from %d to %d\n", 
$lockretries, $retries if($opt_verbose);
  +            if (not $rv) {
  +                print STDERR "ERROR:$0: SQLite error: ".$dbh->errstr."\n";
  +                exit(2);
  +            }
  +            printf STDERR "amendment for inst=%s, package=%s completed, time 
untouched, set color=%s\n", $inst, $package, $color;
  +            return;
  +        }
  +    }
  +    else {
           $sth = $dbh->prepare(
  -            "UPDATE status SET st_build_end = ?, st_build_color = ? WHERE ( 
" .
  +            "UPDATE status SET st_build_end = ? WHERE ( " .
               "    st_inst_host = ? and st_inst_arch = ? and st_inst_os = ? 
and st_inst_tag = ? and " .
               "    st_package_name = ? );"
           );
           $retries = $lockretries; do {
               $rv = $sth->execute(
  -                $time, $color,
  +                $time,
                   $host, $arch, $os, $tag,
                   $name
               );
  @@ -282,26 +322,10 @@
               exit(2);
           }
           if ($amend) {
  -            printf STDERR "amendment for inst=%s, package=%s completed, set 
color=%s\n", $inst, $package, $color;
  +            printf STDERR "amendment for inst=%s, package=%s completed, set 
time, color untouched\n", $inst, $package;
               return;
           }
       }
  -    else {
  -        $sth = $dbh->prepare(
  -            "UPDATE status SET st_build_end = ? WHERE ( " .
  -            "    st_inst_host = ? and st_inst_arch = ? and st_inst_os = ? 
and st_inst_tag = ? and " .
  -            "    st_package_name = ? );"
  -        );
  -        $rv = $sth->execute(
  -            $time,
  -            $host, $arch, $os, $tag,
  -            $name
  -        );
  -    }
  -    if (not $rv) {
  -        print STDERR "ERROR:$0: SQLite error: ".$dbh->errstr."\n";
  -        exit(2);
  -    }
   
       $sth = $dbh->prepare(
           "INSERT INTO processing ( " .
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     openpkg-cvs@openpkg.org

Reply via email to