blob: b0101fd827bdd9bb7e4a9fc548bb8bd7e404e246 [file] [log] [blame]
#!/bin/bash
#
# Copyright 2016 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Author: cheesy@google.com (Steve Hill)
#
# Install packages required for building mod_pagespeed.
if [ "$UID" -ne 0 ]; then
echo Root is required to run this. Re-execing with sudo
exec sudo $0 "$@"
exit 1 # NOTREACHED
fi
additional_dev_packages=false
if [ "${1:-}" = "--additional_dev_packages" ]; then
additional_dev_packages=true
shift
fi
if [ $# -ne 0 ]; then
echo "Usage: $(basename $0) [--additional_dev_packages]" >&2
exit 1
fi
binary_packages=(subversion apache2 g++ gperf devscripts fakeroot git-core
zlib1g-dev wget curl net-tools rsync ssl-cert psmisc libexpat1-dev)
src_packages=()
if version_compare $(lsb_release -rs) -lt 14.04; then
binary_packages+=(gcc-mozilla)
fi
# Sometimes the names of packages change between versions. This goes through
# its arguments and returns the first package name that exists on this OS.
function first_available_package() {
for candidate_version in "$@"; do
if [ -n "$(apt-cache search --names-only "^${candidate_version}$")" ]; then
echo "$candidate_version"
return
fi
done
echo "error: no available version of $@" >&2
exit 1
}
install_redis_from_src=false
if "$additional_dev_packages"; then
binary_packages+=(memcached autoconf valgrind libev-dev libssl-dev
libpcre3-dev openjdk-7-jre language-pack-tr-base gperf uuid-dev pkg-config)
if version_compare $(lsb_release -sr) -ge 16.04; then
binary_packages+=(redis-server)
else
src_packages+=(redis-server)
fi
binary_packages+=( \
$(first_available_package libtool-bin libtool)
$(first_available_package php-cgi php5-cgi)
$(first_available_package libapache2-mod-php libapache2-mod-php5)
$(first_available_package php-mbstring libapache2-mod-php5))
fi
# The 32 bits ubuntu 14.04 image has /etc/protocols modified which
# will cause a prompt here. Force retaining the old configuration here.
apt-get -y -o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold" install "${binary_packages[@]}"
# src_packages might be empty. The below placates set -u, see:
# http://stackoverflow.com/questions/7577052/bash-empty-array-expansion-with-set-u
install_from_src ${src_packages[@]+"${src_packages[@]}"}