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

  Server: rpm5.org                         Name:   Per Øyvind Karlsen
  Root:   /v/rpm/cvs                       Email:  [email protected]
  Module: rpm                              Date:   12-Nov-2010 05:53:26
  Branch: HEAD                             Handle: 2010111204532600

  Modified files:
    rpm/scripts             dbconvert.sh

  Log:
    imrpove a bit

  Summary:
    Revision    Changes     Path
    1.2         +34 -16     rpm/scripts/dbconvert.sh
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/scripts/dbconvert.sh
  ============================================================================
  $ cvs diff -u -r1.1 -r1.2 dbconvert.sh
  --- rpm/scripts/dbconvert.sh  11 Nov 2010 21:14:09 -0000      1.1
  +++ rpm/scripts/dbconvert.sh  12 Nov 2010 04:53:26 -0000      1.2
  @@ -1,7 +1,24 @@
   TIMESTAMP="$(LC_TIME=C date -u +%F_%R)"
   BACKUP="/var/tmp/rpmdb-$TIMESTAMP"
   OLDDB="/var/tmp/olddb"
  -DBPATH="${DBPATH:-/var/lib/rpm}"
  +DBHOME="${DBHOME:-/var/lib/rpm}"
  +
  +export DBHOME
  +
  +DB_STAT="$(which db51_stat 2> /dev/null)"
  +if [ -z "$DB_STAT" -a ! -x "$DB_STAT" ]; then
  +    DB_STAT="$(which db_stat 2> /dev/null)"
  +fi
  +if [ ! -x "$DB_STAT" ]; then
  +    echo "Unable to locate db_stat"
  +    exit 1
  +fi
  +
  +# Database is assumed to be converted, so let's ditch it
  +if [ -n "$($DB_STAT -f -d $DBHOME/Packages |grep 'Btree magic number')" -a \
  +     -z "$(rpm -qa)" -a -z "$(rpm -q rpm &> /dev/null)" ]; then
  +    exit 1
  +fi
   
   DB_DUMP="$(which db51_dump 2> /dev/null)"
   if [ -z "$DB_DUMP" -a ! -x "$DB_DUMP" ]; then
  @@ -43,12 +60,12 @@
   
   echo "Converting system database."
   rm -rf $OLDDB
  -mkdir -p {$OLDDB,$DBPATH}/{log,tmp}
  -if [ "$DBPATH" != "/var/lib/rpm" ]; then
  +mkdir -p {$OLDDB,$DBHOME}/{log,tmp}
  +if [ "$DBHOME" != "/var/lib/rpm" ]; then
       if [ -f /var/lib/rpm/DB_CONFIG ]; then
  -     cp /var/lib/rpm/DB_CONFIG $DBPATH/DB_CONFIG
  +     cp /var/lib/rpm/DB_CONFIG $DBHOME/DB_CONFIG
       else
  -     tee $DBPATH/DB_CONFIG << EOH
  +     tee $DBHOME/DB_CONFIG << EOH
   # ================ Environment
   #add_data_dir                .
   set_data_dir         .
  @@ -94,7 +111,7 @@
   fi
   
   echo "--> copy the system rpmdb"
  -cp $DBPATH/Packages $OLDDB
  +cp $DBHOME/Packages $OLDDB
   echo "--> move old rpmdb files to $BACKUP"
   mkdir -p $BACKUP
   for db in \
  @@ -102,7 +119,7 @@
       Basenames Dirnames Group Nvra Packagecolor Provideversion Requirename 
Sha1header \
       Triggername Conflictname Filedigests Installtid Obsoletename Packages 
Pubkeys \
       Requireversion Sigmd5 Version; do
  -     test -f $DBPATH/$db && mv $DBPATH/$db $BACKUP/$db
  +     test -f $DBHOME/$db && mv $DBHOME/$db $BACKUP/$db
       done
   
   echo "--> rebuild to renumber the header instances"
  @@ -110,30 +127,31 @@
       --dbpath $OLDDB \
       --rebuilddb -vv
   echo "--> convert header instances to network order"
  -/usr/bin/db51_dump $OLDDB/Packages \
  +$DB_DUMP -h $OLDDB Packages \
       | sed \
       -e 's/^type=hash$/type=btree/' \
       -e '/^h_nelem=/d' \
       -e 's/^ \(..\)\(..\)\(..\)\(..\)$/ \4\3\2\1/' \
  -    | /usr/bin/db51_load $DBPATH/Packages
  +    | $DB_LOAD -c db_lorder=4321 -h $DBHOME Packages
  +    $DB_LOAD -r lsn -h $DBHOME Packages
   echo "--> regenerate the indices"
   rpm \
  -    --dbpath $DBPATH \
  +    --dbpath $DBHOME \
       --rebuilddb -vv
   echo "--> test the conversion"
   [ -n "$(rpm -qa)" ] && \
       rpm -q rpm &> /dev/null
   if [ $? -eq 0 ]; then
       echo "Conversion succesful"
  -    /usr/bin/db51_checkpoint -1 -h $DBPATH
  -    /usr/bin/db51_recover -h $DBPATH
  -    /usr/bin/db51_verify $DBPATH/Packages
  +    /usr/bin/db51_checkpoint -1 -h $DBHOME
  +    /usr/bin/db51_recover -h $DBHOME
  +    /usr/bin/db51_verify -h $DBHOME Packages
   else
       echo "Conversion failed"
  -    echo "--> Renaming unsuccesful $DBPATH/Packages to 
$DBPATH/Packages.failed"
  -    mv -f $DBPATH/Packages $DBPATH/Packages.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/* $DBPATH/
  +    mv -vf $BACKUP/* $DBHOME/
       rmdir $BACKUP
   fi
   rm -rf $OLDDB
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to