mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-06 12:58:16 -07:00
@@ -1,2 +1,4 @@
|
||||
DIST icu4c-76_1-src.tgz 27437767 BLAKE2B 67223391123d2d2c75107fc4b87510b1d8d520301a863032951b894366ec8b414692ee3fa2acd652289b0ae2f60946d71bf9ca21ed87de40825e2fd02634c658 SHA512 b702ab62fb37a1574d5f4a768326d0f8fa30d9db5b015605b5f8215b5d8547f83d84880c586d3dcc7b6c76f8d47ef34e04b0f51baa55908f737024dd79a42a6c
|
||||
DIST icu4c-76_1-src.tgz.asc 228 BLAKE2B 37a058e22da5ad122e3df6de2cb3979fa734b32e4e81d91201d2095fbf20ef2dbcba4579efab3041193e49c388d09618c965ddf082a8362aa82b694184804fa7 SHA512 c4bd81d4e98d7e37a6ba9540748c4ce1eb740d70bd689a13e2e51da76503b6e0287afd4d1cd3af4540210f37626dec998fcbd7269976cb801f238b789e604489
|
||||
DIST icu4c-77_1-src.tgz 27384265 BLAKE2B 7ee4457dbb9abfee543aa91314e052282fb1c73e5fd9d9b21777d2ea32ae29c3eb3d83a78aafc7d00530435c014aa0f6196faf82ed67593c844e28395ab4720e SHA512 a47d6d9c327d037a05ea43d1d1a06b2fd757cc02a94f7c1a238f35cfc3dfd4ab78d0612790f3a3cca0292c77412a9c2c15c8f24b718f79a857e007e66f07e7cd
|
||||
DIST icu4c-77_1-src.tgz.asc 228 BLAKE2B faabf00cb79427b14286e24770cbed3cd81a367bb5e9dc935c8fa5b8d67d7401fa82425b70259740a4136bd52fe9887bf0494195c6941454cadabec475d5c0e5 SHA512 7051e53f5a82a9b72a07adcc9751921c0afee56c733ccfe8ed94701606cadaf3b85135d5815dbe1acddb64ffef30d3d9fc5f37016b20dcd07685baa06d633759
|
||||
|
||||
30
dev-libs/icu/files/icu-77.1-invalid-malloc.patch
Normal file
30
dev-libs/icu/files/icu-77.1-invalid-malloc.patch
Normal file
@@ -0,0 +1,30 @@
|
||||
https://unicode-org.atlassian.net/browse/ICU-23120
|
||||
https://github.com/unicode-org/icu/pull/3496
|
||||
|
||||
From a0d280e4b4df6c09dfd82b63499f308d416c9b60 Mon Sep 17 00:00:00 2001
|
||||
From: David Seifert <soap@gentoo.org>
|
||||
Date: Fri, 16 May 2025 12:55:47 +0200
|
||||
Subject: [PATCH] ICU-23120 Fix malloc request larger than PTRDIFF_MAX bytes
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
* glibc does not allow allocations that exceed PTRDIFF_MAX bytes:
|
||||
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9bf8e29ca136094f73f69f725f15c51facc97206
|
||||
* Without this, we get compile failures on 32-bit platforms:
|
||||
|
||||
work/icu/source/test/intltest/ustrtest.cpp: In member function ‘void UnicodeStringTest::TestLargeMemory()’:
|
||||
work/icu/source/test/intltest/ustrtest.cpp:2360:37: error: size ‘4294967286’ of array exceeds maximum object size ‘2147483647’
|
||||
2360 | char16_t *buf = new char16_t[len];
|
||||
| ^
|
||||
--- a/test/intltest/ustrtest.cpp
|
||||
+++ b/test/intltest/ustrtest.cpp
|
||||
@@ -2356,7 +2356,7 @@ void UnicodeStringTest::TestLargeMemory() {
|
||||
#if U_PLATFORM_IS_LINUX_BASED || U_PLATFORM_IS_DARWIN_BASED
|
||||
if(quick) { return; }
|
||||
IcuTestErrorCode status(*this, "TestLargeMemory");
|
||||
- constexpr uint32_t len = 2147483643;
|
||||
+ constexpr uint32_t len = (PTRDIFF_MAX - 10) / sizeof(char16_t);
|
||||
char16_t *buf = new char16_t[len];
|
||||
if (buf == nullptr) { return; }
|
||||
uprv_memset(buf, 0x4e, len * 2);
|
||||
174
dev-libs/icu/icu-77.1.ebuild
Normal file
174
dev-libs/icu/icu-77.1.ebuild
Normal file
@@ -0,0 +1,174 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Please bump with dev-libs/icu-layoutex
|
||||
|
||||
PYTHON_COMPAT=( python3_{10..13} )
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/icu.asc
|
||||
inherit autotools multilib-minimal python-any-r1 toolchain-funcs verify-sig
|
||||
|
||||
MY_PV=${PV/_rc/-rc}
|
||||
MY_PV=${MY_PV//./_}
|
||||
|
||||
DESCRIPTION="International Components for Unicode"
|
||||
HOMEPAGE="https://icu.unicode.org/"
|
||||
SRC_URI="https://github.com/unicode-org/icu/releases/download/release-${MY_PV/_/-}/icu4c-${MY_PV/-rc/rc}-src.tgz"
|
||||
SRC_URI+=" verify-sig? ( https://github.com/unicode-org/icu/releases/download/release-${MY_PV/_/-}/icu4c-${MY_PV/-rc/rc}-src.tgz.asc )"
|
||||
S="${WORKDIR}"/${PN}/source
|
||||
|
||||
if [[ ${PV} != *_rc* ]] ; then
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
fi
|
||||
LICENSE="BSD"
|
||||
SLOT="0/${PV%.*}"
|
||||
IUSE="debug doc examples static-libs test"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
BDEPEND="
|
||||
${PYTHON_DEPS}
|
||||
dev-build/autoconf-archive
|
||||
virtual/pkgconfig
|
||||
doc? ( app-text/doxygen[dot] )
|
||||
verify-sig? ( >=sec-keys/openpgp-keys-icu-20241110 )
|
||||
"
|
||||
|
||||
MULTILIB_CHOST_TOOLS=(
|
||||
/usr/bin/icu-config
|
||||
)
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-76.1-remove-bashisms.patch"
|
||||
"${FILESDIR}/${PN}-64.2-darwin.patch"
|
||||
"${FILESDIR}/${PN}-68.1-nonunicode.patch"
|
||||
|
||||
# Undo change for now which exposes underlinking in consumers;
|
||||
# revisit when things are a bit quieter and tinderbox its removal.
|
||||
"${FILESDIR}/${PN}-76.1-undo-pkgconfig-change-for-now.patch"
|
||||
# https://unicode-org.atlassian.net/browse/ICU-23120
|
||||
"${FILESDIR}/${PN}-77.1-invalid-malloc.patch"
|
||||
)
|
||||
|
||||
HTML_DOCS=( ../readme.html )
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
# TODO: switch uconfig.h hacks to use uconfig_local
|
||||
#
|
||||
# Disable renaming as it assumes stable ABI and that consumers
|
||||
# won't use unofficial APIs. We need this despite the configure argument.
|
||||
sed -i \
|
||||
-e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
|
||||
common/unicode/uconfig.h || die
|
||||
#
|
||||
# ODR violations, experimental API
|
||||
sed -i \
|
||||
-e "s/# define UCONFIG_NO_MF2 0/#define UCONFIG_NO_MF2 1/" \
|
||||
common/unicode/uconfig.h || die
|
||||
|
||||
# Fix linking of icudata
|
||||
sed -i \
|
||||
-e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
|
||||
config/mh-linux || die
|
||||
|
||||
# Append doxygen configuration to configure
|
||||
sed -i \
|
||||
-e 's:icudefs.mk:icudefs.mk Doxyfile:' \
|
||||
configure.ac || die
|
||||
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
MAKEOPTS+=" VERBOSE=1"
|
||||
|
||||
if tc-is-cross-compiler; then
|
||||
mkdir "${WORKDIR}"/host || die
|
||||
pushd "${WORKDIR}"/host >/dev/null || die
|
||||
|
||||
CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
|
||||
CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
|
||||
RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
|
||||
"${S}"/configure --disable-renaming --disable-debug \
|
||||
--disable-samples --enable-static || die
|
||||
emake
|
||||
|
||||
popd >/dev/null || die
|
||||
fi
|
||||
|
||||
multilib-minimal_src_configure
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local myeconfargs=(
|
||||
--disable-renaming
|
||||
--disable-samples
|
||||
# TODO: Merge with dev-libs/icu-layoutex
|
||||
# Planned to do this w/ 73.2 but seem to get test failures
|
||||
# only with --enable-layoutex.
|
||||
--disable-layoutex
|
||||
$(use_enable debug)
|
||||
$(use_enable static-libs static)
|
||||
$(use_enable test tests)
|
||||
$(multilib_native_use_enable examples samples)
|
||||
)
|
||||
|
||||
#if use test ; then
|
||||
# myeconfargs+=(
|
||||
# --enable-extras
|
||||
# --enable-tools
|
||||
# )
|
||||
#else
|
||||
# myeconfargs+=(
|
||||
# $(multilib_native_enable extras)
|
||||
# $(multilib_native_enable tools)
|
||||
# )
|
||||
#fi
|
||||
|
||||
tc-is-cross-compiler && myeconfargs+=(
|
||||
--with-cross-build="${WORKDIR}"/host
|
||||
)
|
||||
|
||||
# Work around cross-endian testing failures with LTO, bug #757681
|
||||
if tc-is-cross-compiler && tc-is-lto ; then
|
||||
myeconfargs+=( --disable-strict )
|
||||
fi
|
||||
|
||||
# ICU tries to use clang by default
|
||||
tc-export CC CXX
|
||||
|
||||
# Make sure we configure with the same shell as we run icu-config
|
||||
# with, or ECHO_N, ECHO_T and ECHO_C will be wrongly defined
|
||||
export CONFIG_SHELL="${EPREFIX}/bin/sh"
|
||||
# Probably have no /bin/sh in prefix-chain
|
||||
[[ -x ${CONFIG_SHELL} ]] || CONFIG_SHELL="${BASH}"
|
||||
|
||||
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
default
|
||||
|
||||
if multilib_is_native_abi && use doc; then
|
||||
doxygen -u Doxyfile || die
|
||||
doxygen Doxyfile || die
|
||||
|
||||
HTML_DOCS+=( "${BUILD_DIR}"/doc/html/. )
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
# INTLTEST_OPTS: intltest options
|
||||
# -e: Exhaustive testing
|
||||
# -l: Reporting of memory leaks
|
||||
# -v: Increased verbosity
|
||||
# IOTEST_OPTS: iotest options
|
||||
# -e: Exhaustive testing
|
||||
# -v: Increased verbosity
|
||||
# CINTLTST_OPTS: cintltst options
|
||||
# -e: Exhaustive testing
|
||||
# -v: Increased verbosity
|
||||
emake check
|
||||
}
|
||||
Reference in New Issue
Block a user