Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Sep 2008 21:05:21 GMT
From:      Xin LI <delphij@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        mi@aldan.algebra.com
Subject:   ports/127499: [PATCH] Update devel/icu to 4.0
Message-ID:  <200809192105.m8JL5Ljr017560@freefall.freebsd.org>
Resent-Message-ID: <200809192110.m8JLA2i2017647@freefall.freebsd.org>

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

>Number:         127499
>Category:       ports
>Synopsis:       [PATCH] Update devel/icu to 4.0
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Fri Sep 19 21:10:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Xin LI
>Release:        FreeBSD 7.0-STABLE i386
>Organization:
The FreeBSD Project
>Environment:
System: FreeBSD freefall.freebsd.org 7.0-STABLE FreeBSD 7.0-STABLE #34: Sat Apr 12 11:52:18 UTC 2008 simon@freefall.freebsd.org:/usr/src/sys/i386/compile/FREEFALL i386


>Description:
	Update devel/icu to 4.0 release.
>How-To-Repeat:
>Fix:


--- icu-4.0.diff begins here ---
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/devel/icu/Makefile,v
retrieving revision 1.30
diff -u -p -r1.30 Makefile
--- Makefile	8 Sep 2008 03:28:26 -0000	1.30
+++ Makefile	19 Sep 2008 18:43:02 -0000
@@ -6,11 +6,10 @@
 #
 
 PORTNAME=	icu
-PORTVERSION=	3.8.1
-PORTREVISION=	1
+PORTVERSION=	4.0
 CATEGORIES=	devel
-MASTER_SITES=	${MASTER_SITE_SOURCEFORGE}
-MASTER_SITE_SUBDIR=${PORTNAME}
+MASTER_SITES=	http://download.icu-project.org/files/${PORTNAME}4c/${PORTVERSION}/ \
+		SF
 DISTNAME=	icu4c-${PORTVERSION:S/./_/g}
 EXTRACT_SUFX=	-src.tgz
 
@@ -50,7 +49,7 @@ MAN8+=	gensprep.8
 MAN8+=	genuca.8
 
 ICUMAJOR=	${PORTVERSION:S/.//:R}
-PLIST_SUB+=	ICUMAJOR=${ICUMAJOR} ICUMINOR=1
+PLIST_SUB+=	ICUMAJOR=${ICUMAJOR} ICUMINOR=0
 PLIST_SUB+=	ICUVER=${PORTVERSION}
 
 .include <bsd.port.pre.mk>
Index: distinfo
===================================================================
RCS file: /home/ncvs/ports/devel/icu/distinfo,v
retrieving revision 1.9
diff -u -p -r1.9 distinfo
--- distinfo	7 Feb 2008 05:31:44 -0000	1.9
+++ distinfo	19 Sep 2008 18:10:54 -0000
@@ -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_0-src.tgz) = d1a5da2f778da6680ca2de47e1cb9141
+SHA256 (icu4c-4_0-src.tgz) = d93dba726cd83a718278487c38fc0d112e04b1da957df5b2ca70bd4e7b45c43d
+SIZE (icu4c-4_0-src.tgz) = 12005247
Index: pkg-plist
===================================================================
RCS file: /home/ncvs/ports/devel/icu/pkg-plist,v
retrieving revision 1.9
diff -u -p -r1.9 pkg-plist
--- pkg-plist	7 Feb 2008 05:31:44 -0000	1.9
+++ pkg-plist	19 Sep 2008 19:01:40 -0000
@@ -25,6 +25,8 @@ include/layout/LayoutEngine.h
 include/layout/ParagraphLayout.h
 include/layout/RunArrays.h
 include/layout/loengine.h
+include/layout/playout.h
+include/layout/plruns.h
 @dirrm include/layout
 include/unicode/basictz.h
 include/unicode/brkiter.h
@@ -42,6 +44,9 @@ include/unicode/dcfmtsym.h
 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/fieldpos.h
@@ -58,6 +63,8 @@ include/unicode/numfmt.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
Index: files/patch-CVE-2007-4770
===================================================================
RCS file: files/patch-CVE-2007-4770
diff -N files/patch-CVE-2007-4770
--- files/patch-CVE-2007-4770	18 Feb 2008 17:06:33 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -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;
Index: files/patch-putil
===================================================================
RCS file: files/patch-putil
diff -N files/patch-putil
--- files/patch-putil	7 Feb 2008 05:31:44 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -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/"
--- icu-4.0.diff ends here ---


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



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