From 5e1d6d912cecd611acca95804d906b15301b7ad9 Mon Sep 17 00:00:00 2001 From: jjhua Date: Thu, 14 Mar 2013 07:46:42 +0000 Subject: [PATCH] Before adding the os repos and otherpkgs repos, check if the repos were already added by xCAT in the previous run, if yes, update these repos; otherwise, create these repos directly. For the os repo added by addsiteyum, it should be deleted by ospkgs and otherpkgs, the ospkg and otherpkgs will add the os repos point to more directories. After ospkg/otherpkgs is done, do not remove the repos. git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@15510 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT/postscripts/otherpkgs | 207 +++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) diff --git a/xCAT/postscripts/otherpkgs b/xCAT/postscripts/otherpkgs index 1dc372513..a9ff9ce20 100755 --- a/xCAT/postscripts/otherpkgs +++ b/xCAT/postscripts/otherpkgs @@ -252,6 +252,108 @@ else fi fi +######################### +##start collecting the repositories for os +if [ -z "$OSPKGDIR" ]; then + OSPKGDIR="$INSTALLDIR/$OSVER/$ARCH" +fi + +if [ "$KERNELDIR" != "" ]; then + OSPKGDIR="$OSPKGDIR,$KERNELDIR" +fi + + OIFS=$IFS + IFS=$',' + if ( pmatch "$OSVER" "ubuntu*" ); then + IFS=$(printf ',') + fi + + array_ospkgdirs=($OSPKGDIR) + IFS=$OIFS + array_empty os_path + index=0 + for dir in ${array_ospkgdirs[@]} + do + + default_pkgdir="$INSTALLDIR/$OSVER/$ARCH" + OSPKGDIR="$OSPKGDIR" + if [ $mounted -eq 0 ]; then + #OSPKGDIR="$OSPKGDIR" + ospkgdir="$NFSSERVER$dir" + else + ospkgdir="$dir" + fi + + # for the os base pkg dir(default_pkgdir) , there are some special cases. + # (1)for rhels6, there is one repodata in the os base dir; so keep it here, and handle the other cases below + # (2)for sles, we should specified the baseurl should be ./install/sles11/ppc64/1 + # (3)for SL5, we should append the /SL + # (4) for other os, we just keep it here. + # For other pkg paths, we just keep it here. + if [ $dir == $default_pkgdir ] || [ $dir == "$default_pkgdir/" ]; then + if ( pmatch "$OSVER" "sles*" ); then + OSPKGDIR="$OSPKGDIR/1" + ospkgdir="$ospkgdir/1" + elif ( pmatch "$OSVER" "SL5*" ); then + OSPKGDIR="$OSPKGDIR/SL" + ospkgdir="$ospkgdir/SL" + fi + fi + array_set_element os_path $index $ospkgdir + + if ( pmatch "$OSVER" "rhel*" ); then + #default_pkgdir="$INSTALLDIR/$OSVER/$ARCH" + if [ $dir == $default_pkgdir ] || [ $dir == "$default_pkgdir/" ]; then + + if ( pmatch "$OSVER" "rhels6*" ); then + if [ $ARCH == "ppc64" ]; then + ospkgdir_ok="$ospkgdir/Server" + index=$(expr $index + 1) + array_set_element os_path $index $ospkgdir_ok + fi + + if [ $ARCH == "x86_64" ]; then + for arg in "Server" "ScalableFileSystem" "HighAvailability" "ResilientStorage" "LoadBalancer" + do + ospkgdir_ok="$ospkgdir/$arg" + index=$(expr $index + 1) + array_set_element os_path $index $ospkgdir_ok + done + fi + + elif ( pmatch "$OSVER" "rhels5*" ); then + # for rhels5, the repodata is in ./Server, ./Cluster, ./CusterStorage, not in ./ + ospkgdir_ok="$ospkgdir/Server" + array_set_element os_path $index $ospkgdir_ok + + if [ $ARCH == "x86_64" ]; then + for arg in "Cluster" "ClusterStorage" + do + ospkgdir_ok="$ospkgdir/$arg" + index=$(expr $index + 1) + array_set_element os_path $index $ospkgdir_ok + done + fi # x86_64 + fi # if...elif..fi + fi # eq default_pkgdir + fi # match rhel* + + index=$(expr $index + 1) + + done + +#fi + + +if [ "$SDKDIR" != "" ]; then + if [ $mounted -eq 0 ]; then + SDKDIR="$NFSSERVER/$SDKDIR" + fi +fi + +##end collecting the repositories for os +######################### + echo NFSSERVER=$NFSSERVER logger -p local4.info -t xcat "NFSSERVER=$NFSSERVER" echo OTHERPKGDIR=$OTHERPKGDIR @@ -297,6 +399,111 @@ else fi fi +########### +##start generating the os pkg repositories +if ( pmatch "$OSVER" "sles11*" && [ $haszypper -eq 1 ] ); then + old_repo=`zypper lr |grep -e "^[0-9]" | cut -f2 -d '|'` + for x in $old_repo + do + result=`zypper rr $x` + done + result=`zypper --non-interactive refresh 2>&1` + + SUM=$(array_get_size os_path) + i=0 + + if [ $SUM -eq 0 ]; then + + if [ $mounted -eq 0 ]; then + path="http://$OSPKGDIR" + else + path="file://$OSPKGDIR" + fi + result=`zypper ar $path xCAT-$OSVER 2>&1` + if [ $? -ne 0 ]; then + if ( ! pmatch "$result" "*exists*" ); then + logger -t xcat -p local4.info "ospkgs: zypper ar $path xCAT-$OSVER\n $result" + echo "ospkgs: zypper ar $path xCAT-$OSVER" + echo " $result" + fi + fi + else + while [ $i -lt $SUM ]; do + OSPKGDIR=$(array_get_element os_path $i) + if [ $mounted -eq 0 ]; then + path="http://$OSPKGDIR" + else + path="file://$OSPKGDIR" + fi + result=`zypper ar $path xCAT-$OSVER-"path$i" 2>&1` + if [ $? -ne 0 ]; then + if ( ! pmatch "$result" "*exists*" ); then + logger -t xcat -p local4.info "ospkgs: zypper ar $path xCAT-$OSVER-path$i\n $result" + echo "ospkgs: zypper ar $path xCAT-$OSVER-path$i" + echo " $result" + fi + fi + + i=$((i+1)) + done + fi + + if [ "$SDKDIR" != "" ]; then + if [ $mounted -eq 0 ]; then + SDKDIR="http://$SDKDIR" + else + SDKDIR="file://$SDKDIR" + fi + result=`zypper ar $SDKDIR xCAT-$OSVER-sdk 2>&1` + if [ $? -ne 0 ]; then + if ( ! pmatch "$result" "*exists*" ); then + logger -t xcat -p local4.info "ospkgs: zypper ar $SDKDIR xCAT-$OSVER-sdk\n $result" + echo "ospkgs: zypper ar $SDKDIR xCAT-$OSVER-sdk" + echo " $result" + fi + fi + fi + + result=`zypper --non-interactive --no-gpg-checks refresh 2>&1` + +elif ( pmatch "$OSVER" "rhel*" && [ $hasyum -eq 1 ] ); then + #remove old repo + mkdir -p /etc/yum.repos.d + if [ -r "/etc/yum.repos.d/local-repository.repo" ]; then + result=`rm /etc/yum.repos.d/local-repository.repo 2>&1` + fi + result=`rm /etc/yum.repos.d/xCAT*.repo 2>&1` + + result=`yum clean all` + + SUM=$(array_get_size os_path) + i=0 + + while [ $i -lt $SUM ]; do + REPOFILE="/etc/yum.repos.d/xCAT-$OSVER-path$i.repo" + OSPKGDIR=$(array_get_element os_path $i) + + + if [ ! -f $REPOFILE ]; then + echo "[xCAT-$OSVER-path$i]" > $REPOFILE + echo "name=xCAT-$OSVER-path$i" >> $REPOFILE + if [ $mounted -eq 0 ]; then + echo "baseurl=http://$OSPKGDIR" >> $REPOFILE + else + echo "baseurl=file://$OSPKGDIR" >> $REPOFILE + fi + echo "enabled=1" >> $REPOFILE + echo "gpgcheck=0" >> $REPOFILE + fi + i=$((i+1)) + done +fi + +##end generating the os pkg repositories +########### + + +########### # To support the #NEW_INSTALL_LIST# entry in otherpkgs.pkglist files, # multiple lists of packages are provided to this script in the form: