| #!/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)" |