| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
- support for package export and instal
- opencensus_lib() now has a HDRS section just like Bazel.
- opencensus_lib() allows declaration of headers in subdirectories, and installs them in proper directory
- still issues with segregating public and private headers ( HDRS of non PUBLIC opencenus_lib )
( it looks like customer can write code that includes internal files )
- still issues linking private static libraries together into bigger public ones. ( as Bazel does )
- attempt at allowing build as shared libraries
- added helper code to request no undefined symbols in shared libraries.
- attempt failed due to circular dependencies ( opencensus_trace and opencensus_context ). Until those are fixed, only static libs will work.
- outlined many missing dependencies declarations, only fixed in CMake for now.
ideally similar changes would be done to Bazel build, and Bazel would allow to build shared libs as well...
- stackdriver / googleapis / google-cloud-cpp changed recently, does not export monitoring/logging and cloud trace/tracing libs.
- attempt at building with FetchContent if and only if no existing package has been found.
same ideas as using shared libraries :
- reuse and to link ability into programs that may already use some of the same deps.
- third party ( opencensus-cpp ) should not require significant alterations in consuming client build system ( hence CMake ) and strategy (
- linux-specifc example : using stackdriver exporter on Google Cloud Engine
- parse /proc/meminfo and /proc/vmstat to stackdriver
- rely via FetchContent on third party software
- cpr ( to implement succintly access go GCE instance metadata server )
- re2 ( to brace against variable level of support/correctness in implementation of <regex> with old GCC versions )
- not yet verified on anything but CentOS 7
- in particular no effort has been yet made so that CI via travis or appveyor actually works.
As such, not ready to merge
…package() on gRPC and googleapis. No FetchContent yet
…TACKDRIVER_EXPORTER CMake option
… change, fix newest example
… it to pass its own unit tests when used with FetchContent ...
…mat and cmake-format manually as docker-format Dockerfile is obsolete. format check should match travis one
|
tools/docker-format/Dockerfile is obsolete (#448). related PR here #449. |
Sorry, something went wrong.
| endif() | ||
| # clearly there are problems with cyclical deps in this code ( context, trace ) | ||
| if(BUILD_SHARED_LIBS) | ||
| add_link_options("LINKER:--no-undefined") |
There was a problem hiding this comment.
this requires a version of cmake that's more recent than the one in the CI containers... consider a platform-aware version of this:
set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" )
Sorry, something went wrong.
|
|
||
| include(OpenCensusHelpers) | ||
|
|
||
| if(BUILD_SHARED_LIBS) |
There was a problem hiding this comment.
redundant
Sorry, something went wrong.
|
circular depdendency between opencensus_trace.so and opencensus_context.so [ 70%] Linking CXX shared library libopencensus_trace.so CMakeFiles/opencensus_trace.dir/internal/context_util.cc.o: In function `opencensus::trace::GetCurrentSpan()': context_util.cc:(.text+0x5): undefined reference to `opencensus::context::Context::Current()' CMakeFiles/opencensus_trace.dir/internal/with_span.cc.o: In function `opencensus::trace::WithSpan::WithSpan(opencensus::trace::Span const&, bool, bool)': with_span.cc:(.text+0x4d): undefined reference to `opencensus::context::Context::InternalMutableCurrent()' CMakeFiles/opencensus_trace.dir/internal/with_span.cc.o: In function `opencensus::trace::WithSpan::ConditionalSwap()': with_span.cc:(.text+0xcf): undefined reference to `opencensus::context::Context::InternalMutableCurrent()' CMakeFiles/opencensus_trace.dir/internal/with_span.cc.o: In function `opencensus::trace::WithSpan::~WithSpan()': with_span.cc:(.text+0x10d): undefined reference to `opencensus::context::Context::InternalMutableCurrent()' with_span.cc:(.text+0x1a4): undefined reference to `opencensus::context::Context::InternalMutableCurrent()' clang-7: error: linker command failed with exit code 1 (use -v to see invocation) opencensus/trace/CMakeFiles/opencensus_trace.dir/build.make:406: recipe for target 'opencensus/trace/libopencensus_trace.so' failed make[2]: *** [opencensus/trace/libopencensus_trace.so] Error 1 make[2]: Leaving directory '/opencensus-cpp/cmake-out' CMakeFiles/Makefile2:8650: recipe for target 'opencensus/trace/CMakeFiles/opencensus_trace.dir/all' failed make[1]: *** [opencensus/trace/CMakeFiles/opencensus_trace.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... adding context as a direct depdendency to opencensus_trace.so would give a configuration error. Cyclic depdendencies. ...
-- Configuring done
CMake Error: The inter-target dependency graph contains the following strongly connected component (cycle):
"opencensus_context" of type SHARED_LIBRARY
depends on "opencensus_trace" (weak)
"opencensus_trace" of type SHARED_LIBRARY
depends on "opencensus_context" (weak)
At least one of these targets is not a STATIC_LIBRARY. Cyclic dependencies are allowed only among static libraries.
-- Build files have been written to: /opencensus-cpp/cmake-out
Makefile:2658: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
make: Leaving directory '/opencensus-cpp/cmake-out'
As a result, as of today, the only way to assemble this code is with a static library. |
Sorry, something went wrong.
There was a problem hiding this comment.
Sorry, I'm not working on OpenCensus anymore, but can't remove myself as a reviewer from this PR. Dismissing this review using "request changes" might remove it from my PR queue though.
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
do not merge yet, it is still work in progress.
I probably also left quite a few comments that need removing.
many enhancements to CMake support ( see #244 )
support for exporting package and install ( related to Support find_package and install #256 )
(failed) attempt at allowing build as shared libraries ( more on that later )
attempt at find_package() before using FetchContent()
two more examples that builds in repository
parses /proc/meminfo and eventually /proc/vmstat and shoves its contents into stackdriver stats exporter.
uses cpr as FetchContent() dependency.
Ongoing issues / unresolved:
( it looks like customer can write code that includes internal files, so I install them )
( as Bazel does. I deploy the internal libraries as static libs unless marked as PRIVATE in opencensus_lib )
I can think of a way involving linking manually all internal libs only for build with:
until those are fixed, no hope for producing shared libraries.
I have a branch for that somewhere, but this work assumes there is a googleapis cmake package that contains
Unfortunately I did not read many of the outstanding PRs when I started this work, so it may be very redundant with ongoing efforts.