X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=scripts%2Fvserver-build.functions.pkgmgmt;fp=scripts%2Fvserver-build.functions.pkgmgmt;h=2d0bfbbb76e59054f829f251b130224530022eb2;hb=8cf13bb177d92c93eb73dc8939777150536c2d00;hp=0000000000000000000000000000000000000000;hpb=6bf3f95de36c804c97716b2d0bdf10680c559044;p=util-vserver.git diff --git a/scripts/vserver-build.functions.pkgmgmt b/scripts/vserver-build.functions.pkgmgmt new file mode 100644 index 0000000..2d0bfbb --- /dev/null +++ b/scripts/vserver-build.functions.pkgmgmt @@ -0,0 +1,87 @@ +# $Id: vserver-build.functions.pkgmgmt,v 1.9 2005/06/30 06:16:41 ensc Exp $ --*- sh -*-- + +# Copyright (C) 2004 Enrico Scholz +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +PKGCFGBASE= +PKGCFGBASE_REL= +YUM_RELEASEPKGS=( {redhat,fedora}-release ) + +function pkgmgmt._setPkgCfgBase +{ + test -z "$PKGCFGBASE" || return 0 + + for item in "\"$__CONFDIR/.defaults/apps/pkgmgmt/base\" 1" ${ROOTDIR:+"$ROOTDIR/.pkg"} "$__DEFAULT_VSERVERPKGDIR"; do + eval set -- "$item" + PKGCFGBASE=$1 + PKGCFGBASE_REL=$2 + test ! -d "$PKGCFGBASE" || break + done + + test -d "$PKGCFGBASE" || { + echo "pkgcfgbase-dir '$PKGCFGBASE' does not exist or is invalid" >&2 + exit 1 + } +} + +function pkgmgmt._setPkgCfg +{ + pkgmgmt._setPkgCfgBase + + test -z "$PKGCFGDIR" || return 0 + PKGCFGDIR="$PKGCFGBASE/$VSERVERDIRNAME" +} + +function pkgmgmt._renameVserverPkgCfg +{ + local suffix=.~$(date +'%s')~ + local i + + for i in "$PKGCFGDIR"; do + test ! -e "$i" || { + mv "$i" "$i$suffix" + say "Renamed '$i' to '$i$suffix'" + } + done +} + +function pkgmgmt.initFilesystem +{ + test -z "$1" || pkgmgmt._renameVserverPkgCfg + test ! -d "$PKGCFGDIR" || { + echo $\ +"vserver pkgmgmt-directory exists already; please try to use +'--force'; or remove it manually" >&2 + exit 1 + } + + mkdir -p "$PKGCFGDIR" + base._addGeneratedFile "$PKGCFGDIR" + + mkdir -p "${SETUP_CONFDIR:?}"/apps/pkgmgmt + + test -z "$PKGCFGDIR" || { + ln -s "$PKGCFGDIR" "$SETUP_CONFDIR/apps/pkgmgmt/base" + + test "$_EXECDIR" = / || ln -s "${_EXECDIR:?}" "$SETUP_CONFDIR/apps/pkgmgmt/execdir" + } + +} + +function pkgmgmt.initVariables +{ + pkgmgmt._setPkgCfg + findDir PKGINSTALLDIR "$__CONFDIR/.distributions/$DISTRIBUTION/pkgs" "$__DISTRIBDIR/$DISTRIBUTION/pkgs" / +}