vserver-build.functions.yum (2537B)
1 # $Id$ --*- 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!@YUMLIBDIR@!$prefix$PKGCFGDIR/yum/lib!g; 60 s!@YUMLOGDIR@!$prefix$PKGCFGDIR/yum!g; 61 s!@YUMLOCKDIR@!$prefix$PKGCFGDIR/yum!g; 62 " "$f" >"$f.tmp" 63 $_CMP -s "$f" "$f.tmp" || $_CAT "$f.tmp" >"$f" 64 $_RM -f "$f.tmp" 65 fi 66 } 67 68 function yum.initFilesystem 69 { 70 mkdir -p "$PKGCFGDIR"/yum/{etc,cache,lib} 71 72 populateDirectory "$PKGCFGDIR/yum/etc" \ 73 "$__DISTRIBDIR/defaults/yum" \ 74 "$__DISTRIBDIR/$DISTRIBUTION/yum" \ 75 "$__CONFDIR/.distributions/$DISTRIBUTION/yum" 76 77 ## workaround for yum's automatism to search the configuration in the chroot 78 79 local f0="$PKGCFGDIR"/yum/etc/yum.conf 80 local f1="$PKGCFGDIR"/yum/etc/yum-hack.conf 81 cp -a "$f0" "$f1" 82 83 yum.__substituteConf "$f0" 'hostfs://' 84 yum.__substituteConf "$f1" '/../../../../../../../../../../../../' 85 86 test -z "$YUMREPOSDEFAULT" -o -e "$PKGCFGDIR/yum/etc/yum.repos.d" || \ 87 $_LN_S "$YUMREPOSDEFAULT" "$PKGCFGDIR/yum/etc/yum.repos.d" 88 }