summaryrefslogtreecommitdiff
path: root/source/l/qt
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/qt')
-rw-r--r--source/l/qt/QElfParser-fix-type-of-sh_size.patch41
-rw-r--r--source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch37
-rw-r--r--source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch97
-rw-r--r--source/l/qt/Qt.pc16
-rw-r--r--source/l/qt/doinst.sh5
-rw-r--r--source/l/qt/qt.QSortFilterProxyModel.reformatted.diff92
-rwxr-xr-xsource/l/qt/qt.SlackBuild185
-rw-r--r--source/l/qt/qt.assistant.memcpy-crash.diff11
-rw-r--r--source/l/qt/qt.blacklist.bad.certs.diff67
-rw-r--r--source/l/qt/qt.blacklist.bad.certs.patch02.diff35
-rw-r--r--source/l/qt/qt.ca89c49.cursor.position.diff31
-rw-r--r--source/l/qt/qt.ld-gold.patch22
-rw-r--r--source/l/qt/qt.webkit-no_Werror.patch13
-rw-r--r--source/l/qt/qt.webkit.glib.diff11
-rw-r--r--source/l/qt/qt.x86.cflags.diff11
-rw-r--r--source/l/qt/slack-desc2
16 files changed, 422 insertions, 254 deletions
diff --git a/source/l/qt/QElfParser-fix-type-of-sh_size.patch b/source/l/qt/QElfParser-fix-type-of-sh_size.patch
new file mode 100644
index 00000000..1c30f9a4
--- /dev/null
+++ b/source/l/qt/QElfParser-fix-type-of-sh_size.patch
@@ -0,0 +1,41 @@
+From 9e981c4dd03effc2c52b52f529edfa8955e534ce Mon Sep 17 00:00:00 2001
+From: Pino Toscano <toscano.pino@tiscali.it>
+Date: Tue, 15 May 2012 14:40:15 +0200
+Subject: [PATCH] QElfParser: fix type of sh_size
+
+The type of the sh_size field of a section header is either Elf32_Word or Elf64_Xword,
+so the type used cannot be qelfword_t (always 32 bits) but qelfoff_t.
+
+Change-Id: Ia380b6823913fee7a96b39f742630ae3a9ca0cb8
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+Reviewed-by: Arvid Picciani <arvid.picciani@nokia.com>
+(backport of 77b179689ba37dc909778fdd00df2701f83a2868 from qtbase)
+---
+ src/corelib/plugin/qelfparser_p.cpp | 4 ++--
+ src/corelib/plugin/qelfparser_p.h | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+--- a/src/corelib/plugin/qelfparser_p.cpp
++++ b/src/corelib/plugin/qelfparser_p.cpp
+@@ -61,8 +61,8 @@ const char *QElfParser::parseSectionHead
+ + sizeof(qelfaddr_t); // sh_addr
+ sh->offset = read<qelfoff_t>(data);
+ data += sizeof(qelfoff_t); // sh_offset
+- sh->size = read<qelfword_t>(data);
+- data += sizeof(qelfword_t); // sh_size
++ sh->size = read<qelfoff_t>(data);
++ data += sizeof(qelfoff_t); // sh_size
+ return data;
+ }
+
+--- a/src/corelib/plugin/qelfparser_p.h
++++ b/src/corelib/plugin/qelfparser_p.h
+@@ -80,7 +80,7 @@ public:
+ qelfword_t name;
+ qelfword_t type;
+ qelfoff_t offset;
+- qelfword_t size;
++ qelfoff_t size;
+ };
+
+ int m_endian;
diff --git a/source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch b/source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch
new file mode 100644
index 00000000..9acae10c
--- /dev/null
+++ b/source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch
@@ -0,0 +1,37 @@
+Description:
+ QPainter together with QPrinter leaves a lot of temporary files in
+ /tmp with every printout. That is a problem for embedded devices,
+ which have not such a large /tmp-partition. We are using 80 MByte as
+ tmpfs, i.e. in RAM. After some printounts cups deactivates the printer
+ because there is no space to copy the temporary files to /tmp.
+
+ What happened: In QPdfBaseEnginePrivate::openPrintDevice() noone
+ remembers the file descriptor opened by tempFile() which is a call to
+ the cups library to cupsTempFile()
+
+ Later in closePrintDevice the check for fd<0 fails, so no one closes
+ the file descriptor. If you later remove the file, the descriptor is
+ still open and cannot removed until you close the application.
+
+ If you print 20 times and more during your application is running and
+ you print out large files (complicate forms with a lot of elements
+ produces files with 3-4 MByte) your temporary file can be full, but
+ you don't see (with ls) files in it.
+
+Bug: https://bugreports.qt.nokia.com/browse/QTBUG-14724
+Author: Georg Scherzer
+
+---
+ src/gui/painting/qpdf.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/src/gui/painting/qpdf.cpp
++++ b/src/gui/painting/qpdf.cpp
+@@ -1686,6 +1686,7 @@ bool QPdfBaseEnginePrivate::openPrintDev
+ cupsTempFile = ret.second;
+ outDevice = new QFile();
+ static_cast<QFile *>(outDevice)->open(ret.first, QIODevice::WriteOnly);
++ fd = ret.first;
+ #endif
+ #ifndef QT_NO_LPR
+ } else {
diff --git a/source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch b/source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch
new file mode 100644
index 00000000..4d9834a8
--- /dev/null
+++ b/source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch
@@ -0,0 +1,97 @@
+From a91e9dd202640598d8dec091c67ec94536390e7f Mon Sep 17 00:00:00 2001
+From: "Owen W. Taylor" <otaylor@fishsoup.net>
+Date: Mon, 17 Oct 2011 17:27:43 -0400
+Subject: [PATCH] Fix logic for figuring out what ConfigureNotify positions can be trusted
+
+When reading ahead in the queue for ConfigureNotify events, it's necessary
+to look for intermediate ReparentNotify events as well, since they will
+determine whether the position in the event can be trusted or not.
+
+Bug: https://bugreports.qt.nokia.com/browse/QTBUG-21900
+---
+ src/gui/kernel/qapplication_x11.cpp | 47 +++++++++++++++++++++++++++++++-----
+ 1 file changed, 41 insertions(+), 6 deletions(-)
+
+--- a/src/gui/kernel/qapplication_x11.cpp
++++ b/src/gui/kernel/qapplication_x11.cpp
+@@ -816,6 +816,27 @@ static Bool qt_sync_request_scanner(Disp
+ #endif
+ #endif // QT_NO_XSYNC
+
++struct qt_configure_event_data
++{
++ WId window;
++ WId parent;
++};
++
++static Bool qt_configure_event_scanner(Display*, XEvent *event, XPointer arg)
++{
++ qt_configure_event_data *data =
++ reinterpret_cast<qt_configure_event_data*>(arg);
++ if (event->type == ConfigureNotify &&
++ event->xconfigure.window == data->window) {
++ return true;
++ } else if (event->type == ReparentNotify &&
++ event->xreparent.window == data->window) {
++ data->parent = event->xreparent.parent;
++ }
++
++ return false;
++}
++
+ static void qt_x11_create_intern_atoms()
+ {
+ const char *names[QX11Data::NAtoms];
+@@ -5281,8 +5302,11 @@ bool QETWidget::translateConfigEvent(con
+ if (d->extra->compress_events) {
+ // ConfigureNotify compression for faster opaque resizing
+ XEvent otherEvent;
+- while (XCheckTypedWindowEvent(X11->display, internalWinId(), ConfigureNotify,
+- &otherEvent)) {
++ qt_configure_event_data configureData;
++ configureData.window = internalWinId();
++ configureData.parent = d->topData()->parentWinId;
++ while (XCheckIfEvent(X11->display, &otherEvent,
++ &qt_configure_event_scanner, (XPointer)&configureData)) {
+ if (qt_x11EventFilter(&otherEvent))
+ continue;
+
+@@ -5295,13 +5319,19 @@ bool QETWidget::translateConfigEvent(con
+ newSize.setWidth(otherEvent.xconfigure.width);
+ newSize.setHeight(otherEvent.xconfigure.height);
+
++ trust = isVisible()
++ && (configureData.parent == XNone ||
++ configureData.parent == QX11Info::appRootWindow());
++
+ if (otherEvent.xconfigure.send_event || trust) {
+ newCPos.rx() = otherEvent.xconfigure.x +
+ otherEvent.xconfigure.border_width;
+ newCPos.ry() = otherEvent.xconfigure.y +
+ otherEvent.xconfigure.border_width;
+ isCPos = true;
+- }
++ } else {
++ isCPos = false;
++ }
+ }
+ #ifndef QT_NO_XSYNC
+ qt_sync_request_event_data sync_event;
+@@ -5314,9 +5344,14 @@ bool QETWidget::translateConfigEvent(con
+ }
+
+ if (!isCPos) {
+- // we didn't get an updated position of the toplevel.
+- // either we haven't moved or there is a bug in the window manager.
+- // anyway, let's query the position to be certain.
++ // If the last configure event didn't have a trustable position,
++ // it's necessary to query, see ICCCM 4.24:
++ //
++ // Any real ConfigureNotify event on a top-level window implies
++ // that the window position on the root may have changed, even
++ // though the event reports that the window position in its
++ // parent is unchanged because the window may have been reparented.
++
+ int x, y;
+ Window child;
+ XTranslateCoordinates(X11->display, internalWinId(),
diff --git a/source/l/qt/Qt.pc b/source/l/qt/Qt.pc
new file mode 100644
index 00000000..f4c0d593
--- /dev/null
+++ b/source/l/qt/Qt.pc
@@ -0,0 +1,16 @@
+prefix=/usr/lib${LIBDIRSUFFIX}/qt
+bindir=${prefix}/bin
+datadir=${prefix}
+docdir=${prefix}/doc
+headerdir=${prefix}/include
+importdir=${prefix}/imports
+libdir=${prefix}/lib
+moc=${bindir}/moc
+plugindir=${prefix}/plugins
+qmake=${bindir}/qmake
+sysconfdir=/etc
+translationdir=${prefix}/translations
+
+Name: Qt
+Description: Qt Configuration
+Version: 4.8.1
diff --git a/source/l/qt/doinst.sh b/source/l/qt/doinst.sh
index 6f7c5df0..b9a2c53b 100644
--- a/source/l/qt/doinst.sh
+++ b/source/l/qt/doinst.sh
@@ -3,3 +3,8 @@ if [ -x sbin/ldconfig ]; then
chroot . /sbin/ldconfig 2> /dev/null
fi
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database /usr/share/applications >/dev/null 2>&1
+fi
+
+
diff --git a/source/l/qt/qt.QSortFilterProxyModel.reformatted.diff b/source/l/qt/qt.QSortFilterProxyModel.reformatted.diff
deleted file mode 100644
index 0ab94b31..00000000
--- a/source/l/qt/qt.QSortFilterProxyModel.reformatted.diff
+++ /dev/null
@@ -1,92 +0,0 @@
---- ./src/gui/itemviews/qsortfilterproxymodel.cpp.orig 2010-11-20 17:54:23.000000000 -0600
-+++ ./src/gui/itemviews/qsortfilterproxymodel.cpp 2011-01-07 00:40:04.000000000 -0600
-@@ -782,14 +782,14 @@
- if (orthogonal_source_to_proxy.isEmpty()) {
- const int ortho_end = (orient == Qt::Horizontal) ? model->rowCount(source_parent) : model->columnCount(source_parent);
-
-+ orthogonal_source_to_proxy.resize(ortho_end);
-+
- for (int ortho_item = 0; ortho_item < ortho_end; ++ortho_item) {
- if ((orient == Qt::Horizontal) ? q->filterAcceptsRow(ortho_item, source_parent)
- : q->filterAcceptsColumn(ortho_item, source_parent)) {
- orthogonal_proxy_to_source.append(ortho_item);
- }
- }
-- orthogonal_source_to_proxy.resize(orthogonal_proxy_to_source.size());
--
- if (orient == Qt::Horizontal) {
- // We're reacting to columnsInserted, but we've just inserted new rows. Sort them.
- sort_source_rows(orthogonal_proxy_to_source, source_parent);
---- ./tests/auto/qsortfilterproxymodel/qsortfilterproxymodel.pro.orig 2010-11-20 17:54:28.000000000 -0600
-+++ ./tests/auto/qsortfilterproxymodel/qsortfilterproxymodel.pro 2011-01-07 00:40:04.000000000 -0600
-@@ -1,6 +1,7 @@
- load(qttest_p4)
-
--SOURCES += tst_qsortfilterproxymodel.cpp
--
-+INCLUDEPATH += $$PWD/../modeltest
-
-+SOURCES += tst_qsortfilterproxymodel.cpp ../modeltest/dynamictreemodel.cpp ../modeltest/modeltest.cpp
-+HEADERS += ../modeltest/dynamictreemodel.h ../modeltest/modeltest.h
-
---- ./tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp.orig 2010-11-20 17:54:28.000000000 -0600
-+++ ./tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp 2011-01-07 00:41:02.000000000 -0600
-@@ -43,6 +43,9 @@
- #include <QtTest/QtTest>
- #include "../../shared/util.h"
-
-+#include "dynamictreemodel.h"
-+#include "modeltest.h"
-+
- #include <QtCore>
- #include <QtGui>
-
-@@ -143,6 +146,7 @@
- void taskQTBUG_10287_unnecessaryMapCreation();
-
- void testMultipleProxiesWithSelection();
-+ void filteredColumns();
-
- protected:
- void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
-@@ -3135,5 +3139,40 @@
- // No assert failure, it passes.
- }
-
-+class FilteredColumnProxyModel : public QSortFilterProxyModel
-+{
-+ Q_OBJECT
-+public:
-+ FilteredColumnProxyModel(QObject *parent = 0)
-+ : QSortFilterProxyModel(parent)
-+ {
-+
-+ }
-+
-+protected:
-+ bool filterAcceptsColumn(int column, const QModelIndex &source_parent) const
-+ {
-+ return column % 2 != 0;
-+ }
-+};
-+
-+void tst_QSortFilterProxyModel::filteredColumns()
-+{
-+ DynamicTreeModel *model = new DynamicTreeModel(this);
-+
-+ FilteredColumnProxyModel *proxy = new FilteredColumnProxyModel(this);
-+ proxy->setSourceModel(model);
-+
-+ new ModelTest(proxy, this);
-+
-+ ModelInsertCommand *insertCommand = new ModelInsertCommand(model, this);
-+ insertCommand->setNumCols(2);
-+ insertCommand->setStartRow(0);
-+ insertCommand->setEndRow(0);
-+ // Parent is QModelIndex()
-+ insertCommand->doCommand();
-+
-+}
-+
- QTEST_MAIN(tst_QSortFilterProxyModel)
- #include "tst_qsortfilterproxymodel.moc"
diff --git a/source/l/qt/qt.SlackBuild b/source/l/qt/qt.SlackBuild
index f79d2c2a..b361aaee 100755
--- a/source/l/qt/qt.SlackBuild
+++ b/source/l/qt/qt.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009, 2010, 2011 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -35,23 +35,28 @@
#
# Alternate method (we don't use this):
# wget http://qt.gitorious.org/qt/kde-qt/archive-tarball/4.6.2-patched
+#
+# Modifications 2010, 2011, 2012 Eric Hameleers, Eindhoven, NL
+# qt 4.7.3, 4.7.4, 4.8.0, 4.8.1, 4.8.2 are built from original nokia sources.
PKGNAM=qt
-VERSION=$(ls qt-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)
-BUILD=${BUILD:-3}
+VERSION=$(ls qt-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
+BUILD=${BUILD:-4}
+
+NUMJOBS=${NUMJOBS:--j7}
# Automatically determine the architecture we're building on:
+MARCH=$( uname -m )
if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) export ARCH=i486 ;;
- arm*) export ARCH=arm ;;
+ case "$MARCH" in
+ i?86) export ARCH=i486 ;;
+ armv7hl) export ARCH=$MARCH ;;
+ arm*) export ARCH=arm ;;
# Unless $ARCH is already set, use uname -m for all other archs:
- *) export ARCH=$( uname -m ) ;;
+ *) export ARCH=$MARCH ;;
esac
fi
-NUMJOBS=${NUMJOBS:--j7}
-
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -61,11 +66,22 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "armv7hl" ]; then
+ # To prevent "qatomic_armv6.h error: output number 2 not directly addressable"
+ # More permanent solution is to patch gcc:
+ # http://bazaar.launchpad.net/~linaro-toolchain-dev/gcc-linaro/4.6/revision/106731
+ SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -fno-strict-volatile-bitfields"
+ LIBDIRSUFFIX=""
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
+case "$ARCH" in
+ arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
+ *) TARGET=$ARCH-slackware-linux ;;
+esac
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
@@ -73,23 +89,9 @@ PKG=$TMP/package-${PKGNAM}
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-#rm -rf qt-x11-opensource-src-$VERSION
-#tar xvf $CWD/qt-x11-opensource-src-$VERSION.tar.gz # For qt releases
-#cd qt-x11-opensource-src-$VERSION || exit 1
-
-rm -rf qt-$VERSION
-if [ -r $CWD/qt-$VERSION.tar.gz ]; then
- tar xvf $CWD/qt-$VERSION.tar.gz || exit 1
-elif [ -r $CWD/qt-$VERSION.tar.bz2 ]; then
- tar xvf $CWD/qt-$VERSION.tar.bz2 || exit 1
-elif [ -r $CWD/qt-$VERSION.tar.xz ]; then
- tar xvf $CWD/qt-$VERSION.tar.xz || exit 1
-elif [ -r $CWD/qt-$VERSION.tar.lzma ]; then
- tar xvf $CWD/qt-$VERSION.tar.lzma || exit 1
-else
- exit 1
-fi
-cd qt-$VERSION || exit 1
+rm -rf qt-everywhere-opensource-src-$VERSION
+tar xvf $CWD/qt-everywhere-opensource-src-$VERSION.tar.xz # For qt releases
+cd qt-everywhere-opensource-src-$VERSION || exit 1
chown -R root:root .
find . \
@@ -98,28 +100,32 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# apply_patches looks for a ".svn" directory, which doesn't exist in the used snapshot.
-# removing the check from apply_patches to not try to apply already applied patches
-sed -i "s| test -d .svn &&||" apply_patches
-
-# This is only needed/wanted for qt-copy (the r###### version) that we're
-# building right now. It might require manual intervention, so don't walk
-# away during the build
-./apply_patches
-
if [ $ARCH = "i486" ]; then
- zcat $CWD/qt.x86.cflags.diff.gz | patch -p1 || exit 1
+ sed -i -e "s/QMAKE_CFLAGS_RELEASE += -O2/QMAKE_CFLAGS_RELEASE += $SLKCFLAGS/" mkspecs/common/gcc-base.conf || exit 1
fi
# Fix path to mysql header
zcat $CWD/qt.mysql.h.diff.gz | patch -p1 --verbose || exit 1
-# Upstream patch required for upcoming kdepim-4.6.x:
-zcat $CWD/qt.QSortFilterProxyModel.reformatted.diff.gz | patch -p1 --verbose || exit 1
+# gcc doesn't support flag "-fuse-ld=gold":
+zcat $CWD/qt.ld-gold.patch.gz | patch -p1 --verbose || exit 1
+
+# Stupid idea - remove it:
+zcat $CWD/qt.webkit-no_Werror.patch.gz | patch -p1 --verbose || exit 1
+
+# Fix cursor position bug within tables:
+zcat $CWD/qt.ca89c49.cursor.position.diff.gz | patch -p1 --verbose || exit 1
+
+# Fix assistant crash:
+zcat $CWD/qt.assistant.memcpy-crash.diff.gz | patch -p0 --verbose || exit 1
+
+# Fix webkit compiling with recent glib:
+zcat $CWD/qt.webkit.glib.diff.gz | patch -p1 --verbose || exit 1
-# Blacklist compromised certificates:
-zcat $CWD/qt.blacklist.bad.certs.diff.gz | patch -p1 --verbose || exit 1
-zcat $CWD/qt.blacklist.bad.certs.patch02.diff.gz | patch -p1 --verbose || exit 1
+# Some patches from upstream:
+zcat $CWD/QElfParser-fix-type-of-sh_size.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch.gz | patch -p1 --verbose || exit 1
export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS"
@@ -128,7 +134,6 @@ export OPENSOURCE_CXXFLAGS="$SLKCFLAGS"
-confirm-license \
-opensource \
-prefix /usr/lib${LIBDIRSUFFIX}/qt \
- -qt-gif \
-fast \
-system-libpng \
-system-libjpeg \
@@ -152,10 +157,34 @@ make install INSTALL_ROOT=$PKG || exit 1
# The infamous qt -> qt-${VERSION} link that keeps the full path out of .la files:
( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf qt qt-${VERSION} )
-# libjscore is used internally. Prevent a false dependency on this in the .la files:
+# Add a missing Qt.pc which is needed by KDE applications:
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig
+cat <<EOF > $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig/Qt.pc
+prefix=/usr/lib${LIBDIRSUFFIX}/qt
+bindir=\${prefix}/bin
+datadir=\${prefix}
+docdir=\${prefix}/doc
+headerdir=\${prefix}/include
+importdir=\${prefix}/imports
+libdir=\${prefix}/lib
+moc=\${bindir}/moc
+plugindir=\${prefix}/plugins
+qmake=\${bindir}/qmake
+sysconfdir=\${prefix}/etc/settings
+translationdir=\${prefix}/translations
+
+Name: Qt
+Description: Qt Configuration
+Version: $VERSION
+EOF
+
+# libjscore is used internally. Prevent a false dependency on this in the .la and .pc files:
sed -i "s,-ljscore,,g" $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/*.la $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig/*.pc
sed -i "s,-L../JavaScriptCore/release,,g" $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/*.la $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig/*.pc
+# libwebcore is used internally. Prevent a false dependency on this in the .la and .pc files:
+sed -i "s#-L/usr/lib${LIBDIRSUFFIX}/qt/lib -L../../WebCore/release -L../../JavaScriptCore/release -L/usr/X11R6/lib$LIBDIRSUFFIX -lwebcore##g" $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/libQtWebKit.la $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/pkgconfig/QtWebKit.pc
+
# Link the shared libraries into /usr/lib:
( cd $PKG/usr/lib${LIBDIRSUFFIX}
for file in qt/lib/*.so* ; do
@@ -163,11 +192,6 @@ sed -i "s,-L../JavaScriptCore/release,,g" $PKG/usr/lib${LIBDIRSUFFIX}/qt/lib/*.l
done
)
-if [ $ARCH = "i486" ]; then
- # Put this back as shipped:
- zcat $CWD/qt.x86.cflags.diff.gz | patch -p1 -R
-fi
-
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -195,6 +219,71 @@ mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig
done
)
+# Add menu entries for all those hidden but great Qt applications:
+# Qt logo:
+convert $PKG/usr/lib$LIBDIRSUFFIX/qt/doc/src/images/qt-logo.png -resize 48x48 $PKG/usr/share/icons/hicolor/48x48/apps/qt-logo.png
+convert $PKG/usr/lib$LIBDIRSUFFIX/qt/doc/src/images/qt-logo.png -resize 48x48 $PKG/usr/share/icons/hicolor/48x48/apps/qt-logo.png
+# Assistant icons
+install -p -m644 -D tools/assistant/tools/assistant/images/assistant.png $PKG/usr/share/icons/hicolor/32x32/apps/assistant.png
+install -p -m644 -D tools/assistant/tools/assistant/images/assistant-128.png $PKG/usr/share/icons/hicolor/128x128/apps/assistant.png
+# Designer icon
+install -p -m644 -D tools/designer/src/designer/images/designer.png $PKG/usr/share/icons/hicolor/128x128/apps/designer.png
+# Linguist icons
+for icon in tools/linguist/linguist/images/icons/linguist-*-32.png ; do
+ size=$(echo $(basename ${icon}) | cut -d- -f2)
+ install -p -m644 -D ${icon} $PKG/usr/share/icons/hicolor/${size}x${size}/apps/linguist.png
+done
+
+# And the .desktop files
+mkdir -p $PKG/usr/share/applications
+cat <<EOF > $PKG/usr/share/applications/designer.desktop
+[Desktop Entry]
+Name=Qt4 Designer
+GenericName=Interface Designer
+Comment=Design GUIs for Qt4 applications
+Exec=designer
+Icon=designer
+MimeType=application/x-designer;
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;
+EOF
+cat <<EOF > $PKG/usr/share/applications/assistant.desktop
+[Desktop Entry]
+Name=Qt4 Assistant
+Comment=Shows Qt4 documentation and examples
+Exec=assistant
+Icon=assistant
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;Documentation;
+EOF
+cat <<EOF > $PKG/usr/share/applications/linguist.desktop
+[Desktop Entry]
+Name=Qt4 Linguist
+Comment=Add translations to Qt4 applications
+Exec=linguist
+Icon=linguist
+MimeType=text/vnd.trolltech.linguist;application/x-linguist;
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;
+EOF
+cat <<EOF > $PKG/usr/share/applications/qtconfig.desktop
+[Desktop Entry]
+Name=Qt4 Config
+Comment=Configure Qt4 behavior, styles, fonts
+Exec=qtconfig
+Icon=qt-logo
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Settings;
+EOF
+
# Add a documentation directory:
mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a *GPL_EXCEPTION* FAQ* INSTALL KNOWN* LICENSE* README* changes-* \
diff --git a/source/l/qt/qt.assistant.memcpy-crash.diff b/source/l/qt/qt.assistant.memcpy-crash.diff
new file mode 100644
index 00000000..f2193ee8
--- /dev/null
+++ b/source/l/qt/qt.assistant.memcpy-crash.diff
@@ -0,0 +1,11 @@
+--- tools/assistant/tools/assistant/mainwindow.cpp 2012-06-27 03:02:37.539564947 +0200
++++ tools/assistant/tools/assistant/mainwindow.cpp 2012-06-27 03:03:18.843561620 +0200
+@@ -944,8 +944,7 @@ void MainWindow::updateApplicationFont()
+ if (helpEngine.usesAppFont())
+ font = helpEngine.appFont();
+
+- const QWidgetList &widgets = qApp->allWidgets();
+- foreach (QWidget* widget, widgets)
++ foreach (QWidget* widget, QApplication::allWidgets())
+ widget->setFont(font);
+ }
diff --git a/source/l/qt/qt.blacklist.bad.certs.diff b/source/l/qt/qt.blacklist.bad.certs.diff
deleted file mode 100644
index 38b6d369..00000000
--- a/source/l/qt/qt.blacklist.bad.certs.diff
+++ /dev/null
@@ -1,67 +0,0 @@
---- ./src/network/ssl/qsslcertificate_p.h.orig 2010-11-20 17:54:24.000000000 -0600
-+++ ./src/network/ssl/qsslcertificate_p.h 2011-03-24 18:08:59.000000000 -0500
-@@ -96,6 +96,7 @@
- static QSslCertificate QSslCertificate_from_X509(X509 *x509);
- static QList<QSslCertificate> certificatesFromPem(const QByteArray &pem, int count = -1);
- static QList<QSslCertificate> certificatesFromDer(const QByteArray &der, int count = -1);
-+ static bool isBlacklisted(const QSslCertificate &certificate);
-
- friend class QSslSocketBackendPrivate;
-
---- ./src/network/ssl/qsslcertificate.cpp.orig 2010-11-20 17:54:24.000000000 -0600
-+++ ./src/network/ssl/qsslcertificate.cpp 2011-03-24 18:08:59.000000000 -0500
-@@ -219,17 +219,19 @@
- Returns true if this certificate is valid; otherwise returns
- false.
-
-- Note: Currently, this function only checks that the current
-+ Note: Currently, this function checks that the current
- data-time is within the date-time range during which the
-- certificate is considered valid. No other checks are
-- currently performed.
-+ certificate is considered valid, and checks that the
-+ certificate is not in a blacklist of fraudulent certificates.
-
- \sa isNull()
- */
- bool QSslCertificate::isValid() const
- {
- const QDateTime currentTime = QDateTime::currentDateTime();
-- return currentTime >= d->notValidBefore && currentTime <= d->notValidAfter;
-+ return currentTime >= d->notValidBefore &&
-+ currentTime <= d->notValidAfter &&
-+ ! QSslCertificatePrivate::isBlacklisted(*this);
- }
-
- /*!
-@@ -798,6 +800,30 @@
- return certificates;
- }
-
-+// These certificates are known to be fraudulent and were created during the comodo
-+// compromise. See http://www.comodo.com/Comodo-Fraud-Incident-2011-03-23.html
-+static const char *certificate_blacklist[] = {
-+ "04:7e:cb:e9:fc:a5:5f:7b:d0:9e:ae:36:e1:0c:ae:1e",
-+ "f5:c8:6a:f3:61:62:f1:3a:64:f5:4f:6d:c9:58:7c:06",
-+ "d7:55:8f:da:f5:f1:10:5b:b2:13:28:2b:70:77:29:a3",
-+ "39:2a:43:4f:0e:07:df:1f:8a:a3:05:de:34:e0:c2:29",
-+ "3e:75:ce:d4:6b:69:30:21:21:88:30:ae:86:a8:2a:71",
-+ "e9:02:8b:95:78:e4:15:dc:1a:71:0a:2b:88:15:44:47",
-+ "92:39:d5:34:8f:40:d1:69:5a:74:54:70:e1:f2:3f:43",
-+ "b0:b7:13:3e:d0:96:f9:b5:6f:ae:91:c8:74:bd:3a:c0",
-+ "d8:f3:5f:4e:b7:87:2b:2d:ab:06:92:e3:15:38:2f:b0",
-+ 0
-+};
-+
-+bool QSslCertificatePrivate::isBlacklisted(const QSslCertificate &certificate)
-+{
-+ for (int a = 0; certificate_blacklist[a] != 0; a++) {
-+ if (certificate.serialNumber() == certificate_blacklist[a])
-+ return true;
-+ }
-+ return false;
-+}
-+
- #ifndef QT_NO_DEBUG_STREAM
- QDebug operator<<(QDebug debug, const QSslCertificate &certificate)
- {
diff --git a/source/l/qt/qt.blacklist.bad.certs.patch02.diff b/source/l/qt/qt.blacklist.bad.certs.patch02.diff
deleted file mode 100644
index b8bb1e4e..00000000
--- a/source/l/qt/qt.blacklist.bad.certs.patch02.diff
+++ /dev/null
@@ -1,35 +0,0 @@
-From b87528a71b66e786c11804d7b79e408aae612748 Mon Sep 17 00:00:00 2001
-From: Peter Hartmann <peter.hartmann@nokia.com>
-Date: Fri, 25 Mar 2011 13:45:24 +0100
-Subject: [PATCH] QSslSocket internals: abort on encountering blacklisted certificates
-
-tested manually with "openssl s_server -cert blacklisted.pem -key
-key.pem" and connecting a QSslSocket.
-
-Reviewed-by: Markus Goetz
-Task-number: QTBUG-18338
----
- src/network/ssl/qsslsocket_openssl.cpp | 7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
-
-diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
-index 0866534..2427193 100644
---- a/src/network/ssl/qsslsocket_openssl.cpp
-+++ b/src/network/ssl/qsslsocket_openssl.cpp
-@@ -1193,6 +1193,13 @@ bool QSslSocketBackendPrivate::startHandshake()
- X509 *x509 = q_SSL_get_peer_certificate(ssl);
- configuration.peerCertificate = QSslCertificatePrivate::QSslCertificate_from_X509(x509);
- q_X509_free(x509);
-+ if (QSslCertificatePrivate::isBlacklisted(configuration.peerCertificate)) {
-+ q->setErrorString(QSslSocket::tr("The peer certificate is blacklisted"));
-+ q->setSocketError(QAbstractSocket::SslHandshakeFailedError);
-+ emit q->error(QAbstractSocket::SslHandshakeFailedError);
-+ plainSocket->disconnectFromHost();
-+ return false;
-+ }
-
- // Start translating errors.
- QList<QSslError> errors;
---
-1.6.1
-
diff --git a/source/l/qt/qt.ca89c49.cursor.position.diff b/source/l/qt/qt.ca89c49.cursor.position.diff
new file mode 100644
index 00000000..ab3429f8
--- /dev/null
+++ b/source/l/qt/qt.ca89c49.cursor.position.diff
@@ -0,0 +1,31 @@
+From ca89c49fa2c5cbb3945897046f33eed9f7da846c Mon Sep 17 00:00:00 2001
+From: Jiang Jiang <jiang.jiang@nokia.com>
+Date: Tue, 3 Jul 2012 10:17:49 +0200
+Subject: [PATCH] Fix cursor truncate to include line position
+
+Since we could have moved the line position (QTextLine::setPosition),
+the truncating position should be adjusted with that.
+
+Change-Id: Ie1acd4a1b6a4adfbeeb9ce8ee2dfa19d992470e8
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
+---
+ src/gui/text/qtextlayout.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
+index 16f7150..52f2793 100644
+--- a/src/gui/text/qtextlayout.cpp
++++ b/src/gui/text/qtextlayout.cpp
+@@ -2616,8 +2616,8 @@ qreal QTextLine::cursorToX(int *cursorPos, Edge edge) const
+ x += eng->offsetInLigature(si, pos, end, glyph_pos);
+ }
+
+- if (eng->option.wrapMode() != QTextOption::NoWrap && x > line.width)
+- x = line.width;
++ if (eng->option.wrapMode() != QTextOption::NoWrap && x > line.x + line.width)
++ x = line.x + line.width;
+
+ *cursorPos = pos + si->position;
+ return x.toReal();
+--
+1.7.10
diff --git a/source/l/qt/qt.ld-gold.patch b/source/l/qt/qt.ld-gold.patch
new file mode 100644
index 00000000..0e3897e9
--- /dev/null
+++ b/source/l/qt/qt.ld-gold.patch
@@ -0,0 +1,22 @@
+diff -up qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri.me qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri
+--- qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri.me 2012-01-24 13:05:50.460890750 +0100
++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri 2012-01-24 13:19:08.836799974 +0100
+@@ -3,12 +3,12 @@
+ contains(JAVASCRIPTCORE_JIT,yes): DEFINES+=ENABLE_JIT=1
+ contains(JAVASCRIPTCORE_JIT,no): DEFINES+=ENABLE_JIT=0
+
+-linux-g++ {
+-isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
+- message(Using gold linker)
+- QMAKE_LFLAGS+=-fuse-ld=gold
+-}
+-}
++#linux-g++ {
++#isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
++# message(Using gold linker)
++# QMAKE_LFLAGS+=-fuse-ld=gold
++#}
++#}
+
+ # We use this flag on production branches
+ # See https://bugs.webkit.org/show_bug.cgi?id=60824
diff --git a/source/l/qt/qt.webkit-no_Werror.patch b/source/l/qt/qt.webkit-no_Werror.patch
new file mode 100644
index 00000000..b8e718e0
--- /dev/null
+++ b/source/l/qt/qt.webkit-no_Werror.patch
@@ -0,0 +1,13 @@
+diff -up qt-everywhere-opensource-src-4.8.1/src/3rdparty/webkit/Source/WebKit.pri.no_Werror qt-everywhere-opensource-src-4.8.1/src/3rdparty/webkit/Source/WebKit.pri
+--- qt-everywhere-opensource-src-4.8.1/src/3rdparty/webkit/Source/WebKit.pri.no_Werror 2012-03-14 15:01:29.000000000 +0100
++++ qt-everywhere-opensource-src-4.8.1/src/3rdparty/webkit/Source/WebKit.pri 2012-03-28 17:12:33.391294004 +0200
+@@ -102,8 +102,6 @@ CONFIG -= warn_on
+
+ # Treat warnings as errors on x86/Linux/GCC
+ linux-g++* {
+- !CONFIG(standalone_package):isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386): QMAKE_CXXFLAGS += -Werror
+-
+ greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 5) {
+ if (!contains(QMAKE_CXXFLAGS, -std=c++0x) && !contains(QMAKE_CXXFLAGS, -std=gnu++0x)) {
+ # We need to deactivate those warnings because some names conflicts with upcoming c++0x types (e.g.nullptr).
+
diff --git a/source/l/qt/qt.webkit.glib.diff b/source/l/qt/qt.webkit.glib.diff
new file mode 100644
index 00000000..b1666256
--- /dev/null
+++ b/source/l/qt/qt.webkit.glib.diff
@@ -0,0 +1,11 @@
+--- ./src/3rdparty/webkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h.orig 2012-04-26 14:46:14.000000000 -0500
++++ ./src/3rdparty/webkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h 2012-08-06 19:53:44.134339082 -0500
+@@ -52,7 +52,7 @@
+ typedef struct _GHashTable GHashTable;
+ typedef struct _GInputStream GInputStream;
+ typedef struct _GList GList;
+-typedef struct _GMutex GMutex;
++typedef union _GMutex GMutex;
+ typedef struct _GPatternSpec GPatternSpec;
+ typedef struct _GPollableOutputStream GPollableOutputStream;
+ typedef struct _GSocketClient GSocketClient;
diff --git a/source/l/qt/qt.x86.cflags.diff b/source/l/qt/qt.x86.cflags.diff
deleted file mode 100644
index a9e65fbb..00000000
--- a/source/l/qt/qt.x86.cflags.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- qt.orig/mkspecs/common/g++.conf 2007-12-22 00:22:18.295453075 -0600
-+++ qt/mkspecs/common/g++.conf 2007-12-22 00:23:07.514257895 -0600
-@@ -7,7 +7,7 @@
- QMAKE_CFLAGS_DEPS += -M
- QMAKE_CFLAGS_WARN_ON += -Wall -W
- QMAKE_CFLAGS_WARN_OFF += -w
--QMAKE_CFLAGS_RELEASE += -O2
-+QMAKE_CFLAGS_RELEASE += -O2 -march=i486 -mtune=i686
- QMAKE_CFLAGS_DEBUG += -g
- QMAKE_CFLAGS_SHLIB += -fPIC
- QMAKE_CFLAGS_STATIC_LIB += -fPIC
diff --git a/source/l/qt/slack-desc b/source/l/qt/slack-desc
index 3f77a7fb..f511d899 100644
--- a/source/l/qt/slack-desc
+++ b/source/l/qt/slack-desc
@@ -11,9 +11,9 @@ qt:
qt: Qt is a complete and well-developed object-oriented framework for
qt: developing graphical user interface (GUI) applications using C++.
qt:
+qt: Homepage: http://qt.nokia.com
qt:
qt:
qt:
qt:
-qt: Homepage: http://qt.nokia.com
qt: