@@ -, +, @@ --- devel/icu/Makefile | 2 +- devel/icu/distinfo | 6 +- devel/icu/files/patch-common_unicode_uvernum.h | 8 - devel/icu/files/patch-revert-r40077 | 297 +++++++++++++++++++++++++ devel/icu/pkg-plist | 3 + 5 files changed, 304 insertions(+), 12 deletions(-) delete mode 100644 devel/icu/files/patch-common_unicode_uvernum.h create mode 100644 devel/icu/files/patch-revert-r40077 --- b/devel/icu/Makefile +++ b/devel/icu/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= icu -DISTVERSION= 59_1 +DISTVERSION= 60_1 PORTREVISION?= 0 # keep for icu-lx PORTEPOCH?= 1 CATEGORIES?= devel --- b/devel/icu/distinfo +++ b/devel/icu/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1491550830 -SHA256 (icu4c-59_1-src.tgz) = 7132fdaf9379429d004005217f10e00b7d2319d0fea22bdfddef8991c45b75fe -SIZE (icu4c-59_1-src.tgz) = 22706578 +TIMESTAMP = 1509477637 +SHA256 (icu4c-60_1-src.tgz) = f8f5a6c8fbf32c015a467972bdb1477dc5f5d5dfea908b6ed218715eeb5ee225 +SIZE (icu4c-60_1-src.tgz) = 23296064 --- a/devel/icu/files/patch-common_unicode_uvernum.h +++ /dev/null @@ -1,8 +0,0 @@ ---- common/unicode/uvernum.h.orig 2017-03-21 01:03:49 UTC -+++ common/unicode/uvernum.h -@@ -125,4 +125,4 @@ - * This value will change in the subsequent releases of ICU - * @stable ICU 2.6 - */ --#if U_PLATFORM_HAS_WINUWP_API == 0 -+#ifndef U_PLATFORM_HAS_WINUWP_API --- /dev/null +++ b/devel/icu/files/patch-revert-r40077 @@ -0,0 +1,297 @@ +Revert https://ssl.icu-project.org/trac/changeset/40077 +until https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=222433 + +--- common/cmemory.h.orig 2017-10-06 01:37:59 UTC ++++ common/cmemory.h +@@ -162,6 +162,7 @@ class LocalMemory : public LocalPointerBase { (publ + * @param p simple pointer to an array of T items that is adopted + */ + explicit LocalMemory(T *p=NULL) : LocalPointerBase(p) {} ++#if U_HAVE_RVALUE_REFERENCES + /** + * Move constructor, leaves src with isNull(). + * @param src source smart pointer +@@ -169,12 +170,14 @@ class LocalMemory : public LocalPointerBase { (publ + LocalMemory(LocalMemory &&src) U_NOEXCEPT : LocalPointerBase(src.ptr) { + src.ptr=NULL; + } ++#endif + /** + * Destructor deletes the memory it owns. + */ + ~LocalMemory() { + uprv_free(LocalPointerBase::ptr); + } ++#if U_HAVE_RVALUE_REFERENCES + /** + * Move assignment operator, leaves src with isNull(). + * The behavior is undefined if *this and src are the same object. +@@ -184,6 +187,7 @@ class LocalMemory : public LocalPointerBase { (publ + LocalMemory &operator=(LocalMemory &&src) U_NOEXCEPT { + return moveFrom(src); + } ++#endif + /** + * Move assignment, leaves src with isNull(). + * The behavior is undefined if *this and src are the same object. +--- common/unicode/localpointer.h.orig 2017-04-26 20:23:44 UTC ++++ common/unicode/localpointer.h +@@ -213,6 +213,7 @@ class LocalPointer : public LocalPointerBase { (pub + errorCode=U_MEMORY_ALLOCATION_ERROR; + } + } ++#if U_HAVE_RVALUE_REFERENCES + /** + * Move constructor, leaves src with isNull(). + * @param src source smart pointer +@@ -221,6 +222,7 @@ class LocalPointer : public LocalPointerBase { (pub + LocalPointer(LocalPointer &&src) U_NOEXCEPT : LocalPointerBase(src.ptr) { + src.ptr=NULL; + } ++#endif + /** + * Destructor deletes the object it owns. + * @stable ICU 4.4 +@@ -228,6 +230,7 @@ class LocalPointer : public LocalPointerBase { (pub + ~LocalPointer() { + delete LocalPointerBase::ptr; + } ++#if U_HAVE_RVALUE_REFERENCES + /** + * Move assignment operator, leaves src with isNull(). + * The behavior is undefined if *this and src are the same object. +@@ -238,6 +241,7 @@ class LocalPointer : public LocalPointerBase { (pub + LocalPointer &operator=(LocalPointer &&src) U_NOEXCEPT { + return moveFrom(src); + } ++#endif + // do not use #ifndef U_HIDE_DRAFT_API for moveFrom, needed by non-draft API + /** + * Move assignment, leaves src with isNull(). +@@ -358,6 +362,7 @@ class LocalArray : public LocalPointerBase { (publi + errorCode=U_MEMORY_ALLOCATION_ERROR; + } + } ++#if U_HAVE_RVALUE_REFERENCES + /** + * Move constructor, leaves src with isNull(). + * @param src source smart pointer +@@ -366,6 +371,7 @@ class LocalArray : public LocalPointerBase { (publi + LocalArray(LocalArray &&src) U_NOEXCEPT : LocalPointerBase(src.ptr) { + src.ptr=NULL; + } ++#endif + /** + * Destructor deletes the array it owns. + * @stable ICU 4.4 +@@ -373,6 +379,7 @@ class LocalArray : public LocalPointerBase { (publi + ~LocalArray() { + delete[] LocalPointerBase::ptr; + } ++#if U_HAVE_RVALUE_REFERENCES + /** + * Move assignment operator, leaves src with isNull(). + * The behavior is undefined if *this and src are the same object. +@@ -383,6 +390,7 @@ class LocalArray : public LocalPointerBase { (publi + LocalArray &operator=(LocalArray &&src) U_NOEXCEPT { + return moveFrom(src); + } ++#endif + // do not use #ifndef U_HIDE_DRAFT_API for moveFrom, needed by non-draft API + /** + * Move assignment, leaves src with isNull(). +@@ -484,6 +492,7 @@ class LocalArray : public LocalPointerBase { (publi + * @see LocalPointer + * @stable ICU 4.4 + */ ++#if U_HAVE_RVALUE_REFERENCES + #define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction) \ + class LocalPointerClassName : public LocalPointerBase { \ + public: \ +@@ -517,6 +526,34 @@ class LocalArray : public LocalPointerBase { (publi + ptr=p; \ + } \ + } ++#else ++#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction) \ ++ class LocalPointerClassName : public LocalPointerBase { \ ++ public: \ ++ using LocalPointerBase::operator*; \ ++ using LocalPointerBase::operator->; \ ++ explicit LocalPointerClassName(Type *p=NULL) : LocalPointerBase(p) {} \ ++ ~LocalPointerClassName() { closeFunction(ptr); } \ ++ LocalPointerClassName &moveFrom(LocalPointerClassName &src) U_NOEXCEPT { \ ++ if (ptr != NULL) { closeFunction(ptr); } \ ++ LocalPointerBase::ptr=src.ptr; \ ++ src.ptr=NULL; \ ++ return *this; \ ++ } \ ++ void swap(LocalPointerClassName &other) U_NOEXCEPT { \ ++ Type *temp=LocalPointerBase::ptr; \ ++ LocalPointerBase::ptr=other.ptr; \ ++ other.ptr=temp; \ ++ } \ ++ friend inline void swap(LocalPointerClassName &p1, LocalPointerClassName &p2) U_NOEXCEPT { \ ++ p1.swap(p2); \ ++ } \ ++ void adoptInstead(Type *p) { \ ++ if (ptr != NULL) { closeFunction(ptr); } \ ++ ptr=p; \ ++ } \ ++ } ++#endif + + U_NAMESPACE_END + +--- common/unicode/platform.h.orig 2017-10-05 00:47:38 UTC ++++ common/unicode/platform.h +@@ -499,6 +499,22 @@ namespace std { + #endif + + /** ++ * \def U_HAVE_RVALUE_REFERENCES ++ * Set to 1 if the compiler supports rvalue references. ++ * C++11 feature, necessary for move constructor & move assignment. ++ * @internal ++ */ ++#ifdef U_HAVE_RVALUE_REFERENCES ++ /* Use the predefined value. */ ++#elif U_CPLUSPLUS_VERSION >= 11 || __has_feature(cxx_rvalue_references) \ ++ || defined(__GXX_EXPERIMENTAL_CXX0X__) \ ++ || (defined(_MSC_VER) && _MSC_VER >= 1600) /* Visual Studio 2010 */ ++# define U_HAVE_RVALUE_REFERENCES 1 ++#else ++# define U_HAVE_RVALUE_REFERENCES 0 ++#endif ++ ++/** + * \def U_NOEXCEPT + * "noexcept" if supported, otherwise empty. + * Some code, especially STL containers, uses move semantics of objects only +--- common/unicode/unistr.h.orig 2017-09-14 19:20:49 UTC ++++ common/unicode/unistr.h +@@ -1891,6 +1891,7 @@ class U_COMMON_API UnicodeString : public Replaceable + */ + UnicodeString &fastCopyFrom(const UnicodeString &src); + ++#if U_HAVE_RVALUE_REFERENCES + /** + * Move assignment operator, might leave src in bogus state. + * This string will have the same contents and state that the source string had. +@@ -1902,7 +1903,7 @@ class U_COMMON_API UnicodeString : public Replaceable + UnicodeString &operator=(UnicodeString &&src) U_NOEXCEPT { + return moveFrom(src); + } +- ++#endif + // do not use #ifndef U_HIDE_DRAFT_API for moveFrom, needed by non-draft API + /** + * Move assignment, might leave src in bogus state. +@@ -3349,6 +3350,7 @@ class U_COMMON_API UnicodeString : public Replaceable + */ + UnicodeString(const UnicodeString& that); + ++#if U_HAVE_RVALUE_REFERENCES + /** + * Move constructor, might leave src in bogus state. + * This string will have the same contents and state that the source string had. +@@ -3356,6 +3358,7 @@ class U_COMMON_API UnicodeString : public Replaceable + * @stable ICU 56 + */ + UnicodeString(UnicodeString &&src) U_NOEXCEPT; ++#endif + + /** + * 'Substring' constructor from tail of source string. +--- common/unistr.cpp.orig 2017-04-26 20:23:44 UTC ++++ common/unistr.cpp +@@ -308,10 +308,12 @@ UnicodeString::UnicodeString(const UnicodeString& that + copyFrom(that); + } + ++#if U_HAVE_RVALUE_REFERENCES + UnicodeString::UnicodeString(UnicodeString &&src) U_NOEXCEPT { + fUnion.fFields.fLengthAndFlags = kShortString; + moveFrom(src); + } ++#endif + + UnicodeString::UnicodeString(const UnicodeString& that, + int32_t srcStart) { +--- test/intltest/itutil.cpp.orig 2017-04-26 20:23:44 UTC ++++ test/intltest/itutil.cpp +@@ -375,6 +375,7 @@ void LocalPointerTest::TestLocalPointerMoveSwap() { + if(s3.getAlias() != p1 || s1.isValid()) { + errln("LocalPointer.moveFrom() did not move"); + } ++#if U_HAVE_RVALUE_REFERENCES + infoln("TestLocalPointerMoveSwap() with rvalue references"); + s1 = static_cast &&>(s3); + if(s1.getAlias() != p1 || s3.isValid()) { +@@ -384,6 +385,9 @@ void LocalPointerTest::TestLocalPointerMoveSwap() { + if(s4.getAlias() != p2 || s2.isValid()) { + errln("LocalPointer move constructor did not move"); + } ++#else ++ infoln("TestLocalPointerMoveSwap() without rvalue references"); ++#endif + + // Move self assignment leaves the object valid but in an undefined state. + // Do it to make sure there is no crash, +@@ -468,6 +472,7 @@ void LocalPointerTest::TestLocalArrayMoveSwap() { + if(a3.getAlias() != p1 || a1.isValid()) { + errln("LocalArray.moveFrom() did not move"); + } ++#if U_HAVE_RVALUE_REFERENCES + infoln("TestLocalArrayMoveSwap() with rvalue references"); + a1 = static_cast &&>(a3); + if(a1.getAlias() != p1 || a3.isValid()) { +@@ -477,6 +482,9 @@ void LocalPointerTest::TestLocalArrayMoveSwap() { + if(a4.getAlias() != p2 || a2.isValid()) { + errln("LocalArray move constructor did not move"); + } ++#else ++ infoln("TestLocalArrayMoveSwap() without rvalue references"); ++#endif + + // Move self assignment leaves the object valid but in an undefined state. + // Do it to make sure there is no crash, +@@ -636,6 +644,7 @@ void LocalPointerTest::TestLocalXyzPointerMoveSwap() { + if(f3.getAlias() != p1 || f1.isValid()) { + errln("LocalUNormalizer2Pointer.moveFrom() did not move"); + } ++#if U_HAVE_RVALUE_REFERENCES + infoln("TestLocalXyzPointerMoveSwap() with rvalue references"); + f1 = static_cast(f3); + if(f1.getAlias() != p1 || f3.isValid()) { +@@ -645,6 +654,9 @@ void LocalPointerTest::TestLocalXyzPointerMoveSwap() { + if(f4.getAlias() != p2 || f2.isValid()) { + errln("LocalUNormalizer2Pointer move constructor did not move"); + } ++#else ++ infoln("TestLocalXyzPointerMoveSwap() without rvalue references"); ++#endif + // Move self assignment leaves the object valid but in an undefined state. + // Do it to make sure there is no crash, + // but do not check for any particular resulting value. +--- test/intltest/ustrtest.cpp.orig 2017-09-21 23:45:08 UTC ++++ test/intltest/ustrtest.cpp +@@ -2160,6 +2160,7 @@ UnicodeStringTest::TestMoveSwap() { + if(s6.getBuffer() != abc || s6.length() != 3) { + errln("UnicodeString.moveFrom(alias) did not move"); + } ++#if U_HAVE_RVALUE_REFERENCES + infoln("TestMoveSwap() with rvalue references"); + s1 = static_cast(s6); + if(s1.getBuffer() != abc || s1.length() != 3) { +@@ -2169,6 +2170,10 @@ UnicodeStringTest::TestMoveSwap() { + if(s7.getBuffer() != p || s7.length() != 100 || !s4.isBogus()) { + errln("UnicodeString move constructor did not move"); + } ++#else ++ infoln("TestMoveSwap() without rvalue references"); ++ UnicodeString s7; ++#endif + + // Move self assignment leaves the object valid but in an undefined state. + // Do it to make sure there is no crash, --- b/devel/icu/pkg-plist +++ b/devel/icu/pkg-plist @@ -90,6 +90,8 @@ include/unicode/messagepattern.h include/unicode/msgfmt.h include/unicode/normalizer2.h include/unicode/normlzr.h +include/unicode/nounit.h +include/unicode/numberformatter.h include/unicode/numfmt.h include/unicode/numsys.h include/unicode/parseerr.h @@ -117,6 +119,7 @@ include/unicode/smpdtfmt.h include/unicode/sortkey.h include/unicode/std_string.h include/unicode/strenum.h +include/unicode/stringoptions.h include/unicode/stringpiece.h include/unicode/stringtriebuilder.h include/unicode/stsearch.h