Skip to content
This repository has been archived by the owner on Apr 21, 2023. It is now read-only.

Problem with automatic installer. #1752

Open
hunterpl opened this issue Jul 6, 2022 · 8 comments
Open

Problem with automatic installer. #1752

hunterpl opened this issue Jul 6, 2022 · 8 comments

Comments

@hunterpl
Copy link

hunterpl commented Jul 6, 2022

Hello guys,

I have a problem with installing latest version of nginx, never had that issue before, all the time shown for me same error, never had the problem.

/root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc
/root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc: In function ‘ngx_int_t net_instaweb::{anonymous}::ps_set_cache_control(ngx_http_request_t*, char*)’:
/root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc:407:36: error: request for member ‘elts’ in ‘r->ngx_http_request_s::headers_out.ngx_http_headers_out_t::cache_control’, which is of pointer type ‘ngx_table_elt_t*’ {aka ‘ngx_table_elt_s*’} (maybe you meant to use ‘->’ ?)
  407 |   if (r->headers_out.cache_control.elts == NULL) {
      |                                    ^~~~
/root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc:408:35: error: cannot convert ‘ngx_table_elt_t**’ {aka ‘ngx_table_elt_s**’} to ‘ngx_array_t*’
  408 |     ngx_int_t rc = ngx_array_init(&r->headers_out.cache_control, r->pool,
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                   |
      |                                   ngx_table_elt_t** {aka ngx_table_elt_s**}
In file included from src/core/ngx_core.h:65,
                 from src/http/ngx_http.h:13,
                 from /root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.h:33,
                 from /root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc:26:
src/core/ngx_array.h:32:29: note:   initializing argument 1 of ‘ngx_int_t ngx_array_init(ngx_array_t*, ngx_pool_t*, ngx_uint_t, size_t)’
   32 | ngx_array_init(ngx_array_t *array, ngx_pool_t *pool, ngx_uint_t n, size_t size)
      |                ~~~~~~~~~~~~~^~~~~
/root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc:415:22: error: cannot convert ‘ngx_table_elt_t**’ {aka ‘ngx_table_elt_s**’} to ‘ngx_array_t*’
  415 |       ngx_array_push(&r->headers_out.cache_control));
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      ngx_table_elt_t** {aka ngx_table_elt_s**}
In file included from src/core/ngx_core.h:65,
                 from src/http/ngx_http.h:13,
                 from /root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.h:33,
                 from /root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc:26:
src/core/ngx_array.h:27:35: note:   initializing argument 1 of ‘void* ngx_array_push(ngx_array_t*)’
   27 | void *ngx_array_push(ngx_array_t *a);
      |                      ~~~~~~~~~~~~~^
/root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc: In function ‘bool net_instaweb::{anonymous}::ps_get_cache_control(ngx_http_request_t*, GoogleString*)’:
/root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc:439:74: error: request for member ‘elts’ in ‘r->ngx_http_request_s::headers_out.ngx_http_headers_out_t::cache_control’, which is of pointer type ‘ngx_table_elt_t*’ {aka ‘ngx_table_elt_s*’} (maybe you meant to use ‘->’ ?)
  439 |   auto ccp = static_cast<ngx_table_elt_t**>(r->headers_out.cache_control.elts);
      |                                                                          ^~~~
/root/incubator-pagespeed-ngx-latest-stable/src/ngx_pagespeed.cc:444:59: error: request for member ‘nelts’ in ‘r->ngx_http_request_s::headers_out.ngx_http_headers_out_t::cache_control’, which is of pointer type ‘ngx_table_elt_t*’ {aka ‘ngx_table_elt_s*’} (maybe you meant to use ‘->’ ?)
  444 |   for (ngx_uint_t i = 0; i < r->headers_out.cache_control.nelts; i++) {
      |                                                           ^~~~~
make[1]: *** [objs/Makefile:1439: objs/addon/src/ngx_pagespeed.o] Error 1
make[1]: Leaving directory '/root/nginx-1.23.0'
make: *** [Makefile:10: build] Error 2
Error: Failure running 'make', exiting.
@Tarsenicum
Copy link

I have the same issue. ngx_pagespeed version 1.13.35.2, nginx version 1.23.0

@eilandert
Copy link

nginx 1.23.0 comes with some api changes, the git repo has been fixed but I do not think the automatic installer is fetching the git repo but a .tar.gz instead, which obviously hasn't been updated

@Tarsenicum
Copy link

@eilandert I saw your psol build for Ubuntu 22, thanks for your work!
Please, can you make a tip how to build ngx_pagespeed from git sources for nginx 1.23.0? Automatic installer from repo fails on this issue too :c

@hunterpl
Copy link
Author

hunterpl commented Jul 6, 2022

nginx 1.23.0 comes with some api changes, the git repo has been fixed but I do not think the automatic installer is fetching the git repo but a .tar.gz instead, which obviously hasn't been updated

Ok, so when I can expect the fix for that pagespeed automatic installer?
https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source

@Tarsenicum
Copy link

nginx 1.23.0 comes with some api changes, the git repo has been fixed but I do not think the automatic installer is fetching the git repo but a .tar.gz instead, which obviously hasn't been updated

Ok, so when I can expect the fix for that pagespeed automatic installer? https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source

I built ngx_pagespeed for Ubuntu 22.04
Just do it with official docs (https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source), but instead of downloading ngx_pagespeed sources from the version just clone the repo (i.e. git clone https://github.com/apache/incubator-pagespeed-ngx.git (or your like way)) and instead of downloading PSOL from the official URL download @eilandert PSOL for Jammy wget https://www.linuxcapable.com/uploads/psol-jammy.tar.xz

Now I want to try building ngx_pagespeed with other OSes. Can I ping you with any news?

@hunterpl
Copy link
Author

hunterpl commented Jul 7, 2022

configuring additional modules
adding module in /root/incubator-pagespeed-ngx-latest-stable
mod_pagespeed_dir=/root/incubator-pagespeed-ngx-latest-stable/psol/include
build_from_source=false
checking for psol ... not found
./configure: error: module ngx_pagespeed requires the pagespeed optimization library.
Look in /root/nginx-1.23.0/objs/autoconf.err for more details.

This happens after adding your custom PSOL, what's now?

Edit: I just replaced that custom PSOL to original PSOL but in different version ( 1.14.36.1 ):
https://dist.apache.org/repos/dist/release/incubator/pagespeed/1.14.36.1/x64/psol-1.14.36.1-apache-incubating-x64.tar.gz

now the original automatic installer work, I just replaced that PSOL content during instalation process before apply --configure modules, then press Yes for compile, magic!

@Tarsenicum
Copy link

I checked your solution. It 100% works for debian 9/10/11, ubuntu 16/18/20 and centos 8. My solution works for Ubuntu 22. But I used manual installation.

@eilandert
Copy link

@eilandert I saw your psol build for Ubuntu 22, thanks for your work! Please, can you make a tip how to build ngx_pagespeed from git sources for nginx 1.23.0? Automatic installer from repo fails on this issue too :c

I cooked something up in #1760

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants