blob: 537b697de85fd490421112e3bef4f3f1497ed5e9 [file] [log] [blame]
#!/bin/ksh
#egan@us.ibm.com
#(C)IBM Corp
#
# Updates must be located in $INSTALLDIR/post/otherrpms/$OSVER/$ARCH
#
# ARCH for x86 is special and may be i386 - i686.
#
# noarch is also applied.
#
NODEPS=""
FORCE=""
for i in $*
do
case "$i" in
nodeps)
NODEPS="--nodeps"
;;
force)
FORCE="--force"
;;
esac
done
logger -t xcat "Install: other RPMs"
echo $ARCH | perl -pi -e "if(/^i.86$/) {exit 0} else {exit 1}"
if [ "$?" = "0" ]
then
ARCH=x86
fi
set -A UPDATEDIR
integer c=-1
if [ -d "/post/otherrpms/$OSVER/$ARCH" ]
then
c=c+1
UPDATEDIR[$c]=/post/otherrpms/$OSVER/$ARCH
fi
if [ "$ARCH" = "x86" ]
then
for i in 6 5 4 3
do
if [ -d /post/otherrpms/$OSVER/i${i}86 ]
then
c=c+1
UPDATEDIR[$c]=/post/otherrpms/$OSVER/i${i}86
fi
done
fi
if [ -d "/post/otherrpms/$OSVER/noarch" ]
then
c=c+1
UPDATEDIR[$c]=/post/otherrpms/$OSVER/noarch
fi
if ((c < 0))
then
logger -t xcat "Install: No otherrpm dir, exiting other RPMs"
exit
fi
RPMLIST=""
integer d=-1
for i in ${UPDATEDIR[*]}
do
d=d+1
ls $i/*.rpm >/dev/null 2>&1
if [ "$?" != "0" ]
then
continue
fi
for j in $i/*.rpm
do
if ((d > 0))
then
integer e=$d-1
GOTIT=0
for k in $(seq 0 $e)
do
RPM=$(basename $j)
RPMNAME=$(echo $RPM | perl -pi -e 's/\.[^\.]+?\.rpm//')
if [ -r ${UPDATEDIR[$k]}/$RPMNAME.*.rpm ]
then
GOTIT=1
echo "Already got $j as $(ls ${UPDATEDIR[$k]}/$RPMNAME.*.rpm)"
break
fi
done
if [ "$GOTIT" = "0" ]
then
RPMLIST="$RPMLIST $j"
fi
else
RPMLIST="$RPMLIST $j"
fi
done
done
RPMLIST=$(echo $RPMLIST | sed 's/^ *//')
if [ -z "$RPMLIST" ]
then
logger -t xcat "Install: otherrpm dirs ${UPDATEDIR[*]} empty, exiting other RPMs"
exit
fi
logger -t xcat "Install: Installing RPMs from ${UPDATEDIR[*]}"
rpm -iv $FORCE $NODEPS $RPMLIST 2>&1 | logger -t xcat
exit 0