#!/bin/sh
# Script to install everything needed to build chromium (well, ideally, anyway)
# See http://code.google.com/p/chromium/wiki/LinuxBuildInstructions
# and http://code.google.com/p/chromium/wiki/LinuxBuild64Bit
set -ex

# Root can't access files on all filesystems, but /tmp should always be ok
# (unless it's full).  
DIR=`mktemp -d`
cd $DIR
touch .created

cleanup() {
  test -f $DIR/.created && rm -rf $DIR
}

# TODO(dkegel): add sha1sum verification
download() {
  dir=$1
  file=$2
  if ! test -f $file
  then
    wget $MIRROR/$dir/$file
  fi
}

unpack_deb() {
  file=$1
  ar x $file
  tar -xzvf data.tar.gz
  rm -f data.tar.gz control.tar.gz
}

download_deb() {
  download $1 $2
  unpack_deb $2
}

install_hardy() {
  sudo apt-get install subversion pkg-config python perl g++ g++-multilib \
       bison flex gperf libnss3-dev libglib2.0-dev libgtk2.0-dev \
       libnspr4-0d libnspr4-dev wdiff lighttpd php5-cgi msttcorefonts \
       sun-java6-fonts
}

install_hardy_64() {
  install_hardy

  # The packages libnspr4, libnss3, and libsqlite don't have 32
  # bit compabibility versions on 64 bit ubuntu hardy,
  # so install them packages the hard way
  # See https://bugs.launchpad.net/ubuntu/+source/ia32-libs/+bug/246911
  # TODO: There is no bug report yet for 32 bit sqlite runtime

  mkdir -p workdir-hardy64
  cd workdir-hardy64
  rm -rf usr

  MIRROR=http://mirrors.kernel.org/ubuntu
  download_deb pool/main/n/nspr libnspr4-0d_4.7.1~beta2-0ubuntu1_i386.deb
  download_deb pool/main/n/nss libnss3-1d_3.12.0~beta3-0ubuntu1_i386.deb
  download_deb pool/main/s/sqlite3 libsqlite3-0_3.4.2-2_i386.deb

  sudo rsync -v -a usr/lib/* /usr/lib32/
  sudo ldconfig

  # Make missing symlinks as described by 
  # https://bugs.launchpad.net/ubuntu/+source/ia32-libs/+bug/277772
  # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=492453 
  # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=497087
  cd /usr/lib32
  for lib in gio-2.0 gdk-x11-2.0 atk-1.0 gdk_pixbuf-2.0 \
           pangocairo-1.0 pango-1.0 pangoft2-1.0 \
           gobject-2.0 gmodule-2.0 glib-2.0 gtk-x11-2.0; do
    sudo ln -s -f lib$lib.so.0 lib$lib.so
  done
  for lib in z fontconfig
  do
    sudo ln -s -f lib$lib.so.1 lib$lib.so
  done
  for lib in cairo
  do
    sudo ln -s -f lib$lib.so.2 lib$lib.so
  done
  for lib in freetype
  do
    sudo ln -s -f lib$lib.so.6 lib$lib.so
  done
  for lib in plds4 plc4 nspr4
  do
    sudo ln -s -f /usr/lib32/lib$lib.so.0d /usr/lib32/lib$lib.so
  done

  for lib in nss3 nssutil3 smime3 ssl3
  do
    sudo ln -s -f /usr/lib32/lib$lib.so.1d /usr/lib32/lib$lib.so
  done
}

if egrep -q "Ubuntu 8.04|Ubuntu 8.10" /etc/issue && test `uname -m` = i686
then
  install_hardy
elif egrep -q "Ubuntu 8.04|Ubuntu 8.10" /etc/issue && test `uname -m` = x86_64
then
  install_hardy_64
else
  echo "Unsupported system"
  cleanup
  exit 1
fi
cleanup