Skip to content

Commit

Permalink
Update script to use mono git repos
Browse files Browse the repository at this point in the history
Merged in patches from Dan Quirk and Stefan Forster
  * Install ubuntu packages in script
  * Allow 2.6 or trunk build
  • Loading branch information
firegrass committed Aug 9, 2010
1 parent b5801b8 commit c11b1b3
Showing 1 changed file with 87 additions and 46 deletions.
133 changes: 87 additions & 46 deletions mono_parallel.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -6,57 +6,98 @@
#
# Copyright 2009 (c) QMTech Ltd (http://www.qmtech.net)
# Authors: Patrick McEvoy (firegrass) patrick@qmtech.net
# Contributions from Dan Quirk,
# This is free script under GNU GPL version 3.

# config
# TODO: Allow opt or home install option (hence sudo/no sudo)
# TODO: Allow have 2.6 or trunk
VERSION=2.6
#
# Config
#

# TODO: webserver/server/workstation (+mod_mono,-gnome,-mono-tools/-gnome,-mono-tools/-mod_mono)
WORKING_DIR=~/mono-src
# LOGFILE=`pwd`/mono_installer_`date --date=now +%y%m%d_%H%M`.log
LOGFILE=`pwd`/mono_installer.log
touch $LOGFILE

ECHO_PREFIX="---- "

#
# WARNING: Don't change stuff after here unless you're sure....
#

echo "$ECHO_PREFIX Copyright 2009 (c) QMTech Ltd (http://www.qmtech.net)"
echo "$ECHO_PREFIX Authors: Patrick McEvoy (firegrass) patrick@qmtech.net"
echo "$ECHO_PREFIX Contributions from Dan Quirk,⋅Stefan Forster"
echo "$ECHO_PREFIX This is free script under GNU GPL version 3."

# Supported versions 2.6, 2.6.4 or trunk
if [ $1 == "trunk" ]; then
VERSION=trunk
elif [ $1 == "2.6" ]; then
VERSION=2.6
else
echo "$ECHO_PREFIX Requries version, mono_parallel.sh version eg mono_parallel.sh trunk"
exit
fi

MONO_PREFIX=/opt/mono-$VERSION
GNOME_PREFIX=/usr
WORKING_DIR=~/mono-src/mono-$VERSION
# TODO: webserver/server/workstation (+mod_mono,-gnome,-mono-tools/-gnome,-mono-tools/-mod_mono)
MODE=server
# TODO: Option to hide all output
DEBUG=
#1>&2

echo "MI: This script will install dependencies and checkout mono and install in a parallel environment."
echo "MI: Report bugs to patrick@qmtech.net, firegrass on twitter, carrier pidgeon etc"
echo "$ECHO_PREFIX This script will install dependencies and checkout mono and install in a parallel environment."
echo "$ECHO_PREFIX Report bugs to patrick@qmtech.net, firegrass on twitter, carrier pidgeon etc"

sudo apt-get install build-essential automake libtool gettext mono-devel mono-1.0-devel \
subversion libpng-dev libtiff-dev libgif-dev libjpeg-dev libexif-dev autoconf automake \
bison flex libcairo2-dev libpango1.0-dev -y
bison flex libcairo2-dev libpango1.0-dev git-core -y >> $LOGFILE

#
if [ $MODE = "workstation" ] && [ "$(id -u)" = "0" ]; then
echo "MI ERROR: This script should not be run as root" 1>&2
exit 1
if [ "$(id -u)" = "0" ]; then
read -p "$ECHO_PREFIX WARNING: You are root, this means your git clones will be owned by root. Enter to continue, Ctrl+C to exit" inpVar
fi

echo "MI: Installing mono version $VERSION, building in $WORKING_DIR"
echo "MI: I need sudo access to install mono to /opt and mono-$VERSION in /usr/local/bin"
sudo echo "MI: If the sudo time limit is reached you will need to enter you password again."
echo "$ECHO_PREFIX I am installing mono version $VERSION, building in $WORKING_DIR"
echo "$ECHO_PREFIX I need sudo access to install mono to /opt and mono-$VERSION in /usr/local/bin"
sudo echo "$ECHO_PREFIX If the sudo time limit is reached you will need to enter you password again."
# making a dir to work from
mkdir -p $WORKING_DIR
cd $WORKING_DIR

