extra/qt to 4.8.3-5

This commit is contained in:
Kevin Mihelich 2012-11-05 06:58:08 +00:00
parent 030c95e287
commit 8bbbbaf075
3 changed files with 117 additions and 16 deletions

View file

@ -6,7 +6,6 @@
# - Just say NO to x86 optimizations ;)
# - disabled distcc, ccache - bad things happen
# - don't use -no-neon on armv7
# - make -j1 for v5, -j2 for v7 (pandaboard builder)
# - added -fno-strict-volatile-bitfields to CXXFLAGS to fix ARM bug
# - disabled gcc47.patch since we're not on that yet
# - no libfbclient/ibase, issues building on ARM
@ -14,7 +13,7 @@
pkgbase=qt
pkgname=('qt' 'qt-private-headers')
pkgver=4.8.3
pkgrel=4
pkgrel=5
arch=('i686' 'x86_64')
url='http://qt-project.org/'
license=('GPL3' 'LGPL')
@ -29,7 +28,9 @@ source=("http://releases.qt-project.org/qt4/source/${_pkgfqn}.tar.gz"
'qtconfig.desktop'
'improve-cups-support.patch'
'fix-crash-in-assistant.patch'
'disable-ssl-compression.patch')
'disable-ssl-compression.patch'
'fix-qtscript-crash.patch'
'qsortfilterproxymodel.patch')
md5sums=('a663b6c875f8d7caa8ac9c30e4a4ec3b'
'fc211414130ab2764132e7370f8e5caa'
'85179f5e0437514f8639957e1d8baf62'
@ -37,10 +38,12 @@ md5sums=('a663b6c875f8d7caa8ac9c30e4a4ec3b'
'6b771c8a81dd90b45e8a79afa0e5bbfd'
'b9fb6b953cec428d59c026b1ef370e86'
'57590084078b6379f0501f7728b02ae2'
'94e9e433342018bf35e8d6d968b7432c')
'94e9e433342018bf35e8d6d968b7432c'
'71579422635e9343665de1c1ba5a3f91'
'cd550cd628d10459128ca5f231ca6d3f')
build() {
cd "${srcdir}"/${_pkgfqn}
cd ${_pkgfqn}
# (FS#28381) (KDEBUG#180051)
patch -p1 -i "${srcdir}"/improve-cups-support.patch
@ -50,6 +53,12 @@ build() {
# Security fix
patch -p1 -i "${srcdir}"/disable-ssl-compression.patch
# QTBUG#27322
patch -p1 -i "${srcdir}"/fix-qtscript-crash.patch
# QTBUG#27122
patch -p1 -i "${srcdir}"/qsortfilterproxymodel.patch
export QT4DIR="${srcdir}"/${_pkgfqn}
export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}
@ -59,12 +68,6 @@ build() {
sed -i "/^QMAKE_LFLAGS_RPATH/s| -Wl,-rpath,||g" mkspecs/common/gcc-base-unix.conf
sed -i "/^QMAKE_LFLAGS\s/s|+=|+= ${LDFLAGS}|g" mkspecs/common/gcc-base.conf
if [ "${CARCH}" = "armv6h" -o "${CARCH}" = "armv7h" ]; then
mymakeflags="-j2"
else
mymakeflags="-j1"
fi
./configure -confirm-license -opensource \
-prefix /usr \
-docdir /usr/share/doc/qt \
@ -101,7 +104,7 @@ build() {
-no-sse4.2 \
-no-avx \
-no-neon
make ${mymakeflags}
make
}
package_qt() {
@ -114,10 +117,11 @@ package_qt() {
'unixodbc: ODBC driver'
'libxinerama: Xinerama support'
'libxcursor: Xcursor support'
'libxfixes: Xfixes support')
'libxfixes: Xfixes support'
'icu: Unicode support')
install='qt.install'
cd "${srcdir}"/${_pkgfqn}
cd ${_pkgfqn}
make INSTALL_ROOT="${pkgdir}" install
# install missing icons and desktop files
@ -157,11 +161,11 @@ package_qt-private-headers(){
install -d "${pkgdir}"/usr/src/{corelib,declarative,gui,script}
for i in QtCore QtDeclarative QtGui QtScript; do
cp -r "${srcdir}"/${_pkgfqn}/include/${i}/private/ \
cp -r ${_pkgfqn}/include/${i}/private/ \
"${pkgdir}"/usr/include/${i}/
done
for i in corelib declarative gui script; do
cp -r "${srcdir}"/${_pkgfqn}/src/${i} "${pkgdir}"/usr/src/
cp -r ${_pkgfqn}/src/${i} "${pkgdir}"/usr/src/
done
}

View file

@ -0,0 +1,34 @@
From e6b7178bc2e62a37b4737695bced1b46bced9215 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= <jedrzej.nowacki@digia.com>
Date: Mon, 22 Oct 2012 15:17:19 +0200
Subject: [PATCH] Fix mmap usage.
Add missing MAP_NORESERVE and fix error checking.
Special thanks to Olivier JG for debugging the issue.
Task-number: QTBUG-27322
Change-Id: Ia9f4aa80415f0127318714912b524131a5b0f18a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
---
.../JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp
index 16d0fb1..e1237e4 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp
@@ -305,8 +305,8 @@ public:
randomLocation += (1 << 24);
randomLocation <<= 21;
#endif
- m_base = mmap(reinterpret_cast<void*>(randomLocation), m_totalHeapSize, INITIAL_PROTECTION_FLAGS, MAP_PRIVATE | MAP_ANON, VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY, 0);
- if (!m_base)
+ m_base = mmap(reinterpret_cast<void*>(randomLocation), m_totalHeapSize, INITIAL_PROTECTION_FLAGS, MAP_PRIVATE | MAP_ANON | MAP_NORESERVE, VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY, 0);
+ if (m_base == MAP_FAILED)
CRASH();
// For simplicity, we keep all memory in m_freeList in a 'released' state.
--
1.8.0

View file

@ -0,0 +1,63 @@
From 989e6c5ee6f3e38b24632ec5caf49c5b03d17aed Mon Sep 17 00:00:00 2001
From: Stephen Kelly <stephen.kelly@kdab.com>
Date: Fri, 14 Sep 2012 15:42:34 +0200
Subject: [PATCH] Fix crash when invalidating a QSortFilterProxyModel
Backport of d7a15fbfd93fb566c7793596ea50d8786b9eb654 from qtbase.
Task-number: QTBUG-27122
Change-Id: I0b1eda292fd9648e6f08629f7a069b66bb8b59e8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
---
src/gui/itemviews/qsortfilterproxymodel.cpp | 28 +++++++---
.../tst_qsortfilterproxymodel.cpp | 61 ++++++++++++++++++++++
2 files changed, 83 insertions(+), 6 deletions(-)
diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index d937b63..9fe224e 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -1036,18 +1036,34 @@ void QSortFilterProxyModelPrivate::filter_changed(const QModelIndex &source_pare
Mapping *m = it.value();
QSet<int> rows_removed = handle_filter_changed(m->proxy_rows, m->source_rows, source_parent, Qt::Vertical);
QSet<int> columns_removed = handle_filter_changed(m->proxy_columns, m->source_columns, source_parent, Qt::Horizontal);
- QVector<QModelIndex> mappedChildren = m->mapped_children;
- QVector<QModelIndex>::iterator it2 = mappedChildren.end();
- while (it2 != mappedChildren.begin()) {
- --it2;
- const QModelIndex source_child_index = *it2;
+
+ // We need to iterate over a copy of m->mapped_children because otherwise it may be changed by other code, invalidating
+ // the iterator it2.
+ // The m->mapped_children vector can be appended to with indexes which are no longer filtered
+ // out (in create_mapping) when this function recurses for child indexes.
+ const QVector<QModelIndex> mappedChildren = m->mapped_children;
+ QVector<int> indexesToRemove;
+ for (int i = 0; i < mappedChildren.size(); ++i) {
+ const QModelIndex source_child_index = mappedChildren.at(i);
if (rows_removed.contains(source_child_index.row()) || columns_removed.contains(source_child_index.column())) {
- it2 = mappedChildren.erase(it2);
+ indexesToRemove.push_back(i);
remove_from_mapping(source_child_index);
} else {
filter_changed(source_child_index);
}
}
+ QVector<int>::const_iterator removeIt = indexesToRemove.constEnd();
+ const QVector<int>::const_iterator removeBegin = indexesToRemove.constBegin();
+
+ // We can't just remove these items from mappedChildren while iterating above and then
+ // do something like m->mapped_children = mappedChildren, because mapped_children might
+ // be appended to in create_mapping, and we would lose those new items.
+ // Because they are always appended in create_mapping, we can still remove them by
+ // position here.
+ while (removeIt != removeBegin) {
+ --removeIt;
+ m->mapped_children.remove(*removeIt);
+ }
}
/*!
--
1.8.0