blob: 10e21b085baad0bbab73ae892dbeb678f47bc001 [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.
source "$(dirname "$BASH_SOURCE")/build_env.sh" || exit 1
build_debug=false
build_32bit=false
build_psol=true
build_mps_args=(--build_$PKG_EXTENSION)
build_stable=false
verbose=false
options="$(getopt --long 32bit,debug,skip_psol,stable,verbose -o '' -- "$@")"
eval set -- "$options"
while [ $# -gt 0 ]; do
case "$1" in
--32bit) build_32bit=true; shift ;;
--debug) build_debug=true; shift ;;
--skip_psol) build_psol=false; shift ;;
--stable) build_stable=true; shift ;;
--verbose) verbose=true; shift ;;
--) shift; break ;;
*) echo "getopt error" >&2; exit 1 ;;
esac
done
if [ $# -ne 0 ]; then
echo "Usage: $(basename $0) [--32bit] [--debug] [--stable] [--skip_psol]" >&2
exit 1
fi
host_is_32bit=true
if [ "$(uname -m)" = x86_64 ]; then
host_is_32bit=false
fi
if $host_is_32bit && ! $build_32bit; then
echo "This builds 64-bit binaries by default, but your host is 32-bit" >&2
echo "If you want a 32-bit binary, try again with --32_bit" >&2
exit 1
fi
source net/instaweb/public/VERSION
build_version="$MAJOR.$MINOR.$BUILD.$PATCH"
release_dir="release/${build_version}"
if $build_32bit; then
release_dir="$release_dir/ia32"
else
release_dir="$release_dir/x64"
fi
if $build_debug; then
release_dir="${release_dir}_dbg"
fi
rm -rf "$release_dir"
rm -rf log/
mkdir -p log/
# Setup chroot if we need it.
log_verbose=
if $verbose; then
log_verbose='--verbose'
fi
run_in_chroot=
if $build_32bit && ! $host_is_32bit; then
run_in_chroot=install/run_in_chroot.sh
run_with_log $log_verbose log/setup_chroot.log sudo install/setup_chroot.sh
fi
# Run the various build scripts.
if $verbose; then
build_mps_args+=(--verbose)
fi
if $build_debug; then
build_mps_args+=(--debug)
fi
if $build_stable; then
build_mps_args+=(--stable_package)
fi
sudo $run_in_chroot \
install/run_with_log.sh $log_verbose log/install_packages.log \
install/install_required_packages.sh --additional_dev_packages
$run_in_chroot install/build_mps.sh "${build_mps_args[@]}"
verbose_flag=
if $verbose; then
verbose_flag='--verbose'
fi
outdir=out/Release
if $build_debug; then
outdir=out/Debug
fi
package="$(echo "${outdir}"/mod-pagespeed-*.${PKG_EXTENSION})"
echo "Testing $package"
sudo $run_in_chroot install/test_package.sh $verbose_flag "$package"
if $build_psol; then
debug=
if $build_debug; then
debug='--debug'
fi
$run_in_chroot install/build_psol.sh $debug
fi
# Builds all complete, now copy release artifacts into $release_dir.
mkdir -p "$release_dir"
cp "$package" "$release_dir/"
unstripped_suffix=64
if $build_32bit; then
unstripped_suffix=32
fi
unstripped_suffix="${unstripped_suffix}_${PKG_EXTENSION}"
if [ -n "$build_stable" ]; then
unstripped_suffix="${unstripped_suffix}_stable"
else
unstripped_suffix="${unstripped_suffix}_beta"
fi
for lib in libmod_pagespeed libmod_pagespeed_ap24; do
cp "${outdir}/${lib}.so" \
"$release_dir/unstripped_${lib}_${unstripped_suffix}.so"
done
if $build_psol; then
cp psol-*.tar.gz "$release_dir/"
fi
echo "[$(date '+%k:%M:%S')] Build complete"