merge with 0.30.213
[util-vserver.git] / scripts / vserver-build.functions.yum
1 # $Id: vserver-build.functions.yum 2030 2005-04-16 21:20:45Z ensc $     --*- sh -*--
2
3 # Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
4 #  
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; version 2 of the License.
8 #  
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #  
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
18 function yum.installBasePackages
19 {
20     local name="$1"
21     local dir="$2"
22
23     test "$dir" != / || return 0
24     for filelist in "$dir"/*; do
25         isRegularFile "$filelist" || continue
26         local idx=0
27         local can_fail=false
28         local flags=
29
30         set -- $(<$filelist)
31         while test "$#" -gt 0; do
32             case "$1" in
33                 --reinstall) flags='';;
34                 --can-fail)  can_fail=true;;
35                 *)           break;;
36             esac
37             shift
38         done
39         "$_VYUM" "$name" -- -y install $flags $* || $can_fail
40     done
41 }
42
43 function yum.initVariables
44 {
45     findDir  YUMREPOSDEFAULT \
46         "$__CONFDIR/.distributions/$DISTRIBUTION/yum.repos.d" \
47         "$__DISTRIBDIR/$DISTRIBUTION/yum.repos.d" \
48         ''
49 }
50
51 function yum.__substituteConf
52 {
53     local f=$1
54     local prefix=$2
55
56     if test -e "$f"; then
57         $_SED -e "s!@YUMETCDIR@!$prefix$PKGCFGDIR/yum/etc!g;
58                   s!@YUMCACHEDIR@!$prefix$PKGCFGDIR/yum/cache!g;
59                   s!@YUMLOGDIR@!$prefix$PKGCFGDIR/yum!g;
60                   s!@YUMLOCKDIR@!$prefix$PKGCFGDIR/yum!g;
61                  " "$f" >"$f.tmp"
62         $_CMP -s "$f" "$f.tmp" || $_CAT "$f.tmp" >"$f"
63         $_RM -f "$f.tmp"
64     fi
65 }
66
67 function yum.initFilesystem
68 {
69     mkdir -p "$PKGCFGDIR"/yum/{etc,cache}
70     
71     populateDirectory "$PKGCFGDIR/yum/etc" \
72         "$__DISTRIBDIR/defaults/yum" \
73         "$__DISTRIBDIR/$DISTRIBUTION/yum" \
74         "$__CONFDIR/.distributions/$DISTRIBUTION/yum"
75
76     ## workaround for yum's automatism to search the configuration in the chroot
77     
78     local f0="$PKGCFGDIR"/yum/etc/yum.conf
79     local f1="$PKGCFGDIR"/yum/etc/yum-hack.conf
80     cp -a "$f0" "$f1"
81
82     yum.__substituteConf "$f0" 'hostfs://'
83     yum.__substituteConf "$f1" '/../../../../../../../../../../../../'
84
85     test -z "$YUMREPOSDEFAULT" -o -e "$PKGCFGDIR/yum/etc/yum.repos.d" || \
86         $_LN_S "$YUMREPOSDEFAULT"   "$PKGCFGDIR/yum/etc/yum.repos.d"
87 }