blob: 9c79b9fe872fd75497692f5c3e84a0f85c585a0e [file] [log] [blame]
#!/bin/sh
#
# 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.
#
# Checks that an nginx release builds and passes tests. This ensures that the
# PSOL tarball is good, and that it's compatible with the nginx code we intend
# to release.
#
# Usage:
#
# verify_nginx_release.sh [version] [binary tarball]
# verify_nginx_release.sh 1.10.33.6 /path/to/1.10.33.6.tar.gz
#
# To get the binary tarball, run build_psol_tarball.sh
set -e # exit script if any command returns an error
set -u # exit the script if any variable is uninitialized
if [ $# != 2 ]; then
echo "Usage: $0 version /path/to/psol-binary-tarball"
exit 1
fi
VERSION="$1"
TARBALL="$2"
# Absoluteify $TARBALL if it does not start with /
if [ -n "$TARBALL" -a "${TARBALL#/}" = "$TARBALL" ]; then
TARBALL="$PWD/$TARBALL"
fi
if [ ! -f "$TARBALL" ]; then
echo "$TARBALL should be a file"
exit 1
fi
die() {
echo "verify_nginx_release.sh: $@"
cd
rm -rf "$WORKDIR"
exit 1
}
WORKDIR=$(mktemp -d)
cd "$WORKDIR"
mkdir mod_pagespeed
cd mod_pagespeed
git clone https://github.com/pagespeed/mod_pagespeed.git src/
cd src/
git checkout $VERSION
cd $WORKDIR
git clone https://github.com/pagespeed/ngx_pagespeed.git
cd ngx_pagespeed
git checkout release-$VERSION-beta
# We now include the url for the PSOL binary that goes with a release in a
# separate file.
if [ ! -e PSOL_BINARY_URL ]; then
echo "$PWD/PSOL_BINARY_URL is missing"
exit 1
else
predicted_psol_binary_url="https://dl.google.com/dl/page-speed/psol/"
predicted_psol_binary_url+="$VERSION.tar.gz"
psol_binary_url=$(cat PSOL_BINARY_URL)
if [ "$predicted_psol_binary_url" != "$psol_binary_url" ]; then
echo "PSOL_BINARY_URL is wrong; did you forget to update it? Got:"
echo "$psol_binary_url"
exit 1
fi
fi
tar -xzf "$TARBALL"
cd $WORKDIR
git clone https://github.com/FRiCKLE/ngx_cache_purge.git
# If ldconfig is not found, add /sbin to the path. ldconfig is required
# for openresty with luajit.
if ! type -t ldconfig >/dev/null && [ -e /sbin/ldconfig ]; then
PATH=$PATH:/sbin
fi
wget https://openresty.org/download/openresty-1.9.7.3.tar.gz
tar xzvf openresty-*.tar.gz
cd openresty-*/
./configure --with-luajit
make
cd $WORKDIR
wget http://nginx.org/download/nginx-1.9.12.tar.gz
for is_debug in debug release; do
cd $WORKDIR
if [ -d nginx ]; then
rm -rf nginx/
fi
tar -xzf nginx-1.9.12.tar.gz
mv nginx-1.9.12 nginx
cd nginx/
nginx_root="$WORKDIR/$is_debug/"
extra_args=""
if [ "$is_debug" = "debug" ]; then
extra_args+=" --with-debug"
fi
if [ -x /usr/lib/gcc-mozilla/bin/gcc ]; then
PATH=/usr/lib/gcc-mozilla/bin:$PATH
extra_args+=" --with-cc=/usr/lib/gcc-mozilla/bin/gcc --with-ld-opt=-static-libstdc++"
fi
./configure \
--prefix="$nginx_root" \
--add-module="$WORKDIR/ngx_pagespeed" \
--add-module="$WORKDIR/ngx_cache_purge" \
--add-module="$WORKDIR/openresty-*/build/ngx_devel_kit-*/" \
--add-module="$WORKDIR/openresty-*/build/set-misc-nginx-*/" \
--add-module="$WORKDIR/openresty-*/build/headers-more-nginx-module-*/" \
--with-ipv6 \
--with-http_v2_module \
$extra_args
make install
cd "$WORKDIR"
USE_VALGRIND=false \
TEST_NATIVE_FETCHER=false \
TEST_SERF_FETCHER=true \
ngx_pagespeed/test/run_tests.sh 8060 8061 \
$WORKDIR/mod_pagespeed \
$nginx_root/sbin/nginx \
modpagespeed.com
cd
done
rm -rf "$WORKDIR"
echo "builds and tests completed successfully for both debug and release"