Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Dec 2009 22:20:03 GMT
From:      "Andrei V. Lavreniyuk" <andy.lavr@reactor-xg.kiev.ua>
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/141324: [UPDATE] devel/icu: update to 4.2.1
Message-ID:  <200912092220.nB9MK3cn081605@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/141324; it has been noted by GNATS.

From: "Andrei V. Lavreniyuk" <andy.lavr@reactor-xg.kiev.ua>
To: bug-followup@FreeBSD.org, "Mikhail T." <mi@aldan.algebra.com>
Cc:  
Subject: Re: ports/141324: [UPDATE] devel/icu: update to 4.2.1
Date: Thu, 10 Dec 2009 00:10:01 +0200

 This is a multi-part message in MIME format.
 --------------050802080703020207070605
 Content-Type: text/plain; charset=KOI8-R; format=flowed
 Content-Transfer-Encoding: 7bit
 
 Hi!
 
 
   This corrected updating of port. Look it.
 
 
 
 
 -- 
   Best regards, Andrei V. Lavreniyuk.
 
 
 --------------050802080703020207070605
 Content-Type: text/plain;
  name="update_icu.diff"
 Content-Transfer-Encoding: 8bit
 Content-Disposition: inline;
  filename="update_icu.diff"
 
 diff -ruN icu.bak/Makefile icu/Makefile
 --- icu.bak/Makefile	2009-09-15 17:11:00.000000000 +0300
 +++ icu/Makefile	2009-12-09 23:58:18.258746326 +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}
 @@ -25,10 +24,10 @@
  
  GNU_CONFIGURE=		yes
  CONFIGURE_SCRIPT=	runConfigureICU
 -CONFIGURE_ARGS+=	${OPSYS}
 -CONFIGURE_ARGS+=	--enable-shared
 -CONFIGURE_ARGS+=	--enable-static
 -CONFIGURE_ARGS+=	--enable-samples=no
 +CONFIGURE_ARGS+=	${OPSYS} \
 +			--enable-shared \
 +			--enable-static \
 +			--enable-samples=no
  
  USE_GMAKE=		yes
  
 @@ -51,6 +50,14 @@
  PLIST_SUB+=	ICUMAJOR=${ICUMAJOR} ICUMINOR=1
  PLIST_SUB+=	ICUVER=${PORTVERSION}
  
 +post-install:
 +	# Installing man-pages, which the vendor forgets to do...
 +	${INSTALL_MAN} ${WRKSRC}/config/icu-config.1	\
 +		${MAN1:N*config*:S|^|${WRKSRC}/*/*/|}	\
 +		${MAN1PREFIX}/man/man1
 +	${INSTALL_MAN} ${MAN8:S,^,${WRKSRC}/tools/*/,}	\
 +		${MAN8PREFIX}/man/man8
 +
  .include <bsd.port.pre.mk>
  
  .if ${CC:T} == "cc"
 @@ -59,7 +66,8 @@
  .if ${CXX:T} == "c++"
  CXXFLAGS:=	${CXXFLAGS:N-funroll-loops:N-O*:N-*strict-aliasing} -O2 -fno-strict-aliasing
  .endif
 -CONFIGURE_ENV+=	CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}"
 +CONFIGURE_ENV+=	CFLAGS+="${CFLAGS}" \
 +		CXXFLAGS+="${CXXFLAGS}"
  
  .if defined(WITHOUT_THREADS)
  CONFIGURE_ARGS+=	--enable-threads=no
 @@ -78,6 +86,6 @@
  	    ./${.TARGET}
  .endif
  
 -post-build test: iotest cintltst intltest
 +post-build test regression-test: iotest cintltst intltest
  
  .include <bsd.port.post.mk>
 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 23:47:44.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%%/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
 +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%%/mkinstalldirs
  %%DATADIR%%/%%ICUVER%%/license.html
 +%%DATADIR%%/%%ICUVER%%/mkinstalldirs
  @dirrm %%DATADIR%%/%%ICUVER%%/config
 -@dirrm %%DATADIR%%/%%ICUVER%%
 +@dirrm %%DATADIR%%/%%ICUVER%% 
  @dirrm %%DATADIR%%
 -@dirrm lib/icu/%%ICUVER%%
 +@dirrm lib/icu/%%ICUVER%% 
  @dirrm lib/icu
 +@dirrm include/unicode
 +@dirrm include/layout
 
 --------------050802080703020207070605--



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