build mod_pagespeed on arm v5

670 views
Skip to first unread message

Adrian Petre

unread,
Jul 26, 2014, 4:36:33 PM7/26/14
to mod-pagesp...@googlegroups.com
Hi, I have a Zyxel NSA310 with:
Linux nsa310 2.6.31.8 #2 Fri Aug 2 11:21:44 CST 2013 armv5tel GNU/Linux
Python 2.7.5
gcc (GCC) 4.6.2

I solved some problems in order to build mod_pagespeed. One of them forced me to modify the files:
mod_pagespeed/DESP and mod_pagespeed/src/DESP (see https://src.chromium.org/viewvc/chrome?revision=262841&view=revision):
  "chromium_revision_num": "262841", -> change from 256281 to 262841

Now when executing:
make AR.host=`pwd`/build/wrappers/ar.sh AR.target=`pwd`/build/wrappers/ar.sh BUILDTYPE=Release
I get:
root@nsa310:~/compile/mod_pagespeed/src# make AR.host=`pwd`/build/wrappers/ar.sh AR.target=`pwd`/build/wrappers/ar.sh BUILDTYPE=Release
  ACTION Extracting last change to /usr/local/zy-pkgs/ffproot/ffp/home/root/compile/mod_pagespeed/src/out/Release/obj/gen/build/LASTCHANGE out/Release/obj/gen/build/LASTCHANGE.always
  ACTION Generating version header file: "/usr/local/zy-pkgs/ffproot/ffp/home/root/compile/mod_pagespeed/src/out/Release/obj/gen/net/instaweb/public/version.h" out/Release/obj/gen/net/instaweb/public/version.h
  RULE pagespeed_kernel_gyp_pagespeed_http_gperf_target_gperf_0 out/Release/obj/gen/gperf_out/instaweb/kernel/http/bot_checker.gp.cc
  CXX(target) out/Release/obj.target/pagespeed_http_gperf/gen/gperf_out/instaweb/kernel/http/bot_checker.gp.o
In file included from ./pagespeed/kernel/http/bot_checker.h:22:0,
                 from ../pagespeed/kernel/http/bot_checker.gperf:5:
./pagespeed/kernel/base/string_util.h: In function 'bool net_instaweb::OnlyWhitespace(const GoogleString&)':
./pagespeed/kernel/base/string_util.h:205:41: error: 'ContainsOnlyWhitespaceASCII' was not declared in this scope
make: *** [out/Release/obj.target/pagespeed_http_gperf/gen/gperf_out/instaweb/kernel/http/bot_checker.gp.o] Error 1

I notice that the file .../mod_pagespeed/src/pagespeed/kernel/base/string_util.cc indeed does not contains this string:
ContainsOnlyWhitespaceASCII 

What should I do ?

Adrian Petre

unread,
Jul 28, 2014, 5:17:44 AM7/28/14
to mod-pagesp...@googlegroups.com
Because some are interested in this topic I'll summarize what I did till now (includes the solving of the previous reported problem):

ERROR0:
"Undefined variable deb_arch" 
SOLUTION0:
modify /ffp/home/root/compile/mod_pagespeed/src/build/install.gyp:
        'conditions': [
          ['target_arch=="ia32"', {
            'deb_arch': 'i386',
            'rpm_arch': 'i386',
          }],
 ['target_arch=="arm"', { -> to add
'deb_arch': 'arm', -> to add
'rpm_arch': 'arm', -> to add
 }], -> to add
ERROR1: 
third_party/chromium/src/base/debug/stack_trace_posix.cc:8:22: fatal error: execinfo.h: No such file or directory
SOLUTION1:
Modify ~/compile/mod_pagespeed/DESP and ~/compile/mod_pagespeed/src/DESP 
 "chromium_revision_num": "262841", -> change from 256281 to 262841
 "chromium_deps_root": "src/third_party/chromium_deps",
Execute again: gclient sync --force --jobs=1
ERROR2: 
undefined reference to `__stack_chk_guard'
SOLUTION2:
Modify ~/compile/mod_pagespeed/src/third_party/chromium/src/build/common.gypi:
replace any fstack-protector or fstack-protector-all with fno-stack-protector.
ERROR3:
missing ContainsOnlyWhitespaceASCII
SOLUTION3:
I modified mod_pagespeed/src/pagespeed/kernel/base/string_util.cc and added:
bool ContainsOnlyWhitespaceASCII(const std::string& str) {
 for (std::string::const_iterator i(str.begin()); i != str.end(); ++i) {
if (!IsAsciiWhitespace(*i))
 return false;
 }
 return true;
}
}  // namespace net_instaweb   -> this line already existed the rest above I added
I modified mod_pagespeed/src/pagespeed/kernel/base/string_util.h and added:
void LowerString(GoogleString* str); -> this line already existed the rest below I added
bool ContainsOnlyWhitespaceASCII(const std::string& str);

Adrian Petre

unread,
Jul 28, 2014, 5:37:15 AM7/28/14
to mod-pagesp...@googlegroups.com
New problem:

CXX(target) out/Release/obj.target/gflags/third_party/gflags/src/gflags.o
third_party/gflags/src/gflags.cc:91:20: fatal error: config.h: No such file or directory
compilation terminated.
make: *** [out/Release/obj.target/gflags/third_party/gflags/src/gflags.o] Error 1

root@nsa310:~# ls -l /usr/local/zy-pkgs/ffproot/ffp/home/root/compile/mod_pagespeed/src/third_party/gflags/src
total 252
-rw-r--r-- 1 root root  3044 Jul 27 18:46 config.h.in
-rw-r--r-- 1 root root  2943 Jul 27 20:22 config_for_unittests.h
drwxr-xr-x 2 root root  4096 Jul 27 20:30 gflags
-rw-r--r-- 1 root root 73708 Jul 27 21:16 gflags.cc

root@nsa310:~# ls -l /usr/local/zy-pkgs/ffproot/ffp/home/root/compile/mod_pagespeed/src/third_party/gflags/src/gflags
total 40
-rw-r--r-- 1 root root 28700 Jul 27 18:46 gflags.h.in
-rw-r--r-- 1 root root  5825 Jul 27 18:46 gflags_completions.h.in

I modified every file *.h.in to *.h and executed again the make command:
root@nsa310:~/compile/mod_pagespeed/src# make AR.host=`pwd`/build/wrappers/ar.sh AR.target=`pwd`/build/wrappers/ar.sh BUILDTYPE=Release
  ACTION Extracting last change to /usr/local/zy-pkgs/ffproot/ffp/home/root/compile/mod_pagespeed/src/out/Release/obj/gen/build/LASTCHANGE out/Release/obj/gen/build/LASTCHANGE.always
  ACTION Generating version header file: "/usr/local/zy-pkgs/ffproot/ffp/home/root/compile/mod_pagespeed/src/out/Release/obj/gen/net/instaweb/public/version.h" out/Release/obj/gen/net/instaweb/public/version.h
  CXX(target) out/Release/obj.target/gflags/third_party/gflags/src/gflags.o
In file included from third_party/gflags/src/gflags.cc:114:0:
third_party/gflags/src/gflags/gflags.h:91:5: error: token "@" is not valid in preprocessor expressions
third_party/gflags/src/gflags/gflags.h:94:5: error: token "@" is not valid in preprocessor expressions
third_party/gflags/src/gflags/gflags.h:97:5: error: token "@" is not valid in preprocessor expressions
third_party/gflags/src/gflags/gflags.h:101:1: error: stray '@' in program
third_party/gflags/src/gflags/gflags.h:101:1: error: stray '@' in program
third_party/gflags/src/gflags/gflags.h:103:5: error: token "@" is not valid in preprocessor expressions
third_party/gflags/src/gflags/gflags.h:108:7: error: token "@" is not valid in preprocessor expressions
third_party/gflags/src/gflags/gflags.h:113:7: error: token "@" is not valid in preprocessor expressions
third_party/gflags/src/gflags/gflags.h:119:2: error: #error Do not know how to define a 32-bit integer quantity on your system
third_party/gflags/src/gflags/gflags.h:300:1: error: stray '@' in program
third_party/gflags/src/gflags/gflags.h:300:1: error: stray '@' in program
third_party/gflags/src/gflags/gflags.h:456:1: error: stray '@' in program
third_party/gflags/src/gflags/gflags.h:456:1: error: stray '@' in program
In file included from third_party/gflags/src/gflags.cc:116:0:
third_party/gflags/src/mutex.h:145:3: error: #error Need to implement mutex.h for your architecture, or #define NO_THREADS

Indeed in mod_pagespeed/src/third_party/gflags/src/gflags I have:
#if @ac_cv_have_stdint_h@
#include <stdint.h>             // the normal place uint16_t is defined
#endif
#if @ac_cv_have_systypes_h@
#include <sys/types.h>          // the normal place u_int16_t is defined
#endif
#if @ac_cv_have_inttypes_h@
#include <inttypes.h>           // a third place for uint16_t or u_int16_t
#endif

@ac_google_start_namespace@

It's a mess.

Joshua Marantz

unread,
Jul 28, 2014, 10:11:57 AM7/28/14
to mod-pagespeed-discuss
Sorry about that.  You can probably generate some of the correct files by building gflags directly from its distribution: https://code.google.com/p/gflags/ and then copying the relevant files into the mod_pagespeed build tree.  You are right, it's a mess.

-Josh



--
You received this message because you are subscribed to the Google Groups "mod-pagespeed-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mod-pagespeed-di...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/mod-pagespeed-discuss/4ccbb76c-8554-438a-b479-e099d256c8f6%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Adrian Petre

unread,
Jul 28, 2014, 10:46:12 AM7/28/14
to mod-pagesp...@googlegroups.com
It seems that gflags is needed only for tests (of which I renounced to compile because of multiple problems) so I try to avoid it at compile time.

Joshua Marantz

unread,
Jul 28, 2014, 10:51:03 AM7/28/14
to mod-pagespeed-discuss
That's conceptually true, although I am not certain that the module will link if flags isn't built.  That can probably be worked around with a few ifdefs.

But I think you probably want to compile and run the tests, because this is a new platform and if you want it to serve production traffic it's probably a very good idea to make sure that the software can pass its own unit and system tests first.

-Josh


On Mon, Jul 28, 2014 at 10:46 AM, Adrian Petre <adrian....@gmail.com> wrote:
It seems that gflags is needed only for tests (of which I renounced to compile because of multiple problems) so I try to avoid it at compile time.

--
You received this message because you are subscribed to the Google Groups "mod-pagespeed-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mod-pagespeed-di...@googlegroups.com.

Adrian Petre

unread,
Jul 28, 2014, 11:28:14 AM7/28/14
to mod-pagesp...@googlegroups.com
I solved the problem using this:

grep -m 1 --exclude-dir=.svn --include=DEPS -r "gflags" .
grep -m 1 --exclude-dir=.svn --include=*.mk -r "gflags" .
Delete mod_pagespeed/src/third_party/gflags/src/* and mod_pagespeed/src/third_party/google-sparsehash/src/*
Exclude gflags from compiling using grep commands above and your's linux skills (I don't remember any file modified, sorry).

Adrian Petre

unread,
Jul 28, 2014, 11:31:22 AM7/28/14
to mod-pagesp...@googlegroups.com
Now, I find a new problem:
  CC(target) out/Release/obj.target/dynamic_annotations/third_party/chromium/src/base/third_party/dynamic_annotations/dynamic_annotations.o
third_party/chromium/src/base/third_party/dynamic_annotations/dynamic_annotations.c:35:20: fatal error: stdlib.h: No such file or directory
compilation terminated.
make: *** [out/Release/obj.target/dynamic_annotations/third_party/chromium/src/base/third_party/dynamic_annotations/dynamic_annotations.o] Error 1

Adrian Petre

unread,
Jul 28, 2014, 12:00:29 PM7/28/14
to mod-pagesp...@googlegroups.com
ERROR7:
dynamic_annotations.c:35:20: fatal error: stdlib.h: No such file or directory
SOLUTION7:
Modify mod_pagespeed/src/third_party/chromium/src/base/third_party/dynamic_annotations/dynamic_annotations.target.mk:
INCS_Release := \
-Ithird_party/chromium/src \
-Ithird_party/chromium/src \
-I/ffp/include -> to add (this should be your directory containing stdlib.h)

Adrian Petre

unread,
Jul 28, 2014, 12:02:33 PM7/28/14
to mod-pagesp...@googlegroups.com
ERROR8:
pagespeed/kernel/base/debug.cc: In function 'GoogleString net_instaweb::StackTraceString()':
pagespeed/kernel/base/debug.cc:28:9: error: 'class base::debug::StackTrace' has no member named 'OutputToStream'
make: *** [out/Release/obj.target/pagespeed_base_core/pagespeed/kernel/base/debug.o] Error 1

Adrian Petre

unread,
Jul 28, 2014, 12:05:07 PM7/28/14
to mod-pagesp...@googlegroups.com
I think this last ERROR has something to do with:

ERROR4: 
undefined reference to `__stack_chk_guard'
SOLUTION4:
Modify ~/compile/mod_pagespeed/src/third_party/chromium/src/build/common.gypi:
replace any fstack-protector or fstack-protector-all with fno-stack-protector.

but I don't know how to solve it.

Adrian Petre

unread,
Jul 29, 2014, 9:39:18 AM7/29/14
to mod-pagesp...@googlegroups.com
SOLUTION8:
mod_pagespeed/src# grep -m 1 --exclude-dir=.svn -r "fstack-protector" .
sed -i s/"fstack-protector-all"/"fno-stack-protector"/ /files-found-by-grep-above
mod_pagespeed/src# grep -m 1 --exclude-dir=.svn -r "fstack-protector" .
sed -i s/"fstack-protector"/"fno-stack-protector"/ /files-found-by-grep-above

And now a new problem:

ERROR9:
make: *** No rule to make target `out/Release/obj.target/gflags/third_party/gflags/src/gflags.o', needed by `out/Release/obj.target/third_party/gflags/libgflags.a'.  Stop.

Adrian Petre

unread,
Jul 29, 2014, 9:58:59 AM7/29/14
to mod-pagesp...@googlegroups.com
SOLUTION9 (identical with SOLUTION6):
grep -m 2 --exclude-dir=.svn --include=DEPS -r "gflags" .
grep -m 2 --exclude-dir=.svn --include=*.mk -r "gflags" .
Exclude gflags from compiling. For example, in instaweb_data2c.target.mk:
# -Ithird_party/gflags/gen/arch/linux/arm/include \ -> line commented
# -Ithird_party/gflags/src -> line commented
$(obj)...gflags... -> line deleted
$(obj).target/third_party/gflags/libgflags.a -> line deleted example


Now, because I run [i]gclient sync --force --jobs=1[/i] I again have ERROR7. So be careful when running [i]gclient sync --force --jobs=1[/i] because it might revert some changes.
Message has been deleted

Adrian Petre

unread,
Jul 29, 2014, 10:33:45 AM7/29/14
to mod-pagesp...@googlegroups.com
The initial solution9 didn't work; this below is the working solution.

SOLUTION9 (partial similar with SOLUTION6):
grep -m 2 --exclude-dir=.svn --include=DEPS -r "gflags" .
grep -m 2 --exclude-dir=.svn --include=*.mk -r "gflags" .
Exclude gflags from compiling. For example, in instaweb_data2c.target.mk:
# -Ithird_party/gflags/gen/arch/linux/arm/include \ -> line commented and remove the / above
# -Ithird_party/gflags/src -> line commented
$(obj)...gflags... -> line deleted
$(obj).target/third_party/gflags/libgflags.a -> line deleted example
Exclude google-sparsehash from compiling -> same as gflags.
Modify mod_pagespeed/src/third_party/chromium/src/base/debug/stack_trace.h and stack_trace.cc:
//#if !defined(__UCLIBC__) -> commented (only this line not the if body)
//#endif -> commented the ending if


Now a new problem:
  CXX(target) out/Release/obj.target/pagespeed_base_core/pagespeed/kernel/base/symbol_table.o
In file included from ./pagespeed/kernel/base/symbol_table.h:31:0,
                 from pagespeed/kernel/base/symbol_table.cc:20:
./pagespeed/kernel/base/dense_hash_map.h:21:33: fatal error: google/dense_hash_map: No such file or directory
compilation terminated.
make: *** [out/Release/obj.target/pagespeed_base_core/pagespeed/kernel/base/symbol_table.o] Error 1

Adrian Petre

unread,
Jul 29, 2014, 1:34:31 PM7/29/14
to mod-pagesp...@googlegroups.com
It seems that if I do:

SOLUTION4 (execution order matters):
#mod_pagespeed/src# grep -m 1 --exclude-dir=.svn -r "fstack-protector-all" .
#mod_pagespeed/src# grep -m 1 --exclude-dir=.svn -r "fstack-protector" .
find . -type f -name "*.mk"  -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
find . -type f -name "*.mk"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
find . -type f -name "common.gypi"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
find . -type f -name "BUILD.gn"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;

I no longer have to remove gflags and google-sparsehash from compilation. So I started again with the compilation process and now I am back to the problem:

ERROR8:
  CXX(target) out/Release/obj.target/pagespeed_base_core/pagespeed/kernel/base/debug.o

Adrian Petre

unread,
Jul 29, 2014, 2:01:18 PM7/29/14
to mod-pagesp...@googlegroups.com
If you didn't do these do it now:

TO DO BEFORE "make AR.host ...":
Modify mod_pagespeed/src/Makefile:
sed -i s/"--ignore-environment"/""/ ~/compile//mod_pagespeed/src/Makefile
sed -i s/"-I\/usr"/"-I\/ffp\/include -I\/usr"/ ~/compile//mod_pagespeed/src/Makefile
ATTENTION, Makefile is regenerating so you have to do this again when regenerated.

SOLUTION4 ( = SOLUTION8, execution order matters):
#mod_pagespeed/src# grep -m 1 --exclude-dir=.svn -r "fstack-protector-all" .
#mod_pagespeed/src# grep -m 1 --exclude-dir=.svn -r "fstack-protector" .
find . -type f -name "*.mk"  -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
find . -type f -name "*.mk"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
find . -type f -name "common.gypi"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
find . -type f -name "BUILD.gn"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;

SOLUTION7 ( similar to SOLUTION6):
find . -type f -name "*.mk"  -exec sed -i s/"INCS_Release := "/"INCS_Release := -I\/ffp\/include "/ {} \;

Adrian Petre

unread,
Jul 29, 2014, 5:57:57 PM7/29/14
to mod-pagesp...@googlegroups.com
ERROR10:
CXX(target) out/Release/obj.target/pagespeed_base_core/pagespeed/kernel/base/debug.o
pagespeed/kernel/base/debug.cc: In function 'GoogleString net_instaweb::StackTraceString()':
pagespeed/kernel/base/debug.cc:28:9: error: 'class base::debug::StackTrace' has no member named 'OutputToStream'
make: *** [out/Release/obj.target/pagespeed_base_core/pagespeed/kernel/base/debug.o] Error 1
SOLUTION10:
Modify mod_pagespeed/src/third_party/chromium/src/base/debug/stack_trace.h and stack_trace.cc:
//#if !defined(__UCLIBC__) -> commented (only this line NOT the if body)

Adrian Petre

unread,
Jul 29, 2014, 6:03:42 PM7/29/14
to mod-pagesp...@googlegroups.com
ERROR11:
In file included from ./pagespeed/kernel/base/dense_hash_map.h:21:0,
from ./pagespeed/kernel/base/symbol_table.h:31,
from pagespeed/kernel/base/symbol_table.cc:20:
third_party/google-sparsehash/src/google/dense_hash_map:100:44: fatal error: google/sparsehash/sparseconfig.h: No such file or directory
compilation terminated.
make: *** [out/Release/obj.target/pagespeed_base_core/pagespeed/kernel/base/symbol_table.o] Error 1
SOLUTION11:
cp -v ~/compile/mod_pagespeed/src/third_party/google-sparsehash/gen/arch/linux/ia32/include/google/sparsehash/sparseconfig.h ~/compile/mod_pagespeed/src/third_party/google-sparsehash/src/google/sparsehash

Adrian Petre

unread,
Jul 30, 2014, 2:28:55 AM7/30/14
to mod-pagesp...@googlegroups.com
ERROR14:
 LINK(target) out/Release/instaweb_data2c
/ffp/bin/ld: this linker was not configured to use sysroots
collect2: ld returned 1 exit status
make: *** [out/Release/instaweb_data2c] Error 1

Adrian Petre

unread,
Jul 31, 2014, 4:16:57 PM7/31/14
to mod-pagesp...@googlegroups.com
SOLUTION6 (it's better and correct this way):
sed -i s/"gen\/arch\/linux\/arm\/include"/"gen\/arch\/linux\/ia32\/include"/ ./src/third_party/gflags/gflags.target.mk


I no longer modify *.mk this way:
INCS_Release := \
...
-Ithird_party/gflags/src \
-I/ffp/include -> line previously added

Adrian Petre

unread,
Jul 31, 2014, 4:29:04 PM7/31/14
to mod-pagesp...@googlegroups.com
Anyway I removed any "--sysroot=" declaration from any *.mk and I started all over again.

Adrian Petre

unread,
Jul 31, 2014, 5:14:55 PM7/31/14
to mod-pagesp...@googlegroups.com
ERROR11:
In file included from ./pagespeed/kernel/base/dense_hash_map.h:21:0,
from ./pagespeed/kernel/base/symbol_table.h:31,
from pagespeed/kernel/base/symbol_table.cc:20:
third_party/google-sparsehash/src/google/dense_hash_map:100:44: fatal error: google/sparsehash/sparseconfig.h: No such file or directory
compilation terminated.
make: *** [out/Release/obj.target/pagespeed_base_core/pagespeed/kernel/base/symbol_table.o] Error 1
SOLUTION11 (better):
sed -i s/"google-sparsehash\/gen\/arch\/linux\/arm\/include"/"google-sparsehash\/gen\/arch\/linux\/ia32\/include"/ ~/compile/mod_pagespeed/src/pagespeed/pagespeed_base_core.target.mk

Adrian Petre

unread,
Jul 31, 2014, 5:59:24 PM7/31/14
to mod-pagesp...@googlegroups.com
I'm back here:

ERROR15:
 CC(target) out/Release/obj.target/icuuc/third_party/icu/source/common/putil.o
third_party/icu/source/common/putil.c: In function 'uprv_timezone_46':
third_party/icu/source/common/putil.c:622:12: error: '__timezone' undeclared (first use in this function)
third_party/icu/source/common/putil.c:622:12: note: each undeclared identifier is reported only once for each function it appears in
make: *** [out/Release/obj.target/icuuc/third_party/icu/source/common/putil.o] Error 1


And I find:

root@nsa310:~/compile/mod_pagespeed# grep --exclude-dir=.svn -r "__timezone" ~/compile/mod_pagespeed
/ffp/home/root/compile/mod_pagespeed/src/nohup.out:third_party/icu/source/common/putil.c:622:12: error: '__timezone' undeclared (first use in this function)
/ffp/home/root/compile/mod_pagespeed/src/third_party/apr/src/include/arch/netware/apr_arch_internal_time.h:#define TZONE           (*___timezone())
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure.in:  AC_CACHE_CHECK(for __timezone,ac_cv_var___timezone,
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure.in:  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[__timezone = 1;]])],[ac_cv_var___timezone=yes],[ac_cv_var___timezone=no])])
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure.in:  if test $ac_cv_var___timezone = yes; then
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure.in:    U_TIMEZONE=__timezone
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure.in:    AC_CACHE_CHECK(for _timezone,ac_cv_var__timezone,
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure.in:    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[_timezone = 1;]])],[ac_cv_var__timezone=yes],[ac_cv_var__timezone=no])])
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure.in:    if test $ac_cv_var__timezone = yes; then
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __timezone" >&5
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:$as_echo_n "checking for __timezone... " >&6; }
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:if test "${ac_cv_var___timezone+set}" = set; then :
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:__timezone = 1;
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:  ac_cv_var___timezone=yes
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:  ac_cv_var___timezone=no
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var___timezone" >&5
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:$as_echo "$ac_cv_var___timezone" >&6; }
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:  if test $ac_cv_var___timezone = yes; then
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:    U_TIMEZONE=__timezone
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:if test "${ac_cv_var__timezone+set}" = set; then :
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:  ac_cv_var__timezone=yes
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:  ac_cv_var__timezone=no
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var__timezone" >&5
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:$as_echo "$ac_cv_var__timezone" >&6; }
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/source/configure:    if test $ac_cv_var__timezone = yes; then
/ffp/home/root/compile/mod_pagespeed/src/third_party/icu/genfiles/arch/linux/common/include/unicode/platform.h:#define U_TIMEZONE      __timezone
grep: /ffp/home/root/compile/mod_pagespeed/src/third_party/chromium/src/build/android/arm-linux-androideabi-gold/ld: No such file or directory
grep: /ffp/home/root/compile/mod_pagespeed/src/third_party/chromium/src/build/android/arm-linux-androideabi-gold/arm-linux-androideabi-ld: No such file or directory
grep: /ffp/home/root/compile/mod_pagespeed/src/build/android/arm-linux-androideabi-gold/ld: No such file or directory
grep: /ffp/home/root/compile/mod_pagespeed/src/build/android/arm-linux-androideabi-gold/arm-linux-androideabi-ld: No such file or directory


