mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
Generate dependency versions header from CMake (#22561)
## Summary This PR introduces a CMake-generated header file containing all dependency versions, eliminating the need for C++ code to depend on Zig-exported version constants. ## Changes - **New CMake script**: `cmake/tools/GenerateDependencyVersions.cmake` that: - Reads versions from the existing `generated_versions_list.zig` file - Extracts semantic versions from header files where available (libdeflate, zlib) - Generates `bun_dependency_versions.h` with all dependency versions as compile-time constants - **Updated BunProcess.cpp**: - Now includes the CMake-generated `bun_dependency_versions.h` - Uses `BUN_VERSION_*` constants instead of `Bun__versions_*` - Removes dependency on Zig-exported version constants - **Build system updates**: - Added `GenerateDependencyVersions` to main CMakeLists.txt - Added build directory to include paths in BuildBun.cmake ## Benefits ✅ Single source of truth for dependency versions ✅ Versions accessible from C++ without Zig exports ✅ Automatic regeneration during CMake configuration ✅ Semantic versions shown where available (e.g., zlib 1.2.8 instead of commit hash) ✅ Debug output file for verification ## Test Results Verified that `process.versions` correctly shows all dependency versions: ```javascript $ bun -e "console.log(JSON.stringify(process.versions, null, 2))" { "node": "24.3.0", "bun": "1.2.22-debug", "boringssl": "29a2cd359458c9384694b75456026e4b57e3e567", "libarchive": "898dc8319355b7e985f68a9819f182aaed61b53a", "mimalloc": "4c283af60cdae205df5a872530c77e2a6a307d43", "webkit": "0ddf6f47af0a9782a354f61e06d7f83d097d9f84", "zlib": "1.2.8", "libdeflate": "1.24", // ... all versions present and correct } ``` ## Generated Files - `build/debug/bun_dependency_versions.h` - Header file with version constants - `build/debug/bun_dependency_versions_debug.txt` - Human-readable version list 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -1,35 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -exo pipefail
|
||||
|
||||
WEBKIT_VERSION=$(grep 'set(WEBKIT_TAG' "CMakeLists.txt" | awk '{print $2}' | cut -f 1 -d ')')
|
||||
MIMALLOC_VERSION=$(git rev-parse HEAD:./src/deps/mimalloc)
|
||||
LIBARCHIVE_VERSION=$(git rev-parse HEAD:./src/deps/libarchive)
|
||||
PICOHTTPPARSER_VERSION=$(git rev-parse HEAD:./src/deps/picohttpparser)
|
||||
BORINGSSL_VERSION=$(git rev-parse HEAD:./src/deps/boringssl)
|
||||
ZLIB_VERSION=$(git rev-parse HEAD:./src/deps/zlib)
|
||||
LOLHTML=$(git rev-parse HEAD:./src/deps/lol-html)
|
||||
TINYCC=$(git rev-parse HEAD:./src/deps/tinycc)
|
||||
C_ARES=$(git rev-parse HEAD:./src/deps/c-ares)
|
||||
ZSTD=$(git rev-parse HEAD:./src/deps/zstd)
|
||||
LSHPACK=$(git rev-parse HEAD:./src/deps/ls-hpack)
|
||||
LIBDEFLATE=$(git rev-parse HEAD:./src/deps/libdeflate)
|
||||
|
||||
rm -rf src/generated_versions_list.zig
|
||||
echo "// AUTO-GENERATED FILE. Created via .scripts/write-versions.sh" >src/generated_versions_list.zig
|
||||
echo "" >>src/generated_versions_list.zig
|
||||
echo "pub const boringssl = \"$BORINGSSL_VERSION\";" >>src/generated_versions_list.zig
|
||||
echo "pub const libarchive = \"$LIBARCHIVE_VERSION\";" >>src/generated_versions_list.zig
|
||||
echo "pub const mimalloc = \"$MIMALLOC_VERSION\";" >>src/generated_versions_list.zig
|
||||
echo "pub const picohttpparser = \"$PICOHTTPPARSER_VERSION\";" >>src/generated_versions_list.zig
|
||||
echo "pub const webkit = \"$WEBKIT_VERSION\";" >>src/generated_versions_list.zig
|
||||
echo "pub const zig = @import(\"std\").fmt.comptimePrint(\"{}\", .{@import(\"builtin\").zig_version});" >>src/generated_versions_list.zig
|
||||
echo "pub const zlib = \"$ZLIB_VERSION\";" >>src/generated_versions_list.zig
|
||||
echo "pub const tinycc = \"$TINYCC\";" >>src/generated_versions_list.zig
|
||||
echo "pub const lolhtml = \"$LOLHTML\";" >>src/generated_versions_list.zig
|
||||
echo "pub const c_ares = \"$C_ARES\";" >>src/generated_versions_list.zig
|
||||
echo "pub const libdeflate = \"$LIBDEFLATE\";" >>src/generated_versions_list.zig
|
||||
echo "pub const zstd = \"$ZSTD\";" >>src/generated_versions_list.zig
|
||||
echo "pub const lshpack = \"$LSHPACK\";" >>src/generated_versions_list.zig
|
||||
echo "" >>src/generated_versions_list.zig
|
||||
|
||||
zig fmt src/generated_versions_list.zig
|
||||
Reference in New Issue
Block a user