Open alichnewsky opened 4 years ago
tools/docker-format/Dockerfile
is obsolete (#448).
hence, no pre-commit formatting, and significant effort to get the linux/ubuntu ci builds green.
related PR here #449.
circular depdendency between opencensus_trace.so
and opencensus_context.so
building shared libraries with code as is gives a linking error:
[ 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. Worthy of a separate issue ?
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 #256 )
opencensus_lib()
now has aHDRS
section just like Bazel.opencensus_lib()
allows declaration of headers in subdirectories, and installs them in proper directorygRPC
andgoogleapis
CMake packages are installed already, and built with -DBUILD_STACKDRIVER_EXPORTER=ON flag.(failed) attempt at allowing build as shared libraries ( more on that later )
CMakeLists.txt
notBUILD
files ). Mostly around missing the context library as a dependency.attempt at
find_package()
before usingFetchContent()
two more examples that builds in repository
/proc/meminfo
and eventually/proc/vmstat
and shoves its contents into stackdriver stats exporter. uses cpr asFetchContent()
dependency./proc/meminfo
and eventually/proc/vmstat
and shoves its contents to stdout stats exporter.Ongoing issues / unresolved:
HDRS
of nonPUBLIC
opencenus_lib()
) ( it looks like customer can write code that includes internal files, so I install them )PRIVATE
inopencensus_lib
) I can think of a way involving linking manually all internal libs only for build with:opencensus_trace
andopencensus_context
. until those are fixed, no hope for producing shared libraries.google-cloud-cpp
has deprecated use ofcpp-makefiles
project ... I have a branch for that somewhere, but this work assumes there is a googleapis cmake package that containsUnfortunately I did not read many of the outstanding PRs when I started this work, so it may be very redundant with ongoing efforts.