I suspect it's something about the "detection"/declaration/generation-of-sources for __timezone in file mod_pagespeed/src/third_party/icu/source/configure. Anyway I can't figure out how to correct the bad "detection"/declaration/generation-of-sources.

Adrian Petre

unread,
Aug 2, 2014, 1:20:02 PM8/2/14
to mod-pagesp...@googlegroups.com
ERROR15:
 CC(target) out/Release/obj.target/icuuc/third_party/icu/source/common/putil.o
third_party/icu/source/common/putil.c: In function 'uprv_timezone_46':
third_party/icu/source/common/putil.c:622:12: error: '__timezone' undeclared (first use in this function)
third_party/icu/source/common/putil.c:622:12: note: each undeclared identifier is reported only once for each function it appears in
make: *** [out/Release/obj.target/icuuc/third_party/icu/source/common/putil.o] Error 1
SOLUTION15:
sed -i s/"define U_TIMEZONE\s\+__timezone"/"define U_TIMEZONE timezone"/ ~/compile/mod_pagespeed/src/third_party/icu/genfiles/arch/linux/common/include/unicode/platform.h

Adrian Petre

unread,
Aug 2, 2014, 1:37:48 PM8/2/14
to mod-pagesp...@googlegroups.com
ERROR16:
 CXX(target) out/Release/obj.target/util/pagespeed/kernel/util/statistics_logger.o
