diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2012-09-26 01:10:42 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2018-05-31 22:51:55 +0200 |
commit | 9664bee729d487bcc0a0bc35859f8e13d5421c75 (patch) | |
tree | b428a16618e36ed864a8d76ea3435e19a452bf90 /source/l/qt | |
parent | 75a4a592e5ccda30715f93563d741b83e0dcf39e (diff) | |
download | current-9664bee729d487bcc0a0bc35859f8e13d5421c75.tar.gz |
Slackware 14.0slackware-14.0
Wed Sep 26 01:10:42 UTC 2012
Slackware 14.0 x86_64 stable is released!
We're perfectionists here at Slackware, so this release has been a long
time a-brewing. But we think you'll agree that it was worth the wait.
Slackware 14.0 combines modern components, ease of use, and flexible
configuration... our "KISS" philosophy demands it.
The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a
dual-sided
32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware
project by picking up a copy from store.slackware.com. We're taking
pre-orders now, and offer a discount if you sign up for a subscription.
Thanks to everyone who helped make this happen. The Slackware team, the
upstream developers, and (of course) the awesome Slackware user
community.
Have fun! :-)
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 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: |