]> git.pld-linux.org Git - packages/util-vserver.git/blame - util-vserver-dbrebuild-internalize4.patch
- use the same version of bdb utils that rpm does
[packages/util-vserver.git] / util-vserver-dbrebuild-internalize4.patch
CommitLineData
5e7538d0
ER
1--- util-vserver-0.30.215/scripts/pkgmgmt 2008-11-17 22:47:02.486514626 +0200
2+++ util-vserver-0.30.216-r2844/scripts/pkgmgmt 2009-11-05 14:27:48.753407445 +0200
6a6b3452
ER
3@@ -185,6 +185,43 @@
4 test -n "$is_ok"
5 }
6
7+## Usage: verifyDBTools <vdir> <type> <host_tool> <guest_tool>
8+function verifyDBTools
9+{
10+ local vdir="$1"
11+ local type="$2"
12+ local host_tool="$3"
13+ local guest_tool="$4"
14+ local res=0
15+
16+ local i host_path guest_path
17+ for i in /bin /usr/bin /usr/lib/rpm /usr/local/bin; do
18+ test ! -x "$i"/$host_tool || { host_path="$i"/$host_tool; break; }
19+ done
20+ for i in /bin /usr/bin /usr/lib/rpm /usr/local/bin; do
21+ test ! -x "$vdir$i"/$guest_tool || { guest_path="$i"/$guest_tool; break; }
22+ done
23+
24+ test -n "$host_path" || {
25+ warning "
26+* The host does not seem to have the '$host_tool' program which is required
27+ for $type package management. It is suggested to install it before
28+ continuing."
29+ res=1
30+ }
31+ test -n "$guest_path" || {
32+ warning "
69c81f2b 33+* The vserver guest does not seem to have the '$guest_tool' program which is required
6a6b3452
ER
34+ for $type package management. It is suggested to install it before
35+ continuing."
36+ res=1
37+ }
38+
39+ eval $host_tool=$host_path
40+ eval $guest_tool=$guest_path
41+ return $res
42+}
43+
44 # Usage: verifyInternalPackages <vserver> <style>
45 function verifyInternalPackages()
46 {
47@@ -392,7 +429,12 @@
48 verifyInternalPackages "$vserver" RH || test -n "$IS_FORCE" ||
49 panic "
50 Can not continue; use '--force' to override this check"
51+
35d779f2 52+ verifyDBTools "$vdir" 'internal' db@RPMDB@_dump db@RPMDB@_load || test -n "$IS_FORCE" ||
6a6b3452
ER
53+ panic "
54+Can not continue; use '--force' to override this check"
55
56+
57 pushd "$vdir" >/dev/null
58
59 test ! -L var/lib/rpm || {
60@@ -416,6 +458,10 @@
61 findDir RPMETCDIR "$cfgdir"/rpmetc "$cfgdir"/base/rpm/etc /etc/rpm /
62 findDir RPMSTATEDIR "$cfgdir"/rpmstate "$cfgdir"/base/rpm/state
63 else
35d779f2 64+ verifyDBTools "$vdir" 'external' db@RPMDB@_load db@RPMDB@_dump || test -n "$IS_FORCE" ||
6a6b3452
ER
65+ panic "
66+Can not continue; use '--force' to override this check"
67+
68 mkdir -m755 -p "$cfgdir"
69 local need_base=
70
5e7538d0 71@@ -460,8 +506,41 @@
6a6b3452
ER
72 pushd "$vdir" >/dev/null
73 ## remove %_dbpath settings
74 _substFile /etc/rpm/macros '/^%_dbpath[ \t].*/D'
75+
5e7538d0
ER
76+ ## remove vserver-packages ignore
77+ _substFile /etc/poldek/poldek.conf '/^ignore[ \t]*=/s/vserver-packages//'
78+
6a6b3452
ER
79+ # dump and reload rpmdb to overcome db version mismatch problems
80+ if [ "$db_load" -a "$db_dump" ]; then
35d779f2 81+ # dump with host db@RPMDB@_dump
6a6b3452
ER
82+ $db_dump var/lib/rpm/Packages > var/lib/rpm/.Packages.dump
83+
35d779f2 84+ # load with guest db@RPMDB@_load.
6a6b3452
ER
85+ $_RM -f var/lib/rpm/__db.*
86+ mv var/lib/rpm/{Packages,.Packages.ORIG}
87+ chroot . $db_load var/lib/rpm/Packages < var/lib/rpm/.Packages.dump
88+ chroot . bin/rpm --rebuilddb 2>/dev/null
89+ rm -f var/lib/rpm/.Packages.*
90+ fi
91+
92 popd >/dev/null
93 else
94+
95+ pushd "$vdir" >/dev/null
96+ if [ "$db_load" -a "$db_dump" ]; then
97+ # dump and reload rpmdb to overcome db version mismatch problems
98+
35d779f2 99+ # dump with guest db@RPMDB@_dump
6a6b3452
ER
100+ $_RM -f var/lib/rpm/__db.*
101+ chroot . $db_dump var/lib/rpm/Packages > var/lib/rpm/.Packages.dump
102+
35d779f2 103+ # load with host db@RPMDB@_load
6a6b3452
ER
104+ mv var/lib/rpm/{Packages,.Packages.ORIG}
105+ $db_load var/lib/rpm/Packages < var/lib/rpm/.Packages.dump
106+ rm -f var/lib/rpm/.Packages.*
107+ fi
108+ popd >/dev/null
109+
110 if test -n "$have_poldek"; then
111 _copySecureRev "$vdir" /etc/poldek "$POLDEKETCDIR"
112 _unhashAuto "$POLDEKETCDIR"/poldek.conf '/'
This page took 0.041592 seconds and 4 git commands to generate.