In file included from ./pagespeed/kernel/base/sparse_hash_map.h:21:0,
from ./pagespeed/kernel/html/html_keywords.h:29,
from pagespeed/kernel/util/statistics_logger.cc:38:
third_party/google-sparsehash/src/google/sparse_hash_map:88:44: fatal error: google/sparsehash/sparseconfig.h: No such file or directory
compilation terminated.
SOLUTION16:
sed -i s/"google-sparsehash\/gen\/arch\/linux\/arm\/include"/"google-sparsehash\/gen\/arch\/linux\/ia32\/include"/ ~/compile/mod_pagespeed/src/pagespeed/util.target.mk

Adrian Petre

unread,
Aug 8, 2014, 3:47:36 AM8/8/14
to mod-pagesp...@googlegroups.com
I gathered in a script almost all modification you have to do before make AND after any gclient sync:
#!/ffp/bin/bash

find ./src -type f -name "*.mk" -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
#find ./src -type f -name "*.gyp" -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
#find ./src -type f -name "*.gypi" -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.py" -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.gn" -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.mk" -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
#find ./src -type f -name "*.gyp" -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
#find ./src -type f -name "*.gypi" -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.py" -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.gn" -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;

sed -i s/"gen\/arch\/linux\/arm\/include"/"gen\/arch\/linux\/ia32\/include"/ ~/compile/mod_pagespeed/src/third_party/gflags/gflags.target.mk
sed -i s/"google-sparsehash\/gen\/arch\/linux\/arm\/include"/"google-sparsehash\/gen\/arch\/linux\/ia32\/include"/ ~/compile/mod_pagespeed/src/pagespeed/pagespeed_base_core.target.mk
find . -type f -name "*.mk" -exec sed -i s/"--sysroot=\/usr\/local\/zy-pkgs\/ffproot\/ffp\/home\/root\/compile\/mod_pagespeed\/src\/arm-sysroot"/""/ {} \;


sed -i s/"google-sparsehash\/gen\/arch\/linux\/arm\/include"/"google-sparsehash\/gen\/arch\/linux\/ia32\/include"/ ~/compile/mod_pagespeed/src/pagespeed/util.target.mk

sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ src/net/instaweb/instaweb_data2c.target.mk
#find . -type f -name "*.sh" -exec sed -i s/"#!\/bin\/sh"/"#!\/ffp\/bin\/bash"/ {} \;


I also found a new solution10 (is the last one):

SOLUTION10:
// trace.OutputToStream(&ostream); -> commented in pagespeed/kernel/base/debug.cc


Now I get this:
AR(target) out/Release/obj.target/third_party/zlib/libzlib.a
CXX(target) out/Release/obj.target/instaweb_data2c/net/instaweb/js/data_to_c.o
LINK(target) out/Release/instaweb_data2c
LINK(target) out/Release/instaweb_data2c: Finished
RULE _usr_local_zy_pkgs_ffproot_ffp_home_root_compile_mod_pagespeed_src_net_instaweb_instaweb_gyp_instaweb_add_instrumentation_data2c_target_data2c_0 out/Release/obj/gen/data2c_out/instaweb/net/instaweb/rewriter/add_instrumentation_dbg_out.cc
Illegal instruction (core dumped)
make: *** [out/Release/obj/gen/data2c_out/instaweb/net/instaweb/rewriter/add_instrumentation_dbg_out.cc] Error 132


How do I solve this ?

Adrian Petre

unread,
Aug 11, 2014, 4:04:28 PM8/11/14
to mod-pagesp...@googlegroups.com
I found the solution:

find . -type f -name "*.mk" -exec sed -i s/"march=armv7-a"/"march=armv5te"/ {} \;
find . -type f -name "*.mk" -exec sed -i s/"DUSE_X11=1"/"DUSE_X11=0"/ {} \;
sed -i s/"mtune=arm946e-s"/"mtune=native"/ ~/compile/mod_pagespeed/src/third_party/zlib/nintendods/Makefile

Anyway, before make you'll need to run this in order to solve some of the problem encountered:

#!/ffp/bin/bash

find ./src -type f -name "*.mk"  -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
#find ./src -type f -name "*.gyp"  -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
#find ./src -type f -name "*.gypi"  -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.py"  -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.gn"  -exec sed -i s/"fstack-protector-all"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.mk"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
#find ./src -type f -name "*.gyp"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
#find ./src -type f -name "*.gypi"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.py"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;
find ./src -type f -name "*.gn"  -exec sed -i s/"fstack-protector"/"fno-stack-protector"/ {} \;

sed -i s/"gen\/arch\/linux\/arm\/include"/"gen\/arch\/linux\/ia32\/include"/ ~/compile/mod_pagespeed/src/third_party/gflags/gflags.target.mk
sed -i s/"google-sparsehash\/gen\/arch\/linux\/arm\/include"/"google-sparsehash\/gen\/arch\/linux\/ia32\/include"/ ~/compile/mod_pagespeed/src/pagespeed/pagespeed_base_core.target.mk
find . -type f -name "*.mk" -exec sed -i s/"--sysroot=\/usr\/local\/zy-pkgs\/ffproot\/ffp\/home\/root\/compile\/mod_pagespeed\/src\/arm-sysroot"/""/ {} \;
sed -i s/"google-sparsehash\/gen\/arch\/linux\/arm\/include"/"google-sparsehash\/gen\/arch\/linux\/ia32\/include"/ ~/compile/mod_pagespeed/src/pagespeed/util.target.mk
sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ src/net/instaweb/instaweb_data2c.target.mk
#find . -type f -name "*.sh" -exec sed -i s/"#!\/bin\/sh"/"#!\/ffp\/bin\/bash"/ {} \;

sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ ~/compile/mod_pagespeed/src/net/instaweb/pagespeed_automatic_test.target.mk
sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ ~/compile/mod_pagespeed/src/pagespeed/pagespeed_html.target.mk
sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ ~/compile/mod_pagespeed/src/net/instaweb/instaweb_rewriter_html_gperf.target.mk
sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ ~/compile/mod_pagespeed/src/net/instaweb/instaweb_rewriter_base.target.mk
sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ ~/compile/mod_pagespeed/src/net/instaweb/instaweb_rewriter_css.target.mk
sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ ~/compile/mod_pagespeed/src/net/instaweb/instaweb_rewriter_image.target.mk
sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ ~/compile/mod_pagespeed/src/net/instaweb/instaweb_rewriter_javascript.target.mk
sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ ~/compile/mod_pagespeed/src/net/instaweb/instaweb_rewriter.target.mk
sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ ~/compile/mod_pagespeed/src/net/instaweb/instaweb_automatic.target.mk

find . -type f -name "*.mk" -exec sed -i s/"gen\/arch\/linux\/arm"/"gen\/arch\/linux\/ia32"/ {} \;

find . -type f -name "*.mk" -exec sed -i s/"march=armv7-a"/"march=armv5te"/ {} \;
find . -type f -name "*.mk" -exec sed -i s/"DUSE_X11=1"/"DUSE_X11=0"/ {} \;
sed -i s/"mtune=arm946e-s"/"mtune=native"/ ~/compile/mod_pagespeed/src/third_party/zlib/nintendods/Makefile




Adrian Petre

unread,
Aug 11, 2014, 8:04:42 PM8/11/14
to mod-pagesp...@googlegroups.com
The command below gives the error which I have no idea (for the moment) what it means:

out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/split_html_filter_test.o: In function `net_instaweb::(anonymous namespace)::SplitHtmlFilterTest_SplitHtmlWithDriverHavingCriticalLineInfo_Test::TestBody()':
split_html_filter_test.cc:(.text._ZN12net_instaweb12_GLOBAL__N_166SplitHtmlFilterTest_SplitHtmlWithDriverHavingCriticalLineInfo_Test8TestBodyEv+0x364): relocation truncated to fit: R_ARM_THM_CALL against symbol `operator delete(void*)@@GLIBCXX_3.4' defined in .plt section in /usr/local/zy-pkgs/ffproot/ffp/bin/../lib/gcc/arm-ffp-linux-uclibcgnueabi/4.6.2/../../../crt1.o
collect2: ld returned 1 exit status
make: *** [out/Release/pagespeed_automatic_test] Error 1

