From df4dadb636b6c2041effc42644eef5cabfff294e Mon Sep 17 00:00:00 2001 From: Schrijvers Luc Date: Sun, 23 Jun 2024 20:17:46 +0200 Subject: [PATCH] icu75, add recipe (#10617) --- dev-libs/icu/icu75-75.1.recipe | 198 ++++++++++++++++++++++ dev-libs/icu/patches/icu75-75.1.patchset | 201 +++++++++++++++++++++++ 2 files changed, 399 insertions(+) create mode 100644 dev-libs/icu/icu75-75.1.recipe create mode 100644 dev-libs/icu/patches/icu75-75.1.patchset diff --git a/dev-libs/icu/icu75-75.1.recipe b/dev-libs/icu/icu75-75.1.recipe new file mode 100644 index 000000000..0209b1d9d --- /dev/null +++ b/dev-libs/icu/icu75-75.1.recipe @@ -0,0 +1,198 @@ +SUMMARY="Libraries to support Unicode and globalization" +DESCRIPTION="International Components for Unicode (ICU) is a mature, widely \ +used set of C/C++ and Java libraries providing Unicode and Globalization \ +support for software applications. ICU is widely portable and gives \ +applications the same results on all platforms and between C/C++ and Java \ +software. +ICU is released under a nonrestrictive open source license that is suitable \ +for use with both commercial software and with other open source or free \ +software. + +Here are a few highlights of the services provided by ICU: + +* Code Page Conversion: Convert text data to or from Unicode and nearly any \ +other character set or encoding. ICU's conversion tables are based on charset \ +data collected by IBM over the course of many decades, and is the most \ +complete available anywhere. +* Collation: Compare strings according to the conventions and standards of a \ +particular language, region or country. ICU's collation is based on the \ +Unicode Collation Algorithm plus locale-specific comparison rules from the \ +Common Locale Data Repository, a comprehensive source for this type of data. +* Formatting: Format numbers, dates, times and currency amounts according the \ +conventions of a chosen locale. This includes translating month and day names \ +into the selected language, choosing appropriate abbreviations, ordering \ +fields correctly, etc. This data also comes from the Common Locale Data \ +Repository. +* Time Calculations: Multiple types of calendars are provided beyond the \ +traditional Gregorian calendar. A thorough set of timezone calculation APIs \ +are provided. +* Unicode Support: ICU closely tracks the Unicode standard, providing easy \ +access to all of the many Unicode character properties, Unicode Normalization, \ +Case Folding and other fundamental operations as specified by the Unicode \ +Standard. +* Regular Expression: ICU's regular expressions fully support Unicode while \ +providing very competitive performance. +* Bidi: support for handling text containing a mixture of left to right \ +(English) and right to left (Arabic or Hebrew) data. +* Text Boundaries: Locate the positions of words, sentences, paragraphs within \ +a range of text, or identify locations that would be suitable for line \ +wrapping when displaying the text." +HOMEPAGE="http://www.icu-project.org" +COPYRIGHT="2016 and later: Unicode, Inc. and others. + 1995-2020 IBM Corporation and others." +LICENSE="ICU" +REVISION="1" +SOURCE_URI="https://github.com/unicode-org/icu/releases/download/release-${portVersion/\./-}/icu4c-${portVersion/\./_}-src.tgz" +CHECKSUM_SHA256="cb968df3e4d2e87e8b11c49a5d01c787bd13b9545280fc6642f826527618caef" +SOURCE_URI_2="https://github.com/unicode-org/icu/releases/download/release-${portVersion/\./-}/icu4c-${portVersion/\./_}-data.zip#noarchive" +CHECKSUM_SHA256_2="a5104212dc317a64f9b035723ea706f2f4fd5a0f37b7923fae7aeb9d1d0061b1" +SOURCE_DIR="icu" +PATCHES="icu75-$portVersion.patchset" + +ARCHITECTURES="?all !x86_gcc2 ?arm ?sparc ?arm64 ?riscv64 x86_64" +SECONDARY_ARCHITECTURES="x86" + +libVersion="$portVersion" +libVersionCompat="$libVersion compat >= ${libVersion%.*}" + +PROVIDES=" + icu75$secondaryArchSuffix = $portVersion compat >= 75 + lib:libicudata$secondaryArchSuffix = $libVersionCompat + lib:libicui18n$secondaryArchSuffix = libVersionCompat + lib:libicuio$secondaryArchSuffix = $libVersionCompat + lib:libicutest$secondaryArchSuffix = $libVersionCompat + lib:libicutu$secondaryArchSuffix = $libVersionCompat + lib:libicuuc$secondaryArchSuffix = $libVersionCompat + " +REQUIRES=" + haiku$secondaryArchSuffix + " + +SUMMARY_devel="The ICU development files" +PROVIDES_devel=" + icu75${secondaryArchSuffix}_devel = $portVersion + cmd:icu_config${secondaryArchSuffix} = $libVersionCompat + devel:libicudata${secondaryArchSuffix} = $libVersionCompat + devel:libicui18n${secondaryArchSuffix} = $libVersionCompat + devel:libicuio${secondaryArchSuffix} = $libVersionCompat + devel:libicutest${secondaryArchSuffix} = $libVersionCompat + devel:libicutu${secondaryArchSuffix} = $libVersionCompat + devel:libicuuc${secondaryArchSuffix} = $libVersionCompat + " +REQUIRES_devel=" + icu75${secondaryArchSuffix} == $portVersion base + " +CONFLICTS_devel=" + icu66${secondaryArchSuffix}_devel + icu70${secondaryArchSuffix}_devel + icu73${secondaryArchSuffix}_devel + icu74${secondaryArchSuffix}_devel + " + +if [ -z "$secondaryArchSuffix" ]; then + SUMMARY_tools="The ICU support tools" + PROVIDES_tools=" + icu75_tools = $portVersion + cmd:derb + cmd:icuexportdata + cmd:escapesrc + cmd:genbrk + cmd:genccode + cmd:gencfu + cmd:gencmn + cmd:gencnval + cmd:gendict + cmd:gennorm2 + cmd:genrb + cmd:gensprep + cmd:icuinfo + cmd:icupkg + cmd:makeconv + cmd:pkgdata + " + REQUIRES_tools=" + icu75 == $portVersion base + haiku + " + CONFLICTS_tools=" + icu66_tools + icu70_tools + icu73_tools + icu74_tools + " +fi + + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + " +BUILD_PREREQUIRES=" + cmd:autoconf + cmd:awk + cmd:gcc$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:make + cmd:pkg_config$secondaryArchSuffix + cmd:python3 + cmd:sed + cmd:unzip + cmd:tar + cmd:gunzip + " + +BUILD() +{ + cd source + + # Created during build and prevent rebuilds. + #rm -rf tools/tzcode/vanguard + #cp ../../../sources-3/tzdata*.tar.gz tools/tzcode/ + + unzip -oq ../../../sources-2/icu4c-*-data.zip + rm -f data/in/icudt??l.dat + autoconf + runConfigure ./configure \ + --disable-samples --disable-extras --with-data-packaging=archive + make $jobArgs +} + +INSTALL() +{ + cd source + make install + + prepareInstalledDevelLibs \ + libicudata \ + libicui18n \ + libicuio \ + libicutest \ + libicutu \ + libicuuc + fixPkgconfig + + # Update icu-config to point to the develop/lib dir + fixDevelopLibDirReferences \ + $binDir/icu-config + + # devel package + packageEntries devel \ + $developDir \ + $libDir/icu \ + $binDir/icu-config \ + $manDir/man1/icu-config.1 + + # tools package + if [ -z "$secondaryArchSuffix" ]; then + packageEntries tools \ + $binDir \ + $manDir + else + rm -r $binDir $manDir + fi +} + +TEST() +{ + cd source + make check VERBOSE=1 +} diff --git a/dev-libs/icu/patches/icu75-75.1.patchset b/dev-libs/icu/patches/icu75-75.1.patchset new file mode 100644 index 000000000..0b5bd940f --- /dev/null +++ b/dev-libs/icu/patches/icu75-75.1.patchset @@ -0,0 +1,201 @@ +From 374a4c070bf870f4a776fe0bbc360b8a1a472f5e Mon Sep 17 00:00:00 2001 +From: Alexander von Gluck IV +Date: Tue, 22 Feb 2022 10:08:48 -0600 +Subject: Import changes from icu66 patchset + + +diff --git a/source/common/putilimp.h b/source/common/putilimp.h +index 5b95a68..f4ca0c4 100644 +--- a/source/common/putilimp.h ++++ b/source/common/putilimp.h +@@ -88,7 +88,7 @@ typedef size_t uintptr_t; + /* Use the predefined value. */ + #elif !U_HAVE_NL_LANGINFO_CODESET + # define U_NL_LANGINFO_CODESET -1 +-#elif U_PLATFORM == U_PF_OS400 ++#elif U_PLATFORM == U_PF_OS400 || defined(__HAIKU__) + /* not defined */ + #else + # define U_NL_LANGINFO_CODESET CODESET +@@ -101,7 +101,7 @@ typedef size_t uintptr_t; + #if U_PLATFORM_HAS_WINUWP_API == 0 + # define U_TZSET _tzset + #endif +-#elif U_PLATFORM == U_PF_OS400 ++#elif U_PLATFORM == U_PF_OS400 || defined(__HAIKU__) + /* not defined */ + #else + # define U_TZSET tzset +diff --git a/source/config/mh-haiku b/source/config/mh-haiku +index bb814cd..965c949 100644 +--- a/source/config/mh-haiku ++++ b/source/config/mh-haiku +@@ -20,7 +20,7 @@ LIBCPPFLAGS = + THREADSCPPFLAGS = + + # +-CPPFLAGS += -D__STDC_ISO_10646__ -DU_CHARSET_IS_UTF8=1 ++CPPFLAGS += -DU_CHARSET_IS_UTF8=1 + + ## Compiler switch to embed a runtime search path + LD_RPATH= +diff --git a/source/configure.ac b/source/configure.ac +index 033cab2..5e3a0ca 100644 +--- a/source/configure.ac ++++ b/source/configure.ac +@@ -324,7 +324,7 @@ if test "$ENABLE_STATIC" = "YES"; then + OLD_LDFLAGS="${LDFLAGS}" + + case "${host}" in +- *-linux*|i*86-*-*bsd*|i*86-pc-gnu) ++ *-linux*|i*86-*-*bsd*|i*86-pc-gnu|*-haiku*) + if test "$GCC" = yes; then + CPPFLAGS="${CPPFLAGS} -ffunction-sections -fdata-sections" + LDFLAGS="${LDFLAGS} -Wl,--gc-sections" +@@ -801,50 +801,12 @@ else + fi + AC_SUBST(U_HAVE_POPEN) + +-AC_CHECK_FUNC(tzset) ++#AC_CHECK_FUNC(tzset) + U_HAVE_TZSET=0 +-if test x$ac_cv_func_tzset = xyes +-then +- U_TZSET=tzset +- U_HAVE_TZSET=1 +-else +- AC_CHECK_FUNC(_tzset) +- if test x$ac_cv_func__tzset = xyes +- then +- U_TZSET=_tzset +- U_HAVE_TZSET=1 +- else +- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_TZSET=0" +- fi +-fi + AC_SUBST(U_HAVE_TZSET) + AC_SUBST(U_TZSET) + + U_HAVE_TZNAME=0 +-AC_CACHE_CHECK(for tzname,ac_cv_var_tzname, +-[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifndef _XOPEN_SOURCE +-#define _XOPEN_SOURCE +-#endif +-#include +-#include +-#ifndef tzname /* For SGI. */ +-extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +-#endif]], [atoi(*tzname);])],[ac_cv_var_tzname=yes],[ac_cv_var_tzname=no])]) +-if test $ac_cv_var_tzname = yes; then +- U_TZNAME=tzname +- U_HAVE_TZNAME=1 +-else +- AC_CACHE_CHECK(for _tzname,ac_cv_var__tzname, +- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include +- #include +- extern char *_tzname[];]], [atoi(*_tzname);])],[ac_cv_var__tzname=yes],[ac_cv_var__tzname=no])]) +- if test $ac_cv_var__tzname = yes; then +- U_TZNAME=_tzname +- U_HAVE_TZNAME=1 +- else +- CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_TZNAME=0" +- fi +-fi + AC_SUBST(U_HAVE_TZNAME) + AC_SUBST(U_TZNAME) + +@@ -1241,6 +1203,7 @@ case "${host}" in + *-*-nto*) platform=U_QNX ;; + *-dec-osf*) platform=U_OSF ;; + *-*-beos) platform=U_BEOS ;; ++ *-*-haiku) platform=U_HAIKU ;; + *-*-irix*) platform=U_IRIX ;; + *-ncr-*) platform=U_MPRAS ;; + *) platform=U_UNKNOWN_PLATFORM ;; +diff --git a/source/tools/tzcode/Makefile.in b/source/tools/tzcode/Makefile.in +index ac51771..3cfca55 100644 +--- a/source/tools/tzcode/Makefile.in ++++ b/source/tools/tzcode/Makefile.in +@@ -137,7 +137,7 @@ $(ICUZDUMPTARG): $(srcdir)/icuzdump.cpp + $(LINK.cc) -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/io -pedantic $(srcdir)/icuzdump.cpp $(LIBICUUC) $(LIBICUDT) $(LIBICUI18N) $(LIBICUIO) $(LIBICUTOOLUTIL) -o $@ + + +-$(TDATA): tdatamarker ++$(TDATA) $(XDATA): tdatamarker + + tdatamarker: $(TZDATA) + mkdir $(VANGUARD_DIR) +-- +2.45.1 + + +From 4324127481800f0295deb4a05ee4e66ce57ce355 Mon Sep 17 00:00:00 2001 +From: Begasus +Date: Fri, 19 May 2023 11:46:23 +0200 +Subject: Fix patchset according to upstream + + +diff --git a/source/common/putilimp.h b/source/common/putilimp.h +index f4ca0c4..50ff4b5 100644 +--- a/source/common/putilimp.h ++++ b/source/common/putilimp.h +@@ -88,7 +88,9 @@ typedef size_t uintptr_t; + /* Use the predefined value. */ + #elif !U_HAVE_NL_LANGINFO_CODESET + # define U_NL_LANGINFO_CODESET -1 +-#elif U_PLATFORM == U_PF_OS400 || defined(__HAIKU__) ++#elif U_PLATFORM == U_PF_OS400 ++ /* not defined */ ++#elif U_PLATFORM == U_HAIKU + /* not defined */ + #else + # define U_NL_LANGINFO_CODESET CODESET +@@ -101,7 +103,9 @@ typedef size_t uintptr_t; + #if U_PLATFORM_HAS_WINUWP_API == 0 + # define U_TZSET _tzset + #endif +-#elif U_PLATFORM == U_PF_OS400 || defined(__HAIKU__) ++#elif U_PLATFORM == U_PF_OS400 ++ /* not defined */ ++#elif U_PLATFORM == U_HAIKU + /* not defined */ + #else + # define U_TZSET tzset +-- +2.45.1 + + +From 359da3a36fad393086c1eda0e9c3dc3e4fab8092 Mon Sep 17 00:00:00 2001 +From: Alexander von Gluck IV +Date: Tue, 6 Feb 2024 15:04:41 -0600 +Subject: common: prevent potential deadlocks back to ICU + + +diff --git a/source/common/putilimp.h b/source/common/putilimp.h +index 50ff4b5..29dcf0e 100644 +--- a/source/common/putilimp.h ++++ b/source/common/putilimp.h +@@ -145,6 +145,8 @@ typedef size_t uintptr_t; + #endif + #elif U_PLATFORM == U_PF_OS400 + /* not defined */ ++#elif U_PLATFORM == U_HAIKU ++ /* not defined, (well it is but a loop back to icu) */ + #else + # define U_TZNAME tzname + #endif +diff --git a/source/configure.ac b/source/configure.ac +index 5e3a0ca..9fdf896 100644 +--- a/source/configure.ac ++++ b/source/configure.ac +@@ -805,6 +805,7 @@ AC_SUBST(U_HAVE_POPEN) + U_HAVE_TZSET=0 + AC_SUBST(U_HAVE_TZSET) + AC_SUBST(U_TZSET) ++CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_TZSET=0" + + U_HAVE_TZNAME=0 + AC_SUBST(U_HAVE_TZNAME) +-- +2.45.1 +