libdatadog
provides a shared library containing common code used in the implementation of Datadog's libraries,
including Continuous Profilers.
(In a past life, libdatadog
was known as libddprof
but it was renamed when
we decided to increase its scope).
NOTE: If you're building a new Datadog library/profiler or want to contribute to Datadog's existing tools, you've come to the right place! Otherwise, this is possibly not the droid you were looking for.
See CONTRIBUTING.md
.
Build libdatadog
as usual with cargo build
.
To package a release with the generated ffi header and CMake module, use the build-profiling-ffi.sh
/ build-telemetry-ffi.sh
helper scripts.
Here's an example of using on of these scripts, placing the output inside /opt/libdatadog
:
bash build-profiling-ffi.sh /opt/libdatadog
- Rust 1.71 or newer with cargo
cbindgen
0.26cmake
andprotoc
This project uses cargo-nextest to run tests.
cargo nextest run
The simplest way to install cargo-nextest is to use cargo install
like this.
cargo install --locked 'cargo-nextest@0.9.67'
Tracing integration tests require docker to be installed and running. If you don't have docker installed or you want to skip these tests, you can run:
cargo nextest run -E '!test(tracing_integration_tests::)'
Please note that the locked version is to make sure that it can be built using rust 1.71.1
, and if you are using a newer rust version, then it's enough to limit the version to 0.9.*
.