Subject: Re: [MTT users] Patch for whatami (new sles10 lsb-release file format)
From: Ethan Mallove (ethan.mallove_at_[hidden])
Date: 2008-10-31 13:56:15


On Fri, Oct/31/2008 01:01:02PM, Jeff Squyres wrote:
> Re-sending to the MTT list, because I think our listserver will
> automatically block Brian (I'll add him to the whitelist for future
> posts!).

I'm getting a syntax error:

  $ whatami
  whatami: syntax error at line 149: `DISTRIB_ID=$' unexpected

Not sure if I'm doing a bad copy/paste out of my mail
client. Jeff, can you send the new whatami script as an
attachment?

-Ethan

>
>
> On Oct 31, 2008, at 12:56 PM, Brian Elliott Finley wrote:
>
>> I've taken a look at Ethan's patch. I like the patch, and I like the
>> concept. I made a small modification to it, breaking it out into a
>> subroutine, which I think makes the logic a bit easier to follow.
>>
>> Take a look and try this out. If it works for you, I'll commit it.
>>
>> Cheers, -Brian
>>
>>
>>
>>
>> Jeff Squyres wrote:
>>> Let's commit Ethan's patch, then, and see what Brian wants to do
>>> upstream.
>>>
>>> On Oct 31, 2008, at 11:57 AM, Tim Mattox wrote:
>>>
>>>> Sorry about that, I missed that Ethan had supplied a workaround
>>>> patch. Oops.
>>>> Ethan's patch works for me on sles9.
>>>>
>>>> On Fri, Oct 31, 2008 at 11:42 AM, Jeff Squyres <jsquyres_at_[hidden]>
>>>> wrote:
>>>>> Ok. Does Ethan's patch work for you, or should we just revert to our
>>>>> prior
>>>>> version until upstream is fixed?
>>>>>
>>>>> On Oct 31, 2008, at 11:39 AM, Tim Mattox wrote:
>>>>>
>>>>>> The new version of whatami is what broke sles9. That new version
>>>>>> assumes
>>>>>> that if an /etc/lsb-release file exists that it has info about what
>>>>>> distribution it is.
>>>>>> SLES seems to only put in what LSB it conforms to (the LSB_VERSION
>>>>>> environment variable).
>>>>>> Whatami should check if it got all the info it needs from the
>>>>>> lsb-release
>>>>>> file,
>>>>>> and if not, fall back to something else that worked before.
>>>>>>
>>>>>> I just reverted the whatami I am using on BigRed to MTT's r1236 and it
>>>>>> works
>>>>>> again. No rush to fix this for me, but it is bad that whatami seems
>>>>>> to
>>>>>> now
>>>>>> be broken for two major SLES releases (9 & 10).
>>>>>>
>>>>>> On Fri, Oct 31, 2008 at 11:29 AM, Jeff Squyres <jsquyres_at_[hidden]>
>>>>>> wrote:
>>>>>>>
>>>>>>> Which patch broke BigRed -- Ethan's patch, or Brian's original new
>>>>>>> version
>>>>>>> of whatami?
>>>>>>>
>>>>>>>
>>>>>>> On Oct 31, 2008, at 11:20 AM, Tim Mattox wrote:
>>>>>>>
>>>>>>>> This change also broke whatami for sles9 (which happens to be what
>>>>>>>> our
>>>>>>>> BigRed
>>>>>>>> PPC cluster is running).
>>>>>>>>
>>>>>>>> 2008/10/30 Ethan Mallove <ethan.mallove_at_[hidden]>:
>>>>>>>>>
>>>>>>>>> Hi Brian,
>>>>>>>>>
>>>>>>>>> I'm using your "whatami" in the MPI Testing Tool (MTT), but
>>>>>>>>> I think a recent change to it broke for our sles10 system.
>>>>>>>>> We have an lsb-release file that is different from what
>>>>>>>>> "whatami" expects:
>>>>>>>>>
>>>>>>>>> $ cat /etc/lsb-release
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> LSB_VERSION="core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64"
>>>>>>>>>
>>>>>>>>> $ uname -a
>>>>>>>>> Linux burl-ct-v20z-6 2.6.16.46-0.12-smp #1 SMP Thu May 17
>>>>>>>>> 14:00:09 UTC
>>>>>>>>> 2007 x86_64 x86_64 x86_64 GNU/Linux
>>>>>>>>>
>>>>>>>>> I attached a patch.
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Ethan
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> mtt-users mailing list
>>>>>>>>> mtt-users_at_[hidden]
>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
>>>>>>>> tmattox_at_[hidden] || timattox_at_[hidden]
>>>>>>>> I'm a bright... http://www.the-brights.net/
>>>>>>>> _______________________________________________
>>>>>>>> mtt-users mailing list
>>>>>>>> mtt-users_at_[hidden]
>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Jeff Squyres
>>>>>>> Cisco Systems
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> mtt-users mailing list
>>>>>>> mtt-users_at_[hidden]
>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
>>>>>> tmattox_at_[hidden] || timattox_at_[hidden]
>>>>>> I'm a bright... http://www.the-brights.net/
>>>>>> _______________________________________________
>>>>>> mtt-users mailing list
>>>>>> mtt-users_at_[hidden]
>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>>>
>>>>>
>>>>> --
>>>>> Jeff Squyres
>>>>> Cisco Systems
>>>>>
>>>>> _______________________________________________
>>>>> mtt-users mailing list
>>>>> mtt-users_at_[hidden]
>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
>>>> tmattox_at_[hidden] || timattox_at_[hidden]
>>>> I'm a bright... http://www.the-brights.net/
>>>> _______________________________________________
>>>> mtt-users mailing list
>>>> mtt-users_at_[hidden]
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
>>>
>>>
>>
>> --
>> Brian Elliott Finley
>> CIS / Argonne National Laboratory
>> Office: 630.252.4742
>> Mobile: 630.631.6621
>> #!/bin/sh
>> #
>> # whatami
>> # Prints a string describing the system type.
>> #
>> # $Id:
>> #
>> # "whatami" is part of Msys, the MCS Systems Administration Toolkit.
>> # For more information, see http://www.mcs.anl.gov/systems/software/ .
>> #
>> # Copyright (c) University of Chicago 1999.
>> # See the COPYRIGHT file in the distribution for details on the copyright.
>> #
>> #
>> ===========================================================================
>> #
>> # Description:
>> #
>> # Try to figure out what type of machine we're running on.
>> #
>> # The string returned is one that is useful to distinguish between
>> # system architectures, where we think of machines with the same
>> architectures
>> # as machines that should be using the same set of compiled software.
>> #
>> # One would think that you could already get such a string from an
>> existing
>> # UNIX utility. But, no, this appears not to be the case. "uname" and
>> # "arch" come close, but are inconsistent. Thus this script is basically
>> # a wrapper around those.
>> #
>> # Several other programs in the Msys distribution (and innumerable scripts
>> # around MCS) call this program.
>> #
>> #
>> ===========================================================================
>> # TODO:
>> #
>> # Authors:
>> #
>> # Remy Evard <evard_at_[hidden]>
>> # - Version 1.0 and 2.0:
>> # 2003.03.12 Brian Elliott Finley <finley_at_[hidden]>
>> # - added get_linux_type function to provide a three part type:
>> # Ie: linux-debian_unstable-ia32, or linux-sles8-ia64
>> # - added -o (option_test)
>> # 2003.10.16 Larry A. Diegel <diegella_at_[hidden]>
>> # - patch for aix-5
>> # 2004.01.17 Brian Elliott Finley <finley_at_[hidden]>
>> # - modified --help output
>> # - accept --long-options as well as -s (short options)
>> # 2004.02.04 Brian Elliott Finley <finley_at_[hidden]>
>> # - identify macosx on ppc and ppc64
>> # - identify linux on Opteron (x86_64)
>> # 2004.02.26 Brian Elliott Finley <finley_at_[hidden]>
>> # - add redhat AS
>> # - add mandrake 9.1
>> # - add redhat 9
>> # - add redhat 8
>> # 2005.01.19 Susan Coghlan <smc_at_[hidden]>
>> # - add sles8 PPC64
>> # 2005.02.01 Susan Coghlan <smc_at_[hidden]>
>> # - add sles9
>> # 2005.03.07 Brian Elliott Finley
>> # - add rhel, and deal w/different versions, sub-distros (AS|EL|WS)
>> # 2005.04.21 Peter Couvares <pfc_at_[hidden]>
>> # - add tao linux 1.0, cygwin
>> # 2005.04.22 Ti Leggett <leggett_at_[hidden]>
>> # - add Gentoo
>> # 2006.03.14 JP Navarro <navarro_at_[hidden]>
>> # - more precise AIX type, aix-{version}.{release}
>> # - add Cray Rocks 1.3
>> # - add CentOS 4.0
>> # - add SGI ProPack 3 -> rhel3
>> # - add SGI ProPack 4 -> sles9
>> # - add SuSE 9.1
>> # 2006.03.21 JP Navarro <navarro_at_[hidden]>
>> # - add Fedora Core <n>
>> # - drop RHEL sub-distros
>> # - ClassAd output support
>> # - XML output support
>> # 2006.03.30 Ti Leggett <leggett_at_[hidden]>
>> # - Fixed CentOS to recognize 4.x instead of only 4.0
>> # 2006.10.17 JP Navarro <navarro_at_[hidden]>
>> # - Add SuSE 10.1
>> # 2007.01.02 JP Navarro <navarro_at_[hidden]>
>> # - Add SuSE 10.2
>> # 2007.02.06 Ti Leggett <leggett_at_[hidden]>
>> # - Add MacOS on Intel support
>> # 2008.10.14 Brian Finley <finley_at_[hidden]>
>> # - Add generic lsb_release support
>> # - includes CentOS 5.x
>> # 2008.10.30 Ethan Mallove <ethan.mallove_at_[hidden]>
>> # - Support two different SuSE 10 lsb-release file formats
>> # 2008.10.30 Brian Finley <finley_at_[hidden]>
>> # - Turn Ethan's code and concept into a subroutine.
>> #
>> # Authors -- Be sure to increment the version number appropriately!
>> #
>> #
>> ===========================================================================
>> #
>> # Exit codes:
>> #
>> # 0 on success
>> # 1 on failure to grok arguments or figure out architecture details
>> #
>> #
>> ===========================================================================
>> #
>> # Machine type strings:
>> #
>> # sun4
>> # irix-5
>> # irix-6
>> # solaris
>> # freebsd
>> # aix-{version}.{release}
>> # aux
>> # hpux
>> # mips
>> # osf
>> # digital
>> # next
>> # linux-{distro_and_version}-{architecture}
>> # solaris86
>> # solarishp
>> # nt
>> # ntalpha
>> #
>> #
>> ===========================================================================
>>
>> program=`echo $0 | sed 's:.*/::'`
>> version="2008.10.31"
>>
>> ################################################################################
>> #
>> # Subroutines
>> #
>>
>> get_lsb_info_if_available()
>> {
>> if [ -f /etc/lsb-release ]; then
>> #
>> # 1) Example contents of /etc/lsb-release from Ubuntu Hardy:
>> # DISTRIB_ID=Ubuntu
>> # DISTRIB_RELEASE=8.04
>> # DISTRIB_CODENAME=hardy
>> # DISTRIB_DESCRIPTION="Ubuntu hardy (development branch)"
>> # 2) Example contents of /etc/lsb-release from SLES 9:
>> #
>> LSB_VERSION="core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64"
>> . /etc/lsb-release
>>
>> elif [ -x /usr/bin/lsb_release ]; then
>> DISTRIB_ID=$(/usr/bin/lsb_release -i | sed -e 's/^Distributor
>> ID:[[:space:]]//')
>> DISTRIB_RELEASE=$(/usr/bin/lsb_release -r | sed -e
>> 's/^Release:[[:space:]]//')
>> fi
>> }
>>
>> get_linux_type()
>> {
>>
>> ############################################################################
>> #
>> # Step 1) Determine $hardware string (in Linux terms, based on
>> architecture
>> # names used by the Linux kernel. See
>> /usr/src/linux/hardware/ for
>> # details).
>> #
>> case $uhardware in
>> alpha)
>> hardware=alpha
>> ;;
>> i386|i486|i586|i686)
>> hardware=ia32
>> ;;
>> ppc64)
>> hardware=ppc64
>> ;;
>> ia64)
>> hardware=ia64
>> ;;
>> x86_64)
>> hardware=x86_64
>> ;;
>> *)
>> hardware=unknown_hardware_please_send_us_a_patch
>> ;;
>> esac
>> #
>>
>> ############################################################################
>>
>>
>> ############################################################################
>> #
>> # Step 2) Determine $distro (distribution) string
>> #
>> # NOTES: Put newer tests higher up, as they'll most
>> # likely get hit first. -BEF-
>> # NOTES: But, make sure that newer programatic tests don't
>> override
>> # older tests with different results. -BEF-
>> #
>>
>> #
>> # If lsb-release contains the DISTRIB* variables we need - use
>> # them, otherwise, defer to tests later down the line.
>> #
>> get_lsb_info_if_available
>> if [ "${DISTRIB_ID}" != "" -a "${DISTRIB_RELEASE}" != "" ]; then
>> distro=${DISTRIB_ID}_${DISTRIB_RELEASE}
>>
>> elif [ -f /etc/issue ]; then
>>
>> if [ -e /etc/debian_version ]; then
>> distro_brand=debian
>> distro_version=`cat /etc/debian_version | sed
>> 's#testing/##'`
>> distro=${distro_brand}_${distro_version}
>>
>> elif [ -e /etc/gentoo-release ]; then
>> distro_brand=gentoo
>> # If you think there should be a version,
>> # uncomment out the following
>> #gentoo_profile=`readlink /etc/make.profile`
>> #distro_version=`basename ${gentoo_profile}`
>> #distro=${distro_brand}_${distro_version}
>> distro=${distro_brand}
>>
>> elif [ -n "`egrep 'Scientific Linux SL release [0-9\.]+'
>> /etc/issue`" ]; then
>> distro_ver="`grep 'Scientific Linux' /etc/issue |
>> sed -e 's/.*release \([0-9]*\.[0-9]*\).*/\1/'`"
>> distro=scientificlinux_$distro_ver
>>
>> elif [ -n "`egrep 'Red Hat Enterprise Linux ([a-zA-Z]+)
>> release [0-9]*' /etc/issue`" ]; then
>> distro_brand=rhel
>> #sub_distro=` grep 'Red Hat' /etc/issue | sed -e
>> 's/Red Hat Enterprise Linux \([A-Z][A-Z]\) release \([0-9]*\).*/\1/' `
>> distro_version=`grep 'Red Hat' /etc/issue | sed -e
>> 's/Red Hat Enterprise Linux \([a-zA-Z]*\) release \([0-9]*\).*/\2/' `
>>
>> #distro=${distro_brand}${distro_version}_${sub_distro}
>> distro=${distro_brand}${distro_version}
>>
>> elif [ -n "`egrep 'Cray Rocks Linux release 1.3'
>> /etc/issue`" ]; then
>> distro=rh73
>>
>> elif [ -n "`egrep 'SGI ProPack 3' /etc/issue`" ]; then
>> distro=rhel3
>>
>> elif [ -n "`egrep 'CentOS release 4.[0-9]' /etc/issue`" ];
>> then
>> distro=rhel4
>>
>> elif [ -n "`egrep 'SuSE SLES 8' /etc/issue`" ]; then
>> distro=sles8
>>
>> elif [ -n "`egrep 'Red Hat Linux Advanced Server release
>> 2.1AS ' /etc/issue`" ]; then
>> distro=redhat_2.1AS
>>
>> elif [ -n "`egrep 'Red Hat Linux release 9 ' /etc/issue`"
>> ]; then
>> distro=redhat_9
>>
>> elif [ -n "`egrep 'Red Hat Linux release 8.0 ' /etc/issue`"
>> ]; then
>> distro=redhat_8.0
>>
>> elif [ -n "`egrep 'Mandrake Linux release 9.1 '
>> /etc/issue`" ]; then
>> distro=mandrake_9.1
>>
>> elif [ -n "`egrep 'SGI ProPack 4' /etc/issue`" ]; then
>> distro=sles9
>>
>> elif [ -n "`egrep 'SUSE LINUX Enterprise Server 9'
>> /etc/issue`" ]; then
>> distro=sles9
>> elif [ -n "`egrep 'SUSE Linux Enterprise Server 10'
>> /etc/issue`" ]; then
>> distro=sles10
>>
>> elif [ -n "`egrep 'SuSE SLES 8' /etc/issue`" ]; then
>> distro=sles8
>>
>> elif [ -n "`egrep 'UnitedLinux 1.0' /etc/issue`" ]; then
>> distro=sles8
>>
>> # Welcome to SuSE Linux 9.0 (x86-64) - Kernel \r (\l)
>> elif [ -n "`egrep 'SuSE Linux 9\.0' /etc/issue`" ]; then
>> distro=suse_9.0
>>
>> elif [ -n "`egrep 'SuSE Linux 9\.1' /etc/issue`" ]; then
>> distro=suse_9.1
>>
>> elif [ -n "`egrep 'SuSE Linux 9\.2' /etc/issue`" ]; then
>> distro=suse_9.2
>>
>> elif [ -n "`egrep 'SuSE Linux 9\.3' /etc/issue`" ]; then
>> distro=suse_9.3
>>
>> # Welcome to SUSE LINUX 10.1 (i586) - Kernel \r (\l).
>> elif [ -n "`egrep 'SUSE LINUX 10\.1' /etc/issue`" ]; then
>> distro=suse_10.1
>>
>> # Welcome to openSUSE 10.2 (i586) - Kernel \r (\l).
>> elif [ -n "`egrep 'SUSE 10\.2' /etc/issue`" ]; then
>> distro=suse_10.2
>>
>> elif [ -n "`egrep 'SUSE 10\.3' /etc/issue`" ]; then
>> distro=suse_10.3
>>
>> elif [ -n "`egrep 'Tao Linux release 1 ' /etc/issue`" ];
>> then
>> distro=tao_1.0
>>
>> elif [ -n "`egrep 'Fedora Core ' /etc/issue`" ]; then
>> distro_brand=fc
>> distro_version=`grep 'Fedora Core ' /etc/issue |
>> sed -e 's/Fedora Core release \([0-9]*\).*/\1/' `
>> distro=${distro_brand}${distro_version}
>>
>> elif [ -n "`egrep 'White Box Enterprise Linux release 3.0'
>> /etc/issue`" ]; then
>> distro=white_box_enterprise_linux_3.0
>>
>> else
>> distro=unknown_linux_type_please_send_us_a_patch
>> fi
>> fi
>> #
>>
>> ############################################################################
>>
>>
>> ############################################################################
>> #
>> # Step 3) Put it all together as $type
>> #
>> type=linux-${distro}-${hardware}
>> #
>>
>> ############################################################################
>>
>> os=$uos
>> release=$urelease
>> }
>>
>> get_darwin_info()
>> {
>>
>> ############################################################################
>> #
>> # step 1) determine $hardware (architecture) string
>> # (Should be one of ppc, ppc64. Why these strings? Well,
>> we are
>> # taking them from the arches directory names in the
>> linux kernel
>> # source.) -BEF-
>> #
>> if [ -n "`system_profiler SPHardwareDataType|egrep '(CPU
>> Type|Processor Name): PowerPC G4 '`" ]; then
>> hardware=ppc
>> elif [ -n "`system_profiler SPHardwareDataType|egrep '(CPU
>> Type|Processor Name): PowerPC (970|G5) '`" ]; then
>> hardware=ppc64
>> elif [ -n "`system_profiler SPHardwareDataType|egrep 'Processor
>> Name: Intel Core Duo'`" ]; then
>> hardware=ia32
>> elif [ -n "`system_profiler SPHardwareDataType|egrep 'Processor
>> Name: (Dual-Core Intel Xeon|Intel Core 2 Duo)'`" ]; then
>> hardware=x86_64
>> else
>> hardware=unknown_darwin_hardware_please_send_us_a_patch
>> fi
>> #
>>
>> ############################################################################
>>
>>
>> ############################################################################
>> #
>> # step 2) determine $distro (distribution) string
>> #
>> # Thanks to JP Navarro for the get distro version string
>> command
>> # below. -BEF-
>> #
>>
>> distro_brand=macosx
>> distro_version=`sw_vers -productVersion|sed -e
>> 's/\([0-9]\{1,2\}\.[0-9]\{1,2\}\).*/\1/'`
>> distro=${distro_brand}_${distro_version}
>> if [ -z "$distro" ]; then
>> distro=unknown_darwin_version_please_send_us_a_patch
>> fi
>> #
>>
>> ############################################################################
>>
>>
>> ############################################################################
>> #
>> # Step 3) Put it all together as $type
>> #
>> type=darwin-${distro}-${hardware}
>> #
>>
>> ############################################################################
>>
>> os=$uos
>> release=$urelease
>> }
>> #
>> ################################################################################
>>
>> #
>> # Check the number of arguments and set the mode.
>> #
>> mode=type
>> format=default
>> if [ $# = 1 ]; then
>> case "$1" in
>> --c*|-c* )
>> format=classad
>> ;;
>> --x*|-x* )
>> format=xml
>> ;;
>> --t*|-t* )
>> mode=type
>> ;;
>> --n*|-n* )
>> mode=os
>> ;;
>> --r*|-r* )
>> mode=release
>> ;;
>> --m*|-m* )
>> mode=hardware
>> ;;
>> --a*|-a* )
>> mode=all
>> ;;
>> --list-all* )
>> mode=list_all
>> ;;
>> --l*|-l* )
>> mode=list
>> ;;
>> --v*|-v* )
>> mode=version
>> ;;
>> --h*|-h* )
>> mode=usage
>> ;;
>> --o*|-o* )
>> mode=option_test
>> # Cycles through and tries each of the other options, for testing
>> purposes.
>> ;;
>> esac
>> fi
>>
>> if [ "$mode" = "unknown" -o "$mode" = "usage" ]; then
>> echo "$program $version"
>> echo
>> echo "Usage: $program [OPTION]"
>> echo
>> cat <<EOF
>> whatami determines the "platform" of the system on which it is run. This
>> can be used, for example, to determine which of a series of nfs mounted
>> software directories is appropriate for use by the system in question.
>>
>> No unix utility quite fulfills these requirements, so the "whatami"
>> program's
>> purpose is to return a single unique string for each platform. This
>> string
>> can then used in directory names, program switches, and in other clever
>> ways.
>>
>> Options:
>> --help, -h
>> This help message.
>>
>> --version, -v
>> The version of $program.
>>
>> --type, -t
>> Prints the platform type (the default).
>>
>> --name, -n
>> Prints out the name of the operating system.
>>
>> --release, -r
>> Prints out the name and release of the os, separated by a space.
>>
>> --machine, -m
>> Prints out the architecture type for the machine.
>>
>> --all, -a
>> Prints platform type, hardware, os, and version, seperated by a space.
>>
>> --list, -l
>> Lists summary of known description strings.
>>
>> Please send patches to MCS Systems <systems_at_[hidden]>.
>>
>> EOF
>>
>>
>> if [ "$mode" = "usage" ]; then
>> exit 0
>> else
>> exit 1
>> fi
>> fi
>>
>> #
>> ===========================================================================
>> # Okay, now we know what we should do... if the mode is list or the
>> version
>> # that's easy to get out of the way.
>> #
>> # Be sure to add to this list whenever a new architecture is figured out.
>> #
>> ===========================================================================
>>
>> if [ "$mode" = "list" ]; then
>> cat <<EOF
>> type: cpu os version
>> ==================================
>> linux: (potential linux platform strings are numerous,
>> and may not be known in advance)
>> aix-3.x: * AIX 3.x
>> aix-4.x: * AIX 4.x
>> aix-5.x: * AIX 5.x
>> aux: * A/UX *
>> freebsd: * FreeBSD *
>> hpux: * HP-UX *
>> irix-5: * IRIX 5.x
>> irix-6: * IRIX 6.x
>> osf: * OSF1 *
>> solaris: sparc SunOS 5.x
>> sun4: sparc SunOS 4.x
>> ultrix: * Ultrix *
>> EOF
>> exit 0
>> fi
>>
>> if [ "$mode" = "version" ]; then
>> echo "$program $version"
>> exit 0
>> fi
>>
>> if [ "$mode" = "option_test" ]; then
>> #
>> # Test all options for whatami (except this one, of course)
>> #
>> for opt in -t -n -r -m -a -v --version -h --help -l
>> do
>> cmd="$0 $opt"
>> echo -n "$cmd: "
>> $cmd
>> if [ ! $? = 0 ]; then
>> echo "Failed on option $opt"
>> exit 1
>> fi
>> done
>> exit 0
>> fi
>>
>> #
>> ===========================================================================
>> # Find uname, store its location in $UNAME
>> #
>> ===========================================================================
>>
>> UNAME=unknown
>> for dir in `echo $PATH | sed 's/:/ /g'` ; do
>> if [ -f $dir/uname ]; then
>> UNAME=$dir/uname
>> break
>> fi
>> done
>>
>> if [ "$UNAME" = "unknown" ]; then
>> echo "Unable to locate uname in the path, which means we're out of luck."
>> exit 1
>> fi
>>
>>
>> #
>> ===========================================================================
>> # Now we try to figure out what we're running on. First we try to get
>> # close to the machine type, then we look at the mode and figure out what
>> # we need to print out.
>> #
>> ===========================================================================
>>
>> uos=`($UNAME -s) 2>/dev/null` || uos=unknown
>> urelease=`($UNAME -r) 2>/dev/null` || urelease=unknown
>> uhardware=`($UNAME -m) 2>/dev/null` || uhardware=unknown
>>
>> type=unknown
>> os=unknown
>> release=unknown
>> hardware=unknown
>>
>> case "${uos}:${urelease}:${uhardware}" in
>> AIX:*:*)
>> release=`$UNAME -v 2>/dev/null` || release=unknown
>> # case $release in
>> # 3)
>> # type=aix-3
>> # ;;
>> # 4)
>> # type=aix-4
>> # ;;
>> # 5)
>> # type=aix-5
>> # ;;
>> # esac
>> type=aix-$release.$urelease
>> os=$uos
>> hardware=$uhardware
>> ;;
>>
>> A/UX:*:*)
>> type=aux
>> os=$uos
>> release=$urelease
>> hardware=$uhardware
>> ;;
>>
>> CYGWIN_NT-5.1:*:*)
>> type=cygwin-5.1
>> os=$uos
>> release=$urelease
>> hardware=$uhardware
>> ;;
>>
>> Darwin:*:*)
>> get_darwin_info
>> ;;
>>
>> FreeBSD:*:*)
>> type=freebsd
>> os=$uos
>> release=$urelease
>> hardware=$uhardware
>> ;;
>>
>> HP-UX:*:*)
>> type=hpux
>> os=$uos
>> release=$urelease
>> hardware=$uhardware
>> ;;
>>
>> IRIX:5*:*)
>> type=irix-5
>> os=$uos
>> release=$urelease
>> hardware=`$UNAME -p 2>/dev/null` || hardware=unknown
>> ;;
>>
>> # On alaska, uname->IRIX64, but IRIX everywhere else.
>> IRIX*:6*:*)
>> type=irix-6
>> os=$uos
>> release=$urelease
>> hardware=`$UNAME -p 2>/dev/null` || hardware=unknown
>> ;;
>>
>> Linux:*:*)
>> os=$uos
>> release=$urelease
>> hardware=$uhardware
>> case $uhardware in
>> alpha)
>> # legacy definition
>> type=linux-alpha
>> ;;
>> *)
>> # legacy definitions
>> if [ -f /etc/issue ]; then
>> if [ -n "`cat /etc/issue | grep "Mandrake release 7.2"`" ]; then
>> type=linux-2
>> elif [ -n "`cat /etc/issue | grep "Red Hat Linux release 7.1"`" ]; then
>> type=linux-rh71
>> elif [ -n "`cat /etc/issue | grep "Red Hat Linux release 7.2"`" ]; then
>> type=linux-rh72
>> elif [ -n "`cat /etc/issue | grep "Red Hat Linux release 7.3"`" ]; then
>> type=linux-rh73
>> else
>> get_linux_type
>> fi
>> else
>> type=linux
>> fi
>> ;;
>> esac
>> ;;
>>
>> SunOS:4*:*)
>> type=sun4
>> os=$uos
>> release=$urelease
>> hardware=`/bin/arch -k` || hardware=unknown
>> ;;
>>
>> SunOS:5*:*)
>> solaris_version=`uname -r | sed 's/^5\.//'`
>> type=solaris-${solaris_version}
>> os=$uos
>> release=$urelease
>> hardware=`/bin/arch -k` || hardware=unknown
>> ;;
>>
>> OSF1:*:*)
>> type=osf
>> os=$uos
>> release=$urelease
>> hardware=$uhardware
>> ;;
>>
>> ULTRIX:*:*)
>> type=ultrix
>> os=$uos
>> release=$urelease
>> hardware=$uhardware
>> ;;
>>
>>
>> esac
>>
>> exit_code=0
>>
>> grid=""
>> #
>> ===========================================================================
>> # Got all the info, now just print the right stuff based on mode.
>> #
>> ===========================================================================
>> case $format in
>> classad)
>> echo ${grid}whatami_type = \"$type\"
>> echo ${grid}whatami_os = \"$os\"
>> echo ${grid}whatami_release = \"$release\"
>> echo ${grid}whatami_hardware = \"$hardware\"
>> if [ $os = "Linux" ]; then
>> echo ${grid}whatami_distro = \"$distro\"
>> fi
>> exit
>> ;;
>> xml)
>> echo "<${grid}whatami>"
>> echo " <type>$type</type>"
>> echo " <os>$os</os>"
>> echo " <release>$release</release>"
>> echo " <hardware>$hardware</hardware>"
>> if [ $os = "Linux" ]; then
>> echo " <distro>$distro</distro>"
>> fi
>> echo "</${grid}whatami>"
>> exit
>> ;;
>> esac
>>
>> case $mode in
>> type)
>> if [ $type = "unknown" ]; then
>> exit_code=1
>> fi
>> echo $type
>> ;;
>>
>> os)
>> if [ $os = "unknown" ]; then
>> exit_code=1
>> fi
>> echo $os
>> ;;
>>
>> release)
>> if [ $os = "unknown" -o $release = "unknown" ]; then
>> exit_code=1
>> fi
>> echo "$os $release"
>> ;;
>>
>> hardware)
>> if [ $hardware = "unknown" ]; then
>> exit_code=1
>> fi
>> echo $hardware
>> ;;
>>
>> all)
>> if [ $hardware = "unknown" \
>> -o $os = "unknown" \
>> -o $release = "unknown" ]; then
>> exit_code=1
>> fi
>> echo "$type $hardware $os $release"
>> ;;
>> esac
>>
>> exit $exit_code
>>
>
>
> --
> Jeff Squyres
> Cisco Systems
>
> _______________________________________________
> mtt-users mailing list
> mtt-users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users