summaryrefslogtreecommitdiff
path: root/sntp/scripts/cvo.sh
blob: ecd80922301f466a6e1b2bcedb23c1f4ac2e82a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#! /bin/sh

# Copyright 2002, 2009, 2010 Harlan Stenn.  Used by NTP with permission.
# Author: Harlan Stenn <harlan+cvo@pfcs.com>

# Possible output formats:
#
# CVO=...		Shell variable
# CVO=... ; export CVO	Old-style exported envariable
# export CVO=...	New-style exported envariable
# setenv CVO ...	csh-style exported envariable

TS="$*"

CVO_raw=`config.guess`
CVO=$CVO_raw

set 1 `echo $CVO | tr '-' ' '`
shift

case "$#" in
 4) # eg: i686-pc-linux-gnu
    CVO_CPU=$1
    CVO_VENDOR=$2
    cvo_KERN=$3			# Note the capitalization...
    CVO_OS=$4
    case "$cvo_KERN" in
     linux)			# Braindamage.  We want OS, not kernel info
	if lsb_release > /dev/null 2>&1
	then
	    CVO_OS=`lsb_release --id --short | tr '[:upper:]' '[:lower:]'`
	    CVO_OS="$CVO_OS`lsb_release --release --short`"
	elif test -f /etc/debian_version
	then
	    set `cat /etc/debian_version`
	    CVO_OS=debian$1
	    CVO_KOSVER=`uname -r`
	elif test -f /etc/mandrake-release
	then
	    set `cat /etc/mandrake-release`
	    CVO_OS=mandrake$4
	    CVO_KOSVER=`uname -r`
	elif test -f /etc/redhat-release
	then
	    set `cat /etc/redhat-release`
	    case "$1" in
	     CentOS)
		case "$2" in
		 Linux)
		    CVO_OS=centos$4
		    ;;
		 *) CVO_OS=centos$3
		    ;;
		esac
	        ;;
	     Fedora)
	        CVO_OS=fedora$3
	        ;;
	    *)
		case "$3" in
		 Enterprise)
		    CVO_OS=redhat$7.E
		    ;;
		 Linux)
		    CVO_OS=redhat$5
		    ;;
		esac
		;;
	    esac
	    CVO_KOSVER=`uname -r`
	elif test -f /etc/slackware-version
	then
	    set `cat /etc/slackware-version`
	    CVO_OS=slackware$2
	    CVO_KOSVER=`uname -r`
	elif test -f /etc/SuSE-release
	then
	    set `cat /etc/SuSE-release`
	    CVO_OS=suse$9
	    CVO_KOSVER=`uname -r`
	else
	    CVO_OS=$cvo_KERN`uname -r`

	fi
	;;
     nto)	# QNX
	CVO_KOSVER=`uname -r`
	;;
     *)
	echo "gronk - I don't understand <$CVO>!"
	exit 1
	;;
    esac
    ;;
 3) CVO_CPU=$1
    CVO_VENDOR=$2
    CVO_OS=$3
    ;;
 *) echo "gronk - config.guess returned $# pieces, not 3 pieces!"
    exit 1
    ;;
esac

case "$CVO_OS" in
 cygwin)
    # Decisions, decisions.
    # uname -r is the cygwin version #, eg: 1.3.3(0.46/3/2)
    # uname -s returns something like CYGWIN_NT-5.0
    CVO_OS="$CVO_OS`uname -r | sed 's/(.*//'`"
    ;;
esac
set `echo $CVO_OS | sed 's/\([0-9]\)/ \1/'`

case "$#" in
 2) ;;
 *) echo "gronk - <$CVO_OS> expanded to $#, not 2 pieces!"
    exit 1
    ;;
esac

CVO_OSNAME=$1
CVO_OSVER=$2

case "$CVO_OSNAME" in
 solaris)
    CVO_KOSVER=`uname -v`
    ;;
esac

CVO=$CVO_CPU-$CVO_VENDOR-$CVO_OS

case "$TS" in
 '')
    set | grep CVO
    ;;
 *)
    # keys['cvo'] = "cvo.CVO['CVO']"
    TS=`echo $TS | sed -e s/@cvo@/$CVO/g`
    # keys['cpu'] = "cvo.CVO['CVO_CPU']"
    TS=`echo $TS | sed -e s/@cpu@/$CVO_CPU/g`
    # keys['kosver'] = "cvo.CVO['CVO_KOSVER']"
    TS=`echo $TS | sed -e s/@kosver@/$CVO_KOSVER/g`
    # keys['os'] = "cvo.CVO['CVO_OS']"
    TS=`echo $TS | sed -e s/@os@/$CVO_OS/g`
    # keys['osname'] = "cvo.CVO['CVO_OSNAME']"
    TS=`echo $TS | sed -e s/@osname@/$CVO_OSNAME/g`
    # keys['osver'] = "cvo.CVO['CVO_OSVER']"
    TS=`echo $TS | sed -e s/@osver@/$CVO_OSVER/g`
    # keys['vendor'] = "cvo.CVO['CVO_VENDOR']"
    TS=`echo $TS | sed -e s/@vendor@/$CVO_VENDOR/g`
    # keys['raw'] = "cvo.CVO['CVO_raw']"
    TS=`echo $TS | sed -e s/@raw@/$CVO_raw/g`

    echo $TS
    ;;
esac