You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
2.7 KiB
128 lines
2.7 KiB
#!/bin/sh
|
|
#
|
|
# Answer the question: what distro are we installing.
|
|
#
|
|
# Copyright (C) 2010, Cisco Systems Inc.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
#
|
|
# Ngie Cooper, January 2010
|
|
#
|
|
#
|
|
|
|
error() {
|
|
echo "${0##*/}: ERROR: $*" >&2
|
|
}
|
|
|
|
destdir=
|
|
omit_redhat_minor_version=0
|
|
|
|
while getopts "d:m" opt; do
|
|
|
|
case "$opt" in
|
|
d)
|
|
if [ ! -d "$OPTARG" ] ; then
|
|
error "$OPTARG doesn't exist"
|
|
exit 1
|
|
fi
|
|
destdir=$OPTARG
|
|
;;
|
|
m)
|
|
omit_redhat_minor_version=1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
etc_dir="$destdir/etc"
|
|
|
|
if [ ! -d "$etc_dir" ] ; then
|
|
error "$etc_dir doesn't exist"
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# Precedence list for files to look through for version info...
|
|
#
|
|
# XXX (garrcoop): add more..
|
|
#
|
|
for i in gentoo-release redhat-release; do
|
|
if [ -f "$etc_dir/$i" ] ; then
|
|
DISTRO_RELEASE_FILE="$i"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ "x$DISTRO_RELEASE_FILE" = x ] ; then
|
|
error "Couldn't determine distro release file"
|
|
error "Please send an email with your distro's details, if you believe this is in error"
|
|
exit 1
|
|
else
|
|
DISTRO_RELEASE_ABS_FILE="$etc_dir/$DISTRO_RELEASE_FILE"
|
|
|
|
case "$i" in
|
|
gentoo-release)
|
|
DISTRO=gentoo
|
|
RELEASE_FORMAT_FILE=1
|
|
;;
|
|
redhat-release)
|
|
RELEASE_FORMAT_FILE=1
|
|
if grep -q '^Red Hat' "$DISTRO_RELEASE_ABS_FILE"; then
|
|
DISTRO=redhat
|
|
elif grep -q '^Fedora' "$DISTRO_RELEASE_ABS_FILE"; then
|
|
DISTRO=fedora
|
|
else
|
|
RELEASE_FORMAT_FILE=0
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if [ $RELEASE_FORMAT_FILE -eq 1 ] ; then
|
|
|
|
set -- $(cat "$DISTRO_RELEASE_ABS_FILE")
|
|
|
|
while [ 1 ] ; do
|
|
shift
|
|
if [ $# -eq 0 -o "x$1" = "xrelease" ] ; then
|
|
if [ "x$1" = "xrelease" ] ; then
|
|
shift
|
|
fi
|
|
break
|
|
fi
|
|
done
|
|
|
|
case "$DISTRO" in
|
|
gentoo)
|
|
VERSION=$1
|
|
;;
|
|
fedora|redhat)
|
|
MAJOR_VER=$1
|
|
if [ $omit_redhat_minor_version -eq 0 ] && echo "$@" | grep -q '\(.*Update.*\)'; then
|
|
MINOR_VER=$(echo "$@" | sed -e 's/[\(\)]//g' -e 's/.*Update //')
|
|
fi
|
|
VERSION="$MAJOR_VER${MINOR_VER:+.${MINOR_VER}}"
|
|
;;
|
|
esac
|
|
|
|
fi
|
|
|
|
if [ "x$VERSION" = x ] ; then
|
|
error "Bad release file: $etc_dir/$DISTRO_RELEASE_FILE"
|
|
exit 2
|
|
else
|
|
echo "$DISTRO-$VERSION"
|
|
fi
|
|
|
|
fi
|