Skip to content

Enable chdig build on macOS#95990

Closed
alexey-milovidov wants to merge 3 commits intomasterfrom
enable-chdig-on-mac
Closed

Enable chdig build on macOS#95990
alexey-milovidov wants to merge 3 commits intomasterfrom
enable-chdig-on-mac

Conversation

@alexey-milovidov
Copy link
Member

Fix the CityHash128 linkage issue in the vendored clickhouse-rs-cityhash-sys crate by adding extern "C" to the declaration in city.h and fixing the signature to use const char*.

The issue was that CityHashCrc128 called CityHash128 using C++ linkage (looking for mangled symbol __Z11CityHash128PKcm), but CityHash128 was defined with C linkage (extern "C").

Changelog category (leave one):

  • Improvement

Changelog entry (a user-readable short description of the changes that goes into CHANGELOG.md):

The chdig tool is available on macOS.

See ClickHouse/rust_vendor#55

@clickhouse-gh
Copy link
Contributor

clickhouse-gh bot commented Feb 4, 2026

Workflow [PR], commit [97d48e1]

Summary:

job_name test_name status info comment
Build (amd_darwin) failure
Build ClickHouse failure cidb
Stateless tests (amd_msan, sequential, 2/2) failure
03032_dynamically_resize_filesystem_cache_2 FAIL cidb, issue
Stress test (amd_tsan) failure
Logical error: Unexpected return type from A. Expected B. Got C. Action: (STID: 1611-3d19) FAIL cidb, issue
Stress test (arm_asan) failure
AddressSanitizer: stack-use-after-scope (STID: 0250-04e2) FAIL cidb
Stress test (amd_msan) failure
Logical error: Block structure mismatch in A stream: different number of columns: (STID: 0993-38e6) FAIL cidb

@clickhouse-gh clickhouse-gh bot added pr-improvement Pull request with some product improvements submodule changed At least one submodule changed in this PR. labels Feb 4, 2026
Fix the CityHash128 linkage issue in the vendored clickhouse-rs-cityhash-sys
crate by adding `extern "C"` to the declaration in city.h and fixing the
signature to use `const char*`.

The issue was that CityHashCrc128 called CityHash128 using C++ linkage
(looking for mangled symbol `__Z11CityHash128PKcm`), but CityHash128 was
defined with C linkage (`extern "C"`).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
alexey-milovidov and others added 2 commits February 5, 2026 01:15
Fix CityHash128 linkage for macOS compatibility by adding extern "C"
to the declaration in city.h. This fixes undefined symbol error on
x86_64 Darwin where CityHashCrc128 (compiled only with SSE4.2) calls
CityHash128.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This adds a forward declaration of CityHash128 with extern "C" linkage
directly in the SSE4.2 code block to ensure the correct symbol is called
regardless of header include order.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link
Member

@azat azat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

But changes to clickhosue-rs-cityhash-sys will be overwritten by the next rust/vendor.sh, we need to clone it and change the dependencies, and I doubt that it can be done outside of chdig, so chdig/Cargo.toml should be updated

P.S. interesting why it works using cargo directly, probably due to default linker?

@azat azat self-assigned this Feb 5, 2026
@azat
Copy link
Member

azat commented Feb 5, 2026

Maybe the build hit some cache, or similar issue

But anyway I've fixed it here - azat/chdig#220

But now we have new issues

