Skip to content

node/deps/uv/src/uv-common.c fails to compile with current Xcode, needs libuv cherry-pick #63196

@nico

Description

@nico

Version

today's trunk

Platform

% uname -a
Darwin Mac 24.6.0 Darwin Kernel Version 24.6.0: Mon Jul 14 11:30:40 PDT 2025; root:xnu-11417.140.69~1/RELEASE_ARM64_T6041 arm64

Subsystem

No response

What steps will reproduce the bug?

I hit this while building (using v8's node-ci repo):

% time make node
tools/gn-gen.py out/Release
icu_use_data_file = false
is_debug=false
symbol_level=0
is_component_build=false
node_use_node_code_cache=true
v8_imminent_deprecation_warnings=false
autoninja -C out/Release test_all
offline mode
ninja: Entering directory `out/Release'
[1947/5053] 15.17s F CC obj/node/deps/uv/uv/uv-common.o
FAILED: 7d32fd66-6ea4-4423-9cf3-d221c32b72a2 "./obj/node/deps/uv/uv/uv-common.o" CC obj/node/deps/uv/uv/uv-common.o
err: exit=1
../../third_party/llvm-build/Release+Asserts/bin/clang -MMD -MF obj/node/deps/uv/uv/uv-common.o.d -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=3 -D__ARM_NEON__=1 -DCR_XCODE_BUILD=17C52 -DCR_CLANG_REVISION=\"llvmorg-23-init-10931-g20b6ec66-1\" -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_INSTRUMENTED_WITH_ASAN=0 -DCR_LIBCXX_REVISION=cb9c06560a6821f4d8272805df1bb4eb39ba9a2c -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DBUILDING_UV_SHARED -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_DARWIN_USE_64_BIT_INODE=1 -D_DARWIN_UNLIMITED_SELECT=1 -DUSE_LIBCXX_MODULES -I../.. -Igen -I../../node/deps/uv/include -I../../node/deps/uv/src -Wall -Wextra -Wimplicit-fallthrough -Wextra-semi -Wunreachable-code-aggressive -Wgnu -Wno-gnu-anonymous-struct -Wno-gnu-conditional-omitted-operand -Wno-gnu-include-next -Wno-gnu-label-as-value -Wno-gnu-redeclared-enum -Wno-gnu-statement-expression -Wno-gnu-zero-variadic-macro-arguments -Wno-zero-length-array -Wthread-safety -Wunguarded-availability -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wno-cast-function-type -Wno-thread-safety-reference-return -Wno-nontrivial-memcall -Wno-uninitialized-const-pointer -Wno-unused-but-set-global -Wshadow -Werror -fno-delete-null-pointer-checks -fno-strict-overflow -fno-ident -fno-math-errno -fno-strict-aliasing -fstack-protector -fcolor-diagnostics -fdiagnostics-show-inlining-chain -fmerge-all-constants -fcrash-diagnostics-dir=../clang-crashreports -fno-lifetime-dse -mllvm -instcombine-lower-dbg-declare=0 -mllvm -split-threshold-for-reg-with-hint=0 -ffp-contract=off -fcomplete-member-pointers --target=arm64-apple-macos -mno-outline -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -ffile-compilation-dir=. -no-canonical-prefixes -Xclang -fmodule-file-home-is-cwd -Xclang -fmodules-cache-path=/not_exist_dummy_dir -ftrivial-auto-var-init=pattern -O2 -fno-omit-frame-pointer -g0 -isysroot ../../../../../../../Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.2.sdk -mmacos-version-min=11.0 -fsanitize=array-bounds -fsanitize-trap=array-bounds -fsanitize-ignore-for-ubsan-feature=array-bounds -Wno-unsafe-buffer-usage-in-static-sized-array -fsanitize=return -fsanitize-trap=return -fsanitize-ignore-for-ubsan-feature=return -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -fvisibility=default -std=c11 -Wno-deprecated-declarations -Wno-extra-semi -Wno-implicit-fallthrough -Wno-missing-braces -Wno-sign-compare -Wno-string-conversion -Wno-shadow -Wno-unreachable-code -Wno-unreachable-code-return -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-unused-function -Wno-unused-result -Wno-unused-variable -c ../../node/deps/uv/src/uv-common.c -o obj/node/deps/uv/uv/uv-common.o
build step: cc "./obj/node/deps/uv/uv/uv-common.o"
stderr:
../../node/deps/uv/src/uv-common.c:960:14: error: passing 'const char *' to parameter of type 'void *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
  960 |     uv__free(cpu_infos[i].model);
      |              ^~~~~~~~~~~~~~~~~~
../../node/deps/uv/src/uv-common.c:81:21: note: passing argument to parameter 'ptr' here
   81 | void uv__free(void* ptr) {
      |                     ^
1 error generated.

build failed

This is fixed in upstream uv here: libuv/libuv#5052 / libuv/libuv@a43e543

Node might want to cherry-pick that commit.

How often does it reproduce? Is there a required condition?

It's a build error, so every time.

What is the expected behavior? Why is that the expected behavior?

Should build.

What do you see instead?

See above.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions