Skip to content

[icu] Update to 78.1#48073

Merged
BillyONeal merged 22 commits intomicrosoft:masterfrom
dg0yt:icu
Nov 12, 2025
Merged

[icu] Update to 78.1#48073
BillyONeal merged 22 commits intomicrosoft:masterfrom
dg0yt:icu

Conversation

@dg0yt
Copy link
Copy Markdown
Contributor

@dg0yt dg0yt commented Nov 1, 2025

To be used with C++17.

Port icu now skips AUTORECONF. It patches the pre-generated build system directly. Running autoreconf would require very recent autotools which are likely to be absent in many linux CI environments.

@dg0yt
Copy link
Copy Markdown
Contributor Author

dg0yt commented Nov 2, 2025

Related: artyom-beilis/cppcms#105

@BillyONeal
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@dg0yt
Copy link
Copy Markdown
Contributor Author

dg0yt commented Nov 5, 2025

duckdb is unresolved. It is a strange package.
(Some) loadable extensions are static libs even in dynamic builds.
The dynamic duckdb lib includes these static libs (icu: C++17) which link the static duckdb lib which seems to be the trigger of the duplicate symbol.
Yes: The dynamic lib has different structure than the static lib.
And the dynamic lib is also built in the static triplet.

We could simply always build duckdb with C++17 (regardless of feature icu).
I can also resolve the CI issue by not building the dynamic lib in static triplets, but this would leave x64-linux-dynamic broken.

@BillyONeal
Copy link
Copy Markdown
Member

We could simply always build duckdb with C++17 (regardless of feature icu).

That sounds reasonable to me.

I can also resolve the CI issue by not building the dynamic lib in static triplets, but this would leave x64-linux-dynamic broken.

IMO up to date ICU is more important than anything related to duckdb, and particularly more important than duckdb on a community triplet.

@dg0yt
Copy link
Copy Markdown
Contributor Author

dg0yt commented Nov 7, 2025

Port duckdb is more broadly broken (#48180). But this makes it even more acceptable to just go with C++17 for this port.

@dg0yt dg0yt marked this pull request as ready for review November 8, 2025 15:44
@dg0yt dg0yt marked this pull request as draft November 9, 2025 16:12
@dg0yt
Copy link
Copy Markdown
Contributor Author

dg0yt commented Nov 9, 2025

Okay, the proper duckdb change should be ready now.

@dg0yt
Copy link
Copy Markdown
Contributor Author

dg0yt commented Nov 9, 2025

Great. I managed to move duckdb's duplicate definition problem out of the duckdb build into the downstream build (vcpkg-ci-duckdb).

FAILED: [code=1] main 
: && /usr/bin/c++ -fPIC -g  CMakeFiles/main.dir/main.c.o -o main  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_static.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicu_extension.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libcore_functions_extension.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libparquet_extension.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libjemalloc_extension.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_static.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicu_extension.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libcore_functions_extension.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libparquet_extension.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libjemalloc_extension.a  -ldl  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_fsst.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_fmt.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_pg_query.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_re2.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_miniz.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_utf8proc.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_hyperloglog.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_fastpforlib.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_skiplistlib.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_mbedtls.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_yyjson.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_zstd.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicui18n.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicuuc.a  /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicudata.a && :
/usr/bin/ld: /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicu_extension.a(icu_extension.cpp.o):(.rodata._ZN6duckdb11LogicalType7VARCHARE[_ZN6duckdb11LogicalType7VARCHARE]+0x0): multiple definition of `duckdb::LogicalType::VARCHAR'; /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_static.a(ub_duckdb_common.cpp.o):(.rodata+0x2be9c): first defined here
/usr/bin/ld: /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicu_extension.a(icu-dateadd.cpp.o):(.rodata._ZN6duckdb11LogicalType12TIMESTAMP_TZE[_ZN6duckdb11LogicalType12TIMESTAMP_TZE]+0x0): multiple definition of `duckdb::LogicalType::TIMESTAMP_TZ'; /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_static.a(ub_duckdb_common.cpp.o):(.rodata+0x2be99): first defined here
/usr/bin/ld: /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicu_extension.a(icu-dateadd.cpp.o):(.rodata._ZN6duckdb11LogicalType8INTERVALE[_ZN6duckdb11LogicalType8INTERVALE]+0x0): multiple definition of `duckdb::LogicalType::INTERVAL'; /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_static.a(ub_duckdb_common.cpp.o):(.rodata+0x2bea0): first defined here
/usr/bin/ld: /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicu_extension.a(icu-datepart.cpp.o):(.rodata._ZN6duckdb11LogicalType6BIGINTE[_ZN6duckdb11LogicalType6BIGINTE]+0x0): multiple definition of `duckdb::LogicalType::BIGINT'; /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_static.a(ub_duckdb_common.cpp.o):(.rodata+0x2be8a): first defined here
/usr/bin/ld: /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicu_extension.a(icu-datepart.cpp.o):(.rodata._ZN6duckdb11LogicalType6DOUBLEE[_ZN6duckdb11LogicalType6DOUBLEE]+0x0): multiple definition of `duckdb::LogicalType::DOUBLE'; /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_static.a(ub_duckdb_common.cpp.o):(.rodata+0x2be90): first defined here
/usr/bin/ld: /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libicu_extension.a(icu-timezone.cpp.o):(.rodata._ZN6duckdb11LogicalType7BOOLEANE[_ZN6duckdb11LogicalType7BOOLEANE]+0x0): multiple definition of `duckdb::LogicalType::BOOLEAN'; /mnt/vcpkg-ci/installed/x64-linux/debug/lib/libduckdb_static.a(ub_duckdb_common.cpp.o):(.rodata+0x2be83): first defined here
collect2: error: ld returned 1 exit status

libicu_extension.a is C++17 with icu 78.1.
libduckdb_static.a is C++11 with default build settings.
So the situation is unchanged: Build all of duckdb with C++17 for new icu.

@dg0yt dg0yt mentioned this pull request Nov 9, 2025
@dg0yt dg0yt marked this pull request as ready for review November 9, 2025 20:38
@vicroms vicroms marked this pull request as draft November 11, 2025 02:17
@dg0yt dg0yt marked this pull request as ready for review November 11, 2025 06:09
@dg0yt dg0yt closed this Nov 11, 2025
@dg0yt dg0yt reopened this Nov 11, 2025
@dg0yt dg0yt closed this Nov 11, 2025
@dg0yt dg0yt reopened this Nov 11, 2025
@dg0yt dg0yt closed this Nov 11, 2025
@dg0yt dg0yt reopened this Nov 11, 2025
@BillyONeal
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

Copy link
Copy Markdown
Member

@BillyONeal BillyONeal left a comment

Choose a reason for hiding this comment

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

Thanks!

@BillyONeal BillyONeal merged commit b02375d into microsoft:master Nov 12, 2025
21 checks passed
@dg0yt dg0yt deleted the icu branch November 13, 2025 05:36
geiseri pushed a commit to geiseri/vcpkg that referenced this pull request Dec 18, 2025
Co-authored-by: Osyotr <Osyotr@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants