<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/a6a321c3be0395f4fc884cbfb607234e4fb7eb1f">https://github.com/macports/macports-ports/commit/a6a321c3be0395f4fc884cbfb607234e4fb7eb1f</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new a6a321c icu: fix build on 10.9
</span>a6a321c is described below
<span style='display:block; white-space:pre;color:#808000;'>commit a6a321c3be0395f4fc884cbfb607234e4fb7eb1f
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Oct 22 03:49:45 2019 +1100
<span style='display:block; white-space:pre;color:#404040;'> icu: fix build on 10.9
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> C++11 does not guarantee that max_align_t will be defined unless you
</span><span style='display:block; white-space:pre;color:#404040;'> but under the std namespace.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Technically 10.9 is broken in that it doesn't implement the C
</span><span style='display:block; white-space:pre;color:#404040;'> compatibility header <stddef.h> correctly in C++, but that is
</span><span style='display:block; white-space:pre;color:#404040;'> deprecated anyway, so using std::max_align_t is better all round.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/59391
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://github.com/macports/macports-ports/pull/5564
</span>---
devel/icu/Portfile | 2 +
devel/icu/files/max_align_t.patch | 89 +++++++++++++++++++++++++++++++++++++++
2 files changed, 91 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/icu/Portfile b/devel/icu/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 3e2dc61..7deed66 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/icu/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/icu/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -67,6 +67,8 @@ if { [vercmp ${version} 59] < 0 } {
</span> size 34655619
} else {
compiler.cxx_standard 2011
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://trac.macports.org/ticket/59391
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append max_align_t.patch
</span> }
worksrcdir icu-release-[join [split ${version} .] -]/${my_name}/source
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/icu/files/max_align_t.patch b/devel/icu/files/max_align_t.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d761b6a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/icu/files/max_align_t.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,89 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- tools/toolutil/toolutil.cpp.orig 2019-10-03 07:30:54.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ tools/toolutil/toolutil.cpp 2019-10-22 03:07:00.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -60,6 +60,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cstddef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "unicode/errorcode.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "unicode/putil.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "cmemory.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -243,7 +245,7 @@ struct UToolMemory {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char name[64];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int32_t capacity, maxCapacity, size, idx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *array;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- alignas(max_align_t) char staticArray[1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ alignas(std::max_align_t) char staticArray[1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ U_CAPI UToolMemory * U_EXPORT2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- common/uarrsort.cpp.orig 2019-10-03 07:30:54.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ common/uarrsort.cpp 2019-10-22 03:10:45.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -18,6 +18,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Internal function for sorting arrays.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cstddef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "unicode/utypes.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "cmemory.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "uarrsort.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -35,7 +37,7 @@ enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static constexpr int32_t sizeInMaxAlignTs(int32_t sizeInBytes) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return (sizeInBytes + sizeof(max_align_t) - 1) / sizeof(max_align_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (sizeInBytes + sizeof(std::max_align_t) - 1) / sizeof(std::max_align_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* UComparator convenience implementations ---------------------------------- */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -139,7 +141,7 @@ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ insertionSort(char *array, int32_t length, int32_t itemSize,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- icu::MaybeStackArray<max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE)> v;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ icu::MaybeStackArray<std::max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE)> v;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (sizeInMaxAlignTs(itemSize) > v.getCapacity() &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ v.resize(sizeInMaxAlignTs(itemSize)) == nullptr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *pErrorCode = U_MEMORY_ALLOCATION_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -233,7 +235,7 @@ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ quickSort(char *array, int32_t length, int32_t itemSize,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* allocate two intermediate item variables (x and w) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- icu::MaybeStackArray<max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE) * 2> xw;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ icu::MaybeStackArray<std::max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE) * 2> xw;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(sizeInMaxAlignTs(itemSize)*2 > xw.getCapacity() &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xw.resize(sizeInMaxAlignTs(itemSize) * 2) == nullptr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- common/utext.cpp.orig 2019-10-03 07:30:54.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ common/utext.cpp 2019-10-22 03:13:50.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -16,6 +16,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * created by: Markus W. Scherer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cstddef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "unicode/utypes.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "unicode/ustring.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "unicode/unistr.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -566,8 +568,8 @@ enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // when a provider asks for a UText to be allocated with extra storage.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct ExtendedUText {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- UText ut;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- max_align_t extension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ UText ut;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std::max_align_t extension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const UText emptyText = UTEXT_INITIALIZER;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -582,7 +584,7 @@ utext_setup(UText *ut, int32_t extraSpac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // We need to heap-allocate storage for the new UText
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int32_t spaceRequired = sizeof(UText);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (extraSpace > 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- spaceRequired = sizeof(ExtendedUText) + extraSpace - sizeof(max_align_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ spaceRequired = sizeof(ExtendedUText) + extraSpace - sizeof(std::max_align_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ut = (UText *)uprv_malloc(spaceRequired);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ut == NULL) {
</span></pre><pre style='margin:0'>
</pre>