[code]flock out/Release/linker.lock g++ -Wl,-z,now -Wl,-z,relro -Wl,--fatal-warnings -pthread -Wl,-z,noexecstack -fPIC -Wl,-O1 -Wl,--as-needed -Wl,--gc-sections  -o out/Release/pagespeed_automatic_test -Wl,--start-group out/Release/obj.target/pagespeed_automatic_test/net/instaweb/automatic/cache_html_flow_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/automatic/flush_early_flow_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/automatic/html_detector_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/automatic/proxy_fetch_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/automatic/proxy_interface_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/automatic/proxy_interface_test_base.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/async_fetch_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/cache_url_async_fetcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/fetcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/headers_cookie_util_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/http_cache_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/http_dump_url_async_writer_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/http_dump_url_fetcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/http_response_parser_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/http_value_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/inflating_fetch_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/log_record_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/log_record_test_helper.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/mock_url_fetcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/rate_controlling_url_async_fetcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/reflecting_test_fetcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/request_context_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/simulated_delay_fetcher.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/simulated_delay_fetcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/sync_fetcher_adapter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/ua_sensitive_test_fetcher.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/ua_sensitive_test_fetcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/url_async_fetcher_stats_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/wait_url_async_fetcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/http/write_through_http_cache_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/add_instrumentation_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/association_transformer_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/base_tag_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/beacon_critical_images_finder_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/beacon_critical_line_info_finder_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/blink_util_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/cache_extender_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/cache_html_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/cacheable_resource_base_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/collect_flush_early_content_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/common_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/compute_visible_text_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_css_beacon_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_css_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_css_finder_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_finder_support_util_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_images_beacon_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_images_finder_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_images_finder_test_base.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_line_info_finder_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_selector_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/critical_selector_finder_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_combine_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_embedded_config_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_flatten_imports_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_hierarchy_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_image_rewriter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_inline_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_inline_import_to_link_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_move_to_head_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_outline_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_rewrite_test_base.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_summarizer_base_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_tag_scanner_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_url_encoder_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/css_util_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/debug_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/decode_rewritten_urls_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/dedup_inlined_images_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/defer_iframe_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/delay_images_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/deterministic_js_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/device_properties_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/distributed_rewrite_context_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/dom_stats_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/domain_lawyer_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/domain_rewrite_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/downstream_cache_purger_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/downstream_caching_directives_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/experiment_matcher_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/experiment_util_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/file_load_policy_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/fix_reflow_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/flush_early_content_writer_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/flush_html_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/google_analytics_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/google_font_css_inline_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/google_font_service_input_resource_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/handle_noscript_redirect_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/image_combine_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/image_endian_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/image_oom_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/image_rewrite_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/image_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/image_test_base.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/image_url_encoder_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/in_place_rewrite_context_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/insert_dns_prefetch_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/insert_ga_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/javascript_code_block_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/javascript_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/js_combine_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/js_defer_disabled_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/js_disable_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/js_inline_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/js_outline_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/lazyload_images_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/local_storage_cache_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/meta_tag_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/mock_critical_css_finder.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/mock_critical_images_finder.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/mock_resource_callback.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/pedantic_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/property_cache_util_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/redirect_on_size_limit_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/request_properties_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/resource_combiner_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/resource_fetch_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/resource_namer_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/resource_slot_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/resource_tag_scanner_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/resource_update_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/rewrite_context_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/rewrite_context_test_base.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/rewrite_driver_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/rewrite_options_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/rewrite_query_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/rewrite_single_resource_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/rewrite_test_base.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/rewriter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/rewritten_content_scanning_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/scan_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/script_tag_scanner_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/server_context_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/shared_cache_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/split_html_beacon_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/split_html_config_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/split_html_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/split_html_helper_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/static_asserts_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/static_asset_manager_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/strip_non_cacheable_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/strip_scripts_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/support_noscript_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/suppress_prehead_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/two_level_cache_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/url_input_resource_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/url_left_trim_filter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/url_namer_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/url_partnership_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/webp_optimizer_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/spriter/image_spriter_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/spriter/libpng_image_library_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/system/apr_mem_cache_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/util/cache_property_store_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/util/fallback_property_page_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/util/property_cache_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/util/property_store_test.o out/Release/obj.target/pagespeed_automatic_test/net/instaweb/util/two_level_property_store_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/annotated_message_handler_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/arena_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/base64_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/callback_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/charset_util_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/chunking_writer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/circular_buffer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/countdown_timer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/escaping_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/fast_wildcard_group_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/function_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/hasher_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/hostname_util_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/inline_slist_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/md5_hasher_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/mem_debug.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/mem_file_system_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/message_handler_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/mock_message_handler_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/mock_timer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/null_statistics_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/pool_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/ref_counted_ptr_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/shared_string_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/source_map_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/split_statistics_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/split_writer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/stdio_file_system_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/string_multi_map_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/string_util_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/symbol_table_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/time_util_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/vector_deque_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/waveform_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/wildcard_group.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/wildcard_group_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/base/wildcard_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/async_cache_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/cache_batcher_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/cache_stats_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/compressed_cache_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/delay_cache_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/fallback_cache_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/file_cache_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/key_value_codec_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/lru_cache_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/mock_time_cache_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/purge_context_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/purge_set_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/threadsafe_cache_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/cache/write_through_cache_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/html/canonical_attributes_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/html/collapse_whitespace_filter_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/html/doctype_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/html/elide_attributes_filter_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/html/html_attribute_quote_removal_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/html/html_keywords_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/html/html_name_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/html/html_parse_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/html/remove_comments_filter_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/bot_checker_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/caching_headers_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/content_type_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/data_url_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/google_url_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/query_params_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/request_headers_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/response_headers_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/semantic_type_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/user_agent_matcher_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/user_agent_matcher_test_base.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/http/user_agent_normalizer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/gif_reader_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/image_converter_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/image_analysis_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/image_resizer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/image_util_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/jpeg_optimizer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/jpeg_reader_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/jpeg_utils_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/pixel_format_optimizer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/png_optimizer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/scanline_status_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/image/webp_optimizer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/js/js_minify_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/js/js_tokenizer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/sharedmem/inprocess_shared_mem_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/mock_scheduler_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/pthread_condvar_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/pthread_thread_system_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/queued_alarm_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/queued_worker_pool_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/queued_worker_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/scheduler_based_abstract_lock_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/scheduler_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/scheduler_thread_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/slow_worker_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/thread/thread_synchronizer_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/categorized_refcount_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/copy_on_write_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/file_system_lock_manager_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/gzip_inflater_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/hashed_nonce_generator_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/input_file_nonce_generator_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/nonce_generator_test_base.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/re2_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/simple_stats_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/statistics_logger_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/statistics_work_bound_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/url_escaper_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/url_multipart_encoder_test.o out/Release/obj.target/pagespeed_automatic_test/pagespeed/kernel/util/url_to_filename_encoder_test.o out/Release/obj.target/net/instaweb/libtest_util.a out/Release/obj.target/net/instaweb/libinstaweb_automatic.a out/Release/obj.target/net/instaweb/libinstaweb_javascript.a out/Release/obj.target/net/instaweb/libinstaweb_spriter_test.a out/Release/obj.target/net/instaweb/libinstaweb_system.a out/Release/obj.target/pagespeed/libpagespeed_base_core.a out/Release/obj.target/pagespeed/libpagespeed_cache.a out/Release/obj.target/pagespeed/libpagespeed_http.a out/Release/obj.target/pagespeed/libpagespeed_image_test_util.a out/Release/obj.target/pagespeed/libpthread_system.a out/Release/obj.target/testing/libgmock.a out/Release/obj.target/testing/libgtest_main.a out/Release/obj.target/third_party/apr/libapr.a out/Release/obj.target/third_party/aprutil/libaprutil.a out/Release/obj.target/third_party/css_parser/libcss_parser.a out/Release/obj.target/third_party/libpng/libpng.a out/Release/obj.target/third_party/re2/libre2.a out/Release/obj.target/net/instaweb/libtest_infrastructure.a out/Release/obj.target/net/instaweb/libinstaweb_rewriter.a out/Release/obj.target/net/instaweb/libinstaweb_add_instrumentation_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_add_instrumentation_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_cache_html_info_pb.a out/Release/obj.target/pagespeed/libpagespeed_http_pb.a out/Release/obj.target/pagespeed/libproto_util.a out/Release/obj.target/third_party/protobuf/libprotobuf_full_do_not_use.a out/Release/obj.target/net/instaweb/libinstaweb_client_domain_rewriter_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_client_domain_rewriter_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_console_css_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_console_js_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_console_js_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_rewriter_html.a out/Release/obj.target/net/instaweb/libinstaweb_htmlparse_core.a out/Release/obj.target/pagespeed/libpagespeed_html.a out/Release/obj.target/base/libbase.a out/Release/obj.target/base/libbase_static.a out/Release/obj.target/third_party/modp_b64/libmodp_b64.a out/Release/obj.target/third_party/chromium/src/base/third_party/dynamic_annotations/libdynamic_annotations.a out/Release/obj.target/pagespeed/libpagespeed_html_gperf.a out/Release/obj.target/pagespeed/libpagespeed_http_core.a out/Release/obj.target/url/liburl_lib.a out/Release/obj.target/third_party/icu/libicuuc.a out/Release/obj.target/third_party/icu/libicudata.a out/Release/obj.target/net/instaweb/libinstaweb_critical_css_beacon_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_critical_css_beacon_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_critical_css_loader_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_critical_css_loader_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_critical_css_pb.a out/Release/obj.target/net/instaweb/libinstaweb_critical_images_beacon_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_critical_images_beacon_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_critical_images_pb.a out/Release/obj.target/net/instaweb/libinstaweb_critical_keys_pb.a out/Release/obj.target/net/instaweb/libinstaweb_critical_line_info_pb.a out/Release/obj.target/net/instaweb/libinstaweb_dedup_inlined_images_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_dedup_inlined_images_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_defer_iframe_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_defer_iframe_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_delay_images_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_delay_images_inline_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_delay_images_inline_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_delay_images_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_deterministic_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_deterministic_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_extended_instrumentation_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_extended_instrumentation_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_flush_early_pb.a out/Release/obj.target/net/instaweb/libinstaweb_ghost_click_buster_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_js_defer_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_js_defer_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_lazyload_images_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_lazyload_images_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_local_storage_cache_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_local_storage_cache_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_panel_loader_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_rewriter_base.a out/Release/obj.target/net/instaweb/libinstaweb_util.a out/Release/obj.target/net/instaweb/libinstaweb_logging_pb.a out/Release/obj.target/net/instaweb/libinstaweb_image_types_pb.a out/Release/obj.target/net/instaweb/libinstaweb_util_enums_pb.a out/Release/obj.target/net/instaweb/libinstaweb_propcache_pb.a out/Release/obj.target/third_party/base64/libbase64.a out/Release/obj.target/pagespeed/libpagespeed_base.a out/Release/obj.target/third_party/jsoncpp/libjsoncpp.a out/Release/obj.target/third_party/rdestl/librdestl.a out/Release/obj.target/pagespeed/libpagespeed_http_gperf.a out/Release/obj.target/pagespeed/libutil.a out/Release/obj.target/pagespeed/libpagespeed_thread.a out/Release/obj.target/third_party/zlib/libzlib.a out/Release/obj.target/pagespeed/libpagespeed_sharedmem.a out/Release/obj.target/pagespeed/libpagespeed_sharedmem_pb.a out/Release/obj.target/net/instaweb/libinstaweb_rendered_image_pb.a out/Release/obj.target/net/instaweb/libinstaweb_rewriter_html_gperf.a out/Release/obj.target/net/instaweb/libinstaweb_rewriter_pb.a out/Release/obj.target/net/instaweb/libinstaweb_spriter_pb.a out/Release/obj.target/net/instaweb/libinstaweb_rewriter_css.a out/Release/obj.target/net/instaweb/libinstaweb_spriter.a out/Release/obj.target/third_party/gflags/libgflags.a out/Release/obj.target/third_party/css_parser/libutf.a out/Release/obj.target/net/instaweb/libinstaweb_rewriter_image.a out/Release/obj.target/pagespeed/libpagespeed_image_processing.a out/Release/obj.target/third_party/giflib/libdgiflib.a out/Release/obj.target/third_party/giflib/libgiflib_core.a out/Release/obj.target/third_party/libjpeg_turbo/libjpeg.a out/Release/obj.target/third_party/libjpeg_turbo/src/libjpeg_turbo.a out/Release/obj.target/third_party/libwebp/libwebp_enc.a out/Release/obj.target/third_party/libwebp/libwebp_dec.a out/Release/obj.target/third_party/libwebp/libwebp_dsp.a out/Release/obj.target/third_party/libwebp/libwebp_dsp_neon.a out/Release/obj.target/third_party/libwebp/libwebp_utils.a out/Release/obj.target/third_party/optipng/libopngreduc.a out/Release/obj.target/net/instaweb/libinstaweb_rewriter_javascript.a out/Release/obj.target/pagespeed/libjsminify.a out/Release/obj.target/pagespeed/libjs_tokenizer.a out/Release/obj.target/pagespeed/libpagespeed_javascript_gperf.a out/Release/obj.target/net/instaweb/libinstaweb_split_html_beacon_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_split_html_beacon_opt_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_http_test.a out/Release/obj.target/net/instaweb/libprocess_context.a out/Release/obj.target/pagespeed/libpagespeed_base_test_infrastructure.a out/Release/obj.target/testing/libgtest.a out/Release/obj.target/pagespeed/libkernel_test_util.a out/Release/obj.target/net/instaweb/libinstaweb_console.a out/Release/obj.target/net/instaweb/libinstaweb_console_css_old_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_console_js_old_data2c.a out/Release/obj.target/net/instaweb/libinstaweb_console_body_data2c.a out/Release/obj.target/third_party/domain_registry_provider/src/domain_registry/libinit_registry_tables_lib.a out/Release/obj.target/third_party/domain_registry_provider/src/domain_registry/libdomain_registry_lib.a out/Release/obj.target/third_party/domain_registry_provider/src/domain_registry/libassert_lib.a -Wl,--end-group -lrt -ldl[/code]

