blob: c823736898dcd8d7fb18db7dd725113433319853 [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)
#
# Script to build mod_pagespeed.
source $(dirname "$BASH_SOURCE")/build_env.sh || exit 1
build_type=Release
package_channel=beta
package_type=
log_verbose=
run_tests=true
run_extcache_tests=true
options="$(getopt --long build_deb,build_rpm,debug,release \
--long skip_extcache_tests,skip_tests,stable_package,verbose \
-o '' -- "$@")"
eval set -- "$options"
while [ $# -gt 0 ]; do
case "$1" in
--build_deb) package_type=deb; shift ;;
--build_rpm) package_type=rpm; shift ;;
--debug) build_type=Debug; shift ;;
--skip_extcache_tests) run_extcache_tests=false; shift ;;
--skip_tests) run_tests=false; shift ;;
--stable_package) package_channel=stable; shift ;;
--verbose) log_verbose=--verbose; shift ;;
--) shift; break ;;
*) echo "getopt error" >&2; exit 1 ;;
esac
done
root="$(git rev-parse --show-toplevel || true)"
[ -n "$root" ] && cd "$root"
if [ ! -d pagespeed -o ! -d third_party ]; then
echo "Run this from your mod_pagesped client" >&2
exit 1
fi
MAKE_ARGS=(BUILDTYPE=$build_type)
rm -rf log
mkdir -p log
# TODO(cheesy): The 64-bit build writes artifacts into out/Release not
# out/Release_x64. The fix for that seems to be setting product_dir, see:
# https://groups.google.com/forum/#!topic/gyp-developer/_D7qoTgelaY
run_with_log $log_verbose log/submodule.log \
git submodule update --init --recursive
run_with_log $log_verbose log/gyp.log python build/gyp_chromium --depth=.
make_targets=(mod_pagespeed)
if $run_tests; then
make_targets+=(mod_pagespeed_test pagespeed_automatic_test)
if $run_extcache_tests; then
make_targets+=(redis_cache_cluster_setup)
fi
fi
run_with_log $log_verbose log/build.log make \
"${MAKE_ARGS[@]}" "${make_targets[@]}"
if $run_tests; then
test_wrapper=
if $run_extcache_tests; then
test_wrapper=install/run_program_with_ext_caches.sh
fi
BUILDTYPE=$build_type run_with_log $log_verbose log/unit_test.log \
$test_wrapper out/$build_type/mod_pagespeed_test '&&' \
out/$build_type/pagespeed_automatic_test
fi
if [ -n "$package_type" ]; then
package_target=linux_package_${package_type}_${package_channel}
MODPAGESPEED_ENABLE_UPDATES=1 run_with_log $log_verbose log/pkg_build.log \
make "${MAKE_ARGS[@]}" $package_target
fi
echo "$(basename "$0") succeeded at $(date)"