# svn checkouts
SVN_BASE=http://anonsvn.mono-project.com/source/branches/mono-2-6
# modules - hardcoded to branch 2.6
# git path
GIT_BASE=git://github.com/mono

SVN_MODULES="libgdiplus mono mcs mono-tools mod_mono xsp"
# svn modules to get
GIT_MODULES="libgdiplus mono gtk-sharp gnome-sharp mod_mono xsp mono-addins"
# GIT_MODULES="gnome-sharp xsp mono-addins"

for mod in $SVN_MODULES; do
# check it all out or update
for mod in $GIT_MODULES; do
if [ -d $mod ]; then
echo "MI: Updating $mod"
svn up -q $mod || { echo "MI ERROR: Updating $mod failed"; exit 1; }
echo "$ECHO_PREFIX Updating $mod"
cd ${mod}
git pull -q || { echo "$ECHO_PREFIX ERROR: Updating $mod failed, you will need to manually 'git clean -df'"; exit 1; }
cd ..
else
echo "MI: Checking out $mod ($SVN_BASE/$mod)"
svn co -q $SVN_BASE/$mod || { echo "MI ERROR: Checking out $mod failed"; exit 1; }
echo "Cloning $mod ($SVN_BASE/$mod)"
git clone -q ${GIT_BASE}/${mod}.git || { echo "$ECHO_PREFIX ERROR: Cloning $mod failed"; exit 1; }
fi
done

# Configure version versions to use

# Use a sane gtk-sharp version
cd gtk-sharp
git checkout --track -b gtk-sharp-2-12-branch origin/gtk-sharp-2-12-branch
cd ..

if [ $VERSION == "trunk" ]; then
cd mono
git checkout master
cd ..
elif [ $VERSION == "2.6" ]; then
cd mono
git checkout --track -b mono-2-6 origin/mono-2-6
cd ..
fi

# create enviroment files
cat > "mono-$VERSION-environment" <<EOF
#!/bin/bash
Expand Down Expand Up @@ -92,27 +133,27 @@ sudo mv mono-$VERSION /usr/local/bin/mono-$VERSION
. mono-$VERSION-environment

# configure, make, install
for mod in $SVN_MODULES; do
if [ $mod = "mcs" ]; then
# Ignore mcs as built from mono
echo "MI: Skiping mcs module"
elif [ $MODE = "server" ] && [ $mod = "mono-tools" ]; then
echo "MI: Skipping mono-tools (server install)"
elif [ $MODE = "server" ] && [ $mod = "mod_mono" ]; then
echo "MI: Skipping mono-tools (server install)"
for mod in $GIT_MODULES; do
echo "$ECHO_PREFIX Installing $mod"
cd $mod
if [ $mod == "gtk-sharp" ]; then
./bootstrap-2.12 --prefix=$MONO_PREFIX
elif [ $mod == "gnome-sharp" ]; then
./bootstrap-2.24 --prefix=$MONO_PREFIX
else
echo "MI: Installing $mod"
cd $mod
./autogen.sh --prefix=$MONO_PREFIX $DEBUG && \
make $DEBUG && \
sudo make install $DEBUG || { echo "MI ERROR: $mod failed"; exit 1; }
cd ..
./autogen.sh --prefix=$MONO_PREFIX
fi

make && \
sudo make install || { echo "$ECHO_PREFIX ERROR: $mod failed"; exit 1; }
cd ..
done

# Exit message
echo "Your parallel environment is installed"
echo "To start a mono-$VERSION environment, run: source mono-$VERSION-environment"
echo "To use mono-$VERSION to run a cli app, run: mono-$VERSION <your app> (eg mono-$VERSION mono -V)"
echo ""
echo "$ECHO_PREFIX Your parallel environment is installed"
echo "$ECHO_PREFIX To start a mono-$VERSION environment, run: source mono-$VERSION-environment"
echo "$ECHO_PREFIX To use mono-$VERSION to run a cli app, run: mono-$VERSION <your app> (eg mono-$VERSION mono -V)"
echo ""

read -p "Done." inpVar

0 comments on commit c11b1b3

Please sign in to comment.