Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f867347b5a | |||
| 5bd8c93d39 | |||
| d85b22afe6 | |||
| 0456450fd2 | |||
| 90386f459a | |||
| 80c4b7e97b | |||
| 0c7d64221c | |||
| 68185b8605 | |||
| 7f225e2e70 | |||
| 4d728fc081 | |||
| a399e04a00 | |||
| 247a821564 | |||
| f7502b1b40 | |||
| 617f0e6bee | |||
| 42115f54da | |||
| 3d9f2aee37 | |||
| d77c7eac17 | |||
| 97134d951e | |||
| 17e4162334 | |||
| d70dcbc4d0 | |||
| 62c66e2c9c | |||
| 09478cac70 | |||
| 14b4723326 |
@@ -2,3 +2,4 @@ test/tmp
|
|||||||
psol/
|
psol/
|
||||||
psol-*.tar.gz
|
psol-*.tar.gz
|
||||||
*.*.*.*.tar.gz
|
*.*.*.*.tar.gz
|
||||||
|
nginx
|
||||||
|
|||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
[submodule "testing-dependencies/mod_pagespeed"]
|
||||||
|
path = testing-dependencies/mod_pagespeed
|
||||||
|
url = https://github.com/pagespeed/mod_pagespeed.git
|
||||||
|
[submodule "testing-dependencies/ngx_cache_purge"]
|
||||||
|
path = testing-dependencies/ngx_cache_purge
|
||||||
|
url = https://github.com/FRiCKLE/ngx_cache_purge.git
|
||||||
|
[submodule "testing-dependencies/nginx"]
|
||||||
|
path = testing-dependencies/nginx
|
||||||
|
url = https://github.com/nginx/nginx.git
|
||||||
|
[submodule "testing-dependencies/set-misc-nginx-module"]
|
||||||
|
path = testing-dependencies/set-misc-nginx-module
|
||||||
|
url = https://github.com/openresty/set-misc-nginx-module
|
||||||
|
[submodule "testing-dependencies/ngx_devel_kit"]
|
||||||
|
path = testing-dependencies/ngx_devel_kit
|
||||||
|
url = https://github.com/simpl/ngx_devel_kit
|
||||||
|
[submodule "testing-dependencies/headers-more-nginx-module"]
|
||||||
|
path = testing-dependencies/headers-more-nginx-module
|
||||||
|
url = https://github.com/openresty/headers-more-nginx-module
|
||||||
+23
-52
@@ -1,58 +1,30 @@
|
|||||||
language: c++
|
language: c++
|
||||||
# Remove broken repo, per: https://github.com/travis-ci/travis-ci/issues/6588
|
env:
|
||||||
# Undo this once the repo is fixed.
|
global:
|
||||||
|
- MAKEFLAGS=-j3
|
||||||
|
# By default travis loads submodules serially, but we can load them in parallel
|
||||||
|
# if we install an updated git and use --jobs. Some timing numbers:
|
||||||
|
# serial: 257s
|
||||||
|
# jobs=4: 182s (29s to install new git, 153s to run the downloads)
|
||||||
|
# jobs=8: 179s (29s to install new git, 150s to run the downloads)
|
||||||
|
# We can't use --depth=1, though, because github doesn't have
|
||||||
|
# allowReachableSHA1InWant set.
|
||||||
|
#
|
||||||
|
# TODO(jefftk): once we're running on a server with git 2.8 or later we can have
|
||||||
|
# --jobs without installing a new git.
|
||||||
|
git:
|
||||||
|
submodules: false
|
||||||
before_install:
|
before_install:
|
||||||
- "sudo add-apt-repository --remove 'http://us-central1.gce.archive.ubuntu.com/ubuntu/ main restricted'"
|
- sudo add-apt-repository --yes ppa:git-core/ppa
|
||||||
- "sudo add-apt-repository --remove 'http://us-central1.gce.archive.ubuntu.com/ubuntu/ universe'"
|
- sudo apt-get update
|
||||||
- "sudo add-apt-repository --remove 'http://us-central1.gce.archive.ubuntu.com/ubuntu/ multiverse'"
|
- sudo apt-get install git
|
||||||
- "sudo add-apt-repository http://archive.ubuntu.com/ubuntu/"
|
- git submodule update --init --recursive --jobs=8
|
||||||
- "sudo add-apt-repository 'http://archive.ubuntu.com/ubuntu/ universe'"
|
|
||||||
- "sudo add-apt-repository 'http://archive.ubuntu.com/ubuntu/ multiverse'"
|
|
||||||
- "sudo apt-get -qq update"
|
|
||||||
install:
|
install:
|
||||||
- sudo sh -c 'echo "deb http://opensource.wandisco.com/ubuntu precise svn18" >> /etc/apt/sources.list.d/subversion18.list'
|
scripts/build_ngx_pagespeed.sh --devel --assume-yes
|
||||||
- sudo wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- | sudo apt-key add -
|
|
||||||
- sudo apt-get update 2>&1 > /dev/null
|
|
||||||
- mv $TRAVIS_BUILD_DIR ~/ngxpagespeed
|
|
||||||
- sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip g++ python subversion gperf make devscripts fakeroot git curl netcat-traditional gcc-mozilla clang-3.4 2>&1 > /dev/null
|
|
||||||
- sudo mv /bin/nc.traditional /usr/bin/nc
|
|
||||||
- export PATH=/usr/lib/gcc-mozilla/bin:$PATH
|
|
||||||
- sudo ln -sf /usr/lib/gcc-mozilla/lib/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
|
|
||||||
- sudo sh -c 'echo "image/webp webp" >> /etc/mime.types'
|
|
||||||
- mkdir -p ~/bin
|
|
||||||
- cd ~/bin
|
|
||||||
- git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
|
||||||
- mkdir ~/mod_pagespeed
|
|
||||||
- cd ~/mod_pagespeed
|
|
||||||
- git clone https://github.com/pagespeed/mod_pagespeed.git src
|
|
||||||
- cd src
|
|
||||||
- ~/bin/depot_tools/gclient config https://github.com/pagespeed/mod_pagespeed.git --unmanaged --name=$PWD
|
|
||||||
- ~/bin/depot_tools/gclient sync --force --jobs=1
|
|
||||||
- cd ~/mod_pagespeed/src/pagespeed/automatic
|
|
||||||
- make BUILDTYPE=Release -C ../../pagespeed/automatic AR.host="$PWD/../../build/wrappers/ar.sh" AR.target="$PWD/../../build/wrappers/ar.sh" all
|
|
||||||
- cd ~
|
|
||||||
- git clone https://github.com/FRiCKLE/ngx_cache_purge.git
|
|
||||||
- NGX_CACHE_PURGE=$PWD/ngx_cache_purge
|
|
||||||
- wget https://openresty.org/download/ngx_openresty-1.9.7.2.tar.gz
|
|
||||||
- tar xzf ngx_openresty-*.tar.gz
|
|
||||||
- cd ngx_openresty-*/
|
|
||||||
- ./configure --with-luajit
|
|
||||||
- make
|
|
||||||
- NGX_DEVEL_KIT=$(echo $HOME/ngx_openresty-*/build/ngx_devel_kit-*/)
|
|
||||||
- SET_MISC_MODULE=$(echo $HOME/ngx_openresty-*/build/set-misc-nginx-module-*/)
|
|
||||||
- HEADERS_MORE_MODULE=$(echo $HOME/ngx_openresty-*/build/headers-more-nginx-module-*/)
|
|
||||||
- cd ~
|
|
||||||
- wget https://github.com/nginx/nginx/archive/branches/default.zip
|
|
||||||
- unzip default.zip
|
|
||||||
- cd nginx-branches-default
|
|
||||||
- MOD_PAGESPEED_DIR="$HOME/mod_pagespeed/src" ./auto/configure --add-module=$HOME/ngxpagespeed --add-module="$NGX_CACHE_PURGE" --add-module="$NGX_DEVEL_KIT" --add-module="$SET_MISC_MODULE" --add-module="$HEADERS_MORE_MODULE" --with-ipv6
|
|
||||||
- make
|
|
||||||
- sudo make install
|
|
||||||
script:
|
script:
|
||||||
- echo "build successful"
|
test/run_tests.sh $PWD/testing-dependencies/mod_pagespeed/ \
|
||||||
- echo "cd ~/ngxpagespeed"
|
$PWD/nginx/sbin/nginx
|
||||||
- echo "sudo ./test/run_tests.sh 8050 8051 $HOME/mod_pagespeed/src $HOME/nginx-branches-default/objs selfsigned.modpagespeed.com"
|
dist: trusty
|
||||||
- echo "sudo ./test/run_tests.sh 8050 8051 $HOME/mod_pagespeed $HOME/nginx-branches-default/objs/nginx selfsigned.modpagespeed.com"
|
|
||||||
sudo: required
|
sudo: required
|
||||||
compiler:
|
compiler:
|
||||||
- gcc
|
- gcc
|
||||||
@@ -63,4 +35,3 @@ notifications:
|
|||||||
- morlovich@google.com
|
- morlovich@google.com
|
||||||
- jmarantz@google.com
|
- jmarantz@google.com
|
||||||
- huibao@google.com
|
- huibao@google.com
|
||||||
- jcrowell@google.com
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
In a release this file would contain the URL to download the pre-compiled PSOL
|
In a release this file would contain the URL to download the pre-compiled PSOL
|
||||||
binary, but on development branches (like this one) you have to build PSOL from
|
binary, but on development branches (like this one) you have to build PSOL from
|
||||||
source yourself. See:
|
source yourself. See:
|
||||||
https://github.com/pagespeed/ngx_pagespeed/wiki/Building-PSOL-From-Source
|
https://github.com/pagespeed/ngx_pagespeed/wiki/Building-PSOL-From-Source
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||

|

