Files
allwpilib/simulation/frcsim-installer.sh
Peter_Mitrano acc7fbbf01 finishing up FRCSim installer
adds build of gz_msgs on end-user computer
This means we don't need to provide different zips for different
versions of ubuntu.
The problem was that gazebo on 14.04 comes with protobuf 2.5 but gazebo on 15.10 comes with 2.6
added a few other fixes to the install script as well

also fix dependency between simluation publishing and libwpilibcsim
building

Change-Id: I57d5a26ed7795bc61a25402e2986c6023d1d78ac
2015-12-29 13:48:59 -05:00

229 lines
6.6 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 the install will likely fail." 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 -y
fi
# Make sure that python is installed
if ! which python >/dev/null; then
echo "*** You don't appear to have python installed." 1>&2
echo "*** Install? (y/n)" 1>&2
read CONT
if [ "$CONT" != "y" -a "$CONT" != "Y" ]; then
install-fail
fi
apt-get install python -y
fi
# Make sure that unzip is installed
if ! which unzip >/dev/null; then
echo "*** You don't appear to have unzip installed." 1>&2
echo "*** Install? (y/n)" 1>&2
read CONT
if [ "$CONT" != "y" -a "$CONT" != "Y" ]; then
install-fail
fi
apt-get install unzip -y
fi
}
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
apt-get update
apt-get remove --auto-remove gazebo6 g++-4.9 openjdk-8-jdk
rm -rf /opt/eclipse
rm -f /usr/share/applications/frcsim.desktop /usr/share/applications/eclipse.desktop /usr/share/applications/sim_ds.desktop
rm -f /usr/bin/frcism /usr/bin/sim_ds /usr/bin/eclipse
rm -rf ~/wpilib/simulation
}
function install-eclipse-plugins {
if ! (wget -O /tmp/simulation.zip http://first.wpi.edu/FRC/roborio/maven/development/simulation/simulation/1.0.0/simulation-1.0.0.zip)
then
echo "***could not download wpilib simulation plugins, wrong URL probably***"
install-fail
fi
mkdir -p ~/wpilib/simulation
unzip /tmp/simulation.zip -d ~/wpilib/simulation
ln -fs ~/wpilib/simulation/frcsim /usr/bin/frcsim
ln -fs ~/wpilib/simulation/sim_ds /usr/bin/sim_ds
}
function install-eclipse {
if ! (wget -O /tmp/eclipse.tar.gz http://eclipse.mirror.rafal.ca/technology/epp/downloads/release/mars/1/eclipse-cpp-mars-1-linux-gtk-x86_64.tar.gz)
then
echo "***could not download eclipse, wrong URL probably***"
install-fail
fi
tar -xf /tmp/eclipse.tar.gz -C /opt
ln -fs /opt/eclipse/eclipse /usr/bin/eclipse
}
function install-desktops {
mv ~/wpilib/simulation/eclipse.desktop /usr/share/applications/eclipse.desktop
mv ~/wpilib/simulation/frcsim.desktop /usr/share/applications/frcsim.desktop
mv ~/wpilib/simulation/sim_ds.desktop /usr/share/applications/sim_ds.desktop
}
function install-gz_msgs {
cd ~/wpilib/simulation/gz_msgs
mkdir build
cd build
cmake ..
make
make install
}
function install-toolchain {
add-apt-repository ppa:openjdk-r/ppa -y
add-apt-repository ppa:ubuntu-toolchain-r/test -y
apt-get update
apt-get install cmake libprotoc-dev libprotobuf-dev protobuf-compiler g++-4.9 openjdk-8-jdk -y
ln -fs /usr/bin/g++-4.9 /usr/bin/g++
}
function install-models {
if ! (wget -O /tmp/models.zip https://usfirst.collab.net/sf/frs/do/downloadFile/projects.wpilib/frs.simulation.frcsim_gazebo_models/frs1160?)
then
echo "*** failed to download models. Check your internet connection! ***"
install-fail
fi
unzip /tmp/models.zip -d /tmp
mv /tmp/frcsim-gazebo-models/models ~/wpilib/simulation/models
mv /tmp/frcsim-gazebo-models/worlds ~/wpilib/simulation/worlds
}
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
# Update and install 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 gazebo6
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
install-eclipse-plugins
install-toolchain
install-gz_msgs
install-eclipse
install-desktops
install-models
sudo chown -R $USER:$USER ~/wpilib
# Done
echo "Installation Finished!!"
}
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
if [ -z "$1" ]
then
echo "***This script requires an argument!***"
echo "***Run ./frcsim_installer.sh INSTALLER to install***"
echo "***Other options are REMOVE, or any of the functions in the script"
else
$@
fi
fi