From owner-svn-ports-head@FreeBSD.ORG Sun Jun 29 10:27:40 2014 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 54DDA1A3; Sun, 29 Jun 2014 10:27:40 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 405922CDA; Sun, 29 Jun 2014 10:27:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s5TAReTk043248; Sun, 29 Jun 2014 10:27:40 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s5TARd16043242; Sun, 29 Jun 2014 10:27:39 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201406291027.s5TARd16043242@svn.freebsd.org> From: Martin Matuska Date: Sun, 29 Jun 2014 10:27:39 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r359751 - in head/converters/wkhtmltopdf: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jun 2014 10:27:40 -0000 Author: mm Date: Sun Jun 29 10:27:39 2014 New Revision: 359751 URL: http://svnweb.freebsd.org/changeset/ports/359751 QAT: https://qat.redports.org/buildarchive/r359751/ Log: Update wkhtmltopdf to 0.12.1 Deleted: head/converters/wkhtmltopdf/files/patch-src__3rdparty__javascriptcore__JavaScriptCore__jit__JITStubs.cpp head/converters/wkhtmltopdf/files/patch-src__3rdparty__javascriptcore__JavaScriptCore__runtime__Collector.cpp head/converters/wkhtmltopdf/files/patch-src__3rdparty__javascriptcore__JavaScriptCore__runtime__JSValue.h head/converters/wkhtmltopdf/files/patch-src__3rdparty__javascriptcore__JavaScriptCore__wtf__HashTable.h head/converters/wkhtmltopdf/files/patch-src__3rdparty__javascriptcore__JavaScriptCore__wtf__Threading.h Modified: head/converters/wkhtmltopdf/Makefile head/converters/wkhtmltopdf/distinfo head/converters/wkhtmltopdf/files/patch-libcxx head/converters/wkhtmltopdf/files/patch-src__3rdparty__webkit__Source__JavaScriptCore__wtf__Atomics.h head/converters/wkhtmltopdf/pkg-plist Modified: head/converters/wkhtmltopdf/Makefile ============================================================================== --- head/converters/wkhtmltopdf/Makefile Sun Jun 29 09:59:25 2014 (r359750) +++ head/converters/wkhtmltopdf/Makefile Sun Jun 29 10:27:39 2014 (r359751) @@ -2,56 +2,56 @@ # $FreeBSD$ PORTNAME= wkhtmltopdf -PORTVERSION= 0.12.0 -PORTREVISION= 2 +PORTVERSION= 0.12.1 CATEGORIES= converters -MASTER_SITES= GH:wk \ - http://github.com/${GH_ACCOUNT}/qt/archive/${WKQT_TAGNAME}.tar.gz?dummy=/:wkqt -DISTFILES= ${PORTNAME}-${PORTVERSION}.tar.gz:wk \ - wkhtmltopdf-qt-${PORTVERSION}.tar.gz:wkqt +MASTER_SITES= SF +MASTER_SITE_SUBDIR= ${PORTNAME}/${PORTVERSION} +DISTNAME= wkhtmltox-${PORTVERSION} MAINTAINER= mm@FreeBSD.org -COMMENT= Convert HTML (or live webpages) to PDF or image files +COMMENT= Convert HTML (or live webpages) to PDF or image LICENSE= LGPL3 LICENSE_FILE_LGPL3= ${INSTALL_WRKSRC}/COPYING LIB_DEPENDS+= libfontconfig.so:${PORTSDIR}/x11-fonts/fontconfig \ - libfreetype.so:${PORTSDIR}/print/freetype2 + libfreetype.so:${PORTSDIR}/print/freetype2 \ + libjpeg.so:${PORTSDIR}/graphics/jpeg \ + libpng15.so:${PORTSDIR}/graphics/png -USE_GITHUB= yes -GH_ACCOUNT= wkhtmltopdf -GH_PROJECT= wkhtmltopdf -GH_COMMIT= 03c001d -GH_TAGNAME= 0.12.0 -WKQT_TAGNAME= wkhtmltopdf_0.12.0 +USE_BZIP2= yes -USES= pkgconfig gmake perl5 +USES= pkgconfig gmake perl5 iconv USE_XORG= x11 xext xrender USE_PERL5= build USE_LDCONFIG= yes HAS_CONFIGURE= yes -WRKSRC= ${WRKDIR}/qt-${WKQT_TAGNAME} -INSTALL_WRKSRC= ${WRKDIR}/${GH_ACCOUNT}-${GH_PROJECT}-${GH_COMMIT} +LIBVERSION= 0.12.0 -OPTIONS_DEFINE= BUNDLED_LIBS -BUNDLED_LIBS_DESC= Use Qt-bundled jpeg, mng, png and tiff - -CONFIGURE_ARGS= -prefix ${WRKDIR}/qt-wk \ - -release -static -fast -exceptions -no-accessibility -no-stl \ - -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite \ - -no-sql-sqlite2 -no-qt3support -xmlpatterns -no-phonon \ - -no-phonon-backend -webkit -no-scripttools -no-mmx -no-3dnow -no-sse \ - -no-sse2 -system-zlib \ - -graphicssystem raster -opensource -confirm-license \ - -nomake tools -nomake examples -nomake demos -nomake docs \ - -nomake translations -no-opengl -no-dbus -no-multimedia -openssl \ - -no-declarative -largefile -rpath -no-nis -no-cups -no-iconv -no-pch \ +WRKSRC= ${WRKDIR}/wkhtmltox-${PORTVERSION} +PATCH_WRKSRC= ${WRKSRC}/qt +CONFIGURE_WRKSRC= ${WRKSRC}/build/qt +BUILD_WRKSRC= ${WRKSRC}/build/qt +INSTALL_WRKSRC= ${WRKSRC}/build/app + +CONFIGURE_SCRIPT= ../../qt/configure +CONFIGURE_ARGS= -prefix ${WRKSRC}/build/qt \ + -opensource -confirm-license -fast -release -static \ + -graphicssystem raster -webkit -exceptions -xmlpatterns -system-zlib \ + -system-libpng -system-libjpeg -no-libmng -no-libtiff -no-stl \ + -no-accessibility -no-qt3support -no-phonon -no-phonon-backend \ + -no-opengl -no-declarative -no-script -no-scripttools \ + -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql \ + -no-sql-sqlite -no-sql-sqlite2 -no-mmx -no-3dnow -no-sse -no-sse2 \ + -no-multimedia -nomake demos -nomake docs -nomake examples \ + -nomake tools -nomake tests -nomake translations -xrender -largefile \ + -iconv -openssl -no-rpath -no-dbus -no-nis -no-cups -no-pch \ -no-gtkstyle -no-nas-sound -no-sm -no-xshape -no-xinerama -no-xcursor \ - -no-xfixes -no-xrandr -no-mitshm -no-xinput -no-xkb -no-glib -no-openvg \ - -no-opengl -no-xsync -no-audio-backend -no-sse3 -no-ssse3 -no-sse4.1 \ - -no-sse4.2 + -no-xfixes -no-xrandr -no-mitshm -no-xinput -no-xkb -no-glib \ + -no-gstreamer -D ENABLE_VIDEO=0 -no-openvg -no-xsync \ + -no-audio-backend -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx \ + -no-neon MAKE_ARGS+= INSTALL_ROOT="${STAGEDIR}${PREFIX}" @@ -65,38 +65,27 @@ BROKEN= fails to extract on FreeBSD 7.X BROKEN= Does not link on powerpc .endif -.if ${PORT_OPTIONS:MBUNDLED_LIBS} -CONFIGURE_ARGS+= -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -.else -LIB_DEPENDS+= libjpeg.so:${PORTSDIR}/graphics/jpeg \ - libpng15.so:${PORTSDIR}/graphics/png \ - libmng.so:${PORTSDIR}/graphics/libmng \ - libtiff.so:${PORTSDIR}/graphics/tiff -CONFIGURE_ARGS+= -system-libtiff -system-libpng -system-libmng \ - -system-libjpeg -.endif - post-patch: @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \ -e 's|/usr/X11R6/include|${LOCALBASE}/include/X11|g' \ -e 's|/usr/X11R6/lib|${LOCALBASE}/lib|g' \ - ${WRKSRC}/mkspecs/freebsd-g++/qmake.conf + ${PATCH_WRKSRC}/mkspecs/freebsd-g++/qmake.conf @${REINPLACE_CMD} -e "s|gcc|${CC}|g" -e "s|g++|${CXX}|g" \ - ${WRKSRC}/mkspecs/common/g++-base.conf + ${PATCH_WRKSRC}/mkspecs/common/g++-base.conf + @${REINPLACE_CMD} -e "s|share/man|man|g" \ + ${WRKSRC}/src/image/image.pro \ + ${WRKSRC}/src/pdf/pdf.pro + @${MKDIR} ${WRKSRC}/build/app ${WRKSRC}/build/qt \ + ${WRKSRC}/build/wkhtmltox post-build: - @cd ${WRKSRC} && \ - ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \ - ${MAKE_ARGS} ${INSTALL_TARGET} INSTALL_ROOT= - - @cd ${INSTALL_WRKSRC} && ${WRKDIR}/qt-wk/bin/qmake && \ + @cd ${WRKSRC}/build/app && ${SETENV} ${MAKE_ENV} \ + ../qt/bin/qmake ../../wkhtmltopdf.pro && \ ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \ ${_MAKE_JOBS} ${MAKE_ARGS:C,^${DESTDIRNAME}=.*,,g} \ ${ALL_TARGET} post-install: - @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/wkhtmltopdf \ - ${STAGEDIR}${PREFIX}/bin/wkhtmltoimage @${CAT} ${PKGMESSAGE} .include Modified: head/converters/wkhtmltopdf/distinfo ============================================================================== --- head/converters/wkhtmltopdf/distinfo Sun Jun 29 09:59:25 2014 (r359750) +++ head/converters/wkhtmltopdf/distinfo Sun Jun 29 10:27:39 2014 (r359751) @@ -1,4 +1,2 @@ -SHA256 (wkhtmltopdf-0.12.0.tar.gz) = 47b35536ca60220c402113c9ceee9b1f68bd7ca0dc831e3242e26684a9fd4baf -SIZE (wkhtmltopdf-0.12.0.tar.gz) = 135609 -SHA256 (wkhtmltopdf-qt-0.12.0.tar.gz) = 45c675a379478ec6bc4a5bae92264b92ba413a7b870615fac5f7868c304b992d -SIZE (wkhtmltopdf-qt-0.12.0.tar.gz) = 173004829 +SHA256 (wkhtmltox-0.12.1.tar.bz2) = 383041db30d6e08b9a6f126193a9e120e2791ff99005c39b1d0adacd53e2faca +SIZE (wkhtmltox-0.12.1.tar.bz2) = 36186476 Modified: head/converters/wkhtmltopdf/files/patch-libcxx ============================================================================== --- head/converters/wkhtmltopdf/files/patch-libcxx Sun Jun 29 09:59:25 2014 (r359750) +++ head/converters/wkhtmltopdf/files/patch-libcxx Sun Jun 29 10:27:39 2014 (r359751) @@ -208,7 +208,7 @@ libc++ provides std::nullptr emulation, #define __has_feature(feature) 0 #endif --#if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600 && !COMPILER(INTEL)) +-#if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600 && !COMPILER(INTEL)) || defined(_LIBCPP_VERSION) +#include + +#if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600 && !COMPILER(INTEL)) || defined(_LIBCPP_VERSION) @@ -231,288 +231,6 @@ libc++ provides std::nullptr emulation, document()->setParsing(false); // Make the doc think it's done, so it will apply xsl sheets. document()->styleSelectorChanged(RecalcStyleImmediately); document()->setParsing(true); ---- src/3rdparty/webkit/Source/WebCore/platform/Timer.cpp (revision 92555) -+++ src/3rdparty/webkit/Source/WebCore/platform/Timer.cpp (revision 92556) -@@ -41,6 +41,8 @@ - - namespace WebCore { - -+class TimerHeapReference; -+ - // Timers are stored in a heap data structure, used to implement a priority queue. - // This allows us to efficiently determine which timer needs to fire the soonest. - // Then we set a single shared system timer to fire at that time. -@@ -53,113 +55,141 @@ - return threadGlobalData().threadTimers().timerHeap(); - } - --// Class to represent elements in the heap when calling the standard library heap algorithms. --// Maintains the m_heapIndex value in the timers themselves, which allows us to do efficient --// modification of the heap. --class TimerHeapElement { -+// ---------------- -+ -+class TimerHeapPointer { - public: -- explicit TimerHeapElement(int i) -- : m_index(i) -- , m_timer(timerHeap()[m_index]) -- { -- checkConsistency(); -- } -+ TimerHeapPointer(TimerBase** pointer) : m_pointer(pointer) { } -+ TimerHeapReference operator*() const; -+ TimerBase* operator->() const { return *m_pointer; } -+private: -+ TimerBase** m_pointer; -+}; - -- TimerHeapElement(const TimerHeapElement&); -- TimerHeapElement& operator=(const TimerHeapElement&); -- -- TimerBase* timer() const { return m_timer; } -- -- void checkConsistency() const -- { -- ASSERT(m_index >= 0); -- ASSERT(m_index < static_cast(timerHeap().size())); -- } -- -+class TimerHeapReference { -+public: -+ TimerHeapReference(TimerBase*& reference) : m_reference(reference) { } -+ operator TimerBase*() const { return m_reference; } -+ TimerHeapPointer operator&() const { return &m_reference; } -+ TimerHeapReference& operator=(TimerBase*); -+ TimerHeapReference& operator=(TimerHeapReference); - private: -- TimerHeapElement(); -- -- int m_index; -- TimerBase* m_timer; -+ TimerBase*& m_reference; - }; - --inline TimerHeapElement::TimerHeapElement(const TimerHeapElement& o) -- : m_index(-1), m_timer(o.timer()) -+inline TimerHeapReference TimerHeapPointer::operator*() const - { -+ return *m_pointer; - } - --inline TimerHeapElement& TimerHeapElement::operator=(const TimerHeapElement& o) -+inline TimerHeapReference& TimerHeapReference::operator=(TimerBase* timer) - { -- TimerBase* t = o.timer(); -- m_timer = t; -- if (m_index != -1) { -- checkConsistency(); -- timerHeap()[m_index] = t; -- t->m_heapIndex = m_index; -- } -+ m_reference = timer; -+ Vector& heap = timerHeap(); -+ if (&m_reference >= heap.data() && &m_reference < heap.data() + heap.size()) -+ timer->m_heapIndex = &m_reference - heap.data(); - return *this; - } - --inline bool operator<(const TimerHeapElement& a, const TimerHeapElement& b) -+inline TimerHeapReference& TimerHeapReference::operator=(TimerHeapReference b) - { -- // The comparisons below are "backwards" because the heap puts the largest -- // element first and we want the lowest time to be the first one in the heap. -- double aFireTime = a.timer()->m_nextFireTime; -- double bFireTime = b.timer()->m_nextFireTime; -- if (bFireTime != aFireTime) -- return bFireTime < aFireTime; -- -- // We need to look at the difference of the insertion orders instead of comparing the two -- // outright in case of overflow. -- unsigned difference = a.timer()->m_heapInsertionOrder - b.timer()->m_heapInsertionOrder; -- return difference < UINT_MAX / 2; -+ TimerBase* timer = b; -+ return *this = timer; - } - -+inline void swap(TimerHeapReference a, TimerHeapReference b) -+{ -+ TimerBase* timerA = a; -+ TimerBase* timerB = b; -+ -+ // Invoke the assignment operator, since that takes care of updating m_heapIndex. -+ a = timerB; -+ b = timerA; -+} -+ - // ---------------- - - // Class to represent iterators in the heap when calling the standard library heap algorithms. --// Returns TimerHeapElement for elements in the heap rather than the TimerBase pointers themselves. --class TimerHeapIterator : public iterator { -+// Uses a custom pointer and reference type that update indices for pointers in the heap. -+class TimerHeapIterator : public iterator { - public: -- TimerHeapIterator() : m_index(-1) { } -- TimerHeapIterator(int i) : m_index(i) { checkConsistency(); } -+ explicit TimerHeapIterator(TimerBase** pointer) : m_pointer(pointer) { checkConsistency(); } - -- TimerHeapIterator& operator++() { checkConsistency(); ++m_index; checkConsistency(); return *this; } -- TimerHeapIterator operator++(int) { checkConsistency(); checkConsistency(1); return m_index++; } -+ TimerHeapIterator& operator++() { checkConsistency(); ++m_pointer; checkConsistency(); return *this; } -+ TimerHeapIterator operator++(int) { checkConsistency(1); return TimerHeapIterator(m_pointer++); } - -- TimerHeapIterator& operator--() { checkConsistency(); --m_index; checkConsistency(); return *this; } -- TimerHeapIterator operator--(int) { checkConsistency(); checkConsistency(-1); return m_index--; } -+ TimerHeapIterator& operator--() { checkConsistency(); --m_pointer; checkConsistency(); return *this; } -+ TimerHeapIterator operator--(int) { checkConsistency(-1); return TimerHeapIterator(m_pointer--); } - -- TimerHeapIterator& operator+=(int i) { checkConsistency(); m_index += i; checkConsistency(); return *this; } -- TimerHeapIterator& operator-=(int i) { checkConsistency(); m_index -= i; checkConsistency(); return *this; } -+ TimerHeapIterator& operator+=(ptrdiff_t i) { checkConsistency(); m_pointer += i; checkConsistency(); return *this; } -+ TimerHeapIterator& operator-=(ptrdiff_t i) { checkConsistency(); m_pointer -= i; checkConsistency(); return *this; } - -- TimerHeapElement operator*() const { return TimerHeapElement(m_index); } -- TimerHeapElement operator[](int i) const { return TimerHeapElement(m_index + i); } -+ TimerHeapReference operator*() const { return TimerHeapReference(*m_pointer); } -+ TimerHeapReference operator[](ptrdiff_t i) const { return TimerHeapReference(m_pointer[i]); } -+ TimerBase* operator->() const { return *m_pointer; } - -- int index() const { return m_index; } -- -- void checkConsistency(int offset = 0) const -+private: -+ void checkConsistency(ptrdiff_t offset = 0) const - { -- ASSERT_UNUSED(offset, m_index + offset >= 0); -- ASSERT_UNUSED(offset, m_index + offset <= static_cast(timerHeap().size())); -+ ASSERT(m_pointer >= timerHeap().data()); -+ ASSERT(m_pointer <= timerHeap().data() + timerHeap().size()); -+ ASSERT_UNUSED(offset, m_pointer + offset >= timerHeap().data()); -+ ASSERT_UNUSED(offset, m_pointer + offset <= timerHeap().data() + timerHeap().size()); - } - --private: -- int m_index; -+ friend bool operator==(TimerHeapIterator, TimerHeapIterator); -+ friend bool operator!=(TimerHeapIterator, TimerHeapIterator); -+ friend bool operator<(TimerHeapIterator, TimerHeapIterator); -+ friend bool operator>(TimerHeapIterator, TimerHeapIterator); -+ friend bool operator<=(TimerHeapIterator, TimerHeapIterator); -+ friend bool operator>=(TimerHeapIterator, TimerHeapIterator); -+ -+ friend TimerHeapIterator operator+(TimerHeapIterator, size_t); -+ friend TimerHeapIterator operator+(size_t, TimerHeapIterator); -+ -+ friend TimerHeapIterator operator-(TimerHeapIterator, size_t); -+ friend ptrdiff_t operator-(TimerHeapIterator, TimerHeapIterator); -+ -+ TimerBase** m_pointer; - }; - --inline bool operator==(TimerHeapIterator a, TimerHeapIterator b) { return a.index() == b.index(); } --inline bool operator!=(TimerHeapIterator a, TimerHeapIterator b) { return a.index() != b.index(); } --inline bool operator<(TimerHeapIterator a, TimerHeapIterator b) { return a.index() < b.index(); } -+inline bool operator==(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer == b.m_pointer; } -+inline bool operator!=(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer != b.m_pointer; } -+inline bool operator<(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer < b.m_pointer; } -+inline bool operator>(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer > b.m_pointer; } -+inline bool operator<=(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer <= b.m_pointer; } -+inline bool operator>=(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer >= b.m_pointer; } - --inline TimerHeapIterator operator+(TimerHeapIterator a, int b) { return a.index() + b; } --inline TimerHeapIterator operator+(int a, TimerHeapIterator b) { return a + b.index(); } -+inline TimerHeapIterator operator+(TimerHeapIterator a, size_t b) { return TimerHeapIterator(a.m_pointer + b); } -+inline TimerHeapIterator operator+(size_t a, TimerHeapIterator b) { return TimerHeapIterator(a + b.m_pointer); } - --inline TimerHeapIterator operator-(TimerHeapIterator a, int b) { return a.index() - b; } --inline int operator-(TimerHeapIterator a, TimerHeapIterator b) { return a.index() - b.index(); } -+inline TimerHeapIterator operator-(TimerHeapIterator a, size_t b) { return TimerHeapIterator(a.m_pointer - b); } -+inline ptrdiff_t operator-(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer - b.m_pointer; } - - // ---------------- - -+class TimerHeapLessThanFunction { -+public: -+ bool operator()(TimerBase*, TimerBase*) const; -+}; -+ -+inline bool TimerHeapLessThanFunction::operator()(TimerBase* a, TimerBase* b) const -+{ -+ // The comparisons below are "backwards" because the heap puts the largest -+ // element first and we want the lowest time to be the first one in the heap. -+ double aFireTime = a->m_nextFireTime; -+ double bFireTime = b->m_nextFireTime; -+ if (bFireTime != aFireTime) -+ return bFireTime < aFireTime; -+ -+ // We need to look at the difference of the insertion orders instead of comparing the two -+ // outright in case of overflow. -+ unsigned difference = a->m_heapInsertionOrder - b->m_heapInsertionOrder; -+ return difference < numeric_limits::max() / 2; -+} -+ -+// ---------------- -+ - TimerBase::TimerBase() - : m_nextFireTime(0) - , m_repeatInterval(0) -@@ -225,7 +255,8 @@ - { - ASSERT(m_nextFireTime != 0); - checkHeapIndex(); -- push_heap(TimerHeapIterator(0), TimerHeapIterator(m_heapIndex + 1)); -+ TimerBase** heapData = timerHeap().data(); -+ push_heap(TimerHeapIterator(heapData), TimerHeapIterator(heapData + m_heapIndex + 1), TimerHeapLessThanFunction()); - checkHeapIndex(); - } - -@@ -274,7 +305,9 @@ - { - ASSERT(this == timerHeap().first()); - checkHeapIndex(); -- pop_heap(TimerHeapIterator(0), TimerHeapIterator(timerHeap().size())); -+ Vector& heap = timerHeap(); -+ TimerBase** heapData = heap.data(); -+ pop_heap(TimerHeapIterator(heapData), TimerHeapIterator(heapData + heap.size()), TimerHeapLessThanFunction()); - checkHeapIndex(); - ASSERT(this == timerHeap().last()); - } ---- src/3rdparty/webkit/Source/WebCore/platform/Timer.h (revision 92555) -+++ src/3rdparty/webkit/Source/WebCore/platform/Timer.h (revision 92556) -@@ -84,9 +84,9 @@ - ThreadIdentifier m_thread; - #endif - -- friend class TimerHeapElement; - friend class ThreadTimers; -- friend bool operator<(const TimerHeapElement&, const TimerHeapElement&); -+ friend class TimerHeapLessThanFunction; -+ friend class TimerHeapReference; - }; - - template class Timer : public TimerBase { ---- src/3rdparty/webkit/Source/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp (revision 86531) -+++ src/3rdparty/webkit/Source/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp (revision 86532) -@@ -944,7 +944,7 @@ - - GraphicsLayerQt::GraphicsLayerQt(GraphicsLayerClient* client) - : GraphicsLayer(client) -- , m_impl(PassOwnPtr(new GraphicsLayerQtImpl(this))) -+ , m_impl(adoptPtr(new GraphicsLayerQtImpl(this))) - { - } - -@@ -955,7 +955,7 @@ - // This is the hook for WebCore compositor to know that Qt implements compositing with GraphicsLayerQt. - PassOwnPtr GraphicsLayer::create(GraphicsLayerClient* client) - { -- return new GraphicsLayerQt(client); -+ return adoptPtr(new GraphicsLayerQt(client)); - } - - /* \reimp (GraphicsLayer.h): The current size might change, thus we need to update the whole display. - --- src/3rdparty/webkit/Source/WebCore/loader/icon/IconRecord.h +++ src/3rdparty/webkit/Source/WebCore/loader/icon/IconRecord.h @@ -38,7 +38,7 @@ @@ -548,15 +266,6 @@ libc++ provides std::nullptr emulation, --- src/3rdparty/webkit/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp (revision 86529) +++ src/3rdparty/webkit/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp (revision 86530) -@@ -235,7 +235,7 @@ - resetConnections(); - QNetworkReply* reply = m_reply; - m_reply = 0; -- m_sniffer = 0; -+ m_sniffer = nullptr; - - reply->setParent(0); - return reply; @@ -285,7 +285,7 @@ Q_ASSERT(!m_sniffer); @@ -566,58 +275,7 @@ libc++ provides std::nullptr emulation, if (m_sniffer->isFinished()) { receiveSniffedMIMEType(); -@@ -300,7 +300,7 @@ - Q_ASSERT(m_sniffer); - - m_sniffedMIMEType = m_sniffer->mimeType(); -- m_sniffer = 0; -+ m_sniffer = nullptr; - - emitMetaDataChanged(); - } -@@ -417,7 +417,7 @@ - return 0; - - QNetworkReply* reply = m_replyWrapper->release(); -- m_replyWrapper = 0; -+ m_replyWrapper = nullptr; - return reply; - } - -@@ -440,12 +440,12 @@ - - ResourceHandleClient* client = m_resourceHandle->client(); - if (!client) { -- m_replyWrapper = 0; -+ m_replyWrapper = nullptr; - return; - } - - if (m_replyWrapper->wasRedirected()) { -- m_replyWrapper = 0; -+ m_replyWrapper = nullptr; - m_queue.push(&QNetworkReplyHandler::start); - return; - } -@@ -465,7 +465,7 @@ - } - } - -- m_replyWrapper = 0; -+ m_replyWrapper = nullptr; - } - - void QNetworkReplyHandler::sendResponseIfNeeded() -@@ -539,7 +539,7 @@ - newUrl.toString(), - QCoreApplication::translate("QWebPage", "Redirection limit reached")); - client->didFail(m_resourceHandle, error); -- m_replyWrapper = 0; -+ m_replyWrapper = nullptr; - return; - } - -@@ -660,7 +660,7 @@ +@@ -666,7 +666,7 @@ if (!reply) return; @@ -641,16 +299,7 @@ libc++ provides std::nullptr emulation, --- src/3rdparty/webkit/Source/WebKit/qt/Api/qgraphicswebview.cpp (revision 86532) +++ src/3rdparty/webkit/Source/WebKit/qt/Api/qgraphicswebview.cpp (revision 86533) -@@ -473,7 +473,7 @@ - return; - - page->d->view.clear(); -- page->d->client = 0; -+ page->d->client = nullptr; - - // if the page was created by us, we own it and need to - // destroy it as well. -@@ -506,7 +506,7 @@ +@@ -504,7 +504,7 @@ if (!d->page) return; @@ -927,18 +576,6 @@ libc++ provides std::nullptr emulation, , m_destroyingInspectorView(false) --- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp (revision 86536) +++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp (revision 86550) -@@ -73,9 +73,9 @@ - #if ENABLE(NOTIFICATIONS) - - #ifndef QT_NO_SYSTEMTRAYICON -- m_notificationIcon = 0; -+ m_notificationIcon = nullptr; - #endif -- m_presenter = 0; -+ m_presenter = nullptr; - #endif - } - @@ -211,9 +211,9 @@ QPixmap pixmap; if (bytes.length() && pixmap.loadFromData(bytes)) { Modified: head/converters/wkhtmltopdf/files/patch-src__3rdparty__webkit__Source__JavaScriptCore__wtf__Atomics.h ============================================================================== --- head/converters/wkhtmltopdf/files/patch-src__3rdparty__webkit__Source__JavaScriptCore__wtf__Atomics.h Sun Jun 29 09:59:25 2014 (r359750) +++ head/converters/wkhtmltopdf/files/patch-src__3rdparty__webkit__Source__JavaScriptCore__wtf__Atomics.h Sun Jun 29 10:27:39 2014 (r359751) @@ -1,49 +1,5 @@ -From e3c44790065894f4e7f98ab097fce22c5bcbbd0a Mon Sep 17 00:00:00 2001 -From: Raphael Kubo da Costa -Date: Tue, 2 Jul 2013 13:48:28 +0300 -Subject: [PATCH] Bring in WebKit revisions 139553 and 139921. - -They are primarily useful for getting rid of some libstdc++-specific -includes which break the build with libc++, and also for simplifying the -code and removing a Darwin-specific code path. - -r139553 by ossy@webkit.org: - Use sync_add_and_fetch instead of gnu_cxx::exchange_and_add - https://bugs.webkit.org/show_bug.cgi?id=106729 - - After r139514 we need atomicIncrement(int64_t volatile*) for all - platform. Now the GCC implementation of atomicIncrement() is based on - gnu_cxx::exchange_and_add, which doesn't support int64_t type, but - sync_add_and_fetch does. - - Reviewed by Benjamin Poulain. - -r139921 by benjamin@webkit.org: - Use GCC's implementation of atomicIncrement/Decrement on Mac - https://bugs.webkit.org/show_bug.cgi?id=106976 - - Reviewed by Filip Pizlo. - - wtf/Atomics.h: GCC and LLVM have builtin for atomic ADD and SUB: - sync_add_and_fetch, sync_sub_and_fetch. - - Using them let the compiler just generate the atomic operations inline - instead of generating a function call to LibC. It also simplify the - code a bit. - -Cherry-picked from qtwebkit/0baf197 and qtwebkit/801fc96. I'm cherry-picking -both revisions together to match what was done in 0de22e80. - -Change-Id: Ie5c1067980662ff04e8e36d8cf6e9459b7c46aab -Reviewed-by: Allan Sandfeld Jensen ---- - .../webkit/Source/JavaScriptCore/wtf/Atomics.h | 18 ++---------------- - 1 file changed, 2 insertions(+), 16 deletions(-) - -diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Atomics.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Atomics.h -index bce5fba..acf0e5a 100644 ---- src/3rdparty/webkit/Source/JavaScriptCore/wtf/Atomics.h -+++ src/3rdparty/webkit/Source/JavaScriptCore/wtf/Atomics.h +--- src/3rdparty/webkit/Source/JavaScriptCore/wtf/Atomics.h.orig 2014-04-10 20:37:11.000000000 +0200 ++++ src/3rdparty/webkit/Source/JavaScriptCore/wtf/Atomics.h 2014-04-24 16:11:40.000000000 +0200 @@ -63,18 +63,10 @@ #if OS(WINDOWS) @@ -63,12 +19,12 @@ index bce5fba..acf0e5a 100644 #endif namespace WTF { -@@ -90,12 +82,6 @@ inline int atomicIncrement(int volatile* addend) { return InterlockedIncrement(r +@@ -90,12 +82,6 @@ inline int atomicDecrement(int volatile* addend) { return InterlockedDecrement(reinterpret_cast(addend)); } #endif -#elif OS(DARWIN) --#define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1 +-#define WTF_USE_LOCKFREE_THREADSAFESHARED 1 - -inline int atomicIncrement(int volatile* addend) { return OSAtomicIncrement32Barrier(const_cast(addend)); } -inline int atomicDecrement(int volatile* addend) { return OSAtomicDecrement32Barrier(const_cast(addend)); } @@ -76,17 +32,3 @@ index bce5fba..acf0e5a 100644 #elif OS(ANDROID) inline int atomicIncrement(int volatile* addend) { return android_atomic_inc(addend); } -@@ -109,8 +95,8 @@ inline int atomicDecrement(int volatile* addend) { return (int) atomic_sub_value - #elif COMPILER(GCC) && !CPU(SPARC64) && !OS(SYMBIAN) // sizeof(_Atomic_word) != sizeof(int) on sparc64 gcc - #define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1 - --inline int atomicIncrement(int volatile* addend) { return __gnu_cxx::__exchange_and_add(addend, 1) + 1; } --inline int atomicDecrement(int volatile* addend) { return __gnu_cxx::__exchange_and_add(addend, -1) - 1; } -+inline int atomicIncrement(int volatile* addend) { return __sync_add_and_fetch(addend, 1); } -+inline int atomicDecrement(int volatile* addend) { return __sync_sub_and_fetch(addend, 1); } - - #endif - --- -1.8.4 - Modified: head/converters/wkhtmltopdf/pkg-plist ============================================================================== --- head/converters/wkhtmltopdf/pkg-plist Sun Jun 29 09:59:25 2014 (r359750) +++ head/converters/wkhtmltopdf/pkg-plist Sun Jun 29 10:27:39 2014 (r359751) @@ -1,21 +1,13 @@ bin/wkhtmltopdf bin/wkhtmltoimage -include/wkhtmltox/converter.hh include/wkhtmltox/dllbegin.inc include/wkhtmltox/dllend.inc include/wkhtmltox/image.h -include/wkhtmltox/imageconverter.hh -include/wkhtmltox/imagesettings.hh -include/wkhtmltox/loadsettings.hh -include/wkhtmltox/multipageloader.hh include/wkhtmltox/pdf.h -include/wkhtmltox/pdfconverter.hh -include/wkhtmltox/pdfsettings.hh -include/wkhtmltox/settings.hh -include/wkhtmltox/utilities.hh -include/wkhtmltox/websettings.hh lib/libwkhtmltox.so lib/libwkhtmltox.so.0 lib/libwkhtmltox.so.0.12 -lib/libwkhtmltox.so.0.12.0 +lib/libwkhtmltox.so.0.12.1 +man/man1/wkhtmltoimage.1.gz +man/man1/wkhtmltopdf.1.gz @dirrm include/wkhtmltox