diff --git a/common/shlibs b/common/shlibs index 4cc3e1c1bd5..8747d085f9c 100644 --- a/common/shlibs +++ b/common/shlibs @@ -416,7 +416,6 @@ libQtHelp.so.4 qt qt-devel libphonon.so.4 qt-libphonon qt-devel libQtCore.so.4 qt qt-devel libQtSql.so.4 qt qt-devel -libQtWebKit.so.4 qt qt-devel libQtDeclarative.so.4 qt qt-devel libQtDesignerComponents.so.4 qt-designer qt-devel libQtDesigner.so.4 qt-designer qt-devel diff --git a/srcpkgs/qt/depends b/srcpkgs/qt/depends index 4352c7df492..01dad75795f 100644 --- a/srcpkgs/qt/depends +++ b/srcpkgs/qt/depends @@ -1,2 +1,2 @@ abi_depends=">=4.5.3" -api_depends=">=4.8.0_1" +api_depends=">=4.8.1" diff --git a/srcpkgs/qt/patches/fix-buffer-overflow.patch b/srcpkgs/qt/patches/fix-buffer-overflow.patch new file mode 100644 index 00000000000..5cb9000c8dd --- /dev/null +++ b/srcpkgs/qt/patches/fix-buffer-overflow.patch @@ -0,0 +1,33 @@ +From 827e5c4c689d4ecb4f8c1ab48c9a7ab712fe2ca7 Mon Sep 17 00:00:00 2001 +From: John Tapsell +Date: Mon, 12 Mar 2012 22:07:47 +0000 +Subject: [PATCH] Harfbuzz-thai - fix buffer overflow when setting item + attributes + +Change-Id: I19eeb4ec25a7c6cb3f584e6290169f9f327b8713 +Reviewed-by: Eskil Abrahamsen Blomfeldt +--- + src/3rdparty/harfbuzz/src/harfbuzz-thai.c | 9 +++++- + .../qtextscriptengine/tst_qtextscriptengine.cpp | 29 ++++++++++++++++++++ + 2 files changed, 36 insertions(+), 2 deletions(-) + +diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-thai.c b/src/3rdparty/harfbuzz/src/harfbuzz-thai.c +index bf6c35b..3c0ffe8 100644 +--- a/src/3rdparty/harfbuzz/src/harfbuzz-thai.c ++++ b/src/3rdparty/harfbuzz/src/harfbuzz-thai.c +@@ -263,8 +263,13 @@ static HB_Bool HB_ThaiConvertStringToGlyphIndices (HB_ShaperItem *item) + // The only glyphs that should be passed to this function that cannot be mapped to + // tis620 are the ones of type Inherited class. Pass these glyphs untouched. + glyphString[slen++] = string[i]; +- if (string[i] == 0x200D || string[i] == 0x200C) +- item->attributes[slen-1].dontPrint = true; // Hide ZWJ and ZWNJ characters ++ if (string[i] == 0x200D || string[i] == 0x200C) { ++ // Check that we do not run out of bounds when setting item->attributes. If we do ++ // run out of bounds then this function will return false, the necessary amount of ++ // memory is reallocated, and this function will then be called again. ++ if (slen <= item->num_glyphs) ++ item->attributes[slen-1].dontPrint = true; // Hide ZWJ and ZWNJ characters ++ } + } else { + glyphString[slen++] = (HB_UChar16) thai_get_glyph_index (font_type, rglyphs[lgi]); + } diff --git a/srcpkgs/qt/patches/fix-cursortox-crash.patch b/srcpkgs/qt/patches/fix-cursortox-crash.patch new file mode 100644 index 00000000000..59f3ad16ad3 --- /dev/null +++ b/srcpkgs/qt/patches/fix-cursortox-crash.patch @@ -0,0 +1,32 @@ +Index: fix-cursortox-crash.patch +=================================================================== +--- fix-cursortox-crash.patch (revision 0) ++++ fix-cursortox-crash.patch (arbetskopia) +#commit cac12f4592477d99ef6fffaad40345bf85ef53b5 +#Author: Jiang Jiang +#Date: Mon Apr 2 12:32:05 2012 +0200 +# +# Fix a crash in cursorToX() when new block is added +# +# When an empty new block is being added, the layoutData->memory data +# will be 0, thus QTextEngine::attributes() will return 0. We should +# only access the attributes pointer when some text actually exist. +# +# Task-number: QTBUG-24718 +# Change-Id: I9ce9f7b57bccf24099a02832ce30fb6cebfaad33 +# +diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp +index ee658d9..16f7150 100644 +--- a/src/gui/text/qtextlayout.cpp ++++ b/src/gui/text/qtextlayout.cpp +@@ -2508,6 +2508,10 @@ qreal QTextLine::cursorToX(int *cursorPos, Edge edge) const + int pos = *cursorPos; + int itm; + const HB_CharAttributes *attributes = eng->attributes(); ++ if (!attributes) { ++ *cursorPos = 0; ++ return x.toReal(); ++ } + while (pos < line.from + line.length && !attributes[pos].charStop) + pos++; + if (pos == line.from + (int)line.length) { diff --git a/srcpkgs/qt/patches/gcc47.patch b/srcpkgs/qt/patches/gcc47.patch new file mode 100644 index 00000000000..067b087365f --- /dev/null +++ b/srcpkgs/qt/patches/gcc47.patch @@ -0,0 +1,27 @@ +diff -up qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h.me qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h +--- qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h.me 2012-01-24 11:24:14.729942043 +0100 ++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h 2012-01-24 14:28:39.848109534 +0100 +@@ -57,9 +57,7 @@ namespace JSC { + + class JSGlobalObject : public JSVariableObject { + protected: +- using JSVariableObject::JSVariableObjectData; +- +- struct JSGlobalObjectData : public JSVariableObjectData { ++ struct JSGlobalObjectData : public JSVariableObject::JSVariableObjectData { + // We use an explicit destructor function pointer instead of a + // virtual destructor because we want to avoid adding a vtable + // pointer to this struct. Adding a vtable pointer would force the +diff -up qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h.me qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h +--- qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h.me 2012-01-24 11:40:07.167856677 +0100 ++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h 2012-01-24 14:28:34.640306629 +0100 +@@ -32,8 +32,7 @@ namespace JSC{ + + class JSStaticScopeObject : public JSVariableObject { + protected: +- using JSVariableObject::JSVariableObjectData; +- struct JSStaticScopeObjectData : public JSVariableObjectData { ++ struct JSStaticScopeObjectData : public JSVariableObject::JSVariableObjectData { + JSStaticScopeObjectData() + : JSVariableObjectData(&symbolTable, ®isterStore + 1) + { diff --git a/srcpkgs/qt/patches/improve-cups-support.patch b/srcpkgs/qt/patches/improve-cups-support.patch new file mode 100644 index 00000000000..3c211449e96 --- /dev/null +++ b/srcpkgs/qt/patches/improve-cups-support.patch @@ -0,0 +1,84 @@ +diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp +--- qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-11 16:55:22.000000000 +0100 ++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-28 04:34:16.000000000 +0100 +@@ -569,6 +569,32 @@ + void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups) + { + options.duplex->setEnabled(cups && cups->ppdOption("Duplex")); ++ ++ if (cups) { ++ const ppd_option_t* duplex = cups->ppdOption("Duplex"); ++ if (duplex) { ++ // copy default ppd duplex to qt dialog ++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0) ++ options.duplexShort->setChecked(true); ++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0) ++ options.duplexLong->setChecked(true); ++ else ++ options.noDuplex->setChecked(true); ++ } ++ ++ if (cups->currentPPD()) { ++ // set default color ++ if (cups->currentPPD()->color_device) ++ options.color->setChecked(true); ++ else ++ options.grayscale->setChecked(true); ++ } ++ ++ // set collation ++ const ppd_option_t *collate = cups->ppdOption("Collate"); ++ if (collate) ++ options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0); ++ } + } + #endif + +diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp +--- qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp 2010-02-11 16:55:22.000000000 +0100 ++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp 2010-02-28 04:55:15.000000000 +0100 +@@ -627,6 +627,44 @@ + && d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) { + setOutputFormat(QPrinter::PdfFormat); + } ++ ++#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) ++ // fill in defaults from ppd file ++ QCUPSSupport cups; ++ ++ int printernum = -1; ++ for (int i = 0; i < cups.availablePrintersCount(); i++) { ++ if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name) ++ printernum = i; ++ } ++ if (printernum >= 0) { ++ cups.setCurrentPrinter(printernum); ++ ++ const ppd_option_t* duplex = cups.ppdOption("Duplex"); ++ if (duplex) { ++ // copy default ppd duplex to qt dialog ++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0) ++ setDuplex(DuplexShortSide); ++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0) ++ setDuplex(DuplexLongSide); ++ else ++ setDuplex(DuplexNone); ++ } ++ ++ if (cups.currentPPD()) { ++ // set default color ++ if (cups.currentPPD()->color_device) ++ setColorMode(Color); ++ else ++ setColorMode(GrayScale); ++ } ++ ++ // set collation ++ const ppd_option_t *collate = cups.ppdOption("Collate"); ++ if (collate) ++ setCollateCopies(qstrcmp(collate->defchoice, "True")==0); ++ } ++#endif + } + + /*! diff --git a/srcpkgs/qt/qt-demos.rshlibs b/srcpkgs/qt/qt-demos.rshlibs index 86cc45e8df1..d853a22b514 100644 --- a/srcpkgs/qt/qt-demos.rshlibs +++ b/srcpkgs/qt/qt-demos.rshlibs @@ -7,7 +7,6 @@ libgcc_s.so.1 libc.so.6 libGL.so.1 libQtSql.so.4 -libQtWebKit.so.4 libQtNetwork.so.4 libQtDeclarative.so.4 libQtXml.so.4 diff --git a/srcpkgs/qt/qt-demos.template b/srcpkgs/qt/qt-demos.template index f60645b37c7..d74e682f11e 100644 --- a/srcpkgs/qt/qt-demos.template +++ b/srcpkgs/qt/qt-demos.template @@ -6,7 +6,6 @@ long_desc="${long_desc} This package contains Qt 4 examples and demos." gtk_iconcache_dirs="/usr/share/icons/hicolor" -revision=1 Add_dependency run hicolor-icon-theme Add_dependency run qt-docs diff --git a/srcpkgs/qt/qt-designer.rshlibs b/srcpkgs/qt/qt-designer.rshlibs index 714239cee25..87e1a2a915e 100644 --- a/srcpkgs/qt/qt-designer.rshlibs +++ b/srcpkgs/qt/qt-designer.rshlibs @@ -4,7 +4,6 @@ libQtCore.so.4 libstdc++.so.6 libgcc_s.so.1 libc.so.6 -libQtWebKit.so.4 libQtDeclarative.so.4 libQtOpenGL.so.4 libGL.so.1 diff --git a/srcpkgs/qt/qt-designer.template b/srcpkgs/qt/qt-designer.template index a162b113999..86002c67bad 100644 --- a/srcpkgs/qt/qt-designer.template +++ b/srcpkgs/qt/qt-designer.template @@ -1,6 +1,5 @@ # Template file for 'qt-designer'. # -revision=1 short_desc="Qt GUI designer" long_desc="${long_desc} diff --git a/srcpkgs/qt/qt-devel-tools.rshlibs b/srcpkgs/qt/qt-devel-tools.rshlibs index 265c4889414..ad570a660dc 100644 --- a/srcpkgs/qt/qt-devel-tools.rshlibs +++ b/srcpkgs/qt/qt-devel-tools.rshlibs @@ -1,5 +1,4 @@ libQtHelp.so.4 -libQtWebKit.so.4 libQtSql.so.4 libQtGui.so.4 libQtNetwork.so.4 diff --git a/srcpkgs/qt/qt-devel.template b/srcpkgs/qt/qt-devel.template index fb4d2309967..ef3cb7230f7 100644 --- a/srcpkgs/qt/qt-devel.template +++ b/srcpkgs/qt/qt-devel.template @@ -1,6 +1,5 @@ # Template file for 'qt-devel'. # -revision=1 short_desc="Qt development files" long_desc="${long_desc} diff --git a/srcpkgs/qt/qt-plugin-gstreamer.template b/srcpkgs/qt/qt-plugin-gstreamer.template index 4962ea71d55..2fe3843f7c9 100644 --- a/srcpkgs/qt/qt-plugin-gstreamer.template +++ b/srcpkgs/qt/qt-plugin-gstreamer.template @@ -5,7 +5,6 @@ long_desc="${long_desc} This package contains a Qt phonon backend plugin for GStreamer." -revision=1 do_install() { vmove usr/lib/qt/plugins/phonon_backend/libphonon_gstreamer.so \ diff --git a/srcpkgs/qt/qt-qtconfig.template b/srcpkgs/qt/qt-qtconfig.template index 9b0d219af4f..3e5e92aaa3f 100644 --- a/srcpkgs/qt/qt-qtconfig.template +++ b/srcpkgs/qt/qt-qtconfig.template @@ -6,7 +6,6 @@ long_desc="${long_desc} The Qt Configuration program allows end users to configure the look and behavior of any Qt application." -revision=1 gtk_iconcache_dirs="/usr/share/icons/hicolor" Add_dependency run hicolor-icon-theme diff --git a/srcpkgs/qt/qt.rshlibs b/srcpkgs/qt/qt.rshlibs index c7c525704b8..d1ee8c33c3d 100644 --- a/srcpkgs/qt/qt.rshlibs +++ b/srcpkgs/qt/qt.rshlibs @@ -1,7 +1,6 @@ libpthread.so.0 libz.so.1 libdl.so.2 -libgthread-2.0.so.0 librt.so.1 libglib-2.0.so.0 libstdc++.so.6 @@ -23,15 +22,8 @@ libX11.so.6 libGL.so.1 libOpenVG.so.1 libasound.so.2 -libsqlite3.so.0 libmng.so.1 libjpeg.so.8 ld-linux-x86-64.so.2 -libgstapp-0.10.so.0 -libgstinterfaces-0.10.so.0 -libgstpbutils-0.10.so.0 -libgstvideo-0.10.so.0 -libgstbase-0.10.so.0 -libgstreamer-0.10.so.0 libtiff.so.5 ld-linux.so.2 diff --git a/srcpkgs/qt/template b/srcpkgs/qt/template index 82da4a6d5aa..add4c080ab8 100644 --- a/srcpkgs/qt/template +++ b/srcpkgs/qt/template @@ -1,15 +1,15 @@ # Template file for 'qt' pkgname=qt -version=4.8.0 +version=4.8.1 +patch_args="-Np1" _distname=qt-everywhere-opensource-src wrksrc=${_distname}-${version} homepage="http://qt.nokia.com/" distfiles="ftp://ftp.qt.nokia.com/qt/source/${_distname}-$version.tar.gz" -revision=4 short_desc="A cross-platform application and UI framework" maintainer="Juan RP " license="GPL-3, LGPL-2.1" -checksum=9392b74e485e15f75a3e07a527547d4f6747eaf55ebce71ba0e863a9fd320b6e +checksum=ef851a36aa41b4ad7a3e4c96ca27eaed2a629a6d2fa06c20f072118caed87ae8 long_desc=" Qt(TM) is a GUI software toolkit. Qt simplifies the task of writing and maintaining GUI (graphical user interface) applications." @@ -19,7 +19,7 @@ subpackages="${subpackages} qt-demos qt-docs qt-qmake qt-qtconfig" subpackages="${subpackages} qt-designer qt-devel qt-devel-tools" subpackages="${subpackages} qt-plugin-gstreamer" -# XXX Missing dependencies: unixodbc and cups. +# XXX Missing dependencies: unixodbc. Add_dependency build pkg-config Add_dependency build freetype-devel Add_dependency build MesaLib-devel @@ -32,6 +32,7 @@ Add_dependency build libXi-devel Add_dependency build libXv-devel Add_dependency build libXinerama-devel Add_dependency build libXrandr-devel +Add_dependency build libXcursor-devel Add_dependency build zlib-devel Add_dependency build dbus-devel Add_dependency build glib-devel @@ -51,6 +52,7 @@ Add_dependency build postgresql-libs-devel Add_dependency build pulseaudio-devel Add_dependency build gtk+-devel Add_dependency build icu-devel +Add_dependency build cups-devel do_configure() { export LD_LIBRARY_PATH="${wrksrc}/lib:${LD_LIBRARY_PATH}" @@ -67,15 +69,15 @@ do_configure() { -examplesdir /usr/share/doc/qt/examples \ -demosdir /usr/share/doc/qt/demos -largefile \ -plugin-sql-sqlite -system-sqlite \ - -xmlpatterns -svg -webkit \ - -scripttools -system-zlib \ + -xmlpatterns -svg -no-webkit \ + -scripttools -system-zlib -graphicssystem raster \ -system-libtiff -system-libpng -system-libmng -system-libjpeg \ -openssl-linked -optimized-qmake -no-rpath -reduce-relocations \ -no-separate-debug-info -gtkstyle -opengl -glib -gstreamer \ -no-sql-db2 -no-sql-ibase -gtkstyle \ -plugin-sql-mysql -plugin-sql-psql -no-sql-oci \ -no-sql-odbc -no-sql-sqlite2 \ - -no-cups -dbus-linked -no-nas-sound -iconv -shared \ + -dbus-linked -no-nas-sound -iconv -shared \ -release -fast -no-sql-tds }