nginxinc / nginx-otel

Apache License 2.0
165 stars 19 forks source link

Build failed if nginx build with pcre from sources #63

Open timansky opened 2 months ago

timansky commented 2 months ago

Describe the bug

I'm trying to build module from source with nginx with pcre2 from sources. Build is failing because it is trying to find pcre2.h inside nginx directory

[100%] Generating opentelemetry/proto/common/v1/common.pb.cc, opentelemetry/proto/resource/v1/resource.pb.cc, opentelemetry/proto/trace/v1/trace.pb.cc, opentelemetry/proto/collector/trace/v1/trace_service.pb.cc, opentelemetry/proto/collector/trace/v1/trace_service.grpc.pb.cc
[100%] Building CXX object CMakeFiles/ngx_otel_module.dir/src/http_module.cpp.o
In file included from /workdir/deb-nginx/.build/nginx/objs/../src/core/ngx_core.h:74,
                 from /workdir/deb-nginx/.build/modules/otel/otel/src/http_module.cpp:3:
/workdir/deb-nginx/.build/nginx/objs/../src/core/ngx_regex.h:19:10: fatal error: pcre2.h: No such file or directory
   19 | #include <pcre2.h>
      |          ^~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/ngx_otel_module.dir/build.make:98: CMakeFiles/ngx_otel_module.dir/src/http_module.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:971: CMakeFiles/ngx_otel_module.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

To reproduce

Steps to reproduce the behavior:

  1. Configure nginx with option --with-pcre=${PATH_TO_PCRE2_SRC}
  2. make module
  3. See error
timansky commented 2 months ago

Also this happens with all custom libs (zlib ssl ...)

timansky commented 2 months ago

SSL fixes with adding variable -DOPENSSL_ROOT_DIR=${SSL_SRC_PATH}

p-pautov commented 2 months ago

Something like this -DCMAKE_CXX_FLAGS=-I${PATH_TO_PCRE2_SRC}/src could fix PCRE error.

Could you elaborate a bit on why do you need custom libs?

timansky commented 2 months ago

zlib is fixed by specifying -DZLIB_ROOT=${ZLIB_SRC_PATH}

timansky commented 2 months ago

-DCMAKE_CXX_FLAGS=-I${PATH_TO_PCRE2_SRC}/src

Already tried with no success. Also tried:

-DCMAKE_PREFIX_PATH=${PCRE2_SRC}/src
-DPCRE2_ROOT=${PCRE2_SRC}/src
-DPCRE2_LIBRARY=${PCRE2_SRC}/src
-DCMAKE_INCLUDE_PATH=${PCRE2_SRC}/src
willthames commented 6 days ago

I have this in my build file for pcre2:

sed -i '/target_include/a \ \ \ \ /usr/local/openresty/pcre2/include' CMakeLists.txt