apache / incubator-pagespeed-mod

Apache module for rewriting web pages to reduce latency and bandwidth.
http://modpagespeed.com
Apache License 2.0
696 stars 158 forks source link

FreeBSD support: gclient sync fails on "gyp: Undefined variable yasm_path in ....libjpeg.gyp" #1007

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Trying to follow the instructions here: 
https://github.com/pagespeed/ngx_pagespeed/wiki/Building-PSOL-From-Source

________ running 'svn update /usr/home/user/mod_pagespeed/src/tools/gyp 
--revision 1860 --force --accept theirs-conflict --ignore-externals' in 
'/usr/home/user/mod_pagespeed'
Updating 'src/tools/gyp':
At revision 1860.
Syncing projects: 100% (43/43), done.

________ running '/usr/local/bin/python src/tools/clang/scripts/update.py 
--mac-only' in '/usr/home/user/mod_pagespeed'

________ running '/usr/local/bin/python src/build/gyp_chromium 
-Dchromium_revision=256281' in '/usr/home/user/mod_pagespeed'
Updating projects from gyp files...
gyp: Undefined variable yasm_path in 
/usr/home/user/mod_pagespeed/src/third_party/libjpeg_turbo/src/libjpeg.gyp
Error: Command /usr/local/bin/python src/build/gyp_chromium 
-Dchromium_revision=256281 returned non-zero exit status 1 in 
/usr/home/user/mod_pagespeed

I'm guessing the code doesn't consider FreeBSD when choosing how to 
install/build/use yasm

Original issue reported on code.google.com by miguelmc...@gmail.com on 23 Oct 2014 at 12:12

GoogleCodeExporter commented 9 years ago

--- src/third_party/libjpeg_turbo/src/libjpeg.gyp.orig  2014-10-23 
01:21:43.575211138 +0100
+++ src/third_party/libjpeg_turbo/src/libjpeg.gyp       2014-10-23 
01:19:06.858223239 +0100
@@ -241,5 +241,5 @@
           },
         }],
