acachy edited a comment on issue #2069: URL: https://github.com/apache/incubator-pagespeed-mod/issues/2069#issuecomment-962558016
> @acachy how did you manage to build? > > I get a lot of errors like this: pagespeed/kernel/base/string_util.cc: In function 'GoogleString net_instaweb::internal::StrCatNineOrMore(const StringPiece*, ...)': pagespeed/kernel/base/string_util.cc:110:3: error: 'va_start' was not declared in this scope @eilandert, looks like you've already moved far enough in #2084 My previous attempts were forgotten because of fail at the end... So I tried again on latest commit and here is a part of my deploy script for Debian, if you wanna try to repeate. Sorry for a lot of trash ways inside 1. Prepare dir with sources ``` echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" >> /etc/apt/sources.list wget --no-check-certificate -qO - https://bazel.build/bazel-release.pub.gpg | apt-key add - 2>&1 apt-get install -y bazel-4.1.0 apt-get install -y ninja-build mkdir -p /usr/share/man/man1 apt-get install -y openjdk-11-jre-headless mkdir /ngx cd /ngx wget https://github.com/nginx/nginx/archive/release-1.19.10.tar.gz tar xzf *gz rm *gz git clone https://github.com/apache/incubator-pagespeed-ngx.git cd incubator-pagespeed-ngx git reset --hard 9e70f6d git config --global url.https://github.com/apache/.insteadOf git://git.apache.org/ git submodule update --init --recursive --jobs=16 --force cd .. git clone --recursive https://github.com/apache/incubator-pagespeed-mod.git cd incubator-pagespeed-mod git reset --hard 6199d78 ``` 2. Bazel-build with few hacks ``` sed -i '1s/^/#include <cstdarg>\n/' pagespeed/kernel/base/string_util.cc bazel build -c fastbuild //pagespeed/kernel/... //pagespeed/automatic/... //pagespeed/system/... //pagespeed/controller/... //pagespeed/opt/... //base/... //net/instaweb/... //third_party/... mod_pagespeed sed -i -r 's/sys_siglist\[signum\]/strsignal(signum)/g' ./bazel-bin/../../../../../external/apr/threadproc/unix/signals.c bazel build -c fastbuild //pagespeed/kernel/... //pagespeed/automatic/... //pagespeed/system/... //pagespeed/controller/... //pagespeed/opt/... //base/... //net/instaweb/... //third_party/... mod_pagespeed ``` 3. Update pagespeed/automatic/bazel_merge.sh - Skip Envoy - Change final destination path for lib ``` #!/bin/bash ADIR=$(bazel info bazel-bin) ALIST=$(find $ADIR | grep \\.a$ | grep -v main | grep -v copy | grep -v envoy | xargs echo) for item in ${ALIST[*]} do echo $item done find $ADIR | grep \\.a$ | grep -v main | grep -v copy set -e echo "merging libs" ./merge_libraries.sh ~/pagespeed_automatic.a.dirty $ALIST > merge.log echo "renaming symbols" # XXX(oschaaf): objcopy 2.31 doesn't like clang-7's output unless we pass in -fno-addrsig # https://github.com/travitch/whole-program-llvm/issues/75 # not passing this in will make the scripts that rename symbols fail ./rename_c_symbols.sh ~/pagespeed_automatic.a.dirty ~/pagespeed_automatic.a > symbol-rename.log rm ~/pagespeed_automatic.a.dirty cp ~/pagespeed_automatic.a ./../../bazel-out/k8-fastbuild/bin/pagespeed/automatic/ mv ~/pagespeed_automatic.a ./ echo "done" ``` 4. Create pagespeed_automatic.a ``` cd pagespeed/automatic bash bazel_merge.sh ``` 5. Try to build nginx ``` cd /ngx/nginx-release-1.19.10 MOD_PAGESPEED_DIR="/ngx/incubator-pagespeed-mod" ./auto/configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_secure_link_module --with-http_sub_module --w ith-mail=dynamic --with-mail_ssl_module --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_perl_module=dynamic --add-module=/ngx/incubator-pagespeed-ngx ``` 6. There are include-errors that can be seen in details at the end of ./objs/autoconf.err I fix it step-by-step by searching paths with missing files and adding extra include-dirs to /ngx/incubator-pagespeed-ngx/config After few steps I have include rule like this: ``` pagespeed_include="\ $mod_pagespeed_dir \ $mod_pagespeed_dir/third_party/chromium/src \ $mod_pagespeed_dir/third_party/google-sparsehash/src/src \ $mod_pagespeed_dir/third_party/google-sparsehash/gen/arch/$os_name/$arch_name/include \ $mod_pagespeed_dir/third_party/grpc/src/include \ $mod_pagespeed_dir/third_party/protobuf/src/src \ $mod_pagespeed_dir/third_party/re2/src \ $mod_pagespeed_dir/out/$buildtype/obj/gen \ $mod_pagespeed_dir/out/$buildtype/obj/gen/protoc_out/instaweb \ $mod_pagespeed_dir/third_party/apr/src/include \ $mod_pagespeed_dir/third_party/aprutil/src/include \ $mod_pagespeed_dir/third_party/apr/gen/arch/$os_name/$arch_name/include \ $mod_pagespeed_dir/third_party/aprutil/gen/arch/$os_name/$arch_name/include \ $mod_pagespeed_dir/bazel-out/../../../external/com_google_absl \ $mod_pagespeed_dir/bazel-out/k8-fastbuild/bin/external/com_github_gflags_gflags/_virtual_includes/gflags \ $mod_pagespeed_dir/bazel-out/k8-fastbuild/bin/external/glog/_virtual_includes/default_glog_headers \ $mod_pagespeed_dir/bazel-out/k8-fastbuild/bin/external/google_sparsehash/_virtual_includes/google_sparsehash \ $mod_pagespeed_dir/url" ``` And my last error on attempt to use auto/configure: ``` ... /usr/bin/ld: doctype.cc:(.text+0x430): undefined reference to `google::LogMessageFatal::~LogMessageFatal()' collect2: error: ld returned 1 exit status ``` Probably we should use other include-paths (for most files there are different copies in different dirs) or better ways to fix include-errors I have no significant knowledge here, just tried to fix everything that I've seen -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@pagespeed.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org