Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Dec 2009 16:29:08 GMT
From:      Andrei Lavreniyuk <andy.lavr@reactor-xg.kiev.ua>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/141324: [UPDATE] devel/icu: update to 4.2.1
Message-ID:  <200912091629.nB9GT8C4013029@www.freebsd.org>
Resent-Message-ID: <200912091630.nB9GU1us057516@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         141324
>Category:       ports
>Synopsis:       [UPDATE] devel/icu: update to 4.2.1
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Dec 09 16:30:01 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Andrei Lavreniyuk
>Release:        FreeBSD 8.0-STABLE
>Organization:
Technica-03, Inc.
>Environment:
FreeBSD datacenter.technica-03.local 8.0-STABLE FreeBSD 8.0-STABLE #0: Sat Dec  5 23:38:56 EET 2009     root@datacenter.technica-03.local:/usr/obj/usr/src/sys/SMP64  amd64
>Description:
ICU is the premier library for software internationalization. ICU 4.2 is a major reference release of ICU, with new features, new APIs, and many bug fixes in data and code. 
Major changes in ICU 4.2 include the following:
Common Changes 
Locale Data: ICU uses and supports data from Common Locale Data Repository (CLDR) 1.7 , which includes data for 146 languages, 159 territories, 468 locales- 21% more locale data than the previous release. 
Number system support and the number keyword.
Number system override in DateFormat
Numerics used by Hebrew Calendar date in Hebrew locale
BCP47 (language tag) / Locale transformation
BCP47 mapping of LDML keywords
Encoding selector: Return a list of charsets that can handle the input text
Simple duration: Implementation of CLDR duration format
Available/Preferred keywords for a locale (Calendar, Collation, and Currency)
StringPrep standard profiles: RFC3491 NAMEPREP, RFC3530 NFS4, RFC3722 iSCSI, RFC3920 NodePrep/ResourcePrep, RFC4011 MIB, RFC4013 SASLprep, RFC4505 trace and RFC4518 LDAPprep
Miscellaneous Arabic shaping enhancements
UTF-8 friendly internal data structure for Unicode data lookup
API to get CLDR version used by ICU
ISCII charset converter updates (added Gurumukhi, other updates)
Performance improvements in Time Zone Name format/parse, and in DateIntervalFormat construction
ICU4C Specific Changes 
Unicode spoof (confusable) detection (UTS#39)
ICU4J Specific Changes 
LocaleBuilder for building well-formed locales (ICU4J only)
MathContext support for BigDecimal formatting in DecimalFormat
LMBCS charset converter
Updates in ICU 4.2.1 
Common Locale Data Repository (CLDR) 1.7.1
Timezone database version 2009j
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -ruN icu.bak/Makefile icu/Makefile
--- icu.bak/Makefile	2009-09-15 17:11:00.000000000 +0300
+++ icu/Makefile	2009-12-09 14:58:26.000000000 +0200
@@ -6,8 +6,7 @@
 #
 
 PORTNAME=	icu
-PORTVERSION=	3.8.1
-PORTREVISION=	2
+PORTVERSION=	4.2.1
 CATEGORIES=	devel
 MASTER_SITES=	SF/${PORTNAME}/ICU4C/${PORTVERSION}
 DISTNAME=	icu4c-${PORTVERSION:S/./_/g}
diff -ruN icu.bak/distinfo icu/distinfo
--- icu.bak/distinfo	2008-02-07 00:00:00.000000000 +0200
+++ icu/distinfo	2009-12-09 10:56:17.000000000 +0200
@@ -1,3 +1,3 @@
-MD5 (icu4c-3_8_1-src.tgz) = a827dbc9d909febd4ec39b90386868ba
-SHA256 (icu4c-3_8_1-src.tgz) = 16dda09dff3f770e629313a4c50a82fee88baf87d89a3bb2a28806be07766cee
-SIZE (icu4c-3_8_1-src.tgz) = 10998841
+MD5 (icu4c-4_2_1-src.tgz) = e3738abd0d3ce1870dc1fd1f22bba5b1
+SHA256 (icu4c-4_2_1-src.tgz) = 814de31e1413df945cdd34939b424c4cf7a94d1c481f2d44c99c8ca52b288063
+SIZE (icu4c-4_2_1-src.tgz) = 13161131
diff -ruN icu.bak/files/patch-CVE-2007-4770 icu/files/patch-CVE-2007-4770
--- icu.bak/files/patch-CVE-2007-4770	2008-02-18 00:00:00.000000000 +0200
+++ icu/files/patch-CVE-2007-4770	1970-01-01 03:00:00.000000000 +0300
@@ -1,304 +0,0 @@
-Index: /icu/branches/maint/maint-3-8/source/i18n/regexcmp.cpp
-===================================================================
---- i18n/regexcmp.cpp (revision 21805)
-+++ i18n/regexcmp.cpp (revision 23292)
-@@ -3,5 +3,5 @@
- //  file:  regexcmp.cpp
- //
--//  Copyright (C) 2002-2007 International Business Machines Corporation and others.
-+//  Copyright (C) 2002-2008 International Business Machines Corporation and others.
- //  All Rights Reserved.
- //
-@@ -1187,12 +1187,15 @@
-             //  we fill the operand with the capture group number.  At the end
-             //  of compilation, it will be changed to the variable's location.
--            U_ASSERT(groupNum > 0);
--            int32_t  op;
--            if (fModeFlags & UREGEX_CASE_INSENSITIVE) {
--                op = URX_BUILD(URX_BACKREF_I, groupNum);
-+            if (groupNum < 1) { 
-+                error(U_REGEX_INVALID_BACK_REF);
-             } else {
--                op = URX_BUILD(URX_BACKREF, groupNum);
--            }
--            fRXPat->fCompiledPat->addElement(op, *fStatus);
-+                int32_t  op;
-+                if (fModeFlags & UREGEX_CASE_INSENSITIVE) {
-+                    op = URX_BUILD(URX_BACKREF_I, groupNum);
-+                } else {
-+                    op = URX_BUILD(URX_BACKREF, groupNum);
-+                }
-+                fRXPat->fCompiledPat->addElement(op, *fStatus);
-+            }
-         }
-         break;
-Index: /icu/branches/maint/maint-3-8/source/i18n/rematch.cpp
-===================================================================
---- i18n/rematch.cpp (revision 21973)
-+++ i18n/rematch.cpp (revision 23292)
-@@ -1,5 +1,5 @@
- /*
- **************************************************************************
--*   Copyright (C) 2002-2007 International Business Machines Corporation  *
-+*   Copyright (C) 2002-2008 International Business Machines Corporation  *
- *   and others. All rights reserved.                                     *
- **************************************************************************
-@@ -30,4 +30,13 @@
- 
- U_NAMESPACE_BEGIN
-+
-+// Limit the size of the back track stack, to avoid system failures caused
-+//   by heap exhaustion.  Units are in 32 bit words, not bytes.
-+// This value puts ICU's limits higher than most other regexp implementations,
-+//  which use recursion rather than the heap, and take more storage per
-+//  backtrack point.
-+// This constant is _temporary_.  Proper API to control the value will added.
-+//
-+static const int32_t BACKTRACK_STACK_CAPACITY = 8000000;
- 
- //-----------------------------------------------------------------------------
-@@ -54,6 +63,7 @@
-     if (fStack == NULL || fData == NULL) {
-         fDeferredStatus = U_MEMORY_ALLOCATION_ERROR;
--    }
--        
-+    } else {
-+        fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY);
-+    }
-     reset(RegexStaticSets::gStaticSets->fEmptyString);
- }
-@@ -79,4 +89,6 @@
-     if (fStack == NULL || fData == NULL) {
-         status = U_MEMORY_ALLOCATION_ERROR;
-+    } else {
-+        fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY);
-     }
-     reset(input);
-@@ -103,4 +115,6 @@
-     if (fStack == NULL || fData == NULL) {
-         status = U_MEMORY_ALLOCATION_ERROR;
-+    } else {
-+        fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY);
-     }
-     reset(RegexStaticSets::gStaticSets->fEmptyString);
-@@ -1015,4 +1029,12 @@
-     // push storage for a new frame. 
-     int32_t *newFP = fStack->reserveBlock(frameSize, status);
-+    if (newFP == NULL) {
-+        // Heap allocation error on attempted stack expansion.
-+        // We need to return a writable stack frame, so just return the
-+        //    previous frame.  The match operation will stop quickly
-+        //    becuase of the error status, after which the frame will never
-+        //    be looked at again.
-+        return fp;
-+    }
-     fp = (REStackFrame *)(newFP - frameSize);  // in case of realloc of stack.
-     
-@@ -1030,6 +1052,6 @@
-     return (REStackFrame *)newFP;
- }
--    
--            
-+
-+
- //--------------------------------------------------------------------------------
- //
-@@ -2262,4 +2284,5 @@
- 
-         if (U_FAILURE(status)) {
-+            isMatch = FALSE;
-             break;
-         }
-Index: /icu/branches/maint/maint-3-8/source/test/intltest/regextst.h
-===================================================================
---- test/intltest/regextst.h (revision 22001)
-+++ test/intltest/regextst.h (revision 23292)
-@@ -1,5 +1,5 @@
- /********************************************************************
-  * COPYRIGHT: 
-- * Copyright (c) 2002-2007, International Business Machines Corporation and
-+ * Copyright (c) 2002-2008, International Business Machines Corporation and
-  * others. All Rights Reserved.
-  ********************************************************************/
-@@ -31,4 +31,5 @@
-     virtual void Errors();
-     virtual void PerlTests();
-+    virtual void Bug6149();
- 
-     // The following functions are internal to the regexp tests.
-Index: /icu/branches/maint/maint-3-8/source/test/intltest/regextst.cpp
-===================================================================
---- test/intltest/regextst.cpp (revision 22057)
-+++ test/intltest/regextst.cpp (revision 23292)
-@@ -1,5 +1,5 @@
- /********************************************************************
-  * COPYRIGHT:
-- * Copyright (c) 2002-2007, International Business Machines Corporation and
-+ * Copyright (c) 2002-2008, International Business Machines Corporation and
-  * others. All Rights Reserved.
-  ********************************************************************/
-@@ -67,4 +67,8 @@
-             if (exec) PerlTests();
-             break;
-+        case 7: name = "Bug 6149";
-+            if (exec) Bug6149();
-+            break;
-+            
- 
- 
-@@ -1640,4 +1644,10 @@
-     // Ticket 5389
-     REGEX_ERR("*c", 1, 1, U_REGEX_RULE_SYNTAX);
-+    
-+    // Invalid Back Reference \0
-+    //    For ICU 3.8 and earlier
-+    //    For ICU versions newer than 3.8, \0 introduces an octal escape.
-+    //
-+    REGEX_ERR("(ab)\\0", 1, 6, U_REGEX_INVALID_BACK_REF);
- 
- }
-@@ -2123,4 +2133,24 @@
- 
- 
-+//--------------------------------------------------------------
-+//
-+//  Bug6149   Verify limits to heap expansion for backtrack stack.
-+//             Use this pattern,
-+//                 "(a?){1,}"
-+//             The zero-length match will repeat forever.
-+//                (That this goes into a loop is another bug)
-+//
-+//---------------------------------------------------------------
-+void RegexTest::Bug6149() {
-+    UnicodeString pattern("(a?){1,}");
-+    UnicodeString s("xyz");
-+    uint32_t flags = 0;
-+    UErrorCode status = U_ZERO_ERROR;
-+    
-+    RegexMatcher  matcher(pattern, s, flags, status);
-+    UBool result = false;
-+    REGEX_ASSERT_FAIL(result=matcher.matches(status), U_BUFFER_OVERFLOW_ERROR);
-+    REGEX_ASSERT(result == FALSE);
-+ }
- 
- #endif  /* !UCONFIG_NO_REGULAR_EXPRESSIONS  */
-Index: /icu/branches/maint/maint-3-8/source/common/uvectr32.cpp
-===================================================================
---- common/uvectr32.cpp (revision 12958)
-+++ common/uvectr32.cpp (revision 23292)
-@@ -1,5 +1,5 @@
- /*
- ******************************************************************************
--* Copyright (C) 1999-2003, International Business Machines Corporation and   *
-+* Copyright (C) 1999-2008, International Business Machines Corporation and   *
- * others. All Rights Reserved.                                               *
- ******************************************************************************
-@@ -27,4 +27,5 @@
-     count(0),
-     capacity(0),
-+    maxCapacity(0),
-     elements(NULL)
- {
-@@ -35,4 +36,5 @@
-     count(0),
-     capacity(0),
-+    maxCapacity(0),
-     elements(0)
- {
-@@ -46,4 +48,7 @@
-     if (initialCapacity < 1) {
-         initialCapacity = DEFUALT_CAPACITY;
-+    }
-+    if (maxCapacity>0 && maxCapacity<initialCapacity) {
-+        initialCapacity = maxCapacity;
-     }
-     elements = (int32_t *)uprv_malloc(sizeof(int32_t)*initialCapacity);
-@@ -190,19 +195,33 @@
-     if (capacity >= minimumCapacity) {
-         return TRUE;
--    } else {
--        int32_t newCap = capacity * 2;
--        if (newCap < minimumCapacity) {
--            newCap = minimumCapacity;
--        }
--        int32_t* newElems = (int32_t *)uprv_malloc(sizeof(int32_t)*newCap);
--        if (newElems == 0) {
--            status = U_MEMORY_ALLOCATION_ERROR;
--            return FALSE;
--        }
--        uprv_memcpy(newElems, elements, sizeof(elements[0]) * count);
--        uprv_free(elements);
--        elements = newElems;
--        capacity = newCap;
--        return TRUE;
-+    }
-+    if (maxCapacity>0 && minimumCapacity>maxCapacity) {
-+        status = U_BUFFER_OVERFLOW_ERROR;
-+        return FALSE;
-+    }
-+    int32_t newCap = capacity * 2;
-+    if (newCap < minimumCapacity) {
-+        newCap = minimumCapacity;
-+    }
-+    if (maxCapacity > 0 && newCap > maxCapacity) {
-+        newCap = maxCapacity;
-+    }
-+    int32_t* newElems = (int32_t *)uprv_malloc(sizeof(int32_t)*newCap);
-+    if (newElems == 0) {
-+        status = U_MEMORY_ALLOCATION_ERROR;
-+        return FALSE;
-+    }
-+    uprv_memcpy(newElems, elements, sizeof(elements[0]) * count);
-+    uprv_free(elements);
-+    elements = newElems;
-+    capacity = newCap;
-+    return TRUE;
-+}
-+
-+void UVector32::setMaxCapacity(int32_t limit) {
-+    U_ASSERT(limit >= 0);
-+    maxCapacity = limit;
-+    if (maxCapacity < 0) {
-+        maxCapacity = 0;
-     }
- }
-Index: /icu/branches/maint/maint-3-8/source/common/uvectr32.h
-===================================================================
---- common/uvectr32.h (revision 19000)
-+++ common/uvectr32.h (revision 23292)
-@@ -1,5 +1,5 @@
- /*
- **********************************************************************
--*   Copyright (C) 1999-2006, International Business Machines
-+*   Copyright (C) 1999-2008, International Business Machines
- *   Corporation and others.  All Rights Reserved.
- **********************************************************************
-@@ -62,4 +62,6 @@
- 
-     int32_t   capacity;
-+    
-+    int32_t   maxCapacity;   // Limit beyond which capacity is not permitted to grow.
- 
-     int32_t*  elements;
-@@ -161,4 +163,12 @@
-      */
-     int32_t *getBuffer() const;
-+
-+    /**
-+     * Set the maximum allowed buffer capacity for this vector/stack.
-+     * Default with no limit set is unlimited, go until malloc() fails.
-+     * A Limit of zero means unlimited capacity.
-+     * Units are vector elements (32 bits each), not bytes.
-+     */
-+    void setMaxCapacity(int32_t limit);
- 
-     /**
-@@ -222,5 +232,7 @@
- 
- inline int32_t *UVector32::reserveBlock(int32_t size, UErrorCode &status) {
--    ensureCapacity(count+size, status);
-+    if (ensureCapacity(count+size, status) == FALSE) {
-+        return NULL;
-+    }
-     int32_t  *rp = elements+count;
-     count += size;
diff -ruN icu.bak/files/patch-Makefile.in icu/files/patch-Makefile.in
--- icu.bak/files/patch-Makefile.in	1970-01-01 03:00:00.000000000 +0300
+++ icu/files/patch-Makefile.in	2009-12-09 14:34:25.000000000 +0200
@@ -0,0 +1,10 @@
+--- Makefile.in	2009-07-01 21:51:26.000000000 +0300
++++ Makefile.in	2009-12-09 13:25:16.000000000 +0200
+@@ -130,7 +130,6 @@
+ 	@$(MKINSTALLDIRS) $(DESTDIR)$(sbindir)
+ 	$(INSTALL_DATA) @platform_make_fragment@ $(DESTDIR)$(pkgdatadir)/config/@platform_make_fragment_name@
+ 	$(INSTALL_SCRIPT) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(pkgdatadir)/mkinstalldirs
+-	$(INSTALL_SCRIPT) $(top_srcdir)/install-sh $(DESTDIR)$(pkgdatadir)/install-sh
+ 	$(INSTALL_DATA) $(top_srcdir)/../license.html $(DESTDIR)$(pkgdatadir)/license.html
+ 	$(INSTALL_SCRIPT) $(top_builddir)/config/icu-config $(DESTDIR)$(bindir)/icu-config
+ 	$(INSTALL_DATA) $(top_builddir)/config/Makefile.inc $(DESTDIR)$(pkglibdir)/Makefile.inc
diff -ruN icu.bak/files/patch-cc-flags icu/files/patch-cc-flags
--- icu.bak/files/patch-cc-flags	2005-10-20 00:00:00.000000000 +0300
+++ icu/files/patch-cc-flags	1970-01-01 03:00:00.000000000 +0300
@@ -1,27 +0,0 @@
---- runConfigureICU	Fri Jan 16 17:26:40 2004
-+++ runConfigureICU	Mon Nov 15 11:05:50 2004
-@@ -289,7 +289,7 @@
-     *BSD)
--        THE_OS="BSD"
-+        THE_OS="$platform"
--        THE_COMP="the GNU C++"
--        CC=gcc; export CC
--        CXX=g++; export CXX
-+        CC=${CC:=cc}; export CC
-+        CXX=${CXX:=c++}; export CXX
-+        THE_COMP="`$CC -v | fgrep -i ver`" # works with icc and gcc at least
-         ;;
-     QNX)
-@@ -358,12 +358,4 @@
- if test $release -eq 1
- then
--    if test "$RELEASE_CFLAGS" = ""
--    then
--        case $CC in
--            gcc|*/gcc|*-gcc-*|*/*-gcc-*)
--                RELEASE_CFLAGS=-O3
--                ;;
--        esac
--    fi
-     if test "$RELEASE_CFLAGS" != ""
-     then
diff -ruN icu.bak/files/patch-format icu/files/patch-format
--- icu.bak/files/patch-format	2009-03-25 00:00:00.000000000 +0200
+++ icu/files/patch-format	1970-01-01 03:00:00.000000000 +0300
@@ -1,210 +0,0 @@
-Fix self-test(s) breaking, when build happens on days with other than
-24-hours (such as when daylight saving time kicks in). See:
-
-	http://www.freebsd.org/cgi/query-pr.cgi?pr=128521
-	http://www.icu-project.org/trac/ticket/6018
-
-Index: /icu/trunk/source/i18n/calendar.cpp
-===================================================================
---- i18n/calendar.cpp (revision 22978)
-+++ i18n/calendar.cpp (revision 23166)
-@@ -1,5 +1,5 @@
- /*
- *******************************************************************************
--* Copyright (C) 1997-2007, International Business Machines Corporation and    *
-+* Copyright (C) 1997-2008, International Business Machines Corporation and    *
- * others. All Rights Reserved.                                                *
- *******************************************************************************
-@@ -74,6 +74,12 @@
- 
- #if defined( U_DEBUG_CALSVC ) || defined (U_DEBUG_CAL)
-+
-+/** 
-+ * fldName was removed as a duplicate implementation. 
-+ * use  udbg_ services instead, 
-+ * which depend on include files and library from ../tools/ctestfw
-+ */
-+#include "unicode/udbgutil.h"
- #include <stdio.h>
--
- 
- /**
-@@ -83,12 +89,8 @@
- * @internal
- */
--#error fldName() has been removed. Please use udbg_ucal_fieldName()  from libctestfw instead. The following code might work.
--
--static const char* fldName(UCalendarDateFields f) {
--	const char *udbg_ucal_fieldName(int32_t fld);
--	return udbg_ucal_fieldName((int32_t)f);
--}
--
--
-+
-+const char* fldName(UCalendarDateFields f) {
-+	return udbg_enumName(UDBG_UCalendarDateFields, (int32_t)f);
-+}
- 
- #if UCAL_DEBUG_DUMP
-Index: /icu/trunk/source/i18n/reldtfmt.cpp
-===================================================================
---- i18n/reldtfmt.cpp (revision 22561)
-+++ i18n/reldtfmt.cpp (revision 23166)
-@@ -1,5 +1,5 @@
- /*
- *******************************************************************************
--* Copyright (C) 2007, International Business Machines Corporation and    *
-+* Copyright (C) 2007-2008, International Business Machines Corporation and    *
- * others. All Rights Reserved.                                                *
- *******************************************************************************
-@@ -304,8 +304,13 @@
-         return 0;
-     }
--    // TODO: Cache the nowCal to avoid heap allocs?
-+    // TODO: Cache the nowCal to avoid heap allocs? Would be difficult, don't know the calendar type
-     Calendar *nowCal = cal.clone();
-     nowCal->setTime(Calendar::getNow(), status);
--    int32_t dayDiff = nowCal->fieldDifference(cal.getTime(status), Calendar::DATE, status);
-+
-+    // For the day difference, we are interested in the difference in the (modified) julian day number
-+    // which is midnight to midnight.  Using fieldDifference() is NOT correct here, because 
-+    // 6pm Jan 4th  to 10am Jan 5th should be considered "tomorrow".
-+    int32_t dayDiff = cal.get(UCAL_JULIAN_DAY, status) - nowCal->get(UCAL_JULIAN_DAY, status);
-+
-     delete nowCal;
-     return dayDiff;
-Index: /icu/trunk/source/test/intltest/dadrfmt.cpp
-===================================================================
---- test/intltest/dadrfmt.cpp (revision 22493)
-+++ test/intltest/dadrfmt.cpp (revision 23166)
-@@ -1,5 +1,5 @@
- /********************************************************************
-  * COPYRIGHT: 
-- * Copyright (c) 1997-2007, International Business Machines Corporation and
-+ * Copyright (c) 1997-2008, International Business Machines Corporation and
-  * others. All Rights Reserved.
-  ********************************************************************/
-@@ -94,4 +94,5 @@
-     UnicodeString kMILLIS("MILLIS="); // TODO: static
-     UnicodeString kRELATIVE_MILLIS("RELATIVE_MILLIS="); // TODO: static
-+    UnicodeString kRELATIVE_ADD("RELATIVE_ADD:"); // TODO: static
-     
-     UErrorCode status = U_ZERO_ERROR;
-@@ -170,5 +171,10 @@
-             }
-         }
--        
-+
-+        Calendar *cal = Calendar::createInstance(loc, status);
-+        if(U_FAILURE(status)) {
-+            errln("case %d: could not create calendar from %s", n, calLoc);
-+        }
-+
-         // parse 'date'
-         if(date.startsWith(kMILLIS)) {
-@@ -180,4 +186,28 @@
-             useDate = TRUE;
-             fromDate = udbg_stoi(millis) + now;
-+        } else if(date.startsWith(kRELATIVE_ADD)) {
-+            UnicodeString add = UnicodeString(date, kRELATIVE_ADD.length());  // "add" is a string indicating which fields to add
-+            if(fromSet.parseFrom(add, status)<0 || U_FAILURE(status)) {
-+                errln("case %d: could not parse date as RELATIVE_ADD calendar fields: %s", n, u_errorName(status));
-+                continue;
-+            }
-+            logln("Parsing ..\n");
-+            useDate=TRUE;
-+            cal->clear();
-+            cal->setTime(now, status);
-+            for (int q=0; q<UCAL_FIELD_COUNT; q++) {
-+                if (fromSet.isSet((UCalendarDateFields)q)) {
-+                    int32_t oldv = cal->get((UCalendarDateFields)q, status);
-+                    cal->add((UCalendarDateFields)q,
-+                                fromSet.get((UCalendarDateFields)q), status);
-+                    int32_t newv = cal->get((UCalendarDateFields)q, status);
-+                    logln("adding %d to %s ..went from %d to %d\n", fromSet.get((UCalendarDateFields)q), udbg_enumName(UDBG_UCalendarDateFields, q), oldv, newv);
-+                }
-+            }
-+            fromDate = cal->getTime(status);
-+            if(U_FAILURE(status)) {
-+                errln("case %d: could not apply date as RELATIVE_ADD calendar fields: %s", n, u_errorName(status));
-+                continue;
-+            }
-         } else if(fromSet.parseFrom(date, status)<0 || U_FAILURE(status)) {
-             errln("case %d: could not parse date as calendar fields: %s", n, u_errorName(status));
-@@ -185,8 +215,4 @@
-         }
-         
--        Calendar *cal = Calendar::createInstance(loc, status);
--        if(U_FAILURE(status)) {
--            errln("case %d: could not create calendar from %s", n, calLoc);
--        }
-         // now, do it.
-         if (fmt) {
-Index: /icu/trunk/source/test/testdata/format.txt
-===================================================================
---- test/testdata/format.txt (revision 22885)
-+++ test/testdata/format.txt (revision 23166)
-@@ -1,3 +1,3 @@
--// Copyright (c) 2007 International Business Machines
-+// Copyright (c) 2007-2008 International Business Machines
- // Corporation and others. All Rights Reserved.
- format:table(nofallback) {
-@@ -23,5 +23,8 @@
-             // locale: locale including calendar type
-             // spec:   either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG'
--            // date:   either 'MILLIS=####' where #### is an unsigned long (millis), or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale
-+            // date:   either 'MILLIS=####' where #### is millis,
-+            //        or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale
-+            //        or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis
-+            //        or RELATIVE_ADD:DATE=1  which means that the field "DATE" will be added by +1 relative to current time
-             // str:   the expected unicode string
-             Cases { 
-@@ -61,5 +64,5 @@
-                     "en_US@calendar=gregorian",         
-                     "DATE=RELATIVE_SHORT",
--                    "RELATIVE_MILLIS=86410000", // one day from now
-+                    "RELATIVE_ADD:DATE=1", // one day from now
-                     "Tomorrow"
-                },
-@@ -67,5 +70,5 @@
-                     "en_US@calendar=gregorian",         
-                     "DATE=RELATIVE_SHORT",
--                    "RELATIVE_MILLIS=0", // one day before now
-+                    "RELATIVE_MILLIS=0", // today
-                     "Today"
-                },
-@@ -73,5 +76,5 @@
-                     "en_US@calendar=gregorian",         
-                     "DATE=RELATIVE_SHORT",
--                    "RELATIVE_MILLIS=-86410000", // one day before now
-+                    "RELATIVE_ADD:DATE=-1", // one day before now
-                     "Yesterday"
-                },
-@@ -79,5 +82,5 @@
-                     "mt_MT@calendar=gregorian",         
-                     "DATE=RELATIVE_SHORT",
--                    "RELATIVE_MILLIS=86410000", // one day from now
-+                    "RELATIVE_ADD:DATE=1", // one day from now
-                     "Għada"
-                },
-@@ -85,5 +88,5 @@
-                     "mt_MT@calendar=gregorian",         
-                     "DATE=RELATIVE_SHORT",
--                    "RELATIVE_MILLIS=0", // one day before now
-+                    "RELATIVE_MILLIS=0", // today
-                     "Illum"
-                },
-@@ -91,5 +94,5 @@
-                     "mt_MT@calendar=gregorian",         
-                     "DATE=RELATIVE_SHORT",
--                    "RELATIVE_MILLIS=-86410000", // one day before now
-+                    "RELATIVE_ADD:DATE=-1", // one day before now
-                     "Lbieraħ"
-                },
-@@ -97,5 +100,5 @@
-                     "ru",
-                     "DATE=RELATIVE_SHORT",
--                    "RELATIVE_MILLIS=-172810000", // 2 days ago
-+                    "RELATIVE_ADD:DATE=-2", // 2 days ago
-                     "Позавчера"
-                },
diff -ruN icu.bak/files/patch-install icu/files/patch-install
--- icu.bak/files/patch-install	2008-02-07 00:00:00.000000000 +0200
+++ icu/files/patch-install	1970-01-01 03:00:00.000000000 +0300
@@ -1,8 +0,0 @@
---- Makefile.in	2007-12-12 13:58:06.000000000 -0500
-+++ Makefile.in	2008-01-28 15:20:56.000000000 -0500
-@@ -126,5 +126,4 @@
- 	$(INSTALL_DATA) @platform_make_fragment@ $(DESTDIR)$(pkgdatadir)/config/@platform_make_fragment_name@
- 	$(INSTALL_SCRIPT) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(pkgdatadir)/mkinstalldirs
--	$(INSTALL_SCRIPT) $(top_srcdir)/install-sh $(DESTDIR)$(pkgdatadir)/install-sh
- 	$(INSTALL_DATA) $(top_srcdir)/../license.html $(DESTDIR)$(pkgdatadir)/license.html
- 	$(INSTALL_SCRIPT) $(top_builddir)/config/icu-config $(DESTDIR)$(bindir)/icu-config
diff -ruN icu.bak/files/patch-putil icu/files/patch-putil
--- icu.bak/files/patch-putil	2008-02-07 00:00:00.000000000 +0200
+++ icu/files/patch-putil	1970-01-01 03:00:00.000000000 +0300
@@ -1,9 +0,0 @@
---- common/putil.c	2007-12-12 13:57:26.000000000 -0500
-+++ common/putil.c	2008-01-28 13:04:02.000000000 -0500
-@@ -577,5 +577,5 @@
- /* These platforms are likely to use Olson timezone IDs. */
- #define CHECK_LOCALTIME_LINK 1
--#if defined(U_LINUX)
-+#if defined(U_LINUX) || defined(U_BSD)
- #define TZDEFAULT       "/etc/localtime"
- #define TZZONEINFO      "/usr/share/zoneinfo/"
diff -ruN icu.bak/files/patch-regexcmp.cpp icu/files/patch-regexcmp.cpp
--- icu.bak/files/patch-regexcmp.cpp	1970-01-01 03:00:00.000000000 +0300
+++ icu/files/patch-regexcmp.cpp	2009-12-09 14:33:31.000000000 +0200
@@ -0,0 +1,32 @@
+--- i18n/regexcmp.cpp	2009-07-01 21:50:10.000000000 +0300
++++ i18n/regexcmp.cpp	2009-12-09 13:32:52.000000000 +0200
+@@ -1264,17 +1264,19 @@
+             // Because capture groups can be forward-referenced by back-references,
+             //  we fill the operand with the capture group number.  At the end
+             //  of compilation, it will be changed to the variable's location.
+-            U_ASSERT(groupNum > 0);
+-            int32_t  op;
+-            if (fModeFlags & UREGEX_CASE_INSENSITIVE) {
+-                op = URX_BUILD(URX_BACKREF_I, groupNum);
+-            } else {
+-                op = URX_BUILD(URX_BACKREF, groupNum);
++            if (groupNum < 1) { 
++                error(U_REGEX_INVALID_BACK_REF);
++             } else {
++                int32_t  op;
++                if (fModeFlags & UREGEX_CASE_INSENSITIVE) {
++                    op = URX_BUILD(URX_BACKREF_I, groupNum);
++                } else {
++                    op = URX_BUILD(URX_BACKREF, groupNum);
++                }
++                fRXPat->fCompiledPat->addElement(op, *fStatus);
+             }
+-            fRXPat->fCompiledPat->addElement(op, *fStatus);
+-        }
+-        break;
+-
++         }
++         break;
+ 
+     case doPossessivePlus:
+         // Possessive ++ quantifier.
diff -ruN icu.bak/files/patch-runConfigureICU icu/files/patch-runConfigureICU
--- icu.bak/files/patch-runConfigureICU	1970-01-01 03:00:00.000000000 +0300
+++ icu/files/patch-runConfigureICU	2009-12-09 14:34:04.000000000 +0200
@@ -0,0 +1,32 @@
+--- runConfigureICU	2009-07-01 21:51:26.000000000 +0300
++++ runConfigureICU	2009-12-09 13:27:11.000000000 +0200
+@@ -254,10 +254,10 @@
+         RELEASE_CXXFLAGS='-O2'
+         ;;
+     *BSD)
+-        THE_OS="BSD"
+-        THE_COMP="the GNU C++"
+-        CC=gcc; export CC
+-        CXX=g++; export CXX
++        THE_OS="$platform"
++        CC=${CC:=cc}; export CC
++        CXX=${CXX:=c++}; export CXX
++        THE_COMP="`$CC -v | fgrep -i ver`" # works with icc and gcc at least
+         ;;
+     TRU64V5.1/CXX)
+         THE_OS="OSF1"
+@@ -302,14 +302,6 @@
+ 
+ if test $release -eq 1
+ then
+-    if test "$RELEASE_CFLAGS" = ""
+-    then
+-        case $CC in
+-            gcc|*/gcc|*-gcc-*|*/*-gcc-*)
+-                RELEASE_CFLAGS=-O3
+-                ;;
+-        esac
+-    fi
+     if test "$RELEASE_CFLAGS" != ""
+     then
+         CFLAGS="$CFLAGS $RELEASE_CFLAGS"
diff -ruN icu.bak/pkg-plist icu/pkg-plist
--- icu.bak/pkg-plist	2008-02-07 00:00:00.000000000 +0200
+++ icu/pkg-plist	2009-12-09 14:58:59.000000000 +0200
@@ -1,5 +1,6 @@
 bin/derb
 bin/genbrk
+bin/gencfu
 bin/gencnval
 bin/genctd
 bin/genrb
@@ -7,12 +8,6 @@
 bin/makeconv
 bin/pkgdata
 bin/uconv
-sbin/genccode
-sbin/gencmn
-sbin/gensprep
-sbin/genuca
-sbin/icupkg
-sbin/icuswap
 include/layout/LEFontInstance.h
 include/layout/LEGlyphFilter.h
 include/layout/LEGlyphStorage.h
@@ -25,16 +20,22 @@
 include/layout/ParagraphLayout.h
 include/layout/RunArrays.h
 include/layout/loengine.h
-@dirrm include/layout
+include/layout/playout.h
+include/layout/plruns.h
 include/unicode/basictz.h
+include/unicode/bms.h
+include/unicode/bmsearch.h
 include/unicode/brkiter.h
+include/unicode/bytestream.h
 include/unicode/calendar.h
 include/unicode/caniter.h
 include/unicode/chariter.h
 include/unicode/choicfmt.h
 include/unicode/coleitr.h
 include/unicode/coll.h
+include/unicode/colldata.h
 include/unicode/curramt.h
+include/unicode/currpinf.h
 include/unicode/currunit.h
 include/unicode/datefmt.h
 include/unicode/dbbi.h
@@ -42,8 +43,12 @@
 include/unicode/decimfmt.h
 include/unicode/docmain.h
 include/unicode/dtfmtsym.h
+include/unicode/dtintrv.h
+include/unicode/dtitvfmt.h
+include/unicode/dtitvinf.h
 include/unicode/dtptngen.h
 include/unicode/dtrule.h
+include/unicode/errorcode.h
 include/unicode/fieldpos.h
 include/unicode/fmtable.h
 include/unicode/format.h
@@ -55,9 +60,12 @@
 include/unicode/msgfmt.h
 include/unicode/normlzr.h
 include/unicode/numfmt.h
+include/unicode/numsys.h
 include/unicode/parseerr.h
 include/unicode/parsepos.h
 include/unicode/platform.h
+include/unicode/plurfmt.h
+include/unicode/plurrule.h
 include/unicode/ppalmos.h
 include/unicode/putil.h
 include/unicode/pwin32.h
@@ -72,11 +80,16 @@
 include/unicode/simpletz.h
 include/unicode/smpdtfmt.h
 include/unicode/sortkey.h
+include/unicode/std_string.h
 include/unicode/strenum.h
+include/unicode/stringpiece.h
 include/unicode/stsearch.h
 include/unicode/symtable.h
 include/unicode/tblcoll.h
 include/unicode/timezone.h
+include/unicode/tmunit.h
+include/unicode/tmutamt.h
+include/unicode/tmutfmt.h
 include/unicode/translit.h
 include/unicode/tzrule.h
 include/unicode/tztrans.h
@@ -91,6 +104,7 @@
 include/unicode/ucnv.h
 include/unicode/ucnv_cb.h
 include/unicode/ucnv_err.h
+include/unicode/ucnvsel.h
 include/unicode/ucol.h
 include/unicode/ucoleitr.h
 include/unicode/uconfig.h
@@ -129,6 +143,7 @@
 include/unicode/uset.h
 include/unicode/usetiter.h
 include/unicode/ushape.h
+include/unicode/uspoof.h
 include/unicode/usprep.h
 include/unicode/ustdio.h
 include/unicode/ustream.h
@@ -146,42 +161,51 @@
 include/unicode/utypes.h
 include/unicode/uversion.h
 include/unicode/vtzone.h
-@dirrm include/unicode
-lib/icu/%%ICUVER%%/Makefile.inc
-lib/icu/current
+lib/icu/%%ICUVER%% /Makefile.inc
+lib/icu/%%ICUVER%% /pkgdata.inc
 lib/icu/Makefile.inc
-lib/libsicudata.a
-lib/libicudata.so.%%ICUMAJOR%%.%%ICUMINOR%%
+lib/icu/current
+lib/icu/pkgdata.inc
 lib/libicudata.so
 lib/libicudata.so.%%ICUMAJOR%%
-lib/libsicuuc.a
-lib/libicuuc.so.%%ICUMAJOR%%.%%ICUMINOR%%
-lib/libicuuc.so
-lib/libicuuc.so.%%ICUMAJOR%%
-lib/libsicui18n.a
-lib/libicui18n.so.%%ICUMAJOR%%.%%ICUMINOR%%
+lib/libicudata.so.%%ICUMAJOR%%.%%ICUMINOR%%
 lib/libicui18n.so
 lib/libicui18n.so.%%ICUMAJOR%%
-lib/libsicule.a
-lib/libicule.so.%%ICUMAJOR%%.%%ICUMINOR%%
+lib/libicui18n.so.%%ICUMAJOR%%.%%ICUMINOR%%
+lib/libicuio.so
+lib/libicuio.so.%%ICUMAJOR%%
+lib/libicuio.so.%%ICUMAJOR%%.%%ICUMINOR%%
 lib/libicule.so
 lib/libicule.so.%%ICUMAJOR%%
-lib/libsiculx.a
-lib/libiculx.so.%%ICUMAJOR%%.%%ICUMINOR%%
+lib/libicule.so.%%ICUMAJOR%%.%%ICUMINOR%%
 lib/libiculx.so
 lib/libiculx.so.%%ICUMAJOR%%
-lib/libsicuio.a
-lib/libicuio.so.%%ICUMAJOR%%.%%ICUMINOR%%
-lib/libicuio.so
-lib/libicuio.so.%%ICUMAJOR%%
-lib/libicutu.so.%%ICUMAJOR%%.%%ICUMINOR%%
-lib/libicutu.so.%%ICUMAJOR%%
+lib/libiculx.so.%%ICUMAJOR%%.%%ICUMINOR%%
 lib/libicutu.so
-%%DATADIR%%/%%ICUVER%%/config/mh-bsd-gcc
-%%DATADIR%%/%%ICUVER%%/mkinstalldirs
-%%DATADIR%%/%%ICUVER%%/license.html
-@dirrm %%DATADIR%%/%%ICUVER%%/config
-@dirrm %%DATADIR%%/%%ICUVER%%
+lib/libicutu.so.%%ICUMAJOR%%
+lib/libicutu.so.%%ICUMAJOR%%.%%ICUMINOR%%
+lib/libicuuc.so
+lib/libicuuc.so.%%ICUMAJOR%%
+lib/libicuuc.so.%%ICUMAJOR%%.%%ICUMINOR%%
+lib/libsicudata.a
+lib/libsicui18n.a
+lib/libsicuio.a
+lib/libsicule.a
+lib/libsiculx.a
+lib/libsicutu.a
+lib/libsicuuc.a
+sbin/genccode
+sbin/gencmn
+sbin/gensprep
+sbin/genuca
+sbin/icupkg
+%%DATADIR%%/%%ICUVER%% /config/mh-bsd-gcc
+%%DATADIR%%/%%ICUVER%% /license.html
+%%DATADIR%%/%%ICUVER%% /mkinstalldirs
+@dirrm %%DATADIR%%/%%ICUVER%% /config
+@dirrm %%DATADIR%%/%%ICUVER%% 
 @dirrm %%DATADIR%%
-@dirrm lib/icu/%%ICUVER%%
+@dirrm lib/icu/%%ICUVER%% 
 @dirrm lib/icu
+@dirrm include/unicode
+@dirrm include/layout


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912091629.nB9GT8C4013029>