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
|
#!/bin/sh
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
}
current_dir="`/bin/pwd`"
# 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`
echo "Compiling GtkAda"
./configure --prefix="$basedir" --with-GL=no && 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
check_gtk_bin
begin_message
ask_basedir
install_binaries
end_message
|