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 <jsquy...@cisco.com>
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
<jsquy...@cisco.com>
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.mall...@sun.com>:
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-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
--
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
tmat...@gmail.com || timat...@open-mpi.org
I'm a bright... http://www.the-brights.net/
_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
--
Jeff Squyres
Cisco Systems
_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
--
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
tmat...@gmail.com || timat...@open-mpi.org
I'm a bright... http://www.the-brights.net/
_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
--
Jeff Squyres
Cisco Systems
_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users
--
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
tmat...@gmail.com || timat...@open-mpi.org
I'm a bright... http://www.the-brights.net/
_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
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 <ev...@mcs.anl.gov>
# - Version 1.0 and 2.0:
# 2003.03.12 Brian Elliott Finley <fin...@anl.gov>
# - 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 <diege...@sdsc.edu>
# - patch for aix-5
# 2004.01.17 Brian Elliott Finley <fin...@anl.gov>
# - modified --help output
# - accept --long-options as well as -s (short options)
# 2004.02.04 Brian Elliott Finley <fin...@anl.gov>
# - identify macosx on ppc and ppc64
# - identify linux on Opteron (x86_64)
# 2004.02.26 Brian Elliott Finley <fin...@anl.gov>
# - add redhat AS
# - add mandrake 9.1
# - add redhat 9
# - add redhat 8
# 2005.01.19 Susan Coghlan <s...@mcs.anl.gov>
# - add sles8 PPC64
# 2005.02.01 Susan Coghlan <s...@mcs.anl.gov>
# - 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 <p...@cs.wisc.edu>
# - add tao linux 1.0, cygwin
# 2005.04.22 Ti Leggett <legg...@mcs.anl.gov>
# - add Gentoo
# 2006.03.14 JP Navarro <nava...@mcs.anl.gov>
# - 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 <nava...@mcs.anl.gov>
# - add Fedora Core <n>
# - drop RHEL sub-distros
# - ClassAd output support
# - XML output support
# 2006.03.30 Ti Leggett <legg...@mcs.anl.gov>
# - Fixed CentOS to recognize 4.x instead of only 4.0
# 2006.10.17 JP Navarro <nava...@mcs.anl.gov>
# - Add SuSE 10.1
# 2007.01.02 JP Navarro <nava...@mcs.anl.gov>
# - Add SuSE 10.2
# 2007.02.06 Ti Leggett <legg...@mcs.anl.gov>
# - Add MacOS on Intel support
# 2008.10.14 Brian Finley <fin...@anl.gov>
# - Add generic lsb_release support
# - includes CentOS 5.x
# 2008.10.30 Ethan Mallove <ethan.mall...@sun.com>
# - Support two different SuSE 10 lsb-release file formats
# 2008.10.30 Brian Finley <fin...@anl.gov>
# - 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 <syst...@mcs.anl.gov>.
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