From bd0972c3d49f996a76d564561ca3c33a00956ab3 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Sun, 5 Nov 2017 21:59:58 +0100 Subject: [PATCH] icu: add disabled recipe for version 60.1. --- dev-libs/icu/icu-60.1.recipe | 187 +++++++++++++++++++++++++ dev-libs/icu/patches/icu-60.1.patchset | 173 +++++++++++++++++++++++ 2 files changed, 360 insertions(+) create mode 100644 dev-libs/icu/icu-60.1.recipe create mode 100644 dev-libs/icu/patches/icu-60.1.patchset diff --git a/dev-libs/icu/icu-60.1.recipe b/dev-libs/icu/icu-60.1.recipe new file mode 100644 index 000000000..9f6e9967a --- /dev/null +++ b/dev-libs/icu/icu-60.1.recipe @@ -0,0 +1,187 @@ +SUMMARY="Libraries to support Unicode and globalization" +SUMMARY_devel="The ICU development files" +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="1995-2017 IBM Corporation and others." +LICENSE="ICU" +REVISION="1" +SOURCE_URI="https://ssl.icu-project.org/files/icu4c/$portVersion/icu4c-60_1-src.tgz" +SOURCE_URI_2="http://www.iana.org/time-zones/repository/releases/tzdata2017c.tar.gz#noarchive" +SOURCE_URI_3="https://ssl.icu-project.org/files/icu4c/$portVersion/icu4c-60_1-data.zip#noarchive" +CHECKSUM_SHA256="f8f5a6c8fbf32c015a467972bdb1477dc5f5d5dfea908b6ed218715eeb5ee225" +CHECKSUM_SHA256_2="d6543f92a929826318e2f44ff3a7611ce5f565a43e10250b42599d0ba4cbd90b" +CHECKSUM_SHA256_3="bbb920c6e67de8d9dcc0f0ec5554870170d0cb5eff6f0bc9881efc605f68210c" +SOURCE_DIR="icu" +PATCHES="icu-$portVersion.patchset" + +ARCHITECTURES="?x86_gcc2 ?x86 ?x86_64 ?arm" +SECONDARY_ARCHITECTURES="?x86_gcc2 ?x86" + +PROVIDES=" + icu$secondaryArchSuffix = $portVersion compat >= 60 + lib:libicudata$secondaryArchSuffix = $portVersion compat >= 60 + lib:libicui18n$secondaryArchSuffix = $portVersion compat >= 60 + lib:libicuio$secondaryArchSuffix = $portVersion compat >= 60 + lib:libicutest$secondaryArchSuffix = $portVersion compat >= 60 + lib:libicutu$secondaryArchSuffix = $portVersion compat >= 60 + lib:libicuuc$secondaryArchSuffix = $portVersion compat >= 60 + " +REQUIRES=" + haiku$secondaryArchSuffix + " + +PROVIDES_devel=" + icu${secondaryArchSuffix}_devel = $portVersion + cmd:icu_config${secondaryArchSuffix} = $portVersion compat >= 60 + devel:libicudata${secondaryArchSuffix} = $portVersion compat >= 60 + devel:libicui18n${secondaryArchSuffix} = $portVersion compat >= 60 + devel:libicuio${secondaryArchSuffix} = $portVersion compat >= 60 + devel:libicutest${secondaryArchSuffix} = $portVersion compat >= 60 + devel:libicutu${secondaryArchSuffix} = $portVersion compat >= 60 + devel:libicuuc${secondaryArchSuffix} = $portVersion compat >= 60 + " +REQUIRES_devel=" + icu${secondaryArchSuffix} == $portVersion base + " + +if [ -z "$secondaryArchSuffix" ]; then + SUMMARY_tools="The ICU support tools" + PROVIDES_tools=" + icu_tools = $portVersion + cmd:derb + 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=" + icu == $portVersion base + haiku + " +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:sed + cmd:unzip + cmd:tar + cmd:gunzip + " + +BUILD() +{ + cd source + cp ../../../sources-2/tzdata*.tar.gz tools/tzcode/ + unzip -oq ../../../sources-3/icu4c-*-data.zip + rm -f data/in/icudt??l.dat + autoconf + runConfigure ./configure \ + --disable-samples --disable-extras + 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 + + # Rename the data/icu directory when built for the secondary architecture, + # so that it doesn't clash with the primary package's. + if [ -n "$secondaryArchSuffix" ]; then + mv $dataDir/icu $dataDir/icu$secondaryArchSuffix + # TODO: The icu-config, the Makefile.inc, and possibly other files need + # to be adjusted as well. They are probably also not quite correct for + # the primary architecture (lib vs. develop/lib). + fi + + # devel package + packageEntries devel \ + $developDir \ + $dataDir/icu$secondaryArchSuffix \ + $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 +} diff --git a/dev-libs/icu/patches/icu-60.1.patchset b/dev-libs/icu/patches/icu-60.1.patchset new file mode 100644 index 000000000..62815e1d9 --- /dev/null +++ b/dev-libs/icu/patches/icu-60.1.patchset @@ -0,0 +1,173 @@ +From 65d0fae2dc1ddae7ddfd9777fb7be1eb3631067d Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sun, 19 Apr 2015 13:38:07 +0200 +Subject: buildsystem configuration for Haiku + + +diff --git a/source/acinclude.m4 b/source/acinclude.m4 +index 5c8fda7..e73ee7a 100644 +--- a/source/acinclude.m4 ++++ b/source/acinclude.m4 +@@ -463,6 +463,9 @@ AC_DEFUN([AC_CHECK_STRICT_COMPILE], + if test "$GCC" = yes + then + case "${host}" in ++ *-*-haiku*) ++ CFLAGS="$CFLAGS -std=c9x" ++ ;; + *-*-solaris*) + # Don't use -std=c99 on Solaris because of timezone check fails + ;; +-- +2.14.2 + + +From ab4897a6025b583c4656361f2a406b5eb73f5b80 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Fri, 3 Oct 2014 11:07:01 +0200 +Subject: Don't call tzset and tzname on Haiku + +While they exist, they are implemented using ICU, and trying to use them +within ICU results in a deadlock. + +diff --git a/source/common/putilimp.h b/source/common/putilimp.h +index eb9b538..6d9ca65 100644 +--- a/source/common/putilimp.h ++++ b/source/common/putilimp.h +@@ -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 +@@ -139,7 +139,7 @@ typedef size_t uintptr_t; + #if U_PLATFORM_HAS_WINUWP_API == 0 + # define U_TZNAME _tzname + #endif +-#elif U_PLATFORM == U_PF_OS400 ++#elif U_PLATFORM == U_PF_OS400 || defined(__HAIKU__) + /* not defined */ + #else + # define U_TZNAME tzname +diff --git a/source/configure.ac b/source/configure.ac +index a2fdf84..3497a81 100644 +--- a/source/configure.ac ++++ b/source/configure.ac +@@ -803,50 +803,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) + +-- +2.14.2 + + +From c17150775a84a5816286d804dd7322fd2413e84f Mon Sep 17 00:00:00 2001 +From: Oliver Tappe +Date: Fri, 14 Nov 2014 23:56:19 +0100 +Subject: Restore missing parts for proper Haiku port. + +* Actually set the platform to U_HAIKU for Haiku target. +* Use gcc to build icudt54l_dat.o for Haiku target. + +diff --git a/source/configure.ac b/source/configure.ac +index 3497a81..f402219 100644 +--- a/source/configure.ac ++++ b/source/configure.ac +@@ -636,7 +636,7 @@ AC_MSG_CHECKING([for genccode assembly]) + # Check to see if genccode can generate simple assembly. + GENCCODE_ASSEMBLY= + case "${host}" in +-*-linux*|*-kfreebsd*-gnu*|i*86-*-*bsd*|i*86-pc-gnu) ++*-linux*|*-kfreebsd*-gnu*|i*86-*-*bsd*|i*86-pc-gnu|*-haiku*) + if test "$GCC" = yes; then + # We're using gcc, and the simple -a gcc command line works for genccode + GENCCODE_ASSEMBLY="-a gcc" +@@ -1239,6 +1239,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 ;; +-- +2.14.2 + + +From 50f4c8d8e7fd9c0e08d16163d50a5463afe58cbb Mon Sep 17 00:00:00 2001 +From: Michael Lotz +Date: Sat, 19 Dec 2015 14:44:35 +0000 +Subject: Fix missing dependency of yearistype.sh to tzdata extraction. + +This caused parallel builds to fail because the script file wasn't yet +extracted when it was copied. The regression was introduced in r26995 +when the dependency was reused for TDATA which yearistype.sh isn't part +of. + +diff --git a/source/tools/tzcode/Makefile.in b/source/tools/tzcode/Makefile.in +index f8ab02d..1b33375 100644 +--- a/source/tools/tzcode/Makefile.in ++++ b/source/tools/tzcode/Makefile.in +@@ -131,7 +131,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) + gunzip -d < $(TZDATA) | tar xf - --exclude=Makefile +-- +2.14.2 +