From ec52d16424071cef7ada6485fd1514a4f64c8964 Mon Sep 17 00:00:00 2001 From: Paweł Hajdan Date: Wed, 12 Oct 2011 22:04:09 +0000 Subject: Backport an upstream patch to fix Gentoo bug #380827 by Piotr Mitas. (Portage version: 2.1.10.11/cvs/Linux i686) --- dev-libs/icu/ChangeLog | 8 ++- dev-libs/icu/files/icu-4.8.1-fix_nan.patch | 68 ++++++++++++++++++++++ dev-libs/icu/icu-4.8.1-r2.ebuild | 91 ++++++++++++++++++++++++++++++ 3 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 dev-libs/icu/files/icu-4.8.1-fix_nan.patch create mode 100644 dev-libs/icu/icu-4.8.1-r2.ebuild (limited to 'dev-libs') diff --git a/dev-libs/icu/ChangeLog b/dev-libs/icu/ChangeLog index e60a53b7d7ba..0fa5897b2df3 100644 --- a/dev-libs/icu/ChangeLog +++ b/dev-libs/icu/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for dev-libs/icu # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-libs/icu/ChangeLog,v 1.159 2011/09/05 16:50:52 scarabeus Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-libs/icu/ChangeLog,v 1.160 2011/10/12 22:04:09 phajdan.jr Exp $ + +*icu-4.8.1-r2 (12 Oct 2011) + + 12 Oct 2011; Pawel Hajdan jr +icu-4.8.1-r2.ebuild, + +files/icu-4.8.1-fix_nan.patch: + Backport an upstream patch to fix Gentoo bug #380827 by Piotr Mitas. *icu-4.8.1-r1 (05 Sep 2011) diff --git a/dev-libs/icu/files/icu-4.8.1-fix_nan.patch b/dev-libs/icu/files/icu-4.8.1-fix_nan.patch new file mode 100644 index 000000000000..971d66d8bc30 --- /dev/null +++ b/dev-libs/icu/files/icu-4.8.1-fix_nan.patch @@ -0,0 +1,68 @@ +https://bugs.gentoo.org/show_bug.cgi?id=380827 +http://bugs.icu-project.org/trac/ticket/8561 +http://bugs.icu-project.org/trac/changeset/30689 +http://code.google.com/p/chromium/issues/detail?id=92847 + +--- source/i18n/digitlst.cpp.orig 2011-07-19 23:16:00.000000000 +0200 ++++ source/i18n/digitlst.cpp 2011-10-12 23:47:08.000000000 +0200 +@@ -60,6 +60,18 @@ + + U_NAMESPACE_BEGIN + ++static void ++loadDecimalChar() { ++ if (gDecimal == 0) { ++ char rep[MAX_DIGITS]; ++ // For machines that decide to change the decimal on you, ++ // and try to be too smart with localization. ++ // This normally should be just a '.'. ++ sprintf(rep, "%+1.1f", 1.0); ++ gDecimal = rep[2]; ++ } ++} ++ + // ------------------------------------- + // default constructor + +@@ -408,15 +420,6 @@ + } + DigitList *nonConstThis = const_cast(this); + +- if (gDecimal == 0) { +- char rep[MAX_DIGITS]; +- // For machines that decide to change the decimal on you, +- // and try to be too smart with localization. +- // This normally should be just a '.'. +- sprintf(rep, "%+1.1f", 1.0); +- gDecimal = rep[2]; +- } +- + if (isZero()) { + nonConstThis->fDouble = 0.0; + if (decNumberIsNegative(fDecNumber)) { +@@ -451,6 +454,7 @@ + } + U_ASSERT(uprv_strlen(&s[0]) < MAX_DBL_DIGITS+18); + ++ loadDecimalChar(); + if (gDecimal != '.') { + char *decimalPt = strchr(s, '.'); + if (decimalPt != NULL) { +@@ -741,6 +745,17 @@ + sprintf(rep, "%+1.*e", MAX_DBL_DIGITS - 1, source); + U_ASSERT(uprv_strlen(rep) < sizeof(rep)); + ++ // uprv_decNumberFromString() will parse the string expecting '.' as a ++ // decimal separator, however sprintf() can use ',' in certain locales. ++ // Overwrite a different decimal separator with '.' here before proceeding. ++ loadDecimalChar(); ++ if (gDecimal != '.') { ++ char *decimalPt = strchr(rep, gDecimal); ++ if (decimalPt != NULL) { ++ *decimalPt = '.'; ++ } ++ } ++ + // Create a decNumber from the string. + uprv_decNumberFromString(fDecNumber, rep, &fContext); + uprv_decNumberTrim(fDecNumber); diff --git a/dev-libs/icu/icu-4.8.1-r2.ebuild b/dev-libs/icu/icu-4.8.1-r2.ebuild new file mode 100644 index 000000000000..5cbd8276bad2 --- /dev/null +++ b/dev-libs/icu/icu-4.8.1-r2.ebuild @@ -0,0 +1,91 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-libs/icu/icu-4.8.1-r2.ebuild,v 1.1 2011/10/12 22:04:09 phajdan.jr Exp $ + +EAPI="3" + +inherit versionator + +MAJOR_VERSION="$(get_version_component_range 1)" +MINOR_VERSION="$(get_version_component_range 2)" +if [[ "${PV}" =~ ^[[:digit:]]+\.[[:digit:]]+(_rc[[:digit:]]*)?$ ]]; then + MICRO_VERSION="0" +else + MICRO_VERSION="$(get_version_component_range 3)" +fi + +DESCRIPTION="International Components for Unicode" +HOMEPAGE="http://www.icu-project.org/" + +BASE_URI="http://download.icu-project.org/files/icu4c/${PV/_/}" +SRC_ARCHIVE="icu4c-${PV//./_}-src.tgz" +DOCS_ARCHIVE="icu4c-${PV//./_}-docs.zip" + +SRC_URI="${BASE_URI}/${SRC_ARCHIVE} + doc? ( ${BASE_URI}/${DOCS_ARCHIVE} )" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd" +IUSE="debug doc examples static-libs" + +DEPEND="doc? ( app-arch/unzip )" +RDEPEND="" + +S="${WORKDIR}/${PN}/source" + +QA_DT_NEEDED="/usr/lib.*/libicudata\.so\.${MAJOR_VERSION}${MINOR_VERSION}\.${MICRO_VERSION}" + +src_unpack() { + unpack "${SRC_ARCHIVE}" + if use doc; then + mkdir docs + pushd docs > /dev/null + unpack "${DOCS_ARCHIVE}" + popd > /dev/null + fi +} + +src_prepare() { + # Do not hardcode flags into icu-config. + # https://ssl.icu-project.org/trac/ticket/6102 + local variable + for variable in CFLAGS CPPFLAGS CXXFLAGS FFLAGS LDFLAGS; do + sed -i -e "/^${variable} =.*/s:@${variable}@::" config/Makefile.inc.in || die "sed failed" + done + + epatch "${FILESDIR}/icu-4.8.1-fix_binformat_fonts.patch" + epatch "${FILESDIR}/icu-4.8.1-fix_nan.patch" +} + +src_configure() { + econf \ + $(use_enable debug) \ + $(use_enable examples samples) \ + $(use_enable static-libs static) +} + +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 -j1 check || die "emake check failed" +} + +src_install() { + emake DESTDIR="${D}" install || die "emake install failed" + + dohtml ../readme.html + dodoc ../unicode-license.txt + if use doc; then + insinto /usr/share/doc/${PF}/html/api + doins -r "${WORKDIR}/docs/"* || die "doins failed" + fi +} -- cgit v1.2.3-65-gdbad