-        [ 'OS=="linux" or (OS=="android" and target_arch!="arm")', {
+        [ 'OS=="linux" or (OS=="android" and target_arch!="arm") or 
OS=="freebsd"', {
           'conditions': [
             [ 'use_system_yasm==0', {

As I thought... that did It and glient finished fine! not sure if its the best 
place to do it but it does seem so!

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 12:23

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
gmake AR.host="$PWD/build/wrappers/ar.sh" \                                     
           AR.target="$PWD/build/wrappers/ar.sh" \                              
                 BUILDTYPE=Release \                                            
                       mod_pagespeed_test pagespeed_automatic_test 

complains about libstdc but I'm not sure how to get around tha :|

out/Release/obj/gen/protoc_out/instaweb/net/instaweb/rewriter/image_types.pb.h
/usr/local/lib/compat/libstdc++.so.6: version GLIBCXX_3.4.11 required by 
/usr/home/miguelc/mod_pagespeed/src/out/Release/protoc not found
gmake: *** 
[out/Release/obj/gen/protoc_out/instaweb/net/instaweb/rewriter/image_types.pb.h]
 Error 1

"/usr/local/lib/compat/libstdc++.so.6" doesn't exist in FreeBSD10 but it can be 
installed by compat9x, and it is installed 

 ls /usr/local/lib/compat/libstdc++.so.6 
/usr/local/lib/compat/libstdc++.so.6

But this still shows the error |:

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 1:58

GoogleCodeExporter commented 9 years ago
Update: remove compat9x seems to workarround this but:

  LINK(host) out/Release/protoc
  RULE _usr_home_miguelc_mod_pagespeed_src_net_instaweb_instaweb_gyp_instaweb_image_types_pb_target_genproto_0 out/Release/obj/gen/protoc_out/instaweb/net/instaweb/rewriter/image_types.pb.h
  CXX(target) out/Release/obj.target/instaweb_image_types_pb/gen/protoc_out/instaweb/net/instaweb/rewriter/image_types.pb.o
error: unknown warning option '-Wno-unused-local-typedefs'
      [-Werror,-Wunknown-warning-option]
gmake: *** 
[out/Release/obj.target/instaweb_image_types_pb/gen/protoc_out/instaweb/net/inst
aweb/rewriter/image_types.pb.o] Error 1

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 2:06

GoogleCodeExporter commented 9 years ago
For that one you probably want something similar to this:
https://code.google.com/p/modpagespeed/source/browse/trunk/src/build/common.gypi
#83

What compiler is this, anyway?

Original comment by morlov...@google.com on 23 Oct 2014 at 2:01

GoogleCodeExporter commented 9 years ago
You mean what compiler I'm using? 

g++ 

(More info: ) g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc48/gcc/x86_64-portbld-freebsd10.1/4.8.
3/lto-wrapper
Target: x86_64-portbld-freebsd10.1
Configured with: ./../gcc-4.8.3/configure --disable-bootstrap --disable-nls 
--enable-gnu-indirect-function --libdir=/usr/local/lib/gcc48 
--libexecdir=/usr/local/libexec/gcc48 --program-suffix=48 
--with-as=/usr/local/bin/as --with-gmp=/usr/local 
--with-gxx-include-dir=/usr/local/lib/gcc48/include/c++/ 
--with-ld=/usr/local/bin/ld --with-pkgversion='FreeBSD Ports Collection' 
--with-system-zlib --with-ecj-jar=/usr/local/share/java/ecj-4.5.jar 
--enable-languages=c,c++,objc,fortran,java --prefix=/usr/local 
--mandir=/usr/local/man --infodir=/usr/local/info/gcc48 
--build=x86_64-portbld-freebsd10.1
Thread model: posix
gcc version 4.8.3 (FreeBSD Ports Collection) 

I'm also using "gamke" instead of freebsd's make which wouldn't work of course!

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 2:32

GoogleCodeExporter commented 9 years ago
Huh, that's supposed to be supported by that. Could you try running
make V=1? That will print command lines --- maybe clang is getting
used or something?

Original comment by morlov...@google.com on 23 Oct 2014 at 2:46

GoogleCodeExporter commented 9 years ago
Do you mean gmake? I'm posting both anyway

make V=1
make: "/usr/home/miguelc/mod_pagespeed/src/Makefile" line 17: Need an operator
make: "/usr/home/miguelc/mod_pagespeed/src/Makefile" line 19: Need an operator
make: "/usr/home/miguelc/mod_pagespeed/src/Makefile" line 21: Need an operator
make: "/usr/home/miguelc/mod_pagespeed/src/Makefile" line 111: Need an operator
make: "/usr/home/miguelc/mod_pagespeed/src/Makefile" line 113: Need an operator
make: "/usr/home/miguelc/mod_pagespeed/src/Makefile" line 115: Need an operator
make: "/usr/home/miguelc/mod_pagespeed/src/Makefile" line 124: Need an operator
make: "/usr/home/miguelc/mod_pagespeed/src/Makefile" line 125: Need an operator
make: "/usr/home/miguelc/mod_pagespeed/src/Makefile" line 216: Need an operator
.......

 gmake V=1                                                                                                                            
  LD_LIBRARY_PATH=/usr/home/miguelc/mod_pagespeed/src/out/Debug/lib.host:/usr/home/miguelc/mod_pagespeed/src/out/Debug/lib.target:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd base; mkdir -p ../third_party/chromium/src/base; bash -c "sed 's/\"xgetbv\"/\".byte 0x0f, 0x01, 0xd0\"/' ../third_party/chromium/src/base/cpu.cc > ../third_party/chromium/src/base/cpu_patched.cc"
  touch out/Debug/obj.target/base/cpu_patched.stamp
  c++ '-DCHROMIUM_REVISION=256281' '-DV8_DEPRECATION_WARNINGS' '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' '-D_FILE_OFFSET_BITS=64' '-DCHROMIUM_BUILD' '-DUSE_CAIRO=1' '-DUSE_GLIB=1' '-DUSE_DEFAULT_RENDER_THEME=1' '-DUSE_LIBJPEG_TURBO=1' '-DUSE_NSS=1' '-DUSE_X11=1' '-DGTK_DISABLE_SINGLE_INCLUDES=1' '-DUSE_XI2_MT=2' '-DENABLE_REMOTING=1' '-DENABLE_WEBRTC=1' '-DENABLE_CONFIGURATION_POLICY' '-DENABLE_INPUT_SPEECH' '-DENABLE_NOTIFICATIONS' '-DENABLE_NEW_GAMEPAD_API=1' '-DENABLE_EGLIMAGE=1' '-DENABLE_TASK_MANAGER=1' '-DENABLE_EXTENSIONS=1' '-DENABLE_PLUGIN_INSTALLATION=1' '-DENABLE_PLUGINS=1' '-DENABLE_SESSION_SERVICE=1' '-DENABLE_THEMES=1' '-DENABLE_BACKGROUND=1' '-DENABLE_AUTOMATION=1' '-DENABLE_GOOGLE_NOW=1' '-DCLD_VERSION=2' '-DENABLE_FULL_PRINTING=1' '-DENABLE_PRINTING=1' '-DENABLE_SPELLCHECK=1' '-DENABLE_CAPTIVE_PORTAL_DETECTION=1' '-DENABLE_MANAGED_USERS=1' '-D__STDC_CONSTANT_MACROS' '-D__STDC_FORMAT_MACROS' '-DDYNAMIC_ANNOTATIONS_ENABLED=1' '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' '-D_DEBUG' -Ithird_party/chromium/src -I.  -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-exceptions -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -O0 -g -funwind-tables -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare -MMD -MF out/Debug/.deps/out/Debug/obj.target/base/third_party/chromium/src/base/base64.o.d.raw  -c -o out/Debug/obj.target/base/third_party/chromium/src/base/base64.o third_party/chromium/src/base/base64.cc
error: unknown warning option '-Wno-unused-local-typedefs' 
[-Werror,-Wunknown-warning-option]
gmake: *** [out/Debug/obj.target/base/third_party/chromium/src/base/base64.o] 
Error 1

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 2:49

GoogleCodeExporter commented 9 years ago
Right, of course, gmake, sorry. Is "c++" also gcc? If not the quickest option 
may be to set CXX to g++. (The proper fix is of course to fix the flags logic 
to use proper flags for clang, but that's likely to be irritatingly fiddly).

Original comment by morlov...@google.com on 23 Oct 2014 at 2:56

GoogleCodeExporter commented 9 years ago
Ah nope c++ is clang now :P

Cleaning and going with:

gmake AR.host="$PWD/build/wrappers/ar.sh" \
        AR.target="$PWD/build/wrappers/ar.sh" \
        BUILDTYPE=Release \
        CXX.target=g++ \
        mod_pagespeed_test pagespeed_automatic_test 

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 3:12

GoogleCodeExporter commented 9 years ago
Well I got past it for sure, but libstdc is going to be another issue:

  CXX(host) out/Release/obj.host/protoc/third_party/protobuf/src/google/protobuf/compiler/java/java_primitive_field.o
  CXX(host) out/Release/obj.host/protoc/third_party/protobuf/src/google/protobuf/compiler/java/java_service.o
  CXX(host) out/Release/obj.host/protoc/third_party/protobuf/src/google/protobuf/compiler/java/java_string_field.o
  CXX(host) out/Release/obj.host/protoc/third_party/protobuf/src/google/protobuf/compiler/python/python_generator.o
  CXX(host) out/Release/obj.host/protoc/third_party/protobuf/src/google/protobuf/compiler/main.o
  LINK(host) out/Release/protoc
  RULE _usr_home_miguelc_mod_pagespeed_src_net_instaweb_instaweb_gyp_instaweb_image_types_pb_target_genproto_0 out/Release/obj/gen/protoc_out/instaweb/net/instaweb/rewriter/image_types.pb.h
/usr/local/lib/compat/libstdc++.so.6: version GLIBCXX_3.4.11 required by 
/usr/home/miguelc/mod_pagespeed/src/out/Release/protoc not found
gmake: *** 
[out/Release/obj/gen/protoc_out/instaweb/net/instaweb/rewriter/image_types.pb.h]
 Error 1

I have compat9x installed so /usr/local/lib/compat/libstdc++.so.6 is probably 
outdated...

Yeah:
strings /usr/local/lib/compat/libstdc++.so.6 |grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_FORCE_NEW

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 3:16

GoogleCodeExporter commented 9 years ago
(I have compat9x installed so /usr/local/lib/compat/libstdc++.so.6 is probably 
outdated...)

I should add that FreeBSD10 doesn't have libstdc++

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 3:17

GoogleCodeExporter commented 9 years ago
Hum I see in the code there's a workaround for solaris... wonder how complex 
would be to apply it to freebsd!

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 3:24

GoogleCodeExporter commented 9 years ago
To workaround it I deleted compat9x, and this way it seems to use its own 
libstdc!

New issue though:

  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/http/wget_url_fetcher.o
  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/http/write_through_http_cache.o
  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/util/abstract_property_store_get_callback.o
  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/util/cache_property_store.o
  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/util/fallback_property_page.o
  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/util/mock_property_page.o
  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/util/property_cache.o
  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/util/property_store.o
  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/util/two_level_property_store.o
  AR(target) out/Release/obj.target/net/instaweb/libinstaweb_util.a
  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
 #include "config.h"
                    ^
compilation terminated.

config.h is indeed missing

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 3:55

GoogleCodeExporter commented 9 years ago
Yeah, libstdc++ should come with g++ (I don't think libc++ is usable with g++, 
but I may be wrong). As for config.h thing, you probably need to copy/symlink
third_party/gflags/gen/arch/linux over to third_party/gflags/gen/arch/freebsd 
or some such --- one of the -I arguments to g++ should say exactly what.

Original comment by morlov...@google.com on 23 Oct 2014 at 4:25

GoogleCodeExporter commented 9 years ago
libc++ is usable with clang but I'm not sure about g++ either...

the symlinks works indeed, thanks for pointing that out!

New issue :P
$ gmake V=1 AR.host="$PWD/build/wrappers/ar.sh" \                               
     AR.target="$PWD/build/wrappers/ar.sh" \                                    
   BUILDTYPE=Release \                                                          
 CXX.target=g++ \                                                              
mod_pagespeed_test pagespeed_automatic_test
  g++ '-DCHROMIUM_REVISION=256281' '-DV8_DEPRECATION_WARNINGS' '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' '-D_FILE_OFFSET_BITS=64' '-DCHROMIUM_BUILD' '-DUSE_CAIRO=1' '-DUSE_GLIB=1' '-DUSE_DEFAULT_RENDER_THEME=1' '-DUSE_LIBJPEG_TURBO=1' '-DUSE_NSS=1' '-DUSE_X11=1' '-DGTK_DISABLE_SINGLE_INCLUDES=1' '-DUSE_XI2_MT=2' '-DENABLE_REMOTING=1' '-DENABLE_WEBRTC=1' '-DENABLE_CONFIGURATION_POLICY' '-DENABLE_INPUT_SPEECH' '-DENABLE_NOTIFICATIONS' '-DENABLE_NEW_GAMEPAD_API=1' '-DENABLE_EGLIMAGE=1' '-DENABLE_TASK_MANAGER=1' '-DENABLE_EXTENSIONS=1' '-DENABLE_PLUGIN_INSTALLATION=1' '-DENABLE_PLUGINS=1' '-DENABLE_SESSION_SERVICE=1' '-DENABLE_THEMES=1' '-DENABLE_BACKGROUND=1' '-DENABLE_AUTOMATION=1' '-DENABLE_GOOGLE_NOW=1' '-DCLD_VERSION=2' '-DENABLE_FULL_PRINTING=1' '-DENABLE_PRINTING=1' '-DENABLE_SPELLCHECK=1' '-DENABLE_CAPTIVE_PORTAL_DETECTION=1' '-DENABLE_MANAGED_USERS=1' '-D__STDC_CONSTANT_MACROS' '-D__STDC_FORMAT_MACROS' '-DNDEBUG' '-DNVALGRIND' '-DDYNAMIC_ANNOTATIONS_ENABLED=0' '-D_FORTIFY_SOURCE=2' -Ithird_party/chromium/src -I.  -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-exceptions -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare -MMD -MF out/Release/.deps/out/Release/obj.target/base/third_party/chromium/src/base/threading/platform_thread_linux.o.d.raw  -c -o out/Release/obj.target/base/third_party/chromium/src/base/threading/platform_thread_linux.o third_party/chromium/src/base/threading/platform_thread_linux.cc
third_party/chromium/src/base/threading/platform_thread_linux.cc:19:23: fatal 
error: sys/prctl.h: No such file or directory
 #include <sys/prctl.h>
                       ^
compilation terminated.
gmake: *** 
[out/Release/obj.target/base/third_party/chromium/src/base/threading/platform_th
read_linux.o] Error 

This one I really have no clue... does it make sense to build 
"platform_thread_linux.o" on freebsd?

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 6:36

GoogleCodeExporter commented 9 years ago
https://code.google.com/p/v8/issues/detail?id=2010

This offers some interesting info... however it seems to be patched and indeed 

"  if sys.platform.startswith('freebsd'):
    return 'freebsd'" is present in the local "tools/gyp/pylib/gyp/common.py" version

I'm guessing here... but maybe its related to 
"third_party/gflags/gen/arch/linux" I should copy instead of symlink and 
probably some defines need to be changed!
Sorry if this makes no sense :P

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 7:03

GoogleCodeExporter commented 9 years ago
Hum...

http://modpagespeed.googlecode.com/svn/branches/latest-beta/src/base/base.gypi

This seems to include platform_thread_linux ... even in freebsd if I'm correct?

Also:
third_party/chromium/src/base/threading/platform_thread_freebsd.cc exists... so 
it should use that in freebsd... 

The problem is I'm not sure how to patch this... I'm not familiar with gypi... 
all I can tell is that is similar to JSON but just y reading some files I see 
some stuff JSON doens't support at all :P

I'll see If I can get something working... but would really appreciate if 
someone more experienced could patch it (assuming this is the root of the issue 
ofc)

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 7:38

GoogleCodeExporter commented 9 years ago
The easiest thing is to just change that line that mentions 
platform_thread_linux to mention the BSD one. That's not the sort of change 
Chromium people would accept as a patch, but if you're patching for one 
platform, that probably doesn't matter.

And yeah, IIRC "_linux" files are also used on FreeBSD, which is often what you 
want, except when they're actually linux-specific and not just generic POSIX 
stuff.

Original comment by morlov...@google.com on 23 Oct 2014 at 7:55

GoogleCodeExporter commented 9 years ago
Yeah I just changed the linux line to freebsd as a crappy "patch" for now....

third_party/google-sparsehash/src/google/dense_hash_map:100:44: fatal error: 
google/sparsehash/sparseconfig.h: No such file or directory

is the next one... third_party/google-sparsehash/gen/arch is missing freebsd 
too :)

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 8:02

GoogleCodeExporter commented 9 years ago
pagespeed/kernel/base/symbol_table.cc:47:32:   required from 
'net_instaweb::SymbolTable<CharTransform>::SymbolTable() [with CharTransform = 
net_instaweb::CaseFold]'
pagespeed/kernel/base/symbol_table.cc:120:16:   required from here
third_party/google-sparsehash/src/google/sparsehash/hashtable-common.h:158:50: 
error: exception handling disabled, use -fexceptions to enable
         throw std::length_error("resize overflow");  // protect against overflow
                                                  ^
gmake: *** 
[out/Release/obj.target/pagespeed_base_core/pagespeed/kernel/base/symbol_table.o
] Error 1

Possible patch
--- home/miguelc/mod_pagespeed/src/build/common.gypi.orig    2014-10-23 
21:26:06.004607474 +0100
+++ /home/miguelc/mod_pagespeed/src/build/common.gypi   2014-10-23 
21:25:17.497610901 +0100
@@ -45,7 +45,7 @@

     'conditions': [
       # TODO(morlovich): AIX, Solaris, FreeBSD10?
-      ['OS == "linux"', {
+      ['OS == "linux" or OS == "freebsd"', {
         'support_posix_shared_mem': 1
       }],
       ['use_system_libs==1', {
@@ -71,7 +71,7 @@
       ['support_posix_shared_mem == 1', {
         'defines': [ 'PAGESPEED_SUPPORT_POSIX_SHARED_MEM', ],
       }],
-      ['OS == "linux"', {
+      ['OS == "linux" or OS == "freebsd"', {
         # Disable -Werror when not using the version of gcc that development
         # is generally done with, to avoid breaking things for users with
         # something older or newer (which produces different warnings).

I say possible because some parts here might not apply to both freebsd and 
linux, so far its building and not complaining, the cflags part is surely 
needed.... not sure about:
"['use_system_libs==1'" for example.

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 8:36

GoogleCodeExporter commented 9 years ago
Almost had it :|

  g++ '-DCHROMIUM_REVISION=256281' '-DV8_DEPRECATION_WARNINGS' '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' '-D_FILE_OFFSET_BITS=64' '-DPAGESPEED_SUPPORT_POSIX_SHARED_MEM' '-DGTEST_HAS_RTTI=1' '-DCHROMIUM_BUILD' '-DUSE_CAIRO=1' '-DUSE_GLIB=1' '-DUSE_DEFAULT_RENDER_THEME=1' '-DUSE_LIBJPEG_TURBO=1' '-DUSE_NSS=1' '-DUSE_X11=1' '-DGTK_DISABLE_SINGLE_INCLUDES=1' '-DUSE_XI2_MT=2' '-DENABLE_REMOTING=1' '-DENABLE_WEBRTC=1' '-DENABLE_CONFIGURATION_POLICY' '-DENABLE_INPUT_SPEECH' '-DENABLE_NOTIFICATIONS' '-DENABLE_NEW_GAMEPAD_API=1' '-DENABLE_EGLIMAGE=1' '-DENABLE_TASK_MANAGER=1' '-DENABLE_EXTENSIONS=1' '-DENABLE_PLUGIN_INSTALLATION=1' '-DENABLE_PLUGINS=1' '-DENABLE_SESSION_SERVICE=1' '-DENABLE_THEMES=1' '-DENABLE_BACKGROUND=1' '-DENABLE_AUTOMATION=1' '-DENABLE_GOOGLE_NOW=1' '-DCLD_VERSION=2' '-DENABLE_FULL_PRINTING=1' '-DENABLE_PRINTING=1' '-DENABLE_SPELLCHECK=1' '-DENABLE_CAPTIVE_PORTAL_DETECTION=1' '-DENABLE_MANAGED_USERS=1' '-DURL_IMPLEMENTATION' '-DU_USING_ICU_NAMESPACE=0' '-DU_STATIC_IMPLEMENTATION' '-D__STDC_CONSTANT_MACROS' '-D__STDC_FORMAT_MACROS' '-DNDEBUG' '-DNVALGRIND' '-DDYNAMIC_ANNOTATIONS_ENABLED=0' '-D_FORTIFY_SOURCE=2' -Ithird_party/chromium/src -I. -Ithird_party/icu/source/common -Ithird_party/icu/genfiles/arch/freebsd/common/include  -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-exceptions -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -fexceptions -fasynchronous-unwind-tables -Wno-unused-but-set-variable -Wno-unused-but-set-variable -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables -fno-threadsafe-statics -fvisibility-inlines-hidden -frtti -MMD -MF out/Release/.deps/out/Release/obj.target/url_lib/third_party/chromium/src/url/url_canon_icu.o.d.raw  -c -o out/Release/obj.target/url_lib/third_party/chromium/src/url/url_canon_icu.o third_party/chromium/src/url/url_canon_icu.cc
In file included from third_party/icu/source/common/unicode/unistr.h:32:0,
                 from third_party/icu/source/common/unicode/strenum.h:14,
                 from third_party/icu/source/common/unicode/uenum.h:24,
                 from ./third_party/icu/source/common/unicode/ucnv.h:51,
                 from third_party/chromium/src/url/url_canon_icu.cc:12:
third_party/icu/source/common/unicode/stringpiece.h:74:31: error: 'string' does 
not name a type
   StringPiece(const U_STD_NSQ string& str)
                               ^
third_party/icu/source/common/unicode/stringpiece.h:74:39: error: ISO C++ 
forbids declaration of 'str' with no type [-fpermissive]
   StringPiece(const U_STD_NSQ string& str)
                                       ^
third_party/icu/source/common/unicode/stringpiece.h: In constructor 
'StringPiece_46::StringPiece_46(const int&)':
third_party/icu/source/common/unicode/stringpiece.h:75:16: error: request for 
member 'data' in 'str', which is of non-class type 'const int'
     : ptr_(str.data()), length_(static_cast<int32_t>(str.size())) { }
                ^
third_party/icu/source/common/unicode/stringpiece.h:75:58: error: request for 
member 'size' in 'str', which is of non-class type 'const int'
     : ptr_(str.data()), length_(static_cast<int32_t>(str.size())) { }

(Not sure if I should open a new issue about this one... might not be a freebsd 
specific issue)

Original comment by miguelmc...@gmail.com on 23 Oct 2014 at 8:51

GoogleCodeExporter commented 9 years ago
I guess somehow U_STD_NSQ isn't defined to std:: as it should be. 

Also, you probably want 'support_posix_shared_mem': 0 on FreeBSD ---- it didn't 
have a working pthread_mutexattr_setpshared last I checked, and providing it 
was a rather invasive (and ABI-incompatible) change at that point (and I can't 
find a manpage for it in 10...)

Original comment by morlov...@google.com on 23 Oct 2014 at 9:10

GoogleCodeExporter commented 9 years ago
so std::U_STD_NSQ fixes it here.... but is it the best way? I'm not much of a 
c/c++ coder, I wonder if there's a missing "using" somewhere?

I agree about the shared_mem part pthread_mutexattr_setpshared doesn't seem to 
be supported.

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 3:43

GoogleCodeExporter commented 9 years ago
I can't get a break damn :P

In file included from third_party/icu/source/common/brkeng.cpp:26:0:
third_party/icu/source/common/brkeng.cpp: In member function 'virtual const 
CompactTrieDictionary_46* 
ICULanguageBreakFactory_46::loadDictionaryFor(UScriptCode, int32_t)':
third_party/icu/source/common/ubrkimpl.h:11:41: error: expected ')' before 
'U_TREE_SEPARATOR_STRING'
 #define U_ICUDATA_BRKITR U_ICUDATA_NAME U_TREE_SEPARATOR_STRING "brkitr"
                                         ^
third_party/icu/source/common/brkeng.cpp:252:36: note: in expansion of macro 
'U_ICUDATA_BRKITR'
     UResourceBundle *b = ures_open(U_ICUDATA_BRKITR, "", &status);
                                    ^
third_party/icu/source/common/ubrkimpl.h:11:41: error: expected ')' before 
'U_TREE_SEPARATOR_STRING'
 #define U_ICUDATA_BRKITR U_ICUDATA_NAME U_TREE_SEPARATOR_STRING "brkitr"
                                         ^
third_party/icu/source/common/brkeng.cpp:272:36: note: in expansion of macro 
'U_ICUDATA_BRKITR'
     UDataMemory *file = udata_open(U_ICUDATA_BRKITR, ext, dictnbuff, &status);
                                    ^
gmake: *** 
[out/Release/obj.target/icuuc/third_party/icu/source/common/brkeng.o] Error 1

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 4:30

GoogleCodeExporter commented 9 years ago
I found the old port files (https://svn.redports.org/melvyn/www/mod_pagespeed/) 
hopefully they will help a bit.. I see some patches I needed here are in the 
port, but much is different too.

I have a doubt though.... the port uses "GYP_DEFINES+= ...."

I wsa trying to use :
gmake V=1 (.....) \                                                             

GYP_DEFINES+=use_system_libs=1\
mod_pagespeed_test pagespeed_automatic_test

(I'll probably also need to pass the LDFLAGS to include the local paths... but 
doing that is not realy setting the value to 1, am I doing it wrong? (In any 
case for now I can simply change the value in the file it self, but just wanted 
to understand why It fails - and sorry if its a noob question )

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 2:40

GoogleCodeExporter commented 9 years ago
Not sure. gyp is the tool that generates makefile, but it can also regenerate 
makefiles... Sometimes, perhaps that will cause it to re-run gyp with that flag.
I just run gyp -Duse_system_libs=1 directly.

One of advantages of doing that is that it won't try to compile ICU, and use 
whatever is installed (if it can find it), which is one way of dealing with the 
above problem.

Anyway, ICU also has a genfiles/arch/linux dir --- symlinking that as 
gen/arch/freebsd might help.

Original comment by morlov...@google.com on 24 Oct 2014 at 3:00

GoogleCodeExporter commented 9 years ago
Hum... perhaps the flag in the port does that same thing, makes sense... yes my 
idea was to use local libs... but perhpas I can just do gyp -Duse_system_icu 
etc.. 

the port also does the symlinking part it seems, it would be great if those 
patches where in upstream tough... I hope that if I do build this successfully 
at least some make it upstream (stuff link the if OS and the symlinks at least)

Thanks for the help so far btw!

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 3:07

GoogleCodeExporter commented 9 years ago
With the bundled icu and the proper link/cp of gen arch the "std::" is not 
needed anymore, in fact it would only break things, but I get

warning: unknown warning option '-Wno-unused-local-typedefs' 
[-Wunknown-warning-option]
warning: unknown warning option '-Wno-unused-but-set-variable'; did you mean 
'-Wno-unused-const-variable'? [-Wunknown-warning-option]
2 warnings generated.
  cc '-DCHROMIUM_REVISION=256281' '-DV8_DEPRECATION_WARNINGS' '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' '-DU_USING_ICU_NAMESPACE=0' '-DU_STATIC_IMPLEMENTATION' '-D_FILE_OFFSET_BITS=64' '-DGTEST_HAS_RTTI=1' '-DCHROMIUM_BUILD' '-DUSE_CAIRO=1' '-DUSE_GLIB=1' '-DUSE_DEFAULT_RENDER_THEME=1' '-DUSE_LIBJPEG_TURBO=1' '-DUSE_NSS=1' '-DUSE_X11=1' '-DGTK_DISABLE_SINGLE_INCLUDES=1' '-DUSE_XI2_MT=2' '-DENABLE_REMOTING=1' '-DENABLE_WEBRTC=1' '-DENABLE_CONFIGURATION_POLICY' '-DENABLE_INPUT_SPEECH' '-DENABLE_NOTIFICATIONS' '-DENABLE_NEW_GAMEPAD_API=1' '-DENABLE_EGLIMAGE=1' '-DENABLE_TASK_MANAGER=1' '-DENABLE_EXTENSIONS=1' '-DENABLE_PLUGIN_INSTALLATION=1' '-DENABLE_PLUGINS=1' '-DENABLE_SESSION_SERVICE=1' '-DENABLE_THEMES=1' '-DENABLE_BACKGROUND=1' '-DENABLE_AUTOMATION=1' '-DENABLE_GOOGLE_NOW=1' '-DCLD_VERSION=2' '-DENABLE_FULL_PRINTING=1' '-DENABLE_PRINTING=1' '-DENABLE_SPELLCHECK=1' '-DENABLE_CAPTIVE_PORTAL_DETECTION=1' '-DENABLE_MANAGED_USERS=1' '-DU_COMMON_IMPLEMENTATION' '-DNDEBUG' '-DNVALGRIND' '-DDYNAMIC_ANNOTATIONS_ENABLED=0' -Ithird_party/chromium/src -Ithird_party/icu/source/common -Ithird_party/icu/source/i18n -Ithird_party/icu/genfiles/arch/freebsd/common/include  -fstack-protector --param=ssp-buffer-size=4 -pthread -fno-exceptions -fno-strict-aliasing -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -fexceptions -fasynchronous-unwind-tables -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-unused-function -Wno-format -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables  -MMD -MF out/Release/.deps/out/Release/obj.target/icuuc/third_party/icu/source/common/putil.o.d.raw  -c -o out/Release/obj.target/icuuc/third_party/icu/source/common/putil.o third_party/icu/source/common/putil.c
warning: unknown warning option '-Wno-unused-local-typedefs' 
[-Wunknown-warning-option]
warning: unknown warning option '-Wno-unused-but-set-variable'; did you mean 
'-Wno-unused-const-variable'? [-Wunknown-warning-option]
third_party/icu/source/common/putil.c:622:12: error: use of undeclared 
identifier '__timezone'
    return U_TIMEZONE;
           ^
third_party/icu/genfiles/arch/freebsd/common/include/unicode/platform.h:292:25: 
note: expanded from macro 'U_TIMEZONE'
#define U_TIMEZONE      __timezone
                        ^
2 warnings and 1 error generated.
gmake: *** [out/Release/obj.target/icuuc/third_party/icu/source/common/putil.o] 
Error 1

With the local icu lib (v53.1)
I get passed that and then get an error in stack_trace_posix.cc, but tanking 
some hints from one of the patches I think this should fix it (I hope I'm doing 
it right)

--- third_party/chromium/src/base/debug/stack_trace_posix.cc.orig       
2014-10-24 16:38:56.616838344 +0100
+++ third_party/chromium/src/base/debug/stack_trace_posix.cc    2014-10-24 
16:43:48.471818532 +0100
@@ -145,7 +145,7 @@

     handler->HandleOutput("\n");
   }
-#else
+#elif defined(OS_LINUX)
   bool printed = false;

   // Below part is async-signal unsafe (uses malloc), so execute it only
@@ -472,7 +472,11 @@

   // Though the backtrace API man page does not list any possible negative
   // return values, we take no chance.
+#if defined(OS_LINUX)
   count_ = std::max(backtrace(trace_, arraysize(trace_)), 0);
+#else
+  count_ = 0;
+#endif
 }

 void StackTrace::Print() const {

Its moving on... lets see what comes up next :)

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 3:51

GoogleCodeExporter commented 9 years ago
NOTE: apr and aprutil also needed genfiles symllink ofc

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 4:12

GoogleCodeExporter commented 9 years ago
error: unknown warning option '-Wno-unused-local-typedefs' 
[-Werror,-Wunknown-warning-option]
error: unknown warning option '-Wno-unused-but-set-variable'; did you mean 
'-Wno-unused-const-variable'? [-Werror,-Wunknown-warning-option]
gmake: *** 
[out/Release/obj.target/instaweb_system/third_party/aprutil/apr_memcache2.o] 
Error 1

should this fail with gcc version 4.8.3 ? :\?

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 4:15

GoogleCodeExporter commented 9 years ago
You probably need to send CC=gcc as well.

Original comment by morlov...@google.com on 24 Oct 2014 at 4:27

GoogleCodeExporter commented 9 years ago
Ah I missed that... Its CC not g++, however setting CC to g++ breaks the build 
too

third_party/chromium/src/base/third_party/dynamic_annotations/dynamic_annotation
s.c:32:3: error: #error "This file should be built as pure C to avoid name 
mangling"
 # error "This file should be built as pure C to avoid name mangling"

And It doesn't seem that I can get around that... so probably the best is to 
fix those flags

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 4:33

GoogleCodeExporter commented 9 years ago
Set CC to gcc, not g++ (while still setting CXX to g++, of course)

Original comment by morlov...@google.com on 24 Oct 2014 at 4:59

GoogleCodeExporter commented 9 years ago
-.-' my bad there!

  gcc48 '-DCHROMIUM_REVISION=256281' '-DV8_DEPRECATION_WARNINGS' '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' '-D_FILE_OFFSET_BITS=64' '-DGTEST_HAS_RTTI=1' '-DCHROMIUM_BUILD' '-DUSE_CAIRO=1' '-DUSE_GLIB=1' '-DUSE_DEFAULT_RENDER_THEME=1' '-DUSE_LIBJPEG_TURBO=1' '-DUSE_NSS=1' '-DUSE_X11=1' '-DGTK_DISABLE_SINGLE_INCLUDES=1' '-DUSE_XI2_MT=2' '-DENABLE_REMOTING=1' '-DENABLE_WEBRTC=1' '-DENABLE_CONFIGURATION_POLICY' '-DENABLE_INPUT_SPEECH' '-DENABLE_NOTIFICATIONS' '-DENABLE_NEW_GAMEPAD_API=1' '-DENABLE_EGLIMAGE=1' '-DENABLE_TASK_MANAGER=1' '-DENABLE_EXTENSIONS=1' '-DENABLE_PLUGIN_INSTALLATION=1' '-DENABLE_PLUGINS=1' '-DENABLE_SESSION_SERVICE=1' '-DENABLE_THEMES=1' '-DENABLE_BACKGROUND=1' '-DENABLE_AUTOMATION=1' '-DENABLE_GOOGLE_NOW=1' '-DCLD_VERSION=2' '-DENABLE_FULL_PRINTING=1' '-DENABLE_PRINTING=1' '-DENABLE_SPELLCHECK=1' '-DENABLE_CAPTIVE_PORTAL_DETECTION=1' '-DENABLE_MANAGED_USERS=1' '-DNDEBUG' '-DNVALGRIND' '-DDYNAMIC_ANNOTATIONS_ENABLED=0' -Ithird_party/chromium/src -Ithird_party/apr/src/include -Ithird_party/apr/src/include/arch/unix -Ithird_party/apr/gen/arch/freebsd/x64/include  -fstack-protector --param=ssp-buffer-size=4 -pthread -fno-exceptions -fno-strict-aliasing -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -fexceptions -fasynchronous-unwind-tables -Wno-unused-but-set-variable -Wno-format -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables  -MMD -MF out/Release/.deps/out/Release/obj.target/apr/third_party/apr/src/locks/unix/global_mutex.o.d.raw  -c -o out/Release/obj.target/apr/third_party/apr/src/locks/unix/global_mutex.o third_party/apr/src/locks/unix/global_mutex.c
In file included from 
third_party/apr/src/include/arch/unix/apr_arch_global_mutex.h:25:0,
                 from third_party/apr/src/locks/unix/global_mutex.c:19:
third_party/apr/src/include/arch/unix/apr_arch_proc_mutex.h:86:7: error: 
redefinition of 'union semun'
 union semun {
       ^
Invi 
build/common.gypihird_party/apr/src/include/arch/unix/apr_arch_proc_mutex.h:45:0
,

Patch:

$ diff -u  third_party/apr/gen/arch/linux/ia32//include/apr.h 
third_party/apr/gen/arch/freebsd/ia32/include/apr.h
--- third_party/apr/gen/arch/linux/ia32//include/apr.h  2014-10-23 
17:05:14.257684682 +0100
+++ third_party/apr/gen/arch/freebsd/ia32/include/apr.h 2014-10-24 
21:11:25.420711466 +0100
@@ -222,7 +222,7 @@
 #define APR_HAVE_STRSTR         1
 #define APR_HAVE_MEMCHR         1
 #define APR_HAVE_STRUCT_RLIMIT  1
-#define APR_HAVE_UNION_SEMUN    0
+#define APR_HAVE_UNION_SEMUN    1
 #define APR_HAVE_SCTP           0
 #define APR_HAVE_IOVEC          1

$ diff -u  third_party/apr/gen/arch/linux/x64//include/apr.h 
third_party/apr/gen/arch/freebsd/x64/include/apr.h
--- third_party/apr/gen/arch/linux/x64//include/apr.h   2014-10-23 
17:05:14.248684503 +0100
+++ third_party/apr/gen/arch/freebsd/x64/include/apr.h  2014-10-24 
21:11:10.415714829 +0100
@@ -222,7 +222,7 @@
 #define APR_HAVE_STRSTR         1
 #define APR_HAVE_MEMCHR         1
 #define APR_HAVE_STRUCT_RLIMIT  1
-#define APR_HAVE_UNION_SEMUN    0
+#define APR_HAVE_UNION_SEMUN    1
 #define APR_HAVE_SCTP           0
 #define APR_HAVE_IOVEC          1

But i'm getting more issues, so I think maybe its best to 
'use_system_apache_dev' but it fails to see apr's headers....

trying...
===================================================================
--- base/base.gypi      (revision 4322)
+++ base/base.gypi      (working copy)
@@ -7,6 +7,11 @@
     'variables': {
       'base_target': 0,
       'chromium_root': '<(DEPTH)/third_party/chromium/src',
+      'system_include_path_execinfo%': '%%LOCALBASE%%/include',
+      'system_include_path_apr%': '%%LOCALBASE%%/include/apr-1',
+      'system_include_path_aprutil%': '%%LOCALBASE%%/include/apr-1',
+      'system_include_path_httpd%': '%%LOCALBASE%%/include/apache24',
+
       'conditions': [
         # The default stack_trace_posix.cc is not compatible with NaCL newlib
         # toolchain, so we provide a stubbed version when building for NaCL.
@@ -123,7 +128,7 @@
         '<(chromium_root)/base/synchronization/waitable_event_watcher_win.cc',
         '<(chromium_root)/base/synchronization/waitable_event_win.cc',
         '<(chromium_root)/base/threading/platform_thread.h',
-        '<(chromium_root)/base/threading/platform_thread_linux.cc',
+        '<(chromium_root)/base/threading/platform_thread_freebsd.cc',
         '<(chromium_root)/base/threading/platform_thread_mac.mm',
         '<(chromium_root)/base/threading/platform_thread_posix.cc',
         '<(chromium_root)/base/threading/platform_thread_win.cc',
@@ -167,6 +172,10 @@
         'include_dirs': [
           '<(chromium_root)',
           '<(DEPTH)',
+          '<(system_include_path_execinfo)',
+         '<(system_include_path_apr)',
+         '<(system_include_path_aprutil)',
+         '<(system_include_path_httpd)',

hope this does it... thankfully the paths were in the old port make file so I 
didn't have to look trough the sources!

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 8:47

GoogleCodeExporter commented 9 years ago
  g++ '-DCHROMIUM_REVISION=256281' '-DV8_DEPRECATION_WARNINGS' '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' '-D_FILE_OFFSET_BITS=64' '-DGTEST_HAS_RTTI=1' '-DCHROMIUM_BUILD' '-DUSE_CAIRO=1' '-DUSE_GLIB=1' '-DUSE_DEFAULT_RENDER_THEME=1' '-DUSE_LIBJPEG_TURBO=1' '-DUSE_NSS=1' '-DUSE_X11=1' '-DGTK_DISABLE_SINGLE_INCLUDES=1' '-DUSE_XI2_MT=2' '-DENABLE_REMOTING=1' '-DENABLE_WEBRTC=1' '-DENABLE_CONFIGURATION_POLICY' '-DENABLE_INPUT_SPEECH' '-DENABLE_NOTIFICATIONS' '-DENABLE_NEW_GAMEPAD_API=1' '-DENABLE_EGLIMAGE=1' '-DENABLE_TASK_MANAGER=1' '-DENABLE_EXTENSIONS=1' '-DENABLE_PLUGIN_INSTALLATION=1' '-DENABLE_PLUGINS=1' '-DENABLE_SESSION_SERVICE=1' '-DENABLE_THEMES=1' '-DENABLE_BACKGROUND=1' '-DENABLE_AUTOMATION=1' '-DENABLE_GOOGLE_NOW=1' '-DCLD_VERSION=2' '-DENABLE_FULL_PRINTING=1' '-DENABLE_PRINTING=1' '-DENABLE_SPELLCHECK=1' '-DENABLE_CAPTIVE_PORTAL_DETECTION=1' '-DENABLE_MANAGED_USERS=1' '-D_LARGEFILE64_SOURCE' '-DHAVE_CONFIG_H' '-DLINUX=2' '-D_REENTRANT' '-D_GNU_SOURCE' '-D__STDC_CONSTANT_MACROS' '-D__STDC_FORMAT_MACROS' '-DNDEBUG' '-DNVALGRIND' '-DDYNAMIC_ANNOTATIONS_ENABLED=0' '-D_FORTIFY_SOURCE=2' -Ithird_party/chromium/src -Iout/Release/obj/gen/protoc_out/instaweb -Ithird_party/protobuf/src -Ithird_party/google-sparsehash/gen/arch/freebsd/x64/include -Ithird_party/google-sparsehash/src -Ithird_party/re2/src -I. -I/usr/include/apr-1.0  -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-exceptions -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -fexceptions -fasynchronous-unwind-tables -Wno-unused-but-set-variable -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables -fno-threadsafe-statics -fvisibility-inlines-hidden -frtti -MMD -MF out/Release/.deps/out/Release/obj.target/instaweb_system/net/instaweb/system/apr_mem_cache.o.d.raw  -c -o out/Release/obj.target/instaweb_system/net/instaweb/system/apr_mem_cache.o net/instaweb/system/apr_mem_cache.cc
net/instaweb/system/apr_mem_cache.cc:23:34: fatal error: apr_pools.h: No such 
file or directory
 #include "apr_pools.h"  // NOLINT
                                  ^
compilation terminated.

---> "-I. -I/usr/include/apr-1.0" .... what am I missing now? :|

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 8:55

GoogleCodeExporter commented 9 years ago
And you do have a /usr/include/apr-1.0/apr_pools.h ? 

Original comment by morlov...@google.com on 24 Oct 2014 at 9:04

GoogleCodeExporter commented 9 years ago
No, its in "/usr/local/include/apr-1/"

Since I'm setting "'system_include_path_apr%': '%%LOCALBASE%%/include/apr-1',"

And LOCALBASE is "/usr/local" I was expecting a "-I/usr/local/include/apr-1/"

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 9:10

GoogleCodeExporter commented 9 years ago
Oh, I see. It's also defined in src/third_party/apr/apr.gyp, that version 
probably wins out over yours. It may be easier to just pass in 
-Dsystem_include_path_apr=/usr/local/include/apr-1 to gyp. 

Original comment by morlov...@google.com on 24 Oct 2014 at 9:14

GoogleCodeExporter commented 9 years ago
gyp is failing me but I've made a hugly "hack" by puttig the path there 
manually... but I don't follow why it would use those settings If I specificity 
use_system_apache_dev?

Sorry if it a dumb question... just trying to understand the workflow.

Original comment by miguelmc...@gmail.com on 24 Oct 2014 at 9:45

GoogleCodeExporter commented 9 years ago
got a few issues with other libs so I decide to use the system ones for this:
       'use_system_apache_dev': 1,
        'use_system_icu': 1,
        'use_system_libjpeg': 1,
        'use_system_libpng': 0,
        'use_system_opencv': 1,
        'use_system_openssl': 0,
        'use_system_zlib': 1,

I'm getting a weird issue with libsll, and before I go the system lib route, I 
would like to understand it...

out/Release/obj.target/third_party/serf/libopenssl.a(eng_all.o): In function 
`ENGINE_setup_bsd_cryptodev':
eng_all.c:(.text.ENGINE_setup_bsd_cryptodev+0x1a): undefined reference to 
`ENGINE_load_cryptodev'
collect2: error: ld returned 1 exit status

This makes no sense because ENGINE_load_cryptodev is indeed defined in 
eng_all.c before its used inside ENGINE_setup_bsd_cryptodev.... :|

Original comment by miguelmc...@gmail.com on 25 Oct 2014 at 2:53

GoogleCodeExporter commented 9 years ago

Original comment by jmara...@google.com on 25 Oct 2014 at 12:04

GoogleCodeExporter commented 9 years ago
It's not defined there, that's just an another call. Pretty damn hard to read 
with all the #ifdef's. It's defined in  eng_cryptodev.c, which isn't included 
in the giant file list in third_party/serf/openssl.gypi. Adding it there will 
probably help.

And reason not to use system OpenSSL, though?

Original comment by morlov...@google.com on 27 Oct 2014 at 2:12

GoogleCodeExporter commented 9 years ago
Nope, just wanted to understand why the error, I actually noticed later that it 
was just another call but couldn't find where it was defined, thanks for 
pointing it out!

With system libssl I get:
 gmake V=1 R.host="$PWD/build/wrappers/ar.sh" \                                                                                                                   AR.target="$PWD/build/wrappers/ar.sh" \                                                                                                                                 BUILDTYPE=Release \                                                                                                                                                     CXX.target=g++ \                                                                                                                                                        CC.target=gcc \                                                                                                                                                         mod_pagespeed_test pagespeed_automatic_test \                                                                                                                         LDFLAGS.target+=-L/usr/local/include
  cd .; ./build/gyp_chromium -fmake --ignore-environment "--toplevel-dir=/usr/home/miguelc/mod_pagespeed/src" -I/usr/home/miguelc/mod_pagespeed/src/build/common.gypi "--depth=/usr/home/miguelc/mod_pagespeed/src" "-Dchromium_revision=256281" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" "-Dgyp_output_dir=out" build/all.gyp
Updating projects from gyp files...
Package libssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `libssl.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libssl', required by 'world', not found
gyp: Call to 'pkg-config --cflags libssl' returned exit status 1.
Makefile:1293: recipe for target 'Makefile' failed
gmake: *** [Makefile] Error 1

Seems I need to install the openssl port instead of the system one.

Original comment by miguelmc...@gmail.com on 27 Oct 2014 at 2:49

GoogleCodeExporter commented 9 years ago
using the system (or ports opnessl version) the next issue I get this:

g++ '-DCHROMIUM_REVISION=256281' '-DV8_DEPRECATION_WARNINGS' 
'-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' '-D_FILE_OFFSET_BITS=64' 
'-DGTEST_HAS_RTTI=1' '-DCHROMIUM_BUILD' '-DUSE_CAIRO=1' '-DUSE_GLIB=1' 
'-DUSE_DEFAULT_RENDER_THEME=1' '-DUSE_LIBJPEG_TURBO=1' '-DUSE_NSS=1' 
'-DUSE_X11=1' '-DGTK_DISABLE_SINGLE_INCLUDES=1' '-DUSE_XI2_MT=2' 
'-DENABLE_REMOTING=1' '-DENABLE_WEBRTC=1' '-DENABLE_CONFIGURATION_POLICY' 
'-DENABLE_INPUT_SPEECH' '-DENABLE_NOTIFICATIONS' '-DENABLE_NEW_GAMEPAD_API=1' 
'-DENABLE_EGLIMAGE=1' '-DENABLE_TASK_MANAGER=1' '-DENABLE_EXTENSIONS=1' 
'-DENABLE_PLUGIN_INSTALLATION=1' '-DENABLE_PLUGINS=1' 
'-DENABLE_SESSION_SERVICE=1' '-DENABLE_THEMES=1' '-DENABLE_BACKGROUND=1' 
'-DENABLE_AUTOMATION=1' '-DENABLE_GOOGLE_NOW=1' '-DCLD_VERSION=2' 
'-DENABLE_FULL_PRINTING=1' '-DENABLE_PRINTING=1' '-DENABLE_SPELLCHECK=1' 
'-DENABLE_CAPTIVE_PORTAL_DETECTION=1' '-DENABLE_MANAGED_USERS=1' 
'-DGTEST_HAS_POSIX_RE=0' '-DUNIT_TEST' '-D_LARGEFILE64_SOURCE' 
'-DHAVE_CONFIG_H' '-DLINUX=2' '-D_REENTRANT' '-D_GNU_SOURCE' 
'-DPNG_SKIP_SETJMP_CHECK' '-DUSE_SYSTEM_ZLIB' '-DNDEBUG' '-DNVALGRIND' 
'-DDYNAMIC_ANNOTATIONS_ENABLED=0' -Ithird_party/chromium/src 
-Ithird_party/protobuf/src -Iout/Release/obj/gen/protoc_out/instaweb -I. 
-Ithird_party/css_parser/src -Ithird_party/libwebp/src 
-Ithird_party/google-sparsehash/gen/arch/freebsd/x64/include 
-Ithird_party/google-sparsehash/src -Ithird_party/re2/src 
-Itesting/gtest/include -Itesting/gmock/include -I/usr/local/include/apr-1 
-I/usr/include/apr-1.0 -Ithird_party/libpng  -fstack-protector 
--param=ssp-buffer-size=4 -pthread -fno-exceptions -fno-strict-aliasing 
-Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe 
-fPIC -Wno-unused-local-typedefs -fexceptions -fasynchronous-unwind-tables 
-Wno-unused-but-set-variable -Wno-format -O2 -fno-ident -fdata-sections 
-ffunction-sections -funwind-tables -fno-threadsafe-statics 
-fvisibility-inlines-hidden -frtti -Wno-deprecated -MMD -MF 
out/Release/.deps/out/Release/obj.target/pagespeed_automatic_test/net/instaweb/r
ewriter/url_input_resource_test.o.d.raw  -c -o 
out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/url_input_
resource_test.o net/instaweb/rewriter/url_input_resource_test.cc
net/instaweb/rewriter/url_input_resource_test.cc: In member function 'virtual 
void 
net_instaweb::UrlInputResourceTest_TestUnauthorizedDomainWrongProtocol_Test::Tes
tBody()':
net/instaweb/rewriter/url_input_resource_test.cc:167:52: error: 'ASSERT_DEATH' 
was not declared in this scope
   ASSERT_DEATH(MakeUrlInputResource(url, false), "");
                                                    ^
net/instaweb/rewriter/url_input_resource_test.cc: In member function 'virtual 
void 
net_instaweb::UrlInputResourceTest_TestUnauthorizedDomainRelativeURL_Test::TestB
ody()':
net/instaweb/rewriter/url_input_resource_test.cc:175:52: error: 'ASSERT_DEATH' 
was not declared in this scope
   ASSERT_DEATH(MakeUrlInputResource(url, false), "");
                                                    ^
net/instaweb/pagespeed_automatic_test.target.mk:594: recipe for target 
'out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/url_input
_resource_test.o' failed
gmake: *** 
[out/Release/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/url_input
_resource_test.o] Error 1

Original comment by miguelmc...@gmail.com on 28 Oct 2014 at 3:12

GoogleCodeExporter commented 9 years ago
hum... related to 
"https://code.google.com/p/modpagespeed/issues/detail?can=2&start=0&num=100&q=&c
olspec=ID%20Type%20Status%20Priority%20Milestone%20Modified%20Owner%20Summary&gr
oupby=&sort=&id=1011" right?

Original comment by miguelmc...@gmail.com on 28 Oct 2014 at 3:27

GoogleCodeExporter commented 9 years ago
wait a sec I'm using "BUILDTYPE=Release" and this are probably only declared if 
"BUILDTYPE=Debug".

Original comment by miguelmc...@gmail.com on 28 Oct 2014 at 3:48

GoogleCodeExporter commented 9 years ago
Hum.. with relasetype debug, I still got a similar issue at:

  g++ '-DCHROMIUM_REVISION=256281' '-DV8_DEPRECATION_WARNINGS' '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' '-D_FILE_OFFSET_BITS=64' '-DGTEST_HAS_RTTI=1' '-DCHROMIUM_BUILD' '-DUSE_CAIRO=1' '-DUSE_GLIB=1' '-DUSE_DEFAULT_RENDER_THEME=1' '-DUSE_LIBJPEG_TURBO=1' '-DUSE_NSS=1' '-DUSE_X11=1' '-DGTK_DISABLE_SINGLE_INCLUDES=1' '-DUSE_XI2_MT=2' '-DENABLE_REMOTING=1' '-DENABLE_WEBRTC=1' '-DENABLE_CONFIGURATION_POLICY' '-DENABLE_INPUT_SPEECH' '-DENABLE_NOTIFICATIONS' '-DENABLE_NEW_GAMEPAD_API=1' '-DENABLE_EGLIMAGE=1' '-DENABLE_TASK_MANAGER=1' '-DENABLE_EXTENSIONS=1' '-DENABLE_PLUGIN_INSTALLATION=1' '-DENABLE_PLUGINS=1' '-DENABLE_SESSION_SERVICE=1' '-DENABLE_THEMES=1' '-DENABLE_BACKGROUND=1' '-DENABLE_AUTOMATION=1' '-DENABLE_GOOGLE_NOW=1' '-DCLD_VERSION=2' '-DENABLE_FULL_PRINTING=1' '-DENABLE_PRINTING=1' '-DENABLE_SPELLCHECK=1' '-DENABLE_CAPTIVE_PORTAL_DETECTION=1' '-DENABLE_MANAGED_USERS=1' '-DGTEST_HAS_POSIX_RE=0' '-DUNIT_TEST' '-D_LARGEFILE64_SOURCE' '-DHAVE_CONFIG_H' '-DLINUX=2' '-D_REENTRANT' '-D_GNU_SOURCE' '-DPNG_SKIP_SETJMP_CHECK' '-DUSE_SYSTEM_ZLIB' '-DDYNAMIC_ANNOTATIONS_ENABLED=1' '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' '-D_DEBUG' -Ithird_party/chromium/src -Ithird_party/protobuf/src -Iout/Debug/obj/gen/protoc_out/instaweb -I. -Ithird_party/css_parser/src -Ithird_party/libwebp/src -Ithird_party/google-sparsehash/gen/arch/freebsd/x64/include -Ithird_party/google-sparsehash/src -Ithird_party/re2/src -Itesting/gtest/include -Itesting/gmock/include -I/usr/local/include/apr-1 -I/usr/include/apr-1.0 -Ithird_party/libpng  -fstack-protector --param=ssp-buffer-size=4 -pthread -fno-exceptions -fno-strict-aliasing -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -fexceptions -fasynchronous-unwind-tables -Wno-unused-but-set-variable -Wno-format -O0 -g -funwind-tables -fno-threadsafe-statics -fvisibility-inlines-hidden -frtti -Wno-deprecated -MMD -MF out/Debug/.deps/out/Debug/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/image_rewrite_filter_test.o.d.raw  -c -o out/Debug/obj.target/pagespeed_automatic_test/net/instaweb/rewriter/image_rewrite_filter_test.o net/instaweb/rewriter/image_rewrite_filter_test.cc
net/instaweb/rewriter/image_rewrite_filter_test.cc: In member function 'virtual 
void 
net_instaweb::ImageRewriteTest_ResizeEmptyImageUsingRenderedDimensions_Test::Tes
tBody()':
net/instaweb/rewriter/image_rewrite_filter_test.cc:3387:76: error: 
'EXPECT_DEATH' was not declared

Original comment by miguelmc...@gmail.com on 28 Oct 2014 at 3:57

GoogleCodeExporter commented 9 years ago
Yeah, death tests don't work on FreeBSD. You can just comment the particular 
tests out, though.

Original comment by morlov...@google.com on 28 Oct 2014 at 1:46

GoogleCodeExporter commented 9 years ago
[deleted comment]