X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver-build.functions.pkgmgmt;fp=scripts%2Fvserver-build.functions.pkgmgmt;h=3460b97840398fbaf3bf8b1c9ce5b9cd50cb8b0b;hb=9c78378bebc1a9f3d400f422df8ede9efea57dea;hp=0000000000000000000000000000000000000000;hpb=faa778968d1a7dfeaebc9fe4b847e691dc62fd15;p=util-vserver.git diff --git a/scripts/vserver-build.functions.pkgmgmt b/scripts/vserver-build.functions.pkgmgmt new file mode 100644 index 0000000..3460b97 --- /dev/null +++ b/scripts/vserver-build.functions.pkgmgmt @@ -0,0 +1,87 @@ +# $Id$ --*- 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" / +}