svn commit: r432898 - in head/editors/openoffice-4: . files
Don Lewis
truckman at FreeBSD.org
Tue Jan 31 03:42:09 UTC 2017
Author: truckman
Date: Tue Jan 31 03:42:07 2017
New Revision: 432898
URL: https://svnweb.freebsd.org/changeset/ports/432898
Log:
On amd64, clang++ 4.0 uses the MOVAPS SSE instruction to initialize
sufficiently large objects returned by the "new" operator. This
requires that the object have 16-byte alignment. The FreeBSD
malloc() implementation does the correct thing here, but OpenOffice
has a couple of internal memory allocator implementations that only
align to 8-byte boundaries at most. In addition OpenOffice overrides
the new operator to interpose a couple of layers of wrappers. If
the --enable-debug option is passed to configure, the wrapper adds
8 to the size passed to the allocator and adds an 8 byte offset to
the pointer returned by the allocator to make room for a signature
that it adds to the beginning of the memory block (the signature
is validated and the inverse transformation is done when the memory
is freed). This breaks the proper alignment done by the mamory
allocator. Fix these problems by adding an EXTRA_PATCH that teaches
the internal OpenOffice memory allocators to do 16-byte alignment
and to use a 16-byte offset in the "new" wrapper, and apply this
patch on amd64 if clang 4.0 is the system compiler.
Pass the --with-alloc=system flag to configure so that the libc
version of malloc() is used instead of one of the internal memory
allocator implementations.
Fix a few mis-sorts in BUILD_DEPENDS and don't list www/p5-libwww
twice.
Fix a compile error in the bridges code when --enable-debug is
specified.
Fix a sporadic failure in the clear_001 QA test that occasionally
breaks the build. The nominal mutex hold time is 5 seconds, but
because it is only checked one per second, the actual time is more
likely to be around 6 seconds. When the before time value is
subtracted from the after time value, the result might be 7 whole
seconds and a large negative number of nanoseconds. Since the
pass/fail check only looks at the difference in the seconds fields,
it will fail the "< 7" assertion. Relax the assertion to "<= 7"
as a quick fix.
The editors/openoffice-4 port does not need poppler. It is only
needed for the PDF import extension, which is not built in OpenOffice
4.1.x.
Cherrypick some cleanups from PR 216245 [1]:
* The --without-stlport configure flag is not needed.
* Pass the -with-build-version flag to configure (but use ${PKGNAME}
for completeness instead of just ${PORTNAME}-${PORTVERSION})
* Tweak a comment in the Makefile.
PR: 216245
Submitted by: pfg [1]
Added:
head/editors/openoffice-4/files/extra-patch-align16 (contents, props changed)
head/editors/openoffice-4/files/patch-bridges_source_cpp__uno_gcc3__freebsd__x86-64_uno2cpp.cxx (contents, props changed)
head/editors/openoffice-4/files/patch-sal_qa_osl_mutex_osl__Mutex.cxx (contents, props changed)
Modified:
head/editors/openoffice-4/Makefile
Modified: head/editors/openoffice-4/Makefile
==============================================================================
--- head/editors/openoffice-4/Makefile Tue Jan 31 03:40:46 2017 (r432897)
+++ head/editors/openoffice-4/Makefile Tue Jan 31 03:42:07 2017 (r432898)
@@ -3,7 +3,7 @@
PORTNAME= apache-openoffice
PORTVERSION= ${AOOVERSION}
-PORTREVISION= 6
+PORTREVISION= 7
CATEGORIES= editors java
MASTER_SITES= APACHE/openoffice/${PORTVERSION}/source \
http://tools.openoffice.org/unowinreg_prebuild/680/:unoreg \
@@ -20,7 +20,7 @@ EXTRACT_ONLY= ${AOOSRC}
MAINTAINER= office at FreeBSD.org
#de facto maintainer is truckman at FreeBSD.org
-#Frequent Patch submitters should optionally sign Apache iCLA
+#Frequent Patch submitters should (optionally) sign the Apache iCLA
COMMENT= Integrated wordprocessor/dbase/spreadsheet/drawing/chart/browser
LICENSE= APACHE20 ADOBE BSD3CLAUSE BSD4CLAUSE BSL ICU MIT MPL \
@@ -48,9 +48,6 @@ LICENSE_PERMS_W3C= dist-mirror dist-sell
BUILD_DEPENDS= \
p5-Archive-Zip>=0:archivers/p5-Archive-Zip \
- p5-libwww>=0:www/p5-libwww \
- p5-LWP-Protocol-https>0:www/p5-LWP-Protocol-https \
- p5-XML-Parser>=0:textproc/p5-XML-Parser \
${LOCALBASE}/bin/unzip:archivers/unzip \
zip:archivers/zip \
ant:devel/apache-ant \
@@ -68,14 +65,15 @@ BUILD_DEPENDS= \
${JAVALIBDIR}/bsh.jar:lang/bsh \
bash:shells/bash \
${JAVALIBDIR}/lucene-core-3.6.2.jar:textproc/lucene \
- p5-libwww>=0:www/p5-libwww
+ p5-XML-Parser>=0:textproc/p5-XML-Parser \
+ p5-libwww>=0:www/p5-libwww \
+ p5-LWP-Protocol-https>0:www/p5-LWP-Protocol-https
LIB_DEPENDS= \
libapr-1.so:devel/apr1 \
libnspr4.so:devel/nspr \
libcurl.so:ftp/curl \
libcairo.so:graphics/cairo \
libpng.so:graphics/png \
- libpoppler-glib.so:graphics/poppler-glib \
libgraphite.so:graphics/silgraphite \
libCoinMP.so:math/coinmp \
libfreetype.so:print/freetype2 \
@@ -178,6 +176,9 @@ TARGET_ORDER_OVERRIDE= 710:gnome-post-ic
.if ${COMPILER_TYPE} == clang
CPPFLAGS+= -I${LOCALBASE}/include
+. if ${COMPILER_VERSION} >= 40 && ${ARCH} == amd64
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-align16
+. endif
.endif
.if ${ARCH} == amd64
@@ -216,6 +217,7 @@ SUB_LIST= EXECBASE=${EXECBASE} AOOTAG=${
CONFIGURE_ARGS+= \
--with-unix-wrapper=${EXECBASE} \
+ --with-alloc=system \
--with-system-apache-commons=yes \
--with-commons-codec-jar=${JAVALIBDIR}/commons-codec.jar \
--with-commons-lang-jar=${JAVALIBDIR}/commons-lang.jar \
@@ -260,14 +262,13 @@ CONFIGURE_ARGS+= \
--enable-opengl \
--with-system-openssl \
--with-package-format="archive" \
- --with-system-poppler \
--with-system-python \
--with-system-redland \
--with-system-sane \
--with-system-serf \
--with-system-stdlibs \
- --without-stlport \
--with-vendor="FreeBSD ports system" \
+ --with-build-version="PKGNAME: ${PKGNAME:S/,/@/g}" \
--enable-verbose \
--with-system-vigra \
--with-system-xrender \
Added: head/editors/openoffice-4/files/extra-patch-align16
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/editors/openoffice-4/files/extra-patch-align16 Tue Jan 31 03:42:07 2017 (r432898)
@@ -0,0 +1,70 @@
+--- sal/cpprt/operators_new_delete.cxx.orig 2014-09-19 17:58:40 UTC
++++ sal/cpprt/operators_new_delete.cxx
+@@ -68,7 +68,7 @@ struct AllocatorTraits
+ {
+ n = std::max(n, std::size_t(1));
+ #if OSL_DEBUG_LEVEL > 0
+- n += sizeof(signature_type);
++ n += 2*sizeof(signature_type);
+ #endif /* OSL_DEBUG_LEVEL */
+ return n;
+ }
+@@ -77,7 +77,7 @@ struct AllocatorTraits
+ {
+ #if OSL_DEBUG_LEVEL > 0
+ memcpy (p, m_signature, sizeof(signature_type));
+- p = static_cast<char*>(p) + sizeof(signature_type);
++ p = static_cast<char*>(p) + 2*sizeof(signature_type);
+ #endif /* OSL_DEBUG_LEVEL */
+ return p;
+ }
+@@ -85,7 +85,7 @@ struct AllocatorTraits
+ void* fini (void * p) const SAL_THROW(())
+ {
+ #if OSL_DEBUG_LEVEL > 0
+- p = static_cast<char*>(p) - sizeof(signature_type);
++ p = static_cast<char*>(p) - 2*sizeof(signature_type);
+ if (memcmp (p, m_signature, sizeof(signature_type)) != 0)
+ {
+ OSL_ENSURE(0, "operator delete mismatch");
+--- sal/rtl/source/alloc_cache.c.orig 2016-06-21 21:57:07 UTC
++++ sal/rtl/source/alloc_cache.c
+@@ -894,7 +894,9 @@ rtl_cache_activate (
+ if (objalign == 0)
+ {
+ /* determine default alignment */
+- if (objsize >= RTL_MEMORY_ALIGNMENT_8)
++ if (objsize >= RTL_MEMORY_ALIGNMENT_16)
++ objalign = RTL_MEMORY_ALIGNMENT_16;
++ else if (objsize >= RTL_MEMORY_ALIGNMENT_8)
+ objalign = RTL_MEMORY_ALIGNMENT_8;
+ else
+ objalign = RTL_MEMORY_ALIGNMENT_4;
+--- sal/rtl/source/alloc_global.c.orig 2016-06-21 21:57:06 UTC
++++ sal/rtl/source/alloc_global.c
+@@ -75,8 +75,8 @@ static rtl_cache_type * g_alloc_caches[R
+ 0,
+ };
+
+-#define RTL_MEMALIGN 8
+-#define RTL_MEMALIGN_SHIFT 3
++#define RTL_MEMALIGN 16
++#define RTL_MEMALIGN_SHIFT 4
+
+ static rtl_cache_type * g_alloc_table[RTL_MEMORY_CACHED_LIMIT >> RTL_MEMALIGN_SHIFT] =
+ {
+--- sal/rtl/source/alloc_impl.h.orig 2014-09-19 17:59:16 UTC
++++ sal/rtl/source/alloc_impl.h
+@@ -45,6 +45,12 @@ extern "C" {
+ #define RTL_MEMORY_ALIGNMENT_8 sizeof(void*)
+ #endif /* SAL_TYPES_ALIGNMENT8 */
+
++#if defined(SAL_TYPES_ALIGNMENT16) && SAL_TYPES_ALIGNMENT16 > 1
++#define RTL_MEMORY_ALIGNMENT_16 SAL_TYPES_ALIGNMENT16
++#else
++#define RTL_MEMORY_ALIGNMENT_16 16
++#endif /* SAL_TYPES_ALIGNMENT16 */
++
+ #if 0 /* @@@ */
+ #define RTL_MEMORY_ALIGNMENT_1 8
+ #define RTL_MEMORY_ALIGNMENT_2 (sizeof(void*) * 2)
Added: head/editors/openoffice-4/files/patch-bridges_source_cpp__uno_gcc3__freebsd__x86-64_uno2cpp.cxx
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/editors/openoffice-4/files/patch-bridges_source_cpp__uno_gcc3__freebsd__x86-64_uno2cpp.cxx Tue Jan 31 03:42:07 2017 (r432898)
@@ -0,0 +1,12 @@
+--- bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx.orig 2016-09-10 13:54:56 UTC
++++ bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx
+@@ -28,6 +28,9 @@
+ #include <exception>
+ #include <cstddef>
+ #include <cxxabi.h>
++#if OSL_DEBUG_LEVEL > 1
++#include <stdio.h>
++#endif
+ #include <stdlib.h>
+ #include <string.h>
+
Added: head/editors/openoffice-4/files/patch-sal_qa_osl_mutex_osl__Mutex.cxx
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/editors/openoffice-4/files/patch-sal_qa_osl_mutex_osl__Mutex.cxx Tue Jan 31 03:42:07 2017 (r432898)
@@ -0,0 +1,11 @@
+--- sal/qa/osl/mutex/osl_Mutex.cxx.orig 2016-09-10 13:55:07 UTC
++++ sal/qa/osl/mutex/osl_Mutex.cxx
+@@ -773,7 +773,7 @@ namespace osl_ClearableGuard
+ myThread.join();
+
+ CPPUNIT_ASSERT_MESSAGE("ClearableGuard method: clear",
+- nSec < 7 && nSec > 1);
++ nSec <= 7 && nSec > 1);
+ }
+
+ void clear_002( )
More information about the svn-ports-all
mailing list