-
Notifications
You must be signed in to change notification settings - Fork 20
/
doinstall
executable file
·197 lines (159 loc) · 4.8 KB
/
doinstall
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#!/bin/sh
current_dir="`/bin/pwd`"
begin_message() {
clear
cat <<EOF
This script is provided to simplify the installation of GtkAda.
You will be asked for confirmation before the actual installation is
done. You can break out of this script at any time before this.
Hit RETURN to continue.
EOF
read x
}
# Checks for the presence of a Gtk+ binary package in gtk-bin/
check_gtk_bin() {
gtk_bin_dir="`pwd`/gtk-bin"
if test ! -d "$gtk_bin_dir"; then
echo "Gtk+ binary package not found. Aborting the installation process."
exit
fi
}
## Read the base directory (absolute path name)
## Sets the variable $basedir
ask_basedir() {
clear
default_dir="`type gnatmake 2>/dev/null| cut -d' ' -f3`"
default_dir="`dirname \"$default_dir\" 2>/dev/null`"
if [ "$default_dir" != "" -a "$default_dir" != "." -a "$default_dir" != "/usr/bin" ]; then
default_dir="`cd "$default_dir/.."; pwd`"
cat <<EOF
GNAT has been found in $default_dir.
Do you want to install GtkAda there too? Hit RETURN if yes or enter
the name of the directory in which GtkAda should be installed:
EOF
else
default_dir=/opt/gtkada
cat <<EOF
Enter the name of the directory in which you would like to install GtkAda
EOF
fi
while [ "$basedir" = "" ]; do
printf "[$default_dir] "
read basedir
if echo "$basedir" | egrep "[ ]" >/dev/null; then
echo "GtkAda cannot be installed in a path that contains spaces."
echo "Please enter another directory."
basedir=""
else
if [ "$basedir" = "" ]; then
basedir="$default_dir"
fi
if echo "$basedir" | egrep "^[/~]" >/dev/null; then
true
else
basedir="`pwd`"/"$basedir"
fi
fi
done
# Suppress the final / in basedir
basedir="`echo "$basedir" | sed -e 's/\/$//'`"
# Check that we have permission to write in $basedir
if test -d "$basedir"; then
if test -w "$basedir"; then
if [ -x "$basedir/bin/gtkada" ]; then
echo " $basedir/bin/gtkada found."
printf " Do you want to overwrite existing installation [Y/n] ? "
read x
if [ "$x" = "n" -o "$x" = "N" ]; then
echo "Aborting the installation process"
exit
fi
fi
else
echo "You do not have permission to write in $basedir"
echo "Please check whether you should be root to install in that directory."
echo "Aborting the installation process"
exit
fi
else
echo ""
echo " Directory $basedir does not exist."
printf " Do you want to create it [Y/n] ? "
read x
if [ "$x" = "n" -o "$x" = "N" ]; then
echo "Aborting the installation process"
exit
fi
mkdir -p "$basedir"
fi
echo ""
printf " Are you now ready to proceed with the installation [Y/n] ? "
read x
if [ "$x" = "n" -o "$x" = "N" ]; then
echo "Aborting the installation process"
exit
fi
}
##################################
## Do the actual installation
##################################
install_binaries() {
echo "Copying the Gtk+ binaries"
cp -r "$gtk_bin_dir"/* "$basedir"
echo "Setting up the environment"
eval `"$basedir"/bin/gtkada-env.sh --print-only`
# Update gdkpixbuf loaders cache
LD_LIBRARY_PATH=$basedir/lib:$LD_LIBRARY_PATH \
GDK_PIXBUF_MODULE_FILE=$basedir/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \
GDK_PIXBUF_MODULEDIR=$basedir/lib/gdk-pixbuf-2.0/2.10.0/loaders \
$basedir/bin/gdk-pixbuf-query-loaders --update-cache
# Update immodules cache
LD_LIBRARY_PATH=$basedir/lib:$LD_LIBRARY_PATH \
GTK_IM_MODULE_FILE=$basedir/lib/gtk-3.0/3.0.0/immodules.cache \
GTK_PATH=$basedir/lib/gtk-3.0 \
$basedir/bin/gtk-query-immodules-3.0 --update-cache
echo "Compiling GtkAda"
./configure --prefix="$basedir" && make all install 2>&1 | \
tee install.log
# Test for the presence of a gtkada.gpr as check that the install succeeded
if [ ! -f "$basedir/lib/gnat/gtkada.gpr" ]; then
echo ""
echo "An error occurred. Please see install.log."""
exit 1
fi
}
##
## Write the end message
##
end_message() {
clear
cat <<EOF
GtkAda has now been installed on your machine.
You can enter the GtkAda environment by doing:
"$basedir/bin/gtkada-env.sh"
EOF
}
## Main program
if [ $# -eq 1 ]; then
if [ "$1" = "--help" ]; then
printf "
Usage: $0 [install_dir]
When no argument is specified, runs the GtkAda installer
interactively, otherwise installs automatically under install_dir.
"
else
echo "installing GtkAda under $1"
check_gtk_bin
basedir="$1"
mkdir -p $basedir || exit 1
install_binaries
end_message
fi
exit 0
fi
# Perform interactive install
check_gtk_bin
begin_message
ask_basedir
install_binaries
end_message