diff options
Diffstat (limited to 'source/l/qt')
-rw-r--r-- | source/l/qt/QElfParser-fix-type-of-sh_size.patch | 41 | ||||
-rw-r--r-- | source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch | 37 | ||||
-rw-r--r-- | source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch | 97 | ||||
-rw-r--r-- | source/l/qt/Qt.pc | 16 | ||||
-rw-r--r-- | source/l/qt/doinst.sh | 5 | ||||
-rw-r--r-- | source/l/qt/qt.QSortFilterProxyModel.reformatted.diff | 92 | ||||
-rwxr-xr-x | source/l/qt/qt.SlackBuild | 185 | ||||
-rw-r--r-- | source/l/qt/qt.assistant.memcpy-crash.diff | 11 | ||||
-rw-r--r-- | source/l/qt/qt.blacklist.bad.certs.diff | 67 | ||||
-rw-r--r-- | source/l/qt/qt.blacklist.bad.certs.patch02.diff | 35 | ||||
-rw-r--r-- | source/l/qt/qt.ca89c49.cursor.position.diff | 31 | ||||
-rw-r--r-- | source/l/qt/qt.ld-gold.patch | 22 | ||||
-rw-r--r-- | source/l/qt/qt.webkit-no_Werror.patch | 13 | ||||
-rw-r--r-- | source/l/qt/qt.webkit.glib.diff | 11 | ||||
-rw-r--r-- | source/l/qt/qt.x86.cflags.diff | 11 | ||||
-rw-r--r-- | source/l/qt/slack-desc | 2 |
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 000000000..1c30f9a4f --- /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 000000000..9acae10c8 --- /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 000000000..4d9834a8d --- /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 000000000..f4c0d5938 --- /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 6f7c5df07..b9a2c53ba 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 0ab94b319..000000000 --- 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 f79d2c2a2..b361aaee4 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 000000000..f2193ee8b --- /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 38b6d369f..000000000 --- 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 b8bb1e4e7..000000000 --- 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 000000000..ab3429f8c --- /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 000000000..0e3897e98 --- /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 000000000..b8e718e06 --- /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 000000000..b16662562 --- /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 a9e65fbb8..000000000 --- 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 3f77a7fb4..f511d8991 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: |