aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/scripts/install_prereq
blob: 39541ecb12ebe8081682baa2ad4901af494ff9d3 (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
#! /bin/sh
#
# $Id$
#

# install_prereq: a script to install distribution-specific
# prerequirements

set -e

usage() {
  echo "$0: a script to install distribution-specific prerequirement"
  echo 'Revision: $Id$'
  echo ""
  echo "Usage: $0:         Shows this message."
  echo "Usage: $0 test     Prints commands it is about to run."
  echo "Usage: $0 install  Really install."
}

# Basic build system:
PACKAGES_DEBIAN="build-essential"
# Asterisk: basic requirements:
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libncurses-dev libz-dev libssl-dev"
# Asterisk: very useful addons:
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libcurl-dev libspeex-dev libogg-dev libvorbis-dev libasound2-dev"
# Asterisk: nice-to-have addons:
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libpq-dev unixodbc-dev libsqlite-dev"
# Not so nice addon:
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libopenh323-dev"
# Extras for 1.4:
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libsnmp-dev libiksemel-dev "

PACKAGES_RH="gcc gcc-c++ ncurses-devel openssl-devel"

PACKAGES_OBSD="popt gmake wget libogg libvorbis curl iksemel spandsp speex iodbc freetds-0.63p1-msdblib gmime sqlite sqlite3 jack"

KVERS=`uname -r`

case "$1" in
test)    testcmd=echo ;;
install) testcmd='' ;;
'') usage; exit 0 ;;
*) usage; exit 1 ;;
esac

in_test_mode() {
  test "$testcmd" != ''
}

check_installed_debs() {
	aptitude -F '%c %p' search "$@" 2>/dev/null \
	| awk '/^p/{print $2}'
}

# parsing the output of yum is close to impossible.
# We'll use rpm and hope for the best:
check_installed_rpms() {
	for pack in "$@"
	do
		if ! rpm -q $pack >/dev/null 2>/dev/null
		then echo $pack
		fi
	done
}

check_installed_pkgs() {
	for pack in "$@"
	do
		if [ `pkg_info -a | grep $pack | wc -l` = 0 ]; then
		echo $pack
		fi
	done
}

handle_debian() {
	# echo "# Distribution is Debian or compatible"
	extra_packs=`check_installed_debs $PACKAGES_DEBIAN`
	$testcmd aptitude install -y $extra_packs
}

handle_rh() {
	# echo "# Distribution is RedHat-based or compatible"
	extra_packs=`check_installed_rpms $PACKAGES_RH`
        # FIXME: is there yum with RHEL 4?
	$testcmd yum install -y $extra_packs
}

handle_obsd() {
	# echo "# Distribution is OpenBSD or compatible"
	extra_packs=`check_installed_pkgs $PACKAGES_OBSD`
	$testcmd pkg_add $extra_packs
}

if in_test_mode; then
	echo "#############################################"
	echo "## $1: test mode."
	echo "## Use the commands here to install your system."
	echo "#############################################"
fi

OS=`uname -s`
unsupported_distro=''

# A number of distributions we don't (yet?) support.
if [ "$OS" != 'Linux' -a "$OS" != 'OpenBSD' ]; then
  echo >&2 "$0: Your OS ($OS) is currently not supported. Aborting."
  exit 1
fi

if [ -f /etc/gentoo-release ]; then
  unsupported_distro='Gentoo'
fi

if [ -f /etc/mandrake-release ]; then
  unsupported_distro='Mandriva'
fi

if [ -f /etc/SuSE-release ]; then
  unsupported_distro='SUSE'
fi

if [ -f /etc/slackware-version ]; then
  unsupported_distro='Slackware'
fi

if [ "$unsupported_distro" != '' ]; then
  echo >&2 "$0: Your distribution ($unsupported_distro) is currently not supported. Aborting."
  exit 1
fi

# The distributions we do support:
if [ -r /etc/debian_version ]; then
  handle_debian
elif [ -r /etc/redhat-release ]; then
  handle_rh
elif [ "$OS" = 'OpenBSD' ]; then
  handle_obsd
fi

if ! in_test_mode; then
  echo "#############################################"
  echo "## $1 completed successfully"
  echo "#############################################"
fi