Details
    | FAILED: programs/clickhouse
    | : && /usr/bin/clang++-21 --target=x86_64-apple-darwin -fdiagnostics-color=always  -pipe -mssse3 -msse4.1 -msse4.2 -mpclmul -mpopcnt -ffile-prefix-map=/ClickHouse=. -ftime-trace -falign-functions=64 -mbranches-within-32B-boundaries -ffp-contract=off  -fdiagnostics-absolute-paths -fstrict-vtable-pointers -fPIC -Wall -Wextra -Wframe-larger-than=65536 -Weverything -Wpedantic -Wno-return-type-c-linkage -Wno-zero-length-array -Wno-c++98-compat-pedantic -Wno-c++20-compat -Wno-sign-conversion -Wno-deprecated-declarations -Wno-disabled-macro-expansion -Wno-documentation-unknown-command -Wno-double-promotion -Wno-exit-time-destructors -Wno-float-equal -Wno-global-constructors -Wno-missing-prototypes -Wno-missing-variable-declarations -Wno-padded -Wno-switch-enum -Wno-undefined-func-template -Wno-unused-template -Wno-weak-template-vtables -Wno-weak-vtables -Wno-thread-safety-negative -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-nrvo -Wno-missing-noreturn -Wno-c2y-extensions -Wno-c23-extensions -O2 -g -DNDEBUG -O3 -g -fno-standalone-debug -gdwarf-aranges  -isysroot /ClickHouse/cmake/darwin/../toolchain/darwin-x86_64 -mmacosx-version-min=10.15 -Wl,-headerpad_max_install_names  --ld-path=/cctools/bin/x86_64-apple-darwin-ld -Wl,-U,_inside_main -u_zone_register @CMakeFiles/clickhouse.rsp -o programs/clickhouse && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-benchmark && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-check-marks && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-checksum-for-compressed-block && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-client && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse chc && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-compressor && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-disks && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-extract-from-config && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-format && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-git-import && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-local && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse chl && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse ch && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-obfuscator && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-server && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-static-files-disk-uploader && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-su && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-zookeeper-dump-tree && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-zookeeper-remove-by-list && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-keeper-data-dumper && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-keeper-utils && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-keeper-bench && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-keeper && cd /ClickHouse/ci/tmp/build/programs && mkdir -p /ClickHouse/ci/tmp/build/programs/..//lib/debug && touch /ClickHouse/ci/tmp/build/programs/..//lib/debug/clickhouse-keeper.debug && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-keeper-converter && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-keeper-client && cd /ClickHouse/ci/tmp/build/programs && mkdir -p /ClickHouse/ci/tmp/build/programs//lib/debug && touch /ClickHouse/ci/tmp/build/programs//lib/debug/clickhouse.debug && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-chdig && cd /ClickHouse/ci/tmp/build/programs && /usr/bin/cmake -E create_symlink clickhouse chdig
    | Undefined symbols for architecture x86_64:
    |   "_NSPasteboardTypeHTML", referenced from:
    |       __ZN7arboard8platform3osx3Set4html17haa32086af500f56dE in libchdig.a(arboard-0978f96f913a6835.arboard.d0923308c729168-cgu.0.rcgu.o)
    |       __ZN7arboard3Get4html17ha5006da189a7b2ebE in libchdig.a(arboard-0978f96f913a6835.arboard.d0923308c729168-cgu.0.rcgu.o)
    |   "_NSPasteboardTypeString", referenced from:
    |       __ZN7arboard8platform3osx3Set4html17haa32086af500f56dE in libchdig.a(arboard-0978f96f913a6835.arboard.d0923308c729168-cgu.0.rcgu.o)
    |       __ZN7arboard9Clipboard8get_text17h4570eb70f3f4cf3cE in libchdig.a(arboard-0978f96f913a6835.arboard.d0923308c729168-cgu.0.rcgu.o)
    |       __ZN7arboard3Get4text17h18fe68c3edda55c7E in libchdig.a(arboard-0978f96f913a6835.arboard.d0923308c729168-cgu.0.rcgu.o)
    |   "_NSPasteboardURLReadingFileURLsOnlyKey", referenced from:
    |       __ZN7arboard3Get9file_list17hf96d0d575c7a8373E in libchdig.a(arboard-0978f96f913a6835.arboard.d0923308c729168-cgu.0.rcgu.o)
    | ld: symbol(s) not found for architecture x86_64
    | clang++-21: error: linker command failed with exit code 1 (use -v to see invocation)
    | ninja: build stopped: subcommand failed.

I will take a look

@alexey-milovidov
Copy link
Member Author

I think we explicitly need to link certain "System Framework" libraries on Mac.

@azat
Copy link
Member

azat commented Feb 5, 2026

Will be done as part of upgrade to newer version - #96113

That includes proper fixes for build system for MacOS

@azat azat closed this Feb 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-improvement Pull request with some product improvements submodule changed At least one submodule changed in this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants