RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Per Øyvind Karlsen
  Root:   /v/rpm/cvs                       Email:  pkarl...@rpm5.org
  Module: rpm                              Date:   18-Nov-2010 21:46:21
  Branch: rpm-5_3                          Handle: 2010111820462100

  Modified files:           (Branch: rpm-5_3)
    rpm/scripts             dbconvert.sh

  Log:
    simplify and robustify by always rebuilding rpmdb in a clean
    environment

  Summary:
    Revision    Changes     Path
    1.1.2.8     +32 -40     rpm/scripts/dbconvert.sh
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/scripts/dbconvert.sh
  ============================================================================
  $ cvs diff -u -r1.1.2.7 -r1.1.2.8 dbconvert.sh
  --- rpm/scripts/dbconvert.sh  16 Nov 2010 21:34:50 -0000      1.1.2.7
  +++ rpm/scripts/dbconvert.sh  18 Nov 2010 20:46:21 -0000      1.1.2.8
  @@ -1,7 +1,9 @@
  +#!/bin/sh
  +
   TIMESTAMP="$(LC_TIME=C date -u +%F_%R)"
  -BACKUP="${BACKUP:-/var/tmp/rpmdb-$TIMESTAMP}"
  -OLDDB="${OLDDB:-/var/tmp/olddb}"
  -NEWDB="${NEWDB:-/var/tmp/newdb}"
  +TMPDIR="/var/tmp"
  +BACKUP="${BACKUP:-$TMPDIR/rpmdb-$TIMESTAMP}"
  +NEWDB="${NEWDB:-`mktemp -d -t newdb-XXXXXXXXXX`}"
   DBHOME="${DBHOME:-/var/lib/rpm}"
   DBFORCE=${DBFORCE:-0}
   
  @@ -83,8 +85,8 @@
   fi
   
   echo "Converting system database."
  -rm -rf "$OLDDB" "$NEWDB"
  -mkdir -p {"$OLDDB","$NEWDB"}/{log,tmp}
  +rm -rf "$NEWDB"
  +mkdir -p "$NEWDB"/{log,tmp}
   if [ "$DBHOME" != "/var/lib/rpm" ]; then
       if [ -f /var/lib/rpm/DB_CONFIG ]; then
        cp /var/lib/rpm/DB_CONFIG "$NEWDB/DB_CONFIG"
  @@ -134,52 +136,42 @@
       fi
   fi
   
  -echo "--> copy the system rpmdb"
  -cp "$DBHOME/Packages" "$OLDDB"
  -echo "--> move old rpmdb files to $BACKUP"
  -mkdir -p "$BACKUP"
  -for db in \
  -    Arch Filepaths Name Os Providename Release Seqno Sourcepkgid \
  -    Basenames Dirnames Group Nvra Packagecolor Provideversion Requirename 
Sha1header \
  -    Triggername Conflictname Filedigests Installtid Obsoletename Packages 
Pubkeys \
  -    Requireversion Sigmd5 Version; do
  -     test -f "$DBHOME/$db" && mv "$DBHOME/$db" "$BACKUP/$db"
  -    done
  -
  -echo "--> rebuild to renumber the header instances"
  -rpm \
  -    --dbpath "$OLDDB" \
  -    --rebuilddb -vv
  -echo "--> upgrading bdb version"
  -$DB_UPGRADE -v -h "$OLDDB" Packages 
  -echo "--> resetting the database's file log sequence numbers"
  -$DB_LOAD -r lsn -h "$OLDDB" Packages
  +#echo "--> copy the system rpmdb"
  +#cp "$DBHOME/Packages" "$OLDDB"
  +#echo "--> rebuild to renumber the header instances"
  +#rpm \
  +#    --dbpath "$OLDDB" \
  +#    --rebuilddb -vv
   echo "--> convert header instances to network order"
  -$DB_DUMP -h "$OLDDB" Packages \
  +$DB_DUMP "$DBHOME/Packages" \
       | sed \
       -e 's/^type=hash$/type=btree/' \
       -e '/^h_nelem=/d' \
       -e 's/^ \(..\)\(..\)\(..\)\(..\)$/ \4\3\2\1/' \
       | $DB_LOAD -c db_lorder=4321 -h "$NEWDB" Packages
  -mv "$NEWDB/Packages" "$DBHOME/Packages"
  +#mv "$NEWDB/Packages" "$DBHOME/Packages"
   echo "--> regenerate the indices"
   rpm \
  -    --dbpath "$DBHOME" \
  +    --dbpath "$NEWDB" \
       --rebuilddb -vv
   echo "--> test the conversion"
  -[ -n "$(rpm -qa)" ] && \
  -    rpm -q rpm &> /dev/null
  +rpm --dbpath "$NEWDB" -qa > /dev/null && \
  +rpm --dbpath "$NEWDB" -q rpm > /dev/null
   if [ $? -eq 0 ]; then
  -    echo "Conversion succesful"
  -    /usr/bin/db51_checkpoint -1 -h "$DBHOME"
  -    /usr/bin/db51_recover -h "$DBHOME"
  -    /usr/bin/db51_verify -h "$DBHOME" Packages
  +    echo "Conversion successful "
  +    echo "--> move old rpmdb files to $BACKUP"
  +    mkdir -p "$BACKUP"
  +    for db in \
  +     Arch Filepaths Name Os Providename Release Seqno Sourcepkgid \
  +     Basenames Dirnames Group Nvra Packagecolor Provideversion Requirename 
Sha1header \
  +     Triggername Conflictname Filedigests Installtid Obsoletename Packages 
Pubkeys \
  +     Requireversion Sigmd5 Version; do
  +    test -f "$DBHOME/$db" && mv "$DBHOME/$db" "$BACKUP/$db"
  +    done
  +    echo "--> move new rpmdb files to $DBHOME"
  +    mv -f "$NEWDB"/* "$DBHOME"
  +    rmdir "$NEWDB"
  +    db51_recover -h "$DBHOME"
   else
       echo "Conversion failed"
  -    echo "--> Renaming unsuccesful $DBHOME/Packages to 
$DBHOME/Packages.failed"
  -    mv -f "$DBHOME/Packages" "$DBHOME/Packages.failed"
  -    echo "--> Restoring backup of old rpmdb files from $BACKUP"
  -    mv -vf "$BACKUP"/* "$DBHOME"/
  -    rmdir "$BACKUP"
   fi
  -rm -rf "$OLDDB" "$NEWDB"
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to