Adrian Petre

unread,
Aug 13, 2014, 7:46:16 PM8/13/14
to mod-pagesp...@googlegroups.com
Does anyone know how to disable the building of test for mod_pagespeed ?

On Saturday, July 26, 2014 11:36:33 PM UTC+3, Adrian Petre wrote:
Hi, I have a Zyxel NSA310 with:
Linux nsa310 2.6.31.8 #2 Fri Aug 2 11:21:44 CST 2013 armv5tel GNU/Linux
Python 2.7.5
gcc (GCC) 4.6.2

I solved some problems in order to build mod_pagespeed. One of them forced me to modify the files:
mod_pagespeed/DESP and mod_pagespeed/src/DESP (see https://src.chromium.org/viewvc/chrome?revision=262841&view=revision):
  "chromium_revision_num": "262841", -> change from 256281 to 262841

Now when executing:
make AR.host=`pwd`/build/wrappers/ar.sh AR.target=`pwd`/build/wrappers/ar.sh BUILDTYPE=Release
I get:
root@nsa310:~/compile/mod_pagespeed/src# make AR.host=`pwd`/build/wrappers/ar.sh AR.target=`pwd`/build/wrappers/ar.sh BUILDTYPE=Release
  ACTION Extracting last change to /usr/local/zy-pkgs/ffproot/ffp/home/root/compile/mod_pagespeed/src/out/Release/obj/gen/build/LASTCHANGE out/Release/obj/gen/build/LASTCHANGE.always
  ACTION Generating version header file: "/usr/local/zy-pkgs/ffproot/ffp/home/root/compile/mod_pagespeed/src/out/Release/obj/gen/net/instaweb/public/version.h" out/Release/obj/gen/net/instaweb/public/version.h
  RULE pagespeed_kernel_gyp_pagespeed_http_gperf_target_gperf_0 out/Release/obj/gen/gperf_out/instaweb/kernel/http/bot_checker.gp.cc
  CXX(target) out/Release/obj.target/pagespeed_http_gperf/gen/gperf_out/instaweb/kernel/http/bot_checker.gp.o
In file included from ./pagespeed/kernel/http/bot_checker.h:22:0,
                 from ../pagespeed/kernel/http/bot_checker.gperf:5:
./pagespeed/kernel/base/string_util.h: In function 'bool net_instaweb::OnlyWhitespace(const GoogleString&)':
./pagespeed/kernel/base/string_util.h:205:41: error: 'ContainsOnlyWhitespaceASCII' was not declared in this scope
make: *** [out/Release/obj.target/pagespeed_http_gperf/gen/gperf_out/instaweb/kernel/http/bot_checker.gp.o] Error 1

I notice that the file .../mod_pagespeed/src/pagespeed/kernel/base/string_util.cc indeed does not contains this string:
ContainsOnlyWhitespaceASCII 

What should I do ?

Adrian Petre

unread,
Aug 14, 2014, 5:03:53 PM8/14/14
to mod-pagesp...@googlegroups.com
ERROR21:
out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/split_html_filter_test.o: In function `net_instaweb::(anonymous namespace)::SplitHtmlFilterTest_SplitHtmlWithDriverHavingCriticalLineInfo_Test::TestBody()':
split_html_filter_test.cc:(.text._ZN12net_instaweb12_GLOBAL__N_166SplitHtmlFilterTest_SplitHtmlWithDriverHavingCriticalLineInfo_Test8TestBodyEv+0x364): relocation truncated to fit: R_ARM_THM_CALL against symbol `operator delete(void*)@@GLIBCXX_3.4' defined in .plt section in /usr/local/zy-pkgs/ffproot/ffp/bin/../lib/gcc/arm-ffp-linux-uclibcgnueabi/4.6.2/../../../crt1.o
collect2: ld returned 1 exit status
make: *** [out/Release/pagespeed_automatic_test] Error 1
SOLUTION21:
Modify ~/compile/mod_pagespeed/src/build/All.target.mk:
$(obj).target/build/All.stamp: $(obj).target/build/mod_pagespeed.stamp $(obj).target/build/test.stamp $(obj).target/build/js_minify.stamp FORCE_DO_CMD
Modify ~/compile/mod_pagespeed/src/Makefile:
comment any ifeq using *pagespeed_automatic*.mk

This avoids some tests. After this run the non-avoided tests:
./out/Release/mod_pagespeed_test

I receive:
[----------] Global test environment tear-down
[==========] 89 tests from 10 test cases ran. (113167 ms total)
[  PASSED  ] 87 tests.
[  FAILED  ] 2 tests, listed below:
[  FAILED  ] AprFileSystemTest.TestRecursivelyMakeDir_NoPermission
[  FAILED  ] SerfUrlAsyncFetcherTest.TestHttpsSucceedsForGoogleCom

Quite good considering the mess.

You can't run ./out/Release/pagespeed_automatic_test because of the avoided tests.

Adrian Petre

unread,
Aug 14, 2014, 6:27:45 PM8/14/14
to mod-pagesp...@googlegroups.com
You'll have ./out/Release/libmod_pagespeed.so created. Then you have to install mod_pagespeed to your system. 

For my specific appliance I do:

Run in ~/compile/mod_pagespeed/src/install:
find ~/compile/mod_pagespeed/src/install -type f -name "*.sh" -exec sed -i s/"\/usr\/local\/bin"/"\/ffp\/bin"/ {} \;
find ~/compile/mod_pagespeed/src/install -type f -name "*.sh" -exec sed -r -i s#\"/var/#\"/ffp/var/# {} \;
Modify /ffp/opt/apache-2.2.9/conf/httpd.conf for User and Group to be like in /etc/service_config/httpd.conf.
Run in ~/compile/mod_pagespeed/src/install:
chmod +x ./install_apxs.sh
NO_SUDO=1 APXS_BIN=/ffp/opt/apache-2.2.9/bin/apxs ./install_apxs.sh


root@nsa310:~/compile/mod_pagespeed/src/install# NO_SUDO=1 APXS_BIN=/ffp/opt/apache-2.2.9/bin/apxs ./install_apxs.sh
Using /ffp/opt/apache-2.2.9/bin/apxs to determine installation location.

Use of assignment to $[ is deprecated at /ffp/opt/apache-2.2.9/bin/apxs line 86.
Use of assignment to $[ is deprecated at /ffp/opt/apache-2.2.9/bin/apxs line 86.
Use of assignment to $[ is deprecated at /ffp/opt/apache-2.2.9/bin/apxs line 86.
Use of assignment to $[ is deprecated at /ffp/opt/apache-2.2.9/bin/apxs line 86.
Use of assignment to $[ is deprecated at /ffp/opt/apache-2.2.9/bin/apxs line 86.
mod_pagespeed needs to cache optimized resources on the file system.
The default location for this cache is '/ffp/var/cache/mod_pagespeed'.
Would you like to specify a different location? (y/N) n
Preparing to install to the following locations:
/ffp/opt/apache-2.2.9/modules/mod_pagespeed.so (root:root)
/ffp/opt/apache-2.2.9/modules/mod_pagespeed_ap24.so (root:root)
/ffp/bin/pagespeed_js_minify (root:root)
/ffp/opt/apache-2.2.9/conf/pagespeed.conf (root:root)
/ffp/opt/apache-2.2.9/conf/pagespeed_libraries.conf (root:root)
/ffp/var/cache/mod_pagespeed (nobody:nobody)

Continue? (y/N) y
Adding a load line for mod_pagespeed to /ffp/opt/apache-2.2.9/conf/httpd.conf.
Adding a load line for pagespeed_libraries to /ffp/opt/apache-2.2.9/conf/httpd.conf.

Installation succeeded.
Restart apache to enable mod_pagespeed.

Adrian Petre

unread,
Aug 14, 2014, 7:28:04 PM8/14/14
to mod-pagesp...@googlegroups.com
I take a test with http://www.webpagetest.org/compare and I'm very happy to report that the mod_pagespeed is working fine with zyxel nsa310 firmware-apache.

Adrian Petre

unread,
Oct 15, 2014, 5:05:45 AM10/15/14
to mod-pagesp...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages