bump-libdatadog
Skill572 starsChanged 18 days agoApache-2.0View on GitHub
Update/bump the libdatadog native library version in dd-trace-dotnet. Use when the user asks to bump, update, or upgrade libdatadog, or mentions a new libdatadog release version.
In this repository6 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- add-lint-ruleSkill
- analyze-azdo-buildSkill
- azure-functionsSkill
- sdk-reviewSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 67
Ask the user for the target version, or check the latest release:
- Distinctive: line 77
Run the helper script which fetches them via the GitHub API:
- Very specific: line 91
Update LIBDATADOG_VERSION to "v<VERSION>"
- Very specific: line 96
Update "version-string" to the new version (no v prefix).
- Distinctive: line 106
Run the Nuke build targets to validate hashes:
- Distinctive: line 149
If a release doesn't have all platform artifacts, the bump may need to wait or be partial.
- Distinctive: line 150
After bumping, CI will validate the hashes on all platforms.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Bump libdatadog Version
Overview
The native library is consumed as prebuilt binaries from GitHub releases of
DataDog/libdatadog-dotnet — the .NET-specific
distribution of libdatadog (a minimal feature preset: profiling, crashtracker, symbolizer,
library-config). This is not upstream DataDog/libdatadog.
Version scheme: the pinned version is libdatadog-dotnet's own release version (e.g.
v1.3.5), which is distinct from the upstream libdatadog version it is built from (tracked byLIBDATADOG_VERSIONin that repo — e.g. libdatadog-dotnetv1.3.5is built from upstream libdatadogv32.0.0). Pin the libdatadog-dotnet version here, not the upstream one.
There are two version pins to update, both from the same libdatadog-dotnet release:
| Platform | File | Hash type | Version format |
| Linux/macOS | build/cmake/FindLibdatadog.cmake | SHA-256 | v<MAJOR>.<MINOR>.<PATCH> |
| Windows | build/vcpkg_local_ports/libdatadog/vcpkg.json + portfile.cmake | SHA-512 | <MAJOR>.<MINOR>.<PATCH> (no v prefix) |
A libdatadog-dotnet release builds all 8 platform artifacts together, so the two pins should normally move to the same version in lockstep. Confirm with the user if they intend otherwise.
Files to Modify
1. Linux/macOS — build/cmake/FindLibdatadog.cmake
Update these values:
LIBDATADOG_VERSION— the version tag (e.g."v32.0.0")SHA256_LIBDATADOG_ARM64— macOS arm64 hashSHA256_LIBDATADOG_X86_64— macOS x86_64 hashSHA256_LIBDATADOG(aarch64 gnu) — Linux aarch64 glibc hashSHA256_LIBDATADOG(aarch64 musl) — Linux aarch64 Alpine hashSHA256_LIBDATADOG(x86_64 musl) — Linux x86_64 Alpine hashSHA256_LIBDATADOG(x86_64 gnu) — Linux x86_64 glibc hash
Artifact filenames (from GitHub releases):
libdatadog-aarch64-apple-darwin.tar.gzlibdatadog-x86_64-apple-darwin.tar.gzlibdatadog-aarch64-unknown-linux-gnu.tar.gzlibdatadog-aarch64-alpine-linux-musl.tar.gzlibdatadog-x86_64-alpine-linux-musl.tar.gz(note: uses${CMAKE_SYSTEM_PROCESSOR}in filename)libdatadog-x86_64-unknown-linux-gnu.tar.gz(note: uses${CMAKE_SYSTEM_PROCESSOR}in filename)
2. Windows — build/vcpkg_local_ports/libdatadog/
Two files:
vcpkg.json— update"version-string"(novprefix)portfile.cmake— update SHA-512 hashes for x64 and x86 Windows zips
Artifact filenames:
libdatadog-x64-windows.ziplibdatadog-x86-windows.zip
Step-by-Step Procedure
Step 1: Determine target version
Ask the user for the target version, or check the latest release:
https://github.com/DataDog/libdatadog-dotnet/releasesStep 2: Get hashes from the release page
SHA-256 and SHA-512 checksums are published directly in the GitHub release notes. Either:
- Visit
https://github.com/DataDog/libdatadog-dotnet/releases/tag/v<VERSION>and copy from the checksums sections, or - Run the helper script which fetches them via the GitHub API:
bash .claude/skills/bump-libdatadog/scripts/fetch-release-hashes.sh <VERSION>Where <VERSION> is without the v prefix (e.g. 1.3.5).
The release notes contain:
- SHA256 checksums section → for
FindLibdatadog.cmake(6 Linux/macOS artifacts) - SHA512 checksums section → for
portfile.cmake(2 Windows artifacts)
Step 3: Update build/cmake/FindLibdatadog.cmake
- Update
LIBDATADOG_VERSIONto"v<VERSION>" - Replace each
SHA256_LIBDATADOG*value with the new SHA-256 hash from the script output
Step 4: Update build/vcpkg_local_ports/libdatadog/vcpkg.json
Update "version-string" to the new version (no v prefix).
Step 5: Update build/vcpkg_local_ports/libdatadog/portfile.cmake
Replace the SHA-512 hashes for x64 and x86 Windows builds.
Step 6: Verify
- Confirm all 8 hashes were updated (6 for CMake SHA-256, 2 for vcpkg SHA-512)
- Confirm version strings match in both files
- Run the Nuke build targets to validate hashes:
# Linux — validates CMake SHA-256 hashes during configure ./tracer/build.sh CompileProfilerNativeSrc # Windows — validates vcpkg SHA-512 hashes during install .\tracer\build.cmd CompileProfilerNativeSrc
Files That May Need Regeneration
These don't contain version strings but may need refreshing after a bump if the exported symbol set or glibc requirements change:
tracer/build/_build/NativeValidation/native-libdatadog-symbols-alpine-x64.verified.txttracer/build/_build/NativeValidation/native-libdatadog-symbols-alpine-arm64.verified.txt
CI will fail if the symbol list changes — re-run the Alpine symbol validation step and accept the new snapshot.
Because libdatadog-dotnet ships a reduced feature set (no data-pipeline, log, telemetry,
ddsketch, or ffe), its exported symbols are a strict subset of upstream libdatadog — so these
snapshots reflect that smaller set. The glibc cap in Build.Profiler.Steps.cs
(libdatadog_profiling ≤ 2.15 on x64, ≤ 2.17 on arm64) still applies and is unchanged by the source
switch — libdatadog-dotnet x64 builds are capped at GLIBC 2.15, same as upstream.
Optional Updates (doc-comment SHAs)
Several files under tracer/src/Datadog.Trace/LibDatadog/ have XML doc comments linking to a specific upstream libdatadog git SHA (e.g. 60583218a8de6768f67d04fcd5bc6443f67f516b). These are informational only and can be updated for traceability (use the upstream SHA the libdatadog-dotnet release was built from):
VecU8.cs,CharSlice.cs,Error.csServiceDiscovery/ResultTag.cs,ServiceDiscovery/TracerMemfdHandleResult.cs
Related Files (no changes needed, but useful context)
profiler/Directory.Build.targets— Windows link dependencies for libdatadogtracer/build/_build/Build.Steps.cs— copies libdatadog binary to monitoring hometracer/build/_build/Build.Profiler.Steps.cs— profiler build steps; glibc version expectations for Alpine.gitlab/one-pipeline.locked.yml— CI pipeline (auto-generated, don't edit manually)vcpkg.json(root) — declares dependency on libdatadog (no version pin here)vcpkg-configuration.json— overlay ports config
Important Notes
- The CMake file uses SHA-256 hashes; the vcpkg portfile uses SHA-512 hashes. Both are published in the libdatadog-dotnet GitHub release notes (under
## Checksums). - The CMake version has a
vprefix (v1.3.5); vcpkg does not (1.3.5). - If a release doesn't have all platform artifacts, the bump may need to wait or be partial.
- After bumping, CI will validate the hashes on all platforms. Hash mismatches cause clear build failures.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

