159 lines
4.6 KiB
Plaintext
159 lines
4.6 KiB
Plaintext
|
#!/bin/bash
|
||
|
#
|
||
|
# Script to manage tog-pegasus alternatives for multi-lib platforms
|
||
|
#
|
||
|
# Jason Vas Dias<jvdias@redhat.com>, Red Hat, Inc. June 2006
|
||
|
#
|
||
|
# Usage:
|
||
|
# pegasus_arch_alternatives
|
||
|
# ( --list [pfx] |
|
||
|
# ( [ devel | test ] [ -64 ] [ -32 ] [ --remove ] [ --display ] )
|
||
|
# )
|
||
|
# no args : set up library and binary 'pegasus' alternatives
|
||
|
# --list : list 64/32-bit alternatives, with optional prefix pfx
|
||
|
# devel : set up the 'pegasus-devel' alternative
|
||
|
# test : set up the 'pegasus-test' alternative
|
||
|
# -64 : select 64-bit alternatives
|
||
|
# -32 : select 32-bit alternatives
|
||
|
# --remove : remove all pegasus alternatives
|
||
|
# --display: display the pegasus alternatives
|
||
|
#
|
||
|
ALT='pegasus'
|
||
|
LINK=/usr/sbin/cimserver
|
||
|
SLAVES=(/usr/{bin/{cimmof,cimmofl,cimprovider,osinfo,wbemexec},sbin/{cimauth,cimconfig,cimprovagt,cimsub,cimuser,repupgrade}})
|
||
|
DEVEL_LINK=/usr/share/Pegasus/samples/mak/config.mak
|
||
|
TEST_LINK=/usr/share/Pegasus/test/Makefile
|
||
|
#
|
||
|
# Handle listing arg:
|
||
|
#
|
||
|
if [ "$1" = '--list' ]; then
|
||
|
pfx='';
|
||
|
if [ $# -gt 1 ]; then
|
||
|
pfx=$2' ';
|
||
|
fi;
|
||
|
for f in $LINK ${SLAVES[@]} $DEVEL_LINK $TEST_LINK; do
|
||
|
echo ${pfx}$f;
|
||
|
done;
|
||
|
exit 0;
|
||
|
fi
|
||
|
#
|
||
|
# Ensure that files and alternatives are correctly in-sync for architecture:
|
||
|
#
|
||
|
ARCH=`/bin/uname -i`
|
||
|
case $ARCH in
|
||
|
# return for arches that have no alternatives
|
||
|
ia64 )
|
||
|
# nothing to be done - shipped without binary suffix
|
||
|
exit 0;
|
||
|
;;
|
||
|
i386 | ppc | s390 | sparc )
|
||
|
# shipped with -32 suffix, but no alternatives possible - move:
|
||
|
for f in $LINK ${SLAVES[@]} $DEVEL_LINK $TEST_LINK;
|
||
|
do
|
||
|
if [ -f ${f}-32 ] ; then
|
||
|
/bin/mv -f ${f}-32 $f;
|
||
|
fi;
|
||
|
done;
|
||
|
exit 0;
|
||
|
;;
|
||
|
x86_64 | ppc64 | ppc64le | s390x | sparc64 )
|
||
|
# continue
|
||
|
;;
|
||
|
*)
|
||
|
# unhandled architecture
|
||
|
exit 1;
|
||
|
;;
|
||
|
esac;
|
||
|
if [ "$1" = 'devel' ] || [ "$1" = 'test' ]; then
|
||
|
ALT='pegasus-'$1;
|
||
|
shift;
|
||
|
SLAVES=();
|
||
|
if [ "$ALT" = 'pegasus-devel' ]; then
|
||
|
LINK=$DEVEL_LINK;
|
||
|
else
|
||
|
LINK=$TEST_LINK;
|
||
|
fi;
|
||
|
fi;
|
||
|
#
|
||
|
# Ensure that whatever alternatives can be installed, are installed,
|
||
|
# and those that can't be installed are removed:
|
||
|
#
|
||
|
alternatives="`/usr/sbin/alternatives --display $ALT 2>/dev/null`";
|
||
|
slaves64=''
|
||
|
slaves32=''
|
||
|
installed64=1;
|
||
|
installed32=1;
|
||
|
for f in $LINK ${SLAVES[@]}; do
|
||
|
if [ $installed64 -eq 1 ] && [ -f ${f}-64 ]; then
|
||
|
slaves64=${slaves64}'--slave '$f' '${f##*/}' '${f}-64' ';
|
||
|
else
|
||
|
installed64=0;
|
||
|
continue;
|
||
|
fi;
|
||
|
if [ $installed32 -eq 1 ] && [ -f ${f}-32 ]; then
|
||
|
slaves32=${slaves32}'--slave '$f' '${f##*/}' '${f}-32' ';
|
||
|
else
|
||
|
installed32=0;
|
||
|
continue;
|
||
|
fi;
|
||
|
if [ -e $f ] && [ ! -L $f ]; then
|
||
|
/bin/rm -f $f;
|
||
|
fi;
|
||
|
done
|
||
|
if [ $installed64 -eq 0 ]; then
|
||
|
/usr/sbin/alternatives --remove $ALT ${LINK}-64 >/dev/null 2>&1 || :;
|
||
|
elif ! echo "$alternatives" | /bin/egrep -q "^${LINK}-64"; then
|
||
|
/usr/sbin/alternatives --install $LINK $ALT ${LINK}-64 50 $slaves64;
|
||
|
fi;
|
||
|
if [ $installed32 -eq 0 ]; then
|
||
|
/usr/sbin/alternatives --remove $ALT ${LINK}-32 >/dev/null 2>&1 || :;
|
||
|
elif ! echo "$alternatives" | /bin/egrep -q "^${LINK}-32"; then
|
||
|
/usr/sbin/alternatives --install $LINK $ALT ${LINK}-32 50 $slaves32;
|
||
|
fi;
|
||
|
#
|
||
|
# Handle optional user args
|
||
|
#
|
||
|
if [ -n "$1" ]; then
|
||
|
case $1 in
|
||
|
-64 )
|
||
|
if [ $installed64 -eq 1 ]; then
|
||
|
/usr/sbin/alternatives --set $ALT ${LINK}-64;
|
||
|
if [ "$ALT" = 'pegasus' ]; then
|
||
|
/usr/sbin/alternatives --set pegasus-devel ${DEVEL_LINK}-64 >/dev/null 2>&1;
|
||
|
/usr/sbin/alternatives --set pegasus-test ${TEST_LINK}-64 >/dev/null 2>&1;
|
||
|
fi;
|
||
|
fi
|
||
|
;;
|
||
|
-32 )
|
||
|
if [ $installed32 -eq 1 ]; then
|
||
|
/usr/sbin/alternatives --set $ALT ${LINK}-32;
|
||
|
if [ "$ALT" = 'pegasus' ]; then
|
||
|
/usr/sbin/alternatives --set pegasus-devel ${DEVEL_LINK}-32 >/dev/null 2>&1;
|
||
|
/usr/sbin/alternatives --set pegasus-test ${TEST_LINK}-32 >/dev/null 2>&1;
|
||
|
fi;
|
||
|
fi
|
||
|
;;
|
||
|
--remove )
|
||
|
/usr/sbin/alternatives --remove $ALT ${LINK}-32 >/dev/null 2>&1;
|
||
|
/usr/sbin/alternatives --remove $ALT ${LINK}-64 >/dev/null 2>&1;
|
||
|
if [ "$ALT" = 'pegasus' ]; then
|
||
|
/usr/sbin/alternatives --remove pegasus-devel ${DEVEL_LINK}-32 >/dev/null 2>&1;
|
||
|
/usr/sbin/alternatives --remove pegasus-devel ${DEVEL_LINK}-64 >/dev/null 2>&1;
|
||
|
/usr/sbin/alternatives --remove pegasus-test ${TEST_LINK}-32 >/dev/null 2>&1;
|
||
|
/usr/sbin/alternatives --remove pegasus-test ${TEST_LINK}-64 >/dev/null 2>&1;
|
||
|
fi;
|
||
|
;;
|
||
|
--display )
|
||
|
/usr/sbin/alternatives --display $ALT;
|
||
|
if [ "$ALT" = 'pegasus' ]; then
|
||
|
/usr/sbin/alternatives --display pegasus-devel;
|
||
|
/usr/sbin/alternatives --display pegasus-test;
|
||
|
fi
|
||
|
;;
|
||
|
*)
|
||
|
exit 1;
|
||
|
;;
|
||
|
esac;
|
||
|
fi;
|
||
|
exit 0;
|