OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src Date: 27-Aug-2003 23:10:16
Branch: HEAD Handle: 2003082722101500
Modified files:
openpkg-src/openpkg openpkg.boot openpkg.spec
Log:
Ok, revise the RPM database creation and rebuilding procedure again.
The main problem is that we neither can just copy the empty "Packages"
file (because it is of type "hash" and RPM 4.2 uses also "btree" files)
nor can we just touch(1) the files (because RPM will later complain
under operations, although even the official RedHat RPM just touches the
files).
So, do it the ultimative way: we install the Berkeley-DB
db_load/db_dump/db_verify tools (with prefix "rpm") and use these to
really create missing files with the correct type from scratch.
The result is the following. First, we have e.g. OpenPKG 1.3 (RPM 4.0.2,
DB 3.2.4):
| # /xx/bin/rpm -qa
| openpkg-1.3.0-1.3.0
| # ll /xx/RPM/DB/
| total 432
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Basenames
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Conflictname
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Group
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Name
| -rw-r--r-- 1 xx xx 98304 Aug 27 09:57 Packages
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Providename
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Requirename
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Triggername
| [EMAIL PROTECTED]:/tmp
| # file /xx/RPM/DB/*
| /xx/RPM/DB/Basenames: Berkeley DB (Hash, version 7, native byte-order)
| /xx/RPM/DB/Conflictname: Berkeley DB (Hash, version 7, native byte-order)
| /xx/RPM/DB/Group: Berkeley DB (Hash, version 7, native byte-order)
| /xx/RPM/DB/Name: Berkeley DB (Hash, version 7, native byte-order)
| /xx/RPM/DB/Packages: Berkeley DB (Hash, version 7, native byte-order)
| /xx/RPM/DB/Providename: Berkeley DB (Hash, version 7, native byte-order)
| /xx/RPM/DB/Requirename: Berkeley DB (Hash, version 7, native byte-order)
| /xx/RPM/DB/Triggername: Berkeley DB (Hash, version 7, native byte-order)
Now we upgrade to OpenPKG-CURRENT (RPM 4.2.1, DB 4.1.24):
| # /xx/bin/rpm -Uvh /xx/RPM/PKG/openpkg-20030827-20030827.ix86-freebsd4.8-xx.rpm
| Preparing... ########################################### [100%]
| 1:openpkg ########################################### [100%]
| # ll /xx/RPM/DB/
| total 840
| -rw-r--r-- 1 xx xx 49152 Aug 27 23:02 Basenames
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Conflictname
| -rw-r--r-- 1 xx xx 49152 Aug 27 23:02 Depends
| -rw-r--r-- 1 xx xx 32768 Aug 27 23:02 Dirnames
| -rw-r--r-- 1 xx xx 49152 Aug 27 23:02 Filemd5s
| -rw-r--r-- 1 xx xx 49152 Aug 27 23:02 Group
| -rw-r--r-- 1 xx xx 32768 Aug 27 23:02 Installtid
| -rw-r--r-- 1 xx xx 49152 Aug 27 23:02 Name
| -rw-r--r-- 1 xx xx 114688 Aug 27 23:02 Packages
| -rw-r--r-- 1 xx xx 49152 Aug 27 23:02 Providename
| -rw-r--r-- 1 xx xx 32768 Aug 27 23:02 Provideversion
| -rw-r--r-- 1 xx xx 49152 Aug 27 23:02 Pubkeys
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Requirename
| -rw-r--r-- 1 xx xx 32768 Aug 27 23:02 Requireversion
| -rw-r--r-- 1 xx xx 49152 Aug 27 23:02 Sha1header
| -rw-r--r-- 1 xx xx 49152 Aug 27 23:02 Sigmd5
| -rw-r--r-- 1 xx xx 49152 Aug 27 09:57 Triggername
| -rw-r--r-- 1 xx xx 8192 Aug 27 23:02 __db.001
| -rw-r--r-- 1 xx xx 1318912 Aug 27 23:02 __db.002
| -rw-r--r-- 1 xx xx 737280 Aug 27 23:02 __db.003
| -rw-r--r-- 1 xx xx 0 Aug 27 23:02 __db.004
| -rw-r--r-- 1 xx xx 0 Aug 27 23:02 __db.005
| -rw-r--r-- 1 xx xx 0 Aug 27 23:02 __db.006
| -rw-r--r-- 1 xx xx 0 Aug 27 23:02 __db.007
| -rw-r--r-- 1 xx xx 0 Aug 27 23:02 __db.008
| -rw-r--r-- 1 xx xx 0 Aug 27 23:02 __db.009
| # file /xx/RPM/DB/*
| /xx/RPM/DB/Basenames: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Conflictname: Berkeley DB (Hash, version 7, native byte-order)
| /xx/RPM/DB/Depends: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Dirnames: Berkeley DB (Btree, version 9, native byte-order)
| /xx/RPM/DB/Filemd5s: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Group: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Installtid: Berkeley DB (Btree, version 9, native byte-order)
| /xx/RPM/DB/Name: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Packages: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Providename: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Provideversion: Berkeley DB (Btree, version 9, native byte-order)
| /xx/RPM/DB/Pubkeys: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Requirename: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Requireversion: Berkeley DB (Btree, version 9, native byte-order)
| /xx/RPM/DB/Sha1header: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Sigmd5: Berkeley DB (Hash, version 8, native byte-order)
| /xx/RPM/DB/Triggername: Berkeley DB (Hash, version 7, native byte-order)
| /xx/RPM/DB/__db.001: data
| /xx/RPM/DB/__db.002: X11 SNF font data, LSB first
| /xx/RPM/DB/__db.003: X11 SNF font data, LSB first
| /xx/RPM/DB/__db.004: empty
| /xx/RPM/DB/__db.005: empty
| /xx/RPM/DB/__db.006: empty
| /xx/RPM/DB/__db.007: empty
| /xx/RPM/DB/__db.008: empty
| /xx/RPM/DB/__db.009: empty
Summary:
Revision Changes Path
1.33 +25 -19 openpkg-src/openpkg/openpkg.boot
1.199 +32 -2 openpkg-src/openpkg/openpkg.spec
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/openpkg/openpkg.boot
============================================================================
$ cvs diff -u -r1.32 -r1.33 openpkg.boot
--- openpkg-src/openpkg/openpkg.boot 26 Aug 2003 14:07:04 -0000 1.32
+++ openpkg-src/openpkg/openpkg.boot 27 Aug 2003 21:10:15 -0000 1.33
@@ -467,14 +467,6 @@
$tmpdir/rpm --initdb
##
-## save an empty DB file so that we can install below the
-## yet untouched databases with correct owner and permissions.
-##
-
-cp $RPM_BUILD_ROOT$prefix/RPM/DB/Packages \
- $RPM_BUILD_ROOT$prefix/RPM/DB/Empty
-
-##
## now turn over and re-iterate over the RPM spec, but this time
## with the real RPM tool.
##
@@ -567,19 +559,33 @@
grep -v '^ *$' | grep -v '%defattr' |\
sed -e 's;%config(noreplace) *;;' -e 's;%config *;;' \
-e 's;%dir *;;' -e 's;%{l_prefix}/;;' -e 's;^ *;;' -e
"s;%{V_rpm};${V_rpm};"`
-dbfiles=""
-for dbfile in \
- Packages Name Basenames Group Requirename Providename Conflictname \
- Triggername Dirnames Requireversion Provideversion Installtid \
- Sigmd5 Sha1header Filemd5s Depends Pubkeys; do
- if [ ! -f $RPM_BUILD_ROOT$prefix/RPM/DB/$dbfile ]; then
- cp $RPM_BUILD_ROOT$prefix/RPM/DB/Empty \
- $RPM_BUILD_ROOT$prefix/RPM/DB/$dbfile
+db_files=""
+for db in \
+ hash:Basenames hash:Conflictname hash:Depends btree:Dirnames hash:Filemd5s \
+ hash:Group btree:Installtid hash:Name hash:Packages hash:Providename \
+ btree:Provideversion hash:Pubkeys hash:Requirename btree:Requireversion \
+ hash:Sha1header hash:Sigmd5 hash:Triggername index:__db.001 index:__db.002 \
+ index:__db.003 index:__db.004 index:__db.005 index:__db.006 index:__db.007 \
+ index:__db.008 index:__db.009; do
+ eval `echo $db | sed -e 's/^\(.*\):\(.*\)$/db_type="\1"; db_file="\2";/'`
+ if [ ! -f $RPM_BUILD_ROOT$prefix/RPM/DB/$db_file ]; then
+ if [ ".$db_type" = .hash -o ".$db_type" = .btree ]; then
+ ( echo "VERSION=3"
+ echo "format=bytevalue"
+ echo "type=${db_type}"
+ echo "db_pagesize=16384"
+ echo "HEADER=END"
+ echo "DATA=END"
+ ) | $RPM_BUILD_ROOT$prefix/lib/openpkg/rpmdb_load \
+ $RPM_BUILD_ROOT$prefix/RPM/DB/$db_file
+ else
+ touch $RPM_BUILD_ROOT$prefix/RPM/DB/$db_file
+ fi
fi
- dbfiles="$dbfiles RPM/DB/$dbfile"
+ db_files="$db_files RPM/DB/$db_file"
done
-rm -f $RPM_BUILD_ROOT$prefix/RPM/DB/Empty
-files="$files $dbfiles"
+chmod 644 $RPM_BUILD_ROOT$prefix/RPM/DB/*
+files="$files $db_files"
( cd $RPM_BUILD_ROOT$prefix;
$RPM_BUILD_ROOT$prefix/lib/openpkg/tar --no-recursion -cf - $files) |\
$l_uuencode openpkg-$v.$t.tar >>$dstdir/openpkg-$v.$t.sh
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/openpkg/openpkg.spec
============================================================================
$ cvs diff -u -r1.198 -r1.199 openpkg.spec
--- openpkg-src/openpkg/openpkg.spec 27 Aug 2003 14:00:38 -0000 1.198
+++ openpkg-src/openpkg/openpkg.spec 27 Aug 2003 21:10:15 -0000 1.199
@@ -906,6 +906,9 @@
%{l_prefix}/lib/openpkg/rpmtool
%{l_prefix}/lib/openpkg/rpmu
%{l_prefix}/lib/openpkg/rpmv
+ %{l_prefix}/lib/openpkg/rpmdb_load
+ %{l_prefix}/lib/openpkg/rpmdb_dump
+ %{l_prefix}/lib/openpkg/rpmdb_verify
%{l_prefix}/lib/openpkg/rpmx.pl
%{l_prefix}/lib/openpkg/rpmx.sh
%{l_prefix}/lib/openpkg/shtool
@@ -1545,8 +1548,35 @@
%{l_prefix}/bin/rpm -q gpg-pubkey-63c4cb9f-3c591eda >/dev/null 2>&1 || \
%{l_prefix}/bin/rpm --import %{l_prefix}/etc/openpkg/openpkg.pgp ||
true
- # fix ownership of (especially newly created) RPM database files
+ # make sure all RPM 4.2.x database files are present
+ for db in \
+ hash:Basenames hash:Conflictname hash:Depends btree:Dirnames
hash:Filemd5s \
+ hash:Group btree:Installtid hash:Name hash:Packages hash:Providename \
+ btree:Provideversion hash:Pubkeys hash:Requirename
btree:Requireversion \
+ hash:Sha1header hash:Sigmd5 hash:Triggername index:__db.001
index:__db.002 \
+ index:__db.003 index:__db.004 index:__db.005 index:__db.006
index:__db.007 \
+ index:__db.008 index:__db.009; do
+ eval `echo $db | sed -e 's/^\(.*\):\(.*\)$/db_type="\1";
db_file="\2";/'`
+ if [ ! -f %{l_prefix}/RPM/DB/$db_file ]; then
+ if [ ".$db_type" = .hash -o ".$db_type" = .btree ]; then
+ ( echo "VERSION=3"
+ echo "format=bytevalue"
+ echo "type=${db_type}"
+ echo "db_pagesize=16384"
+ echo "HEADER=END"
+ echo "DATA=END"
+ ) | %{l_prefix}/lib/openpkg/rpmdb_load \
+ %{l_prefix}/RPM/DB/$db_file
+ else
+ touch %{l_prefix}/RPM/DB/$db_file
+ fi
+ fi
+ done
+
+ # fix ownership and permissions of (especially newly created)
+ # RPM database files to make sure they are consistent
chown %{l_musr}:%{l_mgrp} %{l_prefix}/RPM/DB/* || true
+ chmod 644 %{l_prefix}/RPM/DB/* || true
) </dev/null >/dev/null 2>/dev/null &
fi
@@ -1789,7 +1819,7 @@
fi
# delayed removal of top-level directory.
- ( sleep 10
+ ( sleep 2
rm -rf %{l_prefix}/RPM/DB/* %{l_prefix}/RPM/DB/.[a-z]* >/dev/null 2>&1 || true
rmdir %{l_prefix}/RPM/DB >/dev/null 2>&1 || true
rmdir %{l_prefix}/RPM >/dev/null 2>&1 || true
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]