|
||||||
|
|
||||||
[](https://travis-ci.org/pagespeed/ngx_pagespeed)
|
[](https://travis-ci.org/pagespeed/ngx_pagespeed)
|
||||||
|
|
||||||
ngx_pagespeed speeds up your site and reduces page load time by automatically
|
ngx_pagespeed speeds up your site and reduces page load time by automatically
|
||||||
applying web performance best practices to pages and associated assets (CSS,
|
applying web performance best practices to pages and associated assets (CSS,
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ if [ "$mod_pagespeed_dir" = "unset" ] ; then
|
|||||||
if [ ! -e "$mod_pagespeed_dir" ] ; then
|
if [ ! -e "$mod_pagespeed_dir" ] ; then
|
||||||
echo "ngx_pagespeed: pagespeed optimization library not found:"
|
echo "ngx_pagespeed: pagespeed optimization library not found:"
|
||||||
|
|
||||||
psol_binary_url="$(cat $ngx_addon_dir/PSOL_BINARY_URL)"
|
psol_binary_url="$($ngx_addon_dir/scripts/format_binary_url.sh \
|
||||||
|
$ngx_addon_dir/PSOL_BINARY_URL)"
|
||||||
if [[ "$psol_binary_url" != https://* ]]; then
|
if [[ "$psol_binary_url" != https://* ]]; then
|
||||||
echo "
|
echo "
|
||||||
This is a development branch of ngx_pagespeed, which means there is no
|
This is a development branch of ngx_pagespeed, which means there is no
|
||||||
@@ -76,6 +77,8 @@ fi
|
|||||||
|
|
||||||
if [ "$NGX_DEBUG" = "YES" ]; then
|
if [ "$NGX_DEBUG" = "YES" ]; then
|
||||||
buildtype=Debug
|
buildtype=Debug
|
||||||
|
# If we're using a psol tarball that doesn't contain Debug/ (which is the case
|
||||||
|
# from 1.12 onward) then this will be overriden to buildtype=Release below.
|
||||||
else
|
else
|
||||||
buildtype=Release
|
buildtype=Release
|
||||||
fi
|
fi
|
||||||
@@ -143,6 +146,22 @@ if [ "$psol_binary" = "unset" ] ; then
|
|||||||
psol_binary="\
|
psol_binary="\
|
||||||
$mod_pagespeed_dir/pagespeed/automatic/pagespeed_automatic.a"
|
$mod_pagespeed_dir/pagespeed/automatic/pagespeed_automatic.a"
|
||||||
else
|
else
|
||||||
|
if ! [ -d "$ngx_addon_dir/psol/lib/$buildtype" ]; then
|
||||||
|
echo "
|
||||||
|
You have set --with-debug for building nginx, but precompiled Debug binaries for
|
||||||
|
PSOL, which ngx_pagespeed depends on, aren't available. If you're trying to
|
||||||
|
debug PSOL you need to build it from source. If you just want to run nginx with
|
||||||
|
debug-level logging you can use the Release binaries."
|
||||||
|
echo -n "
|
||||||
|
Use the available Release binaries?"
|
||||||
|
read -p " [Y/n] " yn
|
||||||
|
if [[ "$yn" == N* || "$yn" == n* ]]; then
|
||||||
|
echo "Cancelled."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
buildtype=Release
|
||||||
|
fi
|
||||||
psol_library_dir="$ngx_addon_dir/psol/lib/$buildtype/$os_name/$arch_name"
|
psol_library_dir="$ngx_addon_dir/psol/lib/$buildtype/$os_name/$arch_name"
|
||||||
psol_binary="$psol_library_dir/pagespeed_automatic.a"
|
psol_binary="$psol_library_dir/pagespeed_automatic.a"
|
||||||
fi
|
fi
|
||||||
@@ -165,7 +184,7 @@ ngx_feature_incs="
|
|||||||
pagespeed_include="\
|
pagespeed_include="\
|
||||||
$mod_pagespeed_dir \
|
$mod_pagespeed_dir \
|
||||||
$mod_pagespeed_dir/third_party/chromium/src \
|
$mod_pagespeed_dir/third_party/chromium/src \
|
||||||
$mod_pagespeed_dir/third_party/google-sparsehash/src \
|
$mod_pagespeed_dir/third_party/google-sparsehash/src/src \
|
||||||
$mod_pagespeed_dir/third_party/google-sparsehash/gen/arch/$os_name/$arch_name/include \
|
$mod_pagespeed_dir/third_party/google-sparsehash/gen/arch/$os_name/$arch_name/include \
|
||||||
$mod_pagespeed_dir/third_party/grpc/src/include \
|
$mod_pagespeed_dir/third_party/grpc/src/include \
|
||||||
$mod_pagespeed_dir/third_party/protobuf/src/src \
|
$mod_pagespeed_dir/third_party/protobuf/src/src \
|
||||||
@@ -179,7 +198,7 @@ pagespeed_include="\
|
|||||||
$mod_pagespeed_dir/url"
|
$mod_pagespeed_dir/url"
|
||||||
ngx_feature_path="$pagespeed_include"
|
ngx_feature_path="$pagespeed_include"
|
||||||
|
|
||||||
pagespeed_libs="$psol_binary $pagespeed_libs -lrt -pthread -lm"
|
pagespeed_libs="$psol_binary $pagespeed_libs -lrt -pthread -lm -luuid"
|
||||||
ngx_feature_libs="$pagespeed_libs"
|
ngx_feature_libs="$pagespeed_libs"
|
||||||
ngx_feature_test="
|
ngx_feature_test="
|
||||||
|
|
||||||
|
|||||||
+379
-109
@@ -1,11 +1,34 @@
|
|||||||
#!/bin/bash
|
#!/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.
|
||||||
|
|
||||||
function usage() {
|
function usage() {
|
||||||
echo "
|
echo "
|
||||||
Usage: build_ngx_pagespeed.sh [options]
|
Usage: build_ngx_pagespeed.sh [options]
|
||||||
|
|
||||||
Installs ngx_pagespeed and its dependencies. Can optionally build and install
|
Installs ngx_pagespeed and its dependencies. Can optionally build and install
|
||||||
nginx as well.
|
nginx as well. Can be run either as:
|
||||||
|
|
||||||
|
bash <(curl -f -L -sS https://ngxpagespeed.com/install) [options]
|
||||||
|
|
||||||
|
Or:
|
||||||
|
|
||||||
|
git clone git@github.com:pagespeed/ngx_pagespeed.git
|
||||||
|
cd ngx_pagespeed/
|
||||||
|
git checkout <branch>
|
||||||
|
scripts/build_ngx_pagespeed.sh [options]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-v, --ngx-pagespeed-version <ngx_pagespeed version>
|
-v, --ngx-pagespeed-version <ngx_pagespeed version>
|
||||||
@@ -14,7 +37,11 @@ Options:
|
|||||||
* latest-stable
|
* latest-stable
|
||||||
* a version number, such as 1.11.33.4
|
* a version number, such as 1.11.33.4
|
||||||
|
|
||||||
If you don't specify a version, defaults to latest-stable.
|
If you don't specify a version, defaults to latest-stable unless --devel
|
||||||
|
is specified, in which case it defaults to master.
|
||||||
|
|
||||||
|
This option doesn't make sense if we're running within an existing
|
||||||
|
ngx_pagespeed checkout.
|
||||||
|
|
||||||
-n, --nginx-version <nginx version>
|
-n, --nginx-version <nginx version>
|
||||||
What version of nginx to build. If not set, this script only prepares the
|
What version of nginx to build. If not set, this script only prepares the
|
||||||
@@ -36,6 +63,23 @@ Options:
|
|||||||
non-deb non-rpm system, this won't work. In that case, install the
|
non-deb non-rpm system, this won't work. In that case, install the
|
||||||
dependencies yourself and pass --no-deps-check.
|
dependencies yourself and pass --no-deps-check.
|
||||||
|
|
||||||
|
-s, --psol-from-source
|
||||||
|
Build PSOL from source instead of downloading a pre-built binary module.
|
||||||
|
|
||||||
|
-l, --devel
|
||||||
|
Sets up a development environment in ngx_pagespeed/nginx, building with
|
||||||
|
testing-only dependencies. Includes --psol-from-source, conflicts with
|
||||||
|
--nginx-version. Uses a 'git clone' checkout for ngx_pagespeed and nginx
|
||||||
|
instead of downloading a tarball.
|
||||||
|
|
||||||
|
-t, --build-type
|
||||||
|
When building PSOL from source, what to tell it for BUILD_TYPE. Defaults
|
||||||
|
to 'Release' unless --devel is set in which case it defaults to 'Debug'.
|
||||||
|
|
||||||
|
-y, --assume-yes
|
||||||
|
Assume the answer to all prompts is 'yes, please continue'. Intended for
|
||||||
|
automated usage, such as buildbots.
|
||||||
|
|
||||||
-d, --dryrun
|
-d, --dryrun
|
||||||
Don't make any changes to the system, just print what changes you
|
Don't make any changes to the system, just print what changes you
|
||||||
would have made.
|
would have made.
|
||||||
@@ -44,10 +88,34 @@ Options:
|
|||||||
Print this message and exit."
|
Print this message and exit."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RED=31
|
||||||
|
GREEN=32
|
||||||
|
YELLOW=33
|
||||||
|
function begin_color() {
|
||||||
|
color="$1"
|
||||||
|
echo -e -n "\e[${color}m"
|
||||||
|
}
|
||||||
|
function end_color() {
|
||||||
|
echo -e -n "\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
function echo_color() {
|
||||||
|
color="$1"
|
||||||
|
shift
|
||||||
|
begin_color "$color"
|
||||||
|
echo "$@"
|
||||||
|
end_color
|
||||||
|
}
|
||||||
|
|
||||||
|
function error() {
|
||||||
|
local error_message="$@"
|
||||||
|
echo_color "$RED" -n "Error: " >&2
|
||||||
|
echo "$@" >&2
|
||||||
|
}
|
||||||
|
|
||||||
# Prints an error message and exits with an error code.
|
# Prints an error message and exits with an error code.
|
||||||
function fail() {
|
function fail() {
|
||||||
local error_message="$@"
|
error "$@"
|
||||||
echo "$@" >&2
|
|
||||||
|
|
||||||
# Normally I'd use $0 in "usage" here, but since most people will be running
|
# Normally I'd use $0 in "usage" here, but since most people will be running
|
||||||
# this via curl, that wouldn't actually give something useful.
|
# this via curl, that wouldn't actually give something useful.
|
||||||
@@ -56,6 +124,11 @@ function fail() {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function status() {
|
||||||
|
echo_color "$GREEN" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
# Intended to be called as:
|
# Intended to be called as:
|
||||||
# bash <(curl dl.google.com/.../build_ngx_pagespeed.sh) <args>
|
# bash <(curl dl.google.com/.../build_ngx_pagespeed.sh) <args>
|
||||||
|
|
||||||
@@ -64,12 +137,19 @@ function fail() {
|
|||||||
# The run function handles exit-status checking for system-changing commands.
|
# The run function handles exit-status checking for system-changing commands.
|
||||||
# Additionally, this allows us to easily have a dryrun mode where we don't
|
# Additionally, this allows us to easily have a dryrun mode where we don't
|
||||||
# actually make any changes.
|
# actually make any changes.
|
||||||
|
INITIAL_ENV=$(printenv | sort)
|
||||||
function run() {
|
function run() {
|
||||||
if "$DRYRUN"; then
|
if "$DRYRUN"; then
|
||||||
echo "would run $@"
|
echo_color "$YELLOW" -n "would run"
|
||||||
|
echo " $@"
|
||||||
|
env_differences=$(comm -13 <(echo "$INITIAL_ENV") <(printenv | sort))
|
||||||
|
if [ -n "$env_differences" ]; then
|
||||||
|
echo " with the following additional environment variables:"
|
||||||
|
echo "$env_differences" | sed 's/^/ /'
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
if ! "$@"; then
|
if ! "$@"; then
|
||||||
echo "Failure running $@, exiting."
|
error "Failure running '$@', exiting."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -155,9 +235,9 @@ function install_dependencies() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if [ -n "$missing_dependencies" ]; then
|
if [ -n "$missing_dependencies" ]; then
|
||||||
echo "Detected that we're missing the following depencencies:"
|
status "Detected that we're missing the following depencencies:"
|
||||||
echo " $missing_dependencies"
|
echo " $missing_dependencies"
|
||||||
echo "Installing them:"
|
status "Installing them:"
|
||||||
run sudo $install_pkg_cmd $missing_dependencies
|
run sudo $install_pkg_cmd $missing_dependencies
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -176,8 +256,13 @@ function gcc_too_old() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function continue_or_exit() {
|
function continue_or_exit() {
|
||||||
|
if "$ASSUME_YES"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
local prompt="$1"
|
local prompt="$1"
|
||||||
read -p "$prompt [Y/n] " yn
|
echo_color "$YELLOW" -n "$prompt"
|
||||||
|
read -p " [Y/n] " yn
|
||||||
if [[ "$yn" == N* || "$yn" == n* ]]; then
|
if [[ "$yn" == N* || "$yn" == n* ]]; then
|
||||||
echo "Cancelled."
|
echo "Cancelled."
|
||||||
exit 0
|
exit 0
|
||||||
@@ -217,9 +302,10 @@ function build_ngx_pagespeed() {
|
|||||||
fail "Your version of getopt is too old. Exiting with no changes made."
|
fail "Your version of getopt is too old. Exiting with no changes made."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
opts=$(getopt -o v:n:mb:pdh \
|
opts=$(getopt -o v:n:mb:pslt:ydh \
|
||||||
--longoptions ngx-pagespeed-version:,nginx-version:,dynamic-module \
|
--longoptions ngx-pagespeed-version:,nginx-version:,dynamic-module \
|
||||||
--longoptions buildir:,no-deps-check,dryrun,help \
|
--longoptions buildir:,no-deps-check,psol-from-source,devel,build-type: \
|
||||||
|
--longoptions assume-yes,dryrun,help \
|
||||||
-n "$(basename "$0")" -- "$@")
|
-n "$(basename "$0")" -- "$@")
|
||||||
if [ $? != 0 ]; then
|
if [ $? != 0 ]; then
|
||||||
usage
|
usage
|
||||||
@@ -227,10 +313,14 @@ function build_ngx_pagespeed() {
|
|||||||
fi
|
fi
|
||||||
eval set -- "$opts"
|
eval set -- "$opts"
|
||||||
|
|
||||||
NPS_VERSION="latest-stable"
|
NPS_VERSION="DEFAULT"
|
||||||
NGINX_VERSION=""
|
NGINX_VERSION=""
|
||||||
BUILDDIR="$HOME"
|
BUILDDIR="$HOME"
|
||||||
DO_DEPS_CHECK=true
|
DO_DEPS_CHECK=true
|
||||||
|
PSOL_FROM_SOURCE=false
|
||||||
|
DEVEL=false
|
||||||
|
BUILD_TYPE=""
|
||||||
|
ASSUME_YES=false
|
||||||
DRYRUN=false
|
DRYRUN=false
|
||||||
DYNAMIC_MODULE=false
|
DYNAMIC_MODULE=false
|
||||||
while true; do
|
while true; do
|
||||||
@@ -253,6 +343,19 @@ function build_ngx_pagespeed() {
|
|||||||
-p | --no-deps-check) shift
|
-p | --no-deps-check) shift
|
||||||
DO_DEPS_CHECK=false
|
DO_DEPS_CHECK=false
|
||||||
;;
|
;;
|
||||||
|
-s | --psol-from-source) shift
|
||||||
|
PSOL_FROM_SOURCE=true
|
||||||
|
;;
|
||||||
|
-l | --devel) shift
|
||||||
|
DEVEL=true
|
||||||
|
;;
|
||||||
|
-t | --build-type) shift
|
||||||
|
BUILD_TYPE="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-y | --assume-yes) shift
|
||||||
|
ASSUME_YES="true"
|
||||||
|
;;
|
||||||
-d | --dryrun) shift
|
-d | --dryrun) shift
|
||||||
DRYRUN="true"
|
DRYRUN="true"
|
||||||
;;
|
;;
|
||||||
@@ -271,10 +374,58 @@ function build_ngx_pagespeed() {
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
USE_GIT_CHECKOUT="$DEVEL"
|
||||||
|
ALREADY_CHECKED_OUT=false
|
||||||
|
if [ -e PSOL_BINARY_URL ]; then
|
||||||
|
status "Detected that we're running in an existing ngx_pagespeed checkout."
|
||||||
|
USE_GIT_CHECKOUT=true
|
||||||
|
ALREADY_CHECKED_OUT=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if "$ALREADY_CHECKED_OUT"; then
|
||||||
|
if [ "$NPS_VERSION" != "DEFAULT" ]; then
|
||||||
|
fail \
|
||||||
|
"The --ngx-pagespeed-version argument doesn't make sense when running within an existing checkout."
|
||||||
|
fi
|
||||||
|
elif [ "$NPS_VERSION" = "DEFAULT" ]; then
|
||||||
|
if "$DEVEL"; then
|
||||||
|
NPS_VERSION="master"
|
||||||
|
else
|
||||||
|
NPS_VERSION="latest-stable"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ! -d "$BUILDDIR" ]; then
|
if [ ! -d "$BUILDDIR" ]; then
|
||||||
fail "Told to build in $BUILDDIR, but that directory doesn't exist."
|
fail "Told to build in $BUILDDIR, but that directory doesn't exist."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
BUILD_NGINX=false
|
||||||
|
if [ -n "$NGINX_VERSION" ]; then
|
||||||
|
BUILD_NGINX=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if "$DEVEL"; then
|
||||||
|
PSOL_FROM_SOURCE=true
|
||||||
|
BUILD_NGINX=true
|
||||||
|
if [ -n "$NGINX_VERSION" ]; then
|
||||||
|
fail \
|
||||||
|
"The --devel argument conflicts with --nginx. In devel mode we use the version of nginx that's included as a submodule."
|
||||||
|
fi
|
||||||
|
if "$DYNAMIC_MODULE"; then
|
||||||
|
fail "Can't currently build a dynamic module in --devel mode."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if "$PSOL_FROM_SOURCE" && [ -z "$BUILD_TYPE" ]; then
|
||||||
|
if "$DEVEL"; then
|
||||||
|
BUILD_TYPE="Debug"
|
||||||
|
else
|
||||||
|
BUILD_TYPE="Release"
|
||||||
|
fi
|
||||||
|
elif [ -n "$BUILD_TYPE" ]; then
|
||||||
|
fail "Setting --build-type requires --psol-from-source or --devel."
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$NGINX_VERSION" = "latest" ]; then
|
if [ "$NGINX_VERSION" = "latest" ]; then
|
||||||
# When this function fails it prints the debugging information needed first
|
# When this function fails it prints the debugging information needed first
|
||||||
# to stderr.
|
# to stderr.
|
||||||
@@ -283,8 +434,15 @@ function build_ngx_pagespeed() {
|
|||||||
|
|
||||||
if "$DYNAMIC_MODULE"; then
|
if "$DYNAMIC_MODULE"; then
|
||||||
# Check that ngx_pagespeed and nginx are recent enough to support dynamic
|
# Check that ngx_pagespeed and nginx are recent enough to support dynamic
|
||||||
# modules.
|
# modules. Unfortunately NPS_VERSION might be a tag, in which case we don't
|
||||||
if version_older_than "$NPS_VERSION" "1.10.33.5"; then
|
# know. If it's not a numeric version number, then assume it's recent
|
||||||
|
# enough and if it's not they'll get an ugly compilation error later.
|
||||||
|
# Luckily 1.10.33.5 was a while ago now.
|
||||||
|
#
|
||||||
|
# I'd like to use =~ here, but they changed syntax between v3 and v4 (quotes
|
||||||
|
# moved from mandatory to optional to prohibited).
|
||||||
|
if [[ "${NPS_VERSION#*[^0-9.]}" = "$NPS_VERSION" ]] &&
|
||||||
|
version_older_than "$NPS_VERSION" "1.10.33.5"; then
|
||||||
fail "
|
fail "
|
||||||
You're trying to build ngx_pagespeed $NPS_VERSION as a dynamic module, but
|
You're trying to build ngx_pagespeed $NPS_VERSION as a dynamic module, but
|
||||||
ngx_pagespeed didn't add support for dynamic modules until 1.10.33.5."
|
ngx_pagespeed didn't add support for dynamic modules until 1.10.33.5."
|
||||||
@@ -314,16 +472,16 @@ add support for dynamic modules in a way compatible with ngx_pagespeed until
|
|||||||
# Now make sure our dependencies are installed.
|
# Now make sure our dependencies are installed.
|
||||||
if "$DO_DEPS_CHECK"; then
|
if "$DO_DEPS_CHECK"; then
|
||||||
if [ -f /etc/debian_version ]; then
|
if [ -f /etc/debian_version ]; then
|
||||||
echo "Detected debian-based distro."
|
status "Detected debian-based distro."
|
||||||
|
|
||||||
install_dependencies "apt-get install" debian_is_installed \
|
install_dependencies "apt-get install" debian_is_installed \
|
||||||
"build-essential zlib1g-dev libpcre3 libpcre3-dev unzip"
|
"build-essential zlib1g-dev libpcre3 libpcre3-dev unzip"
|
||||||
|
|
||||||
if gcc_too_old; then
|
if gcc_too_old; then
|
||||||
if [ ! -e /usr/lib/gcc-mozilla/bin/gcc ]; then
|
if [ ! -e /usr/lib/gcc-mozilla/bin/gcc ]; then
|
||||||
echo "Detected that gcc is older than 4.8. Installing gcc-mozilla"
|
status "Detected that gcc is older than 4.8. Installing gcc-mozilla"
|
||||||
echo "which installs gcc-4.8 into /usr/lib/gcc-mozilla/ and doesn't"
|
status "which installs gcc-4.8 into /usr/lib/gcc-mozilla/ and doesn't"
|
||||||
echo "affect your global gcc installation."
|
status "affect your global gcc installation."
|
||||||
run sudo apt-get install gcc-mozilla
|
run sudo apt-get install gcc-mozilla
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -332,7 +490,7 @@ add support for dynamic modules in a way compatible with ngx_pagespeed until
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
elif [ -f /etc/redhat-release ]; then
|
elif [ -f /etc/redhat-release ]; then
|
||||||
echo "Detected redhat-based distro."
|
status "Detected redhat-based distro."
|
||||||
|
|
||||||
install_dependencies "yum install" redhat_is_installed \
|
install_dependencies "yum install" redhat_is_installed \
|
||||||
"gcc-c++ pcre-devel zlib-devel make unzip wget"
|
"gcc-c++ pcre-devel zlib-devel make unzip wget"
|
||||||
@@ -350,9 +508,9 @@ Unexpected major version $redhat_major_version in /etc/redhat-release:
|
|||||||
$(cat /etc/redhat-release) Expected 5 or 6."
|
$(cat /etc/redhat-release) Expected 5 or 6."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Detected that gcc is older than 4.8. Scientific Linux provides"
|
status "Detected that gcc is older than 4.8. Scientific Linux"
|
||||||
echo "a gcc package that installs gcc-4.8 into /opt/ and doesn't"
|
status "provides a gcc package that installs gcc-4.8 into /opt/ and"
|
||||||
echo "affect your global gcc installation."
|
status "doesn't affect your global gcc installation."
|
||||||
slc_key="https://linux.web.cern.ch/linux/scientific6/docs/repository/"
|
slc_key="https://linux.web.cern.ch/linux/scientific6/docs/repository/"
|
||||||
slc_key+="cern/slc6X/i386/RPM-GPG-KEY-cern"
|
slc_key+="cern/slc6X/i386/RPM-GPG-KEY-cern"
|
||||||
slc_key_out="$TEMPDIR/RPM-GPG-KEY-cern"
|
slc_key_out="$TEMPDIR/RPM-GPG-KEY-cern"
|
||||||
@@ -376,11 +534,11 @@ $(cat /etc/redhat-release) Expected 5 or 6."
|
|||||||
fail "
|
fail "
|
||||||
This doesn't appear to be a deb-based distro or an rpm-based one. Not going to
|
This doesn't appear to be a deb-based distro or an rpm-based one. Not going to
|
||||||
be able to install dependencies. Please install dependencies manually and rerun
|
be able to install dependencies. Please install dependencies manually and rerun
|
||||||
with --depsinstalled."
|
with --no-deps-check."
|
||||||
fi
|
fi
|
||||||
echo "Dependencies are all set."
|
status "Operating system dependencies are all set."
|
||||||
else
|
else
|
||||||
echo "Not checking whether dependencies are installed."
|
status "Not checking whether operating system dependencies are installed."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function delete_if_already_exists() {
|
function delete_if_already_exists() {
|
||||||
@@ -391,7 +549,6 @@ with --depsinstalled."
|
|||||||
if [ ${#directory} -lt 8 ]; then
|
if [ ${#directory} -lt 8 ]; then
|
||||||
fail "
|
fail "
|
||||||
Not deleting $directory; name is suspiciously short. Something is wrong."
|
Not deleting $directory; name is suspiciously short. Something is wrong."
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
continue_or_exit "OK to delete $directory?"
|
continue_or_exit "OK to delete $directory?"
|
||||||
@@ -399,53 +556,106 @@ Not deleting $directory; name is suspiciously short. Something is wrong."
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
nps_baseurl="https://github.com/pagespeed/ngx_pagespeed/archive"
|
|
||||||
# In general, the zip github builds for tag foo unzips to ngx_pagespeed-foo,
|
# In general, the zip github builds for tag foo unzips to ngx_pagespeed-foo,
|
||||||
# but it looks like they special case vVERSION tags to ngx_pagespeed-VERSION.
|
# but it looks like they special case vVERSION tags to ngx_pagespeed-VERSION
|
||||||
if [[ "$NPS_VERSION" =~ ^[0-9]*[.][0-9]*[.][0-9]*[.][0-9]*$ ]]; then
|
if [[ "$NPS_VERSION" =~ ^[0-9]*[.][0-9]*[.][0-9]*[.][0-9]*$ ]]; then
|
||||||
# We've been given a numeric version number. This has an associated tag in
|
# We've been given a numeric version number. This has an associated tag
|
||||||
# the form vVERSION-beta.
|
# in the form vVERSION-beta.
|
||||||
nps_url_fname="v${NPS_VERSION}-beta"
|
tag_name="v${NPS_VERSION}-beta"
|
||||||
nps_downloaded_fname="ngx_pagespeed-${NPS_VERSION}-beta"
|
nps_downloaded_fname="ngx_pagespeed-${NPS_VERSION}-beta"
|
||||||
else
|
else
|
||||||
# We've been given a tag name, like latest-beta. Download that directly.
|
# We've been given a tag name, like latest-beta. Download that directly.
|
||||||
nps_url_fname="$NPS_VERSION"
|
tag_name="$NPS_VERSION"
|
||||||
nps_downloaded_fname="ngx_pagespeed-${NPS_VERSION}"
|
nps_downloaded_fname="ngx_pagespeed-${NPS_VERSION}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
nps_downloaded="$TEMPDIR/$nps_downloaded_fname.zip"
|
install_dir="this-only-makes-sense-in-devel-mode"
|
||||||
run wget "$nps_baseurl/$nps_url_fname.zip" -O "$nps_downloaded"
|
if "$USE_GIT_CHECKOUT"; then
|
||||||
nps_module_dir="$BUILDDIR/$nps_downloaded_fname"
|
# We're either doing a --devel build, or someone is running us from an
|
||||||
delete_if_already_exists "$nps_module_dir"
|
# existing git checkout.
|
||||||
echo "Extracting ngx_pagespeed..."
|
nps_module_dir="$PWD"
|
||||||
run unzip -q "$nps_downloaded" -d "$BUILDDIR"
|
install_dir="$nps_module_dir"
|
||||||
run cd "$nps_module_dir"
|
if "$ALREADY_CHECKED_OUT"; then
|
||||||
|
run cd "$nps_module_dir"
|
||||||
# Now we need to figure out what precompiled version of PSOL to build
|
else
|
||||||
# ngx_pagespeed against.
|
status "Checking out ngx_pagespeed..."
|
||||||
if "$DRYRUN"; then
|
run git clone "git@github.com:pagespeed/ngx_pagespeed.git" \
|
||||||
psol_url="https://psol.example.com/cant-get-psol-version-in-dry-run.tar.gz"
|
"$nps_module_dir"
|
||||||
elif [ -e PSOL_BINARY_URL ]; then
|
run cd "$nps_module_dir"
|
||||||
# Releases after 1.11.33.4 there is a PSOL_BINARY_URL file that tells us
|
run git checkout "$tag_name"
|
||||||
# where to look.
|
fi
|
||||||
psol_url="$(cat PSOL_BINARY_URL)"
|
submodules_dir="$nps_module_dir/testing-dependencies"
|
||||||
if [[ "$psol_url" != https://* ]]; then
|
if "$DEVEL"; then
|
||||||
fail "Got bad psol binary location information: $psol_url"
|
status "Downloading dependencies..."
|
||||||
|
run git submodule update --init --recursive
|
||||||
|
if [[ "$CONTINUOUS_INTEGRATION" != true ]]; then
|
||||||
|
status "Switching submodules over to git protocol."
|
||||||
|
# This lets us push to github by public key.
|
||||||
|
for config in $(find .git/ -name config) ; do
|
||||||
|
run sed -i s~https://github.com/~git@github.com:~ $config ;
|
||||||
|
done
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# For past releases we have to grep it from the config file. The url has
|
nps_baseurl="https://github.com/pagespeed/ngx_pagespeed/archive"
|
||||||
# always looked like this, and the config file has contained it since before
|
nps_downloaded="$TEMPDIR/$nps_downloaded_fname.zip"
|
||||||
# we started tagging our ngx_pagespeed releases.
|
status "Downloading ngx_pagespeed..."
|
||||||
psol_url="$(
|
run wget "$nps_baseurl/$tag_name.zip" -O "$nps_downloaded"
|
||||||
grep -o "https://dl.google.com/dl/page-speed/psol/[0-9.]*.tar.gz" config)"
|
nps_module_dir="$BUILDDIR/$nps_downloaded_fname"
|
||||||
if [ -z "$psol_url" ]; then
|
delete_if_already_exists "$nps_module_dir"
|
||||||
fail "Couldn't find PSOL url in $PWD/config"
|
status "Extracting ngx_pagespeed..."
|
||||||
fi
|
run unzip -q "$nps_downloaded" -d "$BUILDDIR"
|
||||||
|
run cd "$nps_module_dir"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run wget "$psol_url"
|
MOD_PAGESPEED_DIR=""
|
||||||
echo "Extracting PSOL..."
|
PSOL_BINARY=""
|
||||||
run tar -xzf $(basename "$psol_url") # extracts to psol/
|
if "$PSOL_FROM_SOURCE"; then
|
||||||
|
MOD_PAGESPEED_DIR="$PWD/testing-dependencies/mod_pagespeed"
|
||||||
|
git submodule update --init --recursive -- "$MOD_PAGESPEED_DIR"
|
||||||
|
run pushd "$MOD_PAGESPEED_DIR"
|
||||||
|
|
||||||
|
if "$DEVEL"; then
|
||||||
|
if [ ! -d "$HOME/apache2" ]; then
|
||||||
|
run install/build_development_apache.sh 2.2 prefork
|
||||||
|
fi
|
||||||
|
cd devel
|
||||||
|
run make apache_debug_psol
|
||||||
|
PSOL_BINARY="$MOD_PAGESPEED_DIR/out/$BUILD_TYPE/pagespeed_automatic.a"
|
||||||
|
else
|
||||||
|
run install/build_psol.sh --skip_tests --skip_packaging
|
||||||
|
PSOL_BINARY="$MOD_PAGESPEED_DIR/pagespeed/automatic/pagespeed_automatic.a"
|
||||||
|
fi
|
||||||
|
run popd
|
||||||
|
else
|
||||||
|
# Now we need to figure out what precompiled version of PSOL to build
|
||||||
|
# ngx_pagespeed against.
|
||||||
|
if "$DRYRUN"; then
|
||||||
|
psol_url="https://psol.example.com/cant-get-psol-version-in-dry-run.tar.gz"
|
||||||
|
elif [ -e PSOL_BINARY_URL ]; then
|
||||||
|
# Releases after 1.11.33.4 there is a PSOL_BINARY_URL file that tells us
|
||||||
|
# where to look.
|
||||||
|
psol_url="$(scripts/format_binary_url.sh PSOL_BINARY_URL)"
|
||||||
|
if [[ "$psol_url" != https://* ]]; then
|
||||||
|
fail "Got bad psol binary location information: $psol_url"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# For past releases we have to grep it from the config file. The url has
|
||||||
|
# always looked like this, and the config file has contained it since
|
||||||
|
# before we started tagging our ngx_pagespeed releases.
|
||||||
|
psol_url="$(grep -o \
|
||||||
|
"https://dl.google.com/dl/page-speed/psol/[0-9.]*.tar.gz" config)"
|
||||||
|
if [ -z "$psol_url" ]; then
|
||||||
|
fail "Couldn't find PSOL url in $PWD/config"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
status "Downloading PSOL binary..."
|
||||||
|
run wget "$psol_url"
|
||||||
|
|
||||||
|
status "Extracting PSOL..."
|
||||||
|
run tar -xzf $(basename "$psol_url") # extracts to psol/
|
||||||
|
fi
|
||||||
|
|
||||||
if "$DYNAMIC_MODULE"; then
|
if "$DYNAMIC_MODULE"; then
|
||||||
add_module="--add-dynamic-module=$nps_module_dir"
|
add_module="--add-dynamic-module=$nps_module_dir"
|
||||||
@@ -454,17 +664,37 @@ Not deleting $directory; name is suspiciously short. Something is wrong."
|
|||||||
fi
|
fi
|
||||||
configure_args=("$add_module" "${extra_flags[@]}")
|
configure_args=("$add_module" "${extra_flags[@]}")
|
||||||
|
|
||||||
|
if "$DEVEL"; then
|
||||||
|
configure_args=("${configure_args[@]}"
|
||||||
|
"--prefix=$install_dir/nginx"
|
||||||
|
"--add-module=$submodules_dir/ngx_cache_purge"
|
||||||
|
"--add-module=$submodules_dir/ngx_devel_kit"
|
||||||
|
"--add-module=$submodules_dir/set-misc-nginx-module"
|
||||||
|
"--add-module=$submodules_dir/headers-more-nginx-module"
|
||||||
|
"--with-ipv6"
|
||||||
|
"--with-http_v2_module")
|
||||||
|
if [ "$BUILD_TYPE" = "Debug" ]; then
|
||||||
|
configure_args=("${configure_args[@]}" "--with-debug")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
if [ -z "$NGINX_VERSION" ]; then
|
if ! "$BUILD_NGINX"; then
|
||||||
# They didn't specify an nginx version, so we're just preparing the
|
# Just prepare the module for them to install.
|
||||||
# module for them to install.
|
status "ngx_pagespeed is ready to be built against nginx."
|
||||||
echo "ngx_pagespeed is ready to be built against nginx."
|
echo "When running ./configure:"
|
||||||
echo "When running ./configure pass in:"
|
if "$PSOL_FROM_SOURCE"; then
|
||||||
echo " $(quote_arguments "${configure_args[@]}")"
|
echo " Set the following environment variables:"
|
||||||
|
echo " MOD_PAGESPEED_DIR=$MOD_PAGESPEED_DIR"
|
||||||
|
echo " PSOL_BINARY=$PSOL_BINARY"
|
||||||
|
fi
|
||||||
|
echo " Give ./configure the following arguments:"
|
||||||
|
echo " $(quote_arguments "${configure_args[@]}")"
|
||||||
|
echo
|
||||||
if [ ${#extra_flags[@]} -eq 0 ]; then
|
if [ ${#extra_flags[@]} -eq 0 ]; then
|
||||||
echo "If this is for integration with an already-built nginx, make sure"
|
echo "If this is for integration with an already-built nginx, make sure"
|
||||||
echo "to include any other arguments you originally passed to ./configure"
|
echo "to include any other arguments you originally passed to"
|
||||||
echo "You can see these with 'nginx -V'."
|
echo "./configure. You can see these with 'nginx -V'."
|
||||||
else
|
else
|
||||||
echo "Note: because we need to set $(quote_arguments "${extra_flags[@]}")"
|
echo "Note: because we need to set $(quote_arguments "${extra_flags[@]}")"
|
||||||
echo "on this platform, if you want to integrate ngx_pagespeed with an"
|
echo "on this platform, if you want to integrate ngx_pagespeed with an"
|
||||||
@@ -472,59 +702,99 @@ Not deleting $directory; name is suspiciously short. Something is wrong."
|
|||||||
echo "those flags set."
|
echo "those flags set."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Download and build nginx.
|
if "$DEVEL"; then
|
||||||
nginx_leaf="nginx-${NGINX_VERSION}.tar.gz"
|
# Use the nginx we loaded as a submodule
|
||||||
nginx_fname="$TEMPDIR/$nginx_leaf"
|
nginx_dir="$submodules_dir/nginx"
|
||||||
run wget "http://nginx.org/download/$nginx_leaf" -O "$nginx_fname"
|
configure_location="auto"
|
||||||
nginx_dir="$BUILDDIR/nginx-${NGINX_VERSION}/"
|
else
|
||||||
delete_if_already_exists "$nginx_dir"
|
# Download and build the specified nginx version.
|
||||||
echo "Extracting nginx..."
|
nginx_leaf="nginx-${NGINX_VERSION}.tar.gz"
|
||||||
run tar -xzf "$nginx_fname" --directory "$BUILDDIR"
|
nginx_fname="$TEMPDIR/$nginx_leaf"
|
||||||
"$DRYRUN" || cd "$nginx_dir"
|
status "Downloading nginx..."
|
||||||
|
run wget "http://nginx.org/download/$nginx_leaf" -O "$nginx_fname"
|
||||||
|
nginx_dir="$BUILDDIR/nginx-${NGINX_VERSION}/"
|
||||||
|
delete_if_already_exists "$nginx_dir"
|
||||||
|
status "Extracting nginx..."
|
||||||
|
run tar -xzf "$nginx_fname" --directory "$BUILDDIR"
|
||||||
|
configure_location="."
|
||||||
|
fi
|
||||||
|
run cd "$nginx_dir"
|
||||||
|
|
||||||
configure=("./configure" "${configure_args[@]}")
|
configure=("$configure_location/configure" "${configure_args[@]}")
|
||||||
echo "About to build nginx. Do you have any additional ./configure"
|
if ! "$ASSUME_YES"; then
|
||||||
echo "arguments you would like to set? For example, if you would like"
|
echo "About to build nginx. Do you have any additional ./configure"
|
||||||
echo "to build nginx with https support give --with-http_ssl_module"
|
echo "arguments you would like to set? For example, if you would like"
|
||||||
echo "If you don't have any, just press enter."
|
echo "to build nginx with https support give --with-http_ssl_module"
|
||||||
read -p "> " additional_configure_args
|
echo "If you don't have any, just press enter."
|
||||||
if [ -n "$additional_configure_args" ]; then
|
read -p "> " additional_configure_args
|
||||||
# Split additional_configure_args respecting any internal quotation.
|
if [ -n "$additional_configure_args" ]; then
|
||||||
# Otherwise things like --with-cc-opt='-foo -bar' won't work.
|
# Split additional_configure_args respecting any internal quotation.
|
||||||
eval additional_configure_args=("$additional_configure_args")
|
# Otherwise things like --with-cc-opt='-foo -bar' won't work.
|
||||||
configure=("${configure[@]}" "${additional_configure_args[@]}")
|
eval additional_configure_args=("$additional_configure_args")
|
||||||
|
configure=("${configure[@]}" "${additional_configure_args[@]}")
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
echo "About to configure nginx with:"
|
echo "About to configure nginx with:"
|
||||||
echo " $(quote_arguments "${configure[@]}")"
|
echo " $(quote_arguments "${configure[@]}")"
|
||||||
continue_or_exit "Does this look right?"
|
continue_or_exit "Does this look right?"
|
||||||
run "${configure[@]}"
|
MOD_PAGESPEED_DIR="$MOD_PAGESPEED_DIR" \
|
||||||
|
PSOL_BINARY="$PSOL_BINARY" \
|
||||||
|
run "${configure[@]}"
|
||||||
|
|
||||||
continue_or_exit "Build nginx?"
|
if ! "$DEVEL"; then
|
||||||
|
continue_or_exit "Build nginx?"
|
||||||
|
fi
|
||||||
run make
|
run make
|
||||||
|
|
||||||
continue_or_exit "Install nginx?"
|
if "$DEVEL"; then
|
||||||
run sudo make install
|
run make install
|
||||||
|
|
||||||
echo
|
status "Nginx installed with ngx_pagespeed, and set up for testing."
|
||||||
if "$DYNAMIC_MODULE"; then
|
# TODO(jefftk): pull these out into separate scripts.
|
||||||
echo "Nginx installed with ngx_pagespeed support available as a"
|
echo "To run tests, pick a pair of ports like 8050 and 8051 and run:"
|
||||||
echo "loadable module."
|
echo " cd $nps_module_dir"
|
||||||
|
echo " RUN_TESTS=true \\"
|
||||||
|
echo " USE_VALGRIND=false \\"
|
||||||
|
echo " TEST_NATIVE_FETCHER=false \\"
|
||||||
|
echo " TEST_SERF_FETCHER=true \\"
|
||||||
|
echo " test/run_tests.sh \\"
|
||||||
|
echo " $MOD_PAGESPEED_DIR \\"
|
||||||
|
echo " $install_dir/nginx/sbin/nginx"
|
||||||
echo
|
echo
|
||||||
echo "To load the ngx_pagespeed module, you'll need to add:"
|
echo "To rebuild after changes:"
|
||||||
echo " load_module \"modules/ngx_pagespeed.so\";"
|
echo " First, if you change things in PSOL or update it:"
|
||||||
echo "at the top of your main nginx configuration file."
|
echo " cd $MOD_PAGESPEED_DIR/devel"
|
||||||
|
echo " make apache_debug_psol"
|
||||||
|
echo " Then, whether or not you updated PSOL, rebuild nginx:"
|
||||||
|
echo " cd $install_dir/nginx"
|
||||||
|
echo " make && make install"
|
||||||
else
|
else
|
||||||
echo "Nginx installed with ngx_pagespeed support compiled-in."
|
continue_or_exit "Install nginx?"
|
||||||
|
run sudo make install
|
||||||
|
|
||||||
|
echo
|
||||||
|
if "$DYNAMIC_MODULE"; then
|
||||||
|
echo "Nginx installed with ngx_pagespeed support available as a"
|
||||||
|
echo "loadable module."
|
||||||
|
echo
|
||||||
|
echo "To load the ngx_pagespeed module, you'll need to add:"
|
||||||
|
echo " load_module \"modules/ngx_pagespeed.so\";"
|
||||||
|
echo "at the top of your main nginx configuration file."
|
||||||
|
else
|
||||||
|
echo "Nginx installed with ngx_pagespeed support compiled-in."
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
echo "If this is a new installation you probably need an init script to"
|
||||||
|
echo "manage starting and stopping the nginx service. See:"
|
||||||
|
echo " http://wiki.nginx.org/InitScripts"
|
||||||
|
echo
|
||||||
|
echo "You'll also need to configure ngx_pagespeed if you haven't yet:"
|
||||||
|
echo " https://developers.google.com/speed/pagespeed/module/configuration"
|
||||||
fi
|
fi
|
||||||
echo
|
|
||||||
echo "If this is a new installation you probably need an init script to"
|
|
||||||
echo "manage starting and stopping the nginx service. See:"
|
|
||||||
echo " http://wiki.nginx.org/InitScripts"
|
|
||||||
echo
|
|
||||||
echo "You'll also need to configure ngx_pagespeed if you haven't yet:"
|
|
||||||
echo " https://developers.google.com/speed/pagespeed/module/configuration"
|
|
||||||
fi
|
fi
|
||||||
"$DRYRUN" && echo "[this was a dry run; your system is unchanged]"
|
if "$DRYRUN"; then
|
||||||
|
echo_color "$YELLOW" "[this was a dry run; your system is unchanged]"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Start running things from a call at the end so if this script is executed
|
# Start running things from a call at the end so if this script is executed
|
||||||
|
|||||||
Executable
+38
@@ -0,0 +1,38 @@
|
|||||||
|
#!/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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "Usage: $(basename $0) <url_file>" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
url_file=$1
|
||||||
|
|
||||||
|
if [ ! -e "$url_file" ]; then
|
||||||
|
echo "Url file '$url_file' missing!" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The size names must match install/build_psol.sh in mod_pagespeed
|
||||||
|
if [ "$(uname -m)" = x86_64 ]; then
|
||||||
|
bit_size_name=x64
|
||||||
|
else
|
||||||
|
bit_size_name=ia32
|
||||||
|
fi
|
||||||
|
|
||||||
|
sed -e 's/$BIT_SIZE_NAME\b/'$bit_size_name'/g' $url_file
|
||||||
@@ -1,5 +1,19 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
|
# Copyright 2013 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.
|
||||||
|
#
|
||||||
# Converts pagespeed_libraries.conf from Apache-format to Nginx-format,
|
# Converts pagespeed_libraries.conf from Apache-format to Nginx-format,
|
||||||
# supporting the canonicalize_javascript_libraries filter.
|
# supporting the canonicalize_javascript_libraries filter.
|
||||||
# Inspired by https://github.com/pagespeed/ngx_pagespeed/issues/532
|
# Inspired by https://github.com/pagespeed/ngx_pagespeed/issues/532
|
||||||
|
|||||||
@@ -1,94 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# Copyright 2012 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: jefftk@google.com (Jeff Kaufman)
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# scripts/prepare_psol.sh /path/to/mod_pagespeed/src
|
|
||||||
#
|
|
||||||
# Creates a directory psol/ and copies headers and a few source files from a
|
|
||||||
# depot_tools (glient) checkout into psol/include. Along with creating
|
|
||||||
# binaries, this is a step in preparing psol.tar.gz for distribution.
|
|
||||||
#
|
|
||||||
|
|
||||||
set -u # check for undefined variables
|
|
||||||
set -e # exit on failed commands
|
|
||||||
|
|
||||||
if [ "$(basename "$PWD")" != "ngx_pagespeed" ] ; then
|
|
||||||
echo "$(basename $0) must be invoked from the ngx_pagespeed directory"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $# -ne 1 ] ; then
|
|
||||||
echo "Usage: $(basename $0) /path/to/mod_pagespeed/src"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
MOD_PAGESPEED_SRC="$1"
|
|
||||||
|
|
||||||
if [ "$(basename "$(dirname "$MOD_PAGESPEED_SRC")")/$( \
|
|
||||||
basename "$MOD_PAGESPEED_SRC")" != "mod_pagespeed/src" ] ; then
|
|
||||||
echo "Usage: $(basename $0) /path/to/mod_pagespeed/src"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -e psol ] ; then
|
|
||||||
echo "A psol/ directory already exists. Move it somewhere else and rerun."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
mkdir psol/
|
|
||||||
# Copy over the .h files, plus a few selected .cc and .c files.
|
|
||||||
rsync -arvz "$MOD_PAGESPEED_SRC/" "psol/include/" --prune-empty-dirs \
|
|
||||||
--exclude=".svn" \
|
|
||||||
--exclude=".git" \
|
|
||||||
--include='*.h' \
|
|
||||||
--include='*/' \
|
|
||||||
--include="apr_thread_compatible_pool.cc" \
|
|
||||||
--include="serf_url_async_fetcher.cc" \
|
|
||||||
--include="apr_mem_cache.cc" \
|
|
||||||
--include="key_value_codec.cc" \
|
|
||||||
--include="apr_memcache2.c" \
|
|
||||||
--include="loopback_route_fetcher.cc" \
|
|
||||||
--include="add_headers_fetcher.cc" \
|
|
||||||
--include="console_css_out.cc" \
|
|
||||||
--include="console_out.cc" \
|
|
||||||
--include="dense_hash_map" \
|
|
||||||
--include="dense_hash_set" \
|
|
||||||
--include="sparse_hash_map" \
|
|
||||||
--include="sparse_hash_set" \
|
|
||||||
--include="sparsetable" \
|
|
||||||
--include="mod_pagespeed_console_out.cc" \
|
|
||||||
--include="mod_pagespeed_console_css_out.cc" \
|
|
||||||
--include="mod_pagespeed_console_html_out.cc" \
|
|
||||||
--exclude='*'
|
|
||||||
mkdir -p psol/lib/Debug/linux/ia32
|
|
||||||
mkdir -p psol/lib/Debug/linux/x64
|
|
||||||
mkdir -p psol/lib/Release/linux/ia32
|
|
||||||
mkdir -p psol/lib/Release/linux/x64
|
|
||||||
|
|
||||||
# Log that we did this.
|
|
||||||
SVN_REVISION="$(svn info $MOD_PAGESPEED_SRC | grep Revision | awk '{print $2}')"
|
|
||||||
SVN_TAG="$(svn info $MOD_PAGESPEED_SRC | grep URL | awk -F/ '{print $(NF-1)}')"
|
|
||||||
|
|
||||||
DATE="$(date +%F)"
|
|
||||||
echo "${DATE}: Copied from mod_pagespeed ${SVN_TAG}@r${SVN_REVISION} ($USER)" \
|
|
||||||
>> psol/include_history.txt
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Output is in psol/include. Now put binaries in psol/lib following"
|
|
||||||
echo "https://github.com/pagespeed/ngx_pagespeed/wiki/Building-Release-Binaries"
|
|
||||||
echo "and then you can distribute PSOL."
|
|
||||||
|
|
||||||
+11
-19
@@ -32,13 +32,7 @@
|
|||||||
: ${PRIMARY_PORT:?"Set PRIMARY_PORT"}
|
: ${PRIMARY_PORT:?"Set PRIMARY_PORT"}
|
||||||
: ${SECONDARY_PORT:?"Set SECONDARY_PORT"}
|
: ${SECONDARY_PORT:?"Set SECONDARY_PORT"}
|
||||||
: ${CONTROLLER_PORT:?"Set CONTROLLER_PORT"}
|
: ${CONTROLLER_PORT:?"Set CONTROLLER_PORT"}
|
||||||
: ${RCPORT1:?"Set RCPORT1"}
|
: ${RCPORT:?"Set RCPORT"}
|
||||||
: ${RCPORT2:?"Set RCPORT2"}
|
|
||||||
: ${RCPORT2:?"Set RCPORT3"}
|
|
||||||
: ${RCPORT4:?"Set RCPORT4"}
|
|
||||||
: ${RCPORT5:?"Set RCPORT5"}
|
|
||||||
: ${RCPORT6:?"Set RCPORT6"}
|
|
||||||
: ${RCPORT7:?"Set RCPORT7"}
|
|
||||||
: ${MOD_PAGESPEED_DIR:?"Set MOD_PAGESPEED_DIR"}
|
: ${MOD_PAGESPEED_DIR:?"Set MOD_PAGESPEED_DIR"}
|
||||||
: ${NGINX_EXECUTABLE:?"Set NGINX_EXECUTABLE"}
|
: ${NGINX_EXECUTABLE:?"Set NGINX_EXECUTABLE"}
|
||||||
: ${PAGESPEED_TEST_HOST:?"Set PAGESPEED_TEST_HOST"}
|
: ${PAGESPEED_TEST_HOST:?"Set PAGESPEED_TEST_HOST"}
|
||||||
@@ -55,7 +49,11 @@ rm -rf "$TEST_TMP"
|
|||||||
mkdir -p "$TEST_TMP"
|
mkdir -p "$TEST_TMP"
|
||||||
echo TEST_TMP=$TEST_TMP
|
echo TEST_TMP=$TEST_TMP
|
||||||
|
|
||||||
APACHE_DOC_SRC="$MOD_PAGESPEED_DIR/src/install/"
|
if [ -d "$MOD_PAGESPEED_DIR/src" ]; then
|
||||||
|
MOD_PAGESPEED_DIR+="/src"
|
||||||
|
fi
|
||||||
|
|
||||||
|
APACHE_DOC_SRC="$MOD_PAGESPEED_DIR/install/"
|
||||||
SERVER_ROOT="$TEST_TMP/root"
|
SERVER_ROOT="$TEST_TMP/root"
|
||||||
echo SERVER_ROOT=$SERVER_ROOT
|
echo SERVER_ROOT=$SERVER_ROOT
|
||||||
rm -rf "$SERVER_ROOT"
|
rm -rf "$SERVER_ROOT"
|
||||||
@@ -197,7 +195,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$RUN_CONTROLLER_TEST" = "on" ]; then
|
if [ "$RUN_CONTROLLER_TEST" = "on" ]; then
|
||||||
CONTROLLER="pagespeed CentralControllerPort $CONTROLLER_PORT;"
|
CONTROLLER="pagespeed ExperimentalCentralControllerPort $CONTROLLER_PORT;"
|
||||||
else
|
else
|
||||||
CONTROLLER=""
|
CONTROLLER=""
|
||||||
fi
|
fi
|
||||||
@@ -229,13 +227,7 @@ cat $PAGESPEED_CONF_TEMPLATE \
|
|||||||
| sed 's#@@CONTROLLER@@#'"$CONTROLLER"'#' \
|
| sed 's#@@CONTROLLER@@#'"$CONTROLLER"'#' \
|
||||||
| sed 's#@@NATIVE_FETCHER@@#'"$NATIVE_FETCHER"'#' \
|
| sed 's#@@NATIVE_FETCHER@@#'"$NATIVE_FETCHER"'#' \
|
||||||
| sed 's#@@RESOLVER@@#'"$RESOLVER"'#' \
|
| sed 's#@@RESOLVER@@#'"$RESOLVER"'#' \
|
||||||
| sed 's#@@RCPORT1@@#'"$RCPORT1"'#' \
|
| sed 's#@@RCPORT@@#'"$RCPORT"'#' \
|
||||||
| sed 's#@@RCPORT2@@#'"$RCPORT2"'#' \
|
|
||||||
| sed 's#@@RCPORT3@@#'"$RCPORT3"'#' \
|
|
||||||
| sed 's#@@RCPORT4@@#'"$RCPORT4"'#' \
|
|
||||||
| sed 's#@@RCPORT5@@#'"$RCPORT5"'#' \
|
|
||||||
| sed 's#@@RCPORT6@@#'"$RCPORT6"'#' \
|
|
||||||
| sed 's#@@RCPORT7@@#'"$RCPORT7"'#' \
|
|
||||||
| sed 's#@@PAGESPEED_TEST_HOST@@#'"$PAGESPEED_TEST_HOST"'#' \
|
| sed 's#@@PAGESPEED_TEST_HOST@@#'"$PAGESPEED_TEST_HOST"'#' \
|
||||||
>> $PAGESPEED_CONF
|
>> $PAGESPEED_CONF
|
||||||
# make sure we substituted all the variables
|
# make sure we substituted all the variables
|
||||||
@@ -323,7 +315,7 @@ SERVER_NAME=nginx
|
|||||||
RUN_CONTROLLER_TEST=${RUN_CONTROLLER_TEST:-off}
|
RUN_CONTROLLER_TEST=${RUN_CONTROLLER_TEST:-off}
|
||||||
|
|
||||||
# run generic system tests
|
# run generic system tests
|
||||||
PAGESPEED_DIR="$MOD_PAGESPEED_DIR/src/pagespeed"
|
PAGESPEED_DIR="$MOD_PAGESPEED_DIR/pagespeed"
|
||||||
SYSTEM_TEST_FILE="$PAGESPEED_DIR/system/system_test.sh"
|
SYSTEM_TEST_FILE="$PAGESPEED_DIR/system/system_test.sh"
|
||||||
REMOTE_CONFIG_TEST_FILE="$PAGESPEED_DIR/system/remote_config_test.sh"
|
REMOTE_CONFIG_TEST_FILE="$PAGESPEED_DIR/system/remote_config_test.sh"
|
||||||
|
|
||||||
@@ -1196,7 +1188,7 @@ OUT=$($WGET_DUMP --header=Host:response-header-disable.example.com $URL)
|
|||||||
check_not_from "$OUT" egrep -qi 'addInstrumentationInit'
|
check_not_from "$OUT" egrep -qi 'addInstrumentationInit'
|
||||||
|
|
||||||
# TODO(jmaessen, jefftk): Port proxying tests, which rely on pointing a
|
# TODO(jmaessen, jefftk): Port proxying tests, which rely on pointing a
|
||||||
# MapProxyDomain construct at a static server. Perhaps localhost:8050 will
|
# MapProxyDomain construct at a static server. Perhaps $HOSTNAME will
|
||||||
# serve, but the tests need to use different urls then. For mod_pagespeed these
|
# serve, but the tests need to use different urls then. For mod_pagespeed these
|
||||||
# tests immediately precede the "scrape_secondary_stat" definition in
|
# tests immediately precede the "scrape_secondary_stat" definition in
|
||||||
# system_test.sh.
|
# system_test.sh.
|
||||||
@@ -1432,7 +1424,7 @@ OUT=$(cat "$ERROR_LOG" \
|
|||||||
| grep -v "\\[error\\].*forbidden.example.com*" \
|
| grep -v "\\[error\\].*forbidden.example.com*" \
|
||||||
| grep -v "\\[error\\].*custom-paths.example.com*" \
|
| grep -v "\\[error\\].*custom-paths.example.com*" \
|
||||||
| grep -v "\\[error\\].*bogus_format*" \
|
| grep -v "\\[error\\].*bogus_format*" \
|
||||||
| grep -v "\\[error\\].*src/install/foo*" \
|
| grep -v "\\[error\\].*/install/foo*" \
|
||||||
| grep -v "\\[error\\].*recv() failed*" \
|
| grep -v "\\[error\\].*recv() failed*" \
|
||||||
| grep -v "\\[error\\].*send() failed*" \
|
| grep -v "\\[error\\].*send() failed*" \
|
||||||
| grep -v "\\[error\\].*Invalid url requested: js_defer.js.*" \
|
| grep -v "\\[error\\].*Invalid url requested: js_defer.js.*" \
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ http {
|
|||||||
|
|
||||||
# Block 6: Location block with proxy_cache directives.
|
# Block 6: Location block with proxy_cache directives.
|
||||||
location /mod_pagespeed_test/cachable_rewritten_html/ {
|
location /mod_pagespeed_test/cachable_rewritten_html/ {
|
||||||
# 1: Upstream PageSpeed server is running at localhost:8050.
|
# 1: Upstream PageSpeed server is running at localhost:@@PRIMARY_PORT@@.
|
||||||
proxy_pass http://localhost:@@PRIMARY_PORT@@;
|
proxy_pass http://localhost:@@PRIMARY_PORT@@;
|
||||||
# 2: Use htmlcache as the zone for caching.
|
# 2: Use htmlcache as the zone for caching.
|
||||||
proxy_cache htmlcache;
|
proxy_cache htmlcache;
|
||||||
@@ -372,6 +372,29 @@ http {
|
|||||||
"id=1;percent=100;matches_device_type=mobile;enable=recompress_images";
|
"id=1;percent=100;matches_device_type=mobile;enable=recompress_images";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen @@SECONDARY_PORT@@;
|
||||||
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
|
server_name experiment.ajax.example.com;
|
||||||
|
pagespeed FileCachePath "@@FILE_CACHE@@";
|
||||||
|
pagespeed RewriteLevel CoreFilters;
|
||||||
|
pagespeed DisableFilters add_instrumentation;
|
||||||
|
pagespeed JsInlineMaxBytes 1;
|
||||||
|
pagespeed RunExperiment on;
|
||||||
|
pagespeed UseAnalyticsJs false;
|
||||||
|
pagespeed ExperimentSpec "id=1;percent=100;level=CoreFilters;enable=collapse_whitespace;options=JsInlineMaxBytes=1";
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen @@SECONDARY_PORT@@;
|
||||||
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
|
server_name ajax.example.com;
|
||||||
|
pagespeed FileCachePath "@@FILE_CACHE@@";
|
||||||
|
pagespeed RewriteLevel CoreFilters;
|
||||||
|
pagespeed EnableFilters add_instrumentation;
|
||||||
|
pagespeed JsInlineMaxBytes 1;
|
||||||
|
}
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen @@SECONDARY_PORT@@;
|
listen @@SECONDARY_PORT@@;
|
||||||
listen [::]:@@SECONDARY_PORT@@;
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
@@ -1221,7 +1244,7 @@ http {
|
|||||||
listen [::]:@@SECONDARY_PORT@@;
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
server_name remote-config.example.com;
|
server_name remote-config.example.com;
|
||||||
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT1@@/remote.cfg";
|
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT@@/standard";
|
||||||
pagespeed RemoteConfigurationTimeoutMs 1500;
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
}
|
}
|
||||||
server {
|
server {
|
||||||
@@ -1229,7 +1252,8 @@ http {
|
|||||||
listen [::]:@@SECONDARY_PORT@@;
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
server_name remote-config-partially-invalid.example.com;
|
server_name remote-config-partially-invalid.example.com;
|
||||||
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT2@@/remote.cfg";
|
pagespeed RemoteConfigurationUrl
|
||||||
|
"http://127.0.0.1:@@RCPORT@@/partly-invalid";
|
||||||
pagespeed RemoteConfigurationTimeoutMs 1500;
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
}
|
}
|
||||||
server {
|
server {
|
||||||
@@ -1237,7 +1261,7 @@ http {
|
|||||||
listen [::]:@@SECONDARY_PORT@@;
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
server_name remote-config-invalid.example.com;
|
server_name remote-config-invalid.example.com;
|
||||||
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT3@@/remote.cfg";
|
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT@@/invalid";
|
||||||
pagespeed RemoteConfigurationTimeoutMs 1500;
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
}
|
}
|
||||||
server {
|
server {
|
||||||
@@ -1245,7 +1269,7 @@ http {
|
|||||||
listen [::]:@@SECONDARY_PORT@@;
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
server_name remote-config-failed-fetch.example.com;
|
server_name remote-config-failed-fetch.example.com;
|
||||||
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT5@@/remote.cfg";
|
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT@@/fail-future";
|
||||||
pagespeed RemoteConfigurationTimeoutMs 1500;
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
}
|
}
|
||||||
server {
|
server {
|
||||||
@@ -1253,7 +1277,7 @@ http {
|
|||||||
listen [::]:@@SECONDARY_PORT@@;
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
server_name remote-config-slow-fetch.example.com;
|
server_name remote-config-slow-fetch.example.com;
|
||||||
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT6@@/remote.cfg";
|
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT@@/timeout";
|
||||||
pagespeed RemoteConfigurationTimeoutMs 1500;
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
}
|
}
|
||||||
server {
|
server {
|
||||||
@@ -1261,7 +1285,41 @@ http {
|
|||||||
listen [::]:@@SECONDARY_PORT@@;
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
server_name remote-config-experiment.example.com;
|
server_name remote-config-experiment.example.com;
|
||||||
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT7@@/remote.cfg";
|
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT@@/experiment";
|
||||||
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen @@SECONDARY_PORT@@;
|
||||||
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
|
server_name remote-config-slightly-slow-fetch.example.com;
|
||||||
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
|
pagespeed RemoteConfigurationUrl
|
||||||
|
"http://127.0.0.1:@@RCPORT@@/slightly-slow";
|
||||||
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen @@SECONDARY_PORT@@;
|
||||||
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
|
server_name remote-config-slightly-slow-expired-fetch.example.com;
|
||||||
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
|
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT@@/slow-expired";
|
||||||
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen @@SECONDARY_PORT@@;
|
||||||
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
|
server_name remote-config-forbidden.example.com;
|
||||||
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
|
pagespeed RemoteConfigurationUrl "http://127.0.0.1:@@RCPORT@@/forbidden";
|
||||||
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen @@SECONDARY_PORT@@;
|
||||||
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
|
server_name remote-config-initially-forbidden.example.com;
|
||||||
|
pagespeed FileCachePath "@@SECONDARY_CACHE@@";
|
||||||
|
pagespeed RemoteConfigurationUrl
|
||||||
|
"http://127.0.0.1:@@RCPORT@@/forbidden-once";
|
||||||
pagespeed RemoteConfigurationTimeoutMs 1500;
|
pagespeed RemoteConfigurationTimeoutMs 1500;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1670,6 +1728,27 @@ http {
|
|||||||
pagespeed RewriteLevel PassThrough;
|
pagespeed RewriteLevel PassThrough;
|
||||||
pagespeed EnableFilters debug;
|
pagespeed EnableFilters debug;
|
||||||
}
|
}
|
||||||
|
server {
|
||||||
|
pagespeed on;
|
||||||
|
listen @@SECONDARY_PORT@@;
|
||||||
|
listen [::]:@@SECONDARY_PORT@@;
|
||||||
|
server_name broken-fetch.example.com;
|
||||||
|
pagespeed FileCachePath "@@FILE_CACHE@@/broken-fetch";
|
||||||
|
|
||||||
|
# Set up a fetch proxy that will 404 every request.
|
||||||
|
pagespeed FetchProxy "brokenfetch.example.com:1111";
|
||||||
|
|
||||||
|
# Prevent loopback fetch by explicitly authorizing the domain. Loopback
|
||||||
|
# fetches would work, and for this test, we're trying to have fetches fail,
|
||||||
|
# so they are instead picked up by the ipro recorder.
|
||||||
|
pagespeed Domain http://broken-fetch.example.com;
|
||||||
|
pagespeed InPlaceResourceOptimization on;
|
||||||
|
|
||||||
|
pagespeed RewriteLevel PassThrough;
|
||||||
|
pagespeed EnableFilters rewrite_javascript;
|
||||||
|
pagespeed DisableFilters add_instrumentation;
|
||||||
|
pagespeed CriticalImagesBeaconEnabled false;
|
||||||
|
}
|
||||||
server {
|
server {
|
||||||
listen @@PRIMARY_PORT@@;
|
listen @@PRIMARY_PORT@@;
|
||||||
listen [::]:@@PRIMARY_PORT@@;
|
listen [::]:@@PRIMARY_PORT@@;
|
||||||
|
|||||||
+18
-28
@@ -23,12 +23,12 @@
|
|||||||
# Exits with status 2 if command line args are wrong.
|
# Exits with status 2 if command line args are wrong.
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# ./run_tests.sh primary_port secondary_port mod_pagespeed_dir ngx_binary
|
# ./run_tests.sh /path/to/mod_pagespeed /path/to/nginx/binary
|
||||||
# pagespeed_test_host
|
|
||||||
# Example:
|
|
||||||
# ./run_tests.sh 8050 8051 /path/to/mod_pagespeed /path/to/nginx/binary
|
|
||||||
# selfsigned.modpagespeed.com
|
|
||||||
#
|
#
|
||||||
|
# By default the test script uses several ports. If you have a port conflict
|
||||||
|
# and need to override one you can do that by setting the relevant environment
|
||||||
|
# variable. For example:
|
||||||
|
# PRIMARY_PORT=1234 ./run_tests.sh /.../mod_pagespeed /.../nginx/binary
|
||||||
|
|
||||||
# Normally we test only with the native fetcher off. Set
|
# Normally we test only with the native fetcher off. Set
|
||||||
# TEST_NATIVE_FETCHER=true to also test the native fetcher, set
|
# TEST_NATIVE_FETCHER=true to also test the native fetcher, set
|
||||||
@@ -45,29 +45,25 @@ RUN_TESTS=${RUN_TESTS:-true}
|
|||||||
# true.
|
# true.
|
||||||
USE_VALGRIND=${USE_VALGRIND:-false}
|
USE_VALGRIND=${USE_VALGRIND:-false}
|
||||||
|
|
||||||
if [ "$#" -ne 5 ] ; then
|
if [ "$#" -ne 2 ] ; then
|
||||||
echo "Usage: $0 primary_port secondary_port mod_pagespeed_dir"
|
echo "Usage: $0 mod_pagespeed_dir nginx_executable"
|
||||||
echo " nginx_executable"
|
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PRIMARY_PORT="$1"
|
MOD_PAGESPEED_DIR="$1"
|
||||||
SECONDARY_PORT="$2"
|
NGINX_EXECUTABLE="$2"
|
||||||
MOD_PAGESPEED_DIR="$3"
|
|
||||||
NGINX_EXECUTABLE="$4"
|
: ${PRIMARY_PORT:=8050}
|
||||||
PAGESPEED_TEST_HOST="$5"
|
: ${SECONDARY_PORT:=8051}
|
||||||
CONTROLLER_PORT=8053
|
: ${CONTROLLER_PORT:=8053}
|
||||||
RCPORT1=9991
|
: ${RCPORT:=9991}
|
||||||
RCPORT2=9992
|
: ${PAGESPEED_TEST_HOST:=selfsigned.modpagespeed.com}
|
||||||
RCPORT3=9993
|
: ${PHP_PORT:=9000}
|
||||||
RCPORT4=9994
|
|
||||||
RCPORT5=9995
|
|
||||||
RCPORT6=9996
|
|
||||||
RCPORT7=9997
|
|
||||||
|
|
||||||
this_dir="$( cd $(dirname "$0") && pwd)"
|
this_dir="$( cd $(dirname "$0") && pwd)"
|
||||||
|
|
||||||
function run_test_checking_failure() {
|
function run_test_checking_failure() {
|
||||||
|
"$MOD_PAGESPEED_DIR/install/start_php.sh" "$PHP_PORT"
|
||||||
USE_VALGRIND="$USE_VALGRIND" \
|
USE_VALGRIND="$USE_VALGRIND" \
|
||||||
PRIMARY_PORT="$PRIMARY_PORT" \
|
PRIMARY_PORT="$PRIMARY_PORT" \
|
||||||
SECONDARY_PORT="$SECONDARY_PORT" \
|
SECONDARY_PORT="$SECONDARY_PORT" \
|
||||||
@@ -76,13 +72,7 @@ function run_test_checking_failure() {
|
|||||||
PAGESPEED_TEST_HOST="$PAGESPEED_TEST_HOST" \
|
PAGESPEED_TEST_HOST="$PAGESPEED_TEST_HOST" \
|
||||||
RUN_TESTS="$RUN_TESTS" \
|
RUN_TESTS="$RUN_TESTS" \
|
||||||
CONTROLLER_PORT="$CONTROLLER_PORT" \
|
CONTROLLER_PORT="$CONTROLLER_PORT" \
|
||||||
RCPORT1="$RCPORT1" \
|
RCPORT="$RCPORT" \
|
||||||
RCPORT2="$RCPORT2" \
|
|
||||||
RCPORT3="$RCPORT3" \
|
|
||||||
RCPORT4="$RCPORT4" \
|
|
||||||
RCPORT5="$RCPORT5" \
|
|
||||||
RCPORT6="$RCPORT6" \
|
|
||||||
RCPORT7="$RCPORT7" \
|
|
||||||
bash "$this_dir/nginx_system_test.sh"
|
bash "$this_dir/nginx_system_test.sh"
|
||||||
STATUS=$?
|
STATUS=$?
|
||||||
echo "With $@ setup."
|
echo "With $@ setup."
|
||||||
|
|||||||
+1
Submodule testing-dependencies/headers-more-nginx-module added at 30fb25901c
Submodule
+1
Submodule testing-dependencies/mod_pagespeed added at f61c3a5c4e
Submodule
+1
Submodule testing-dependencies/nginx added at 6917d29d40
Submodule
+1
Submodule testing-dependencies/ngx_cache_purge added at 331fe43e8d
Submodule
+1
Submodule testing-dependencies/ngx_devel_kit added at e443262071
+1
Submodule testing-dependencies/set-misc-nginx-module added at 72be6512cf
Reference in New Issue
Block a user