mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
154 lines
4.8 KiB
Bash
Executable File
154 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
function check-environment {
|
|
# Ensure root access
|
|
if [ "$(id -u)" != "0" ]; then
|
|
echo "*** This script must be run as root!" 1>&2
|
|
echo "*** Make sure that you followed the instructions properly." 1>&2
|
|
install-fail
|
|
fi
|
|
|
|
# Make sure that we're on Ubuntu.
|
|
if [ "$(lsb_release -is)" != "Ubuntu" ]; then
|
|
if [ "$(lsb_release -is)" = "" ]; then
|
|
echo "*** Distributions other than Ubuntu (such as yours, probably) are not supported." 1>&2
|
|
else
|
|
echo "*** Distributions other than Ubuntu (such as $(lsb_release -is)) are not supported." 1>&2
|
|
fi
|
|
echo "*** This means that if the install fails, don't blame us." 1>&2
|
|
echo "*** Continue anyway? (y/n)" 1>&2
|
|
read CONT
|
|
if [ "$CONT" != "y" -a "$CONT" != "Y" ]; then
|
|
install-fail
|
|
fi
|
|
fi
|
|
|
|
# Make sure that we have /etc/apt/sources.list.d available.
|
|
if [ ! -e /etc/apt/sources.list.d ]; then
|
|
echo "*** Cannot find /etc/apt/sources.list.d - is apt installed?"
|
|
install-fail
|
|
fi
|
|
|
|
# Make sure that apt-key is installed.
|
|
if ! which apt-key >/dev/null; then
|
|
echo "*** You don't appear to have apt-key installed." 1>&2
|
|
echo "*** Please install apt and run the script again." 1>&2
|
|
install-fail
|
|
fi
|
|
|
|
# Make sure that apt-get is installed.
|
|
if ! which apt-get >/dev/null; then
|
|
echo "*** You don't appear to have apt-get installed." 1>&2
|
|
echo "*** Please install apt and run the script again." 1>&2
|
|
install-fail
|
|
fi
|
|
|
|
# Make sure that we have internet access.
|
|
if ! ping 8.8.8.8 -c 1 >/dev/null; then
|
|
echo "*** You don't appear to be able to access the internet! (Can't ping 8.8.8.8)" 1>&2
|
|
install-fail
|
|
fi
|
|
|
|
# Make sure that wget is installed.
|
|
if ! which wget >/dev/null; then
|
|
echo "*** You don't appear to have wget installed." 1>&2
|
|
echo "*** Install? (y/n)" 1>&2
|
|
read CONT
|
|
if [ "$CONT" != "y" -a "$CONT" != "Y" ]; then
|
|
install-fail
|
|
fi
|
|
apt-get install wget
|
|
fi
|
|
}
|
|
|
|
function install-fail {
|
|
python -c "raw_input(\"Installation Failed (Hit enter to exit) \")" 1>&2
|
|
exit 1
|
|
}
|
|
|
|
function remove-frcsim {
|
|
|
|
check-environment
|
|
|
|
echo "*** Remove Gazebo package entry too? (y/n)" 1>&2
|
|
read CONT
|
|
if [ "$CONT" == "y" -o "$CONT" == "Y" ]; then
|
|
rm -f /etc/apt/sources.list.d/gazebo-latest.list
|
|
fi
|
|
rm -f /etc/apt/sources.list.d/frcsim-latest.list
|
|
|
|
# TODO: Does not currently remove keys. Should it?
|
|
|
|
apt-get update
|
|
|
|
apt-get remove --auto-remove frcsim
|
|
}
|
|
|
|
function install-frcsim {
|
|
|
|
check-environment
|
|
|
|
# Add Gazebo Repository and Key
|
|
if ! echo "deb http://packages.osrfoundation.org/gazebo/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-latest.list
|
|
then
|
|
echo "*** Cannot add Gazebo repository!" 1>&2
|
|
install-fail
|
|
fi
|
|
if ! (wget http://packages.osrfoundation.org/gazebo.key -O - | apt-key add -)
|
|
then
|
|
echo "*** Cannot add Gazebo repository key!" 1>&2
|
|
if ! ping packages.osrfoundation.org -c 1 >/dev/null; then
|
|
echo "*** The package host for Gazebo appears to be down. Try again later." 1>&2
|
|
fi
|
|
install-fail
|
|
fi
|
|
|
|
# Add FRCSim Repository and Key
|
|
if ! echo "deb http://first.wpi.edu/FRC/roborio/release/linux `lsb_release -cs` main" > /etc/apt/sources.list.d/frcsim-latest.list
|
|
then
|
|
echo "*** Cannot add FRCSim repository!" 1>&2
|
|
install-fail
|
|
fi
|
|
if ! (wget first.wpi.edu/FRC/roborio/wpilib.gpg.key -O - | apt-key add -)
|
|
then
|
|
echo "*** Cannot add FRCSim repository key!" 1>&2
|
|
if ! ping first.wpi.edu -c 1 >/dev/null; then
|
|
echo "*** The package host for FRCSim appears to be down. Try again later." 1>&2
|
|
fi
|
|
install-fail
|
|
fi
|
|
|
|
# Update and install frcsim and its dependencies
|
|
if ! apt-get update
|
|
then
|
|
echo "*** Could not resynchronize package index files." 1>&2
|
|
echo "*** Are you running another update or install?" 1>&2
|
|
install-fail
|
|
fi
|
|
if ! apt-get install -y frcsim
|
|
then
|
|
echo "*** Could not install frcsim packages. See above output for details." 1>&2
|
|
echo "*** Are you running another update or install?" 1>&2
|
|
install-fail
|
|
fi
|
|
|
|
# Done
|
|
python -c "raw_input(\"Installation Finished (Hit enter to exit) \")" 1>&2
|
|
}
|
|
|
|
if [ "$1" == "ROOT" ]
|
|
then
|
|
install-frcsim
|
|
elif [ "$1" == "INSTALLER" ]
|
|
then
|
|
SUDO_ASKPASS=/usr/bin/ssh-askpass sudo bash -c "$0 ROOT"
|
|
elif [ "$1" == "REMOVE-ROOT" ]
|
|
then
|
|
remove-frcsim
|
|
elif [ "$1" == "REMOVE" ]
|
|
then
|
|
SUDO_ASKPASS=/usr/bin/ssh-askpass sudo bash -c "$0 REMOVE-ROOT"
|
|
else
|
|
gnome-terminal --window --hide-menubar --title "FRCSim Installer" -e "$0 INSTALLER"
|
|
fi
|