]> git.pld-linux.org Git - packages/util-vserver.git/blob - util-vserver-dbrebuild-internalize4.patch
b97d6d481223a46709d8fa2c961fab08ec86ceac
[packages/util-vserver.git] / util-vserver-dbrebuild-internalize4.patch
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
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 "
33 +* The vserver guest does not seem to have the '$guest_tool' program which is required
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 +
52 +       verifyDBTools "$vdir" 'internal' db_dump db_load || test -n "$IS_FORCE" ||
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
64 +       verifyDBTools "$vdir" 'external' db_load db_dump || test -n "$IS_FORCE" ||
65 +           panic "
66 +Can not continue; use '--force' to override this check"
67 +
68         mkdir -m755 -p "$cfgdir"
69         local need_base=
70  
71 @@ -460,8 +506,41 @@
72         pushd "$vdir" >/dev/null
73             ## remove %_dbpath settings
74             _substFile /etc/rpm/macros '/^%_dbpath[ \t].*/D'
75 +
76 +           ## remove vserver-packages ignore
77 +           _substFile /etc/poldek/poldek.conf '/^ignore[ \t]*=/s/vserver-packages//'
78 +
79 +           # dump and reload rpmdb to overcome db version mismatch problems
80 +           if [ "$db_load" -a "$db_dump" ]; then
81 +               # dump with host db_dump
82 +               $db_dump var/lib/rpm/Packages > var/lib/rpm/.Packages.dump
83 +
84 +               # load with guest db_load.
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 +
99 +               # dump with guest db_dump
100 +               $_RM -f var/lib/rpm/__db.*
101 +               chroot . $db_dump var/lib/rpm/Packages > var/lib/rpm/.Packages.dump
102 +
103 +               # load with host db_load
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.054604 seconds and 2 git commands to generate.