Backport patch from Qt 4.8 to fix crash in LibreOffice, as pointed out by scarabeus...
authorTheo Chatzimichos <tampakrap@gentoo.org>
Mon, 28 Nov 2011 21:01:19 +0000 (21:01 +0000)
committerTheo Chatzimichos <tampakrap@gentoo.org>
Mon, 28 Nov 2011 21:01:19 +0000 (21:01 +0000)
Package-Manager: portage-2.2.0_alpha77/cvs/Linux x86_64

x11-libs/qt-gui/ChangeLog
x11-libs/qt-gui/Manifest
x11-libs/qt-gui/files/qt-gui-4.7.4-fix-libreoffice-crash.patch [new file with mode: 0644]
x11-libs/qt-gui/qt-gui-4.7.4-r1.ebuild [new file with mode: 0644]

index 7e851607fc7c2c566946cd290ebcdb4bf78d60ab..8f8a476191e9e599cbefc52e8264de14a121c316 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for x11-libs/qt-gui
 # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-libs/qt-gui/ChangeLog,v 1.154 2011/11/26 20:01:20 robbat2 Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/qt-gui/ChangeLog,v 1.155 2011/11/28 21:01:19 tampakrap Exp $
+
+*qt-gui-4.7.4-r1 (28 Nov 2011)
+
+  28 Nov 2011; Theo Chatzimichos <tampakrap@gentoo.org>
+  +qt-gui-4.7.4-r1.ebuild, +files/qt-gui-4.7.4-fix-libreoffice-crash.patch:
+  Backport patch from Qt 4.8 to fix crash in LibreOffice, as pointed out by
+  scarabeus. FreeDesktop bug 40298
 
   26 Nov 2011; Robin H. Johnson <robbat2@gentoo.org> Manifest:
   Bug 385719: upstream altered qt-everywhere-opensource-src-4.7.4.tar.gz, mass
index b40bbe4b34ce0a06572a92d81c01e57f1dfdf192..e98d400d92d776f6613a193ab8f34a4ece014ccf 100644 (file)
@@ -1,4 +1,5 @@
 AUX qt-gui-4.7.3-cups.patch 3297 RMD160 fc99e57ccfa8db47a1df799186d6daedcbdf744d SHA1 d712b9b570101de5c996692551ba5a3ae4a410e9 SHA256 3ccfefb432015e4a4ea967b030c51b10dcdfb1f63445557908ddae5e75012d33
+AUX qt-gui-4.7.4-fix-libreoffice-crash.patch 1958 RMD160 da10c0614e4ecb8f6f3c705d191503a42e174659 SHA1 652fc396b99846d1f2fe334c15f4cd4b8599806b SHA256 097021dfb6c25d8d8ca31a8a1bf70e35f9962113ce44791ad682fb54f4604844
 DIST qt-everywhere-opensource-src-4.6.2.tar.gz 160601949 RMD160 5f3fea120f2dba274c4150b02162bba40b65a872 SHA1 977c10b88a2230e96868edc78a9e3789c0fcbf70 SHA256 176f51ddb06dce67ab4b2efc6b327dc21ed8f764c5d97acc15ff1f907c2affae
 DIST qt-everywhere-opensource-src-4.6.3.tar.gz 160993454 RMD160 ceb3ca78263d0d9cdf92fef903e30c0026db6bff SHA1 1c18a564df9296c7cb0e0dedde40b9843e1b30e8 SHA256 f4e0ada8d4d516bbb8600a3ee7d9046c9c79e38cd781df9ffc46d8f16acd1768
 DIST qt-everywhere-opensource-src-4.7.2.tar.gz 213663032 RMD160 de3d1c172c23c33681a0945c331db179c84cb7b5 SHA1 84414f82bbc9e8d356b986d5d1ebee89d06e4f2e SHA256 d4783b524b90bcd270ccf6e7a30d5fb51696c47eb5de49ebc2d553cd3eb49336
@@ -11,6 +12,7 @@ EBUILD qt-gui-4.6.3.ebuild 5425 RMD160 5a00504271c422b716580984ef70db235c5cadeb
 EBUILD qt-gui-4.7.2.ebuild 6350 RMD160 a47834c6bc9471eeb188fd26ca1394083b08225a SHA1 8e34ec70e3a1a10a7302171629f8754ea13eabdf SHA256 43e21b9cea2aac8d8ee82d46585168436bfad570e3e0695244eb300d41c02110
 EBUILD qt-gui-4.7.3-r1.ebuild 6427 RMD160 c1d4cd7af792f651fd5069e17726cc3a385ea771 SHA1 da17d96980cd6eac27d2455ecb7143320d7f066a SHA256 3a1ef0d23c057e050145495d387858ca5cdbe855e9dc6211aae1f6547379dc98
 EBUILD qt-gui-4.7.3.ebuild 6374 RMD160 9f7ae199e8b8b3b0fbd228c2d9f388e644136775 SHA1 43461e8c0d2326f3569212576c2c50bd3862a73f SHA256 84567f427bf5279606a316b8003b3518b2a4a116c09624d384d983a415299205
+EBUILD qt-gui-4.7.4-r1.ebuild 6462 RMD160 e11253c7cf182299d99c396a34cb7ff48b09bb80 SHA1 bc925bb4c61f088735fdb44e2b5993a4e61947d5 SHA256 71d89be18fe0554d3fd452465438cec9efff6c6716154c97eca5c8ddfd186b6d
 EBUILD qt-gui-4.7.4.ebuild 6404 RMD160 bc0105c42260dac1d640200a5450e5bc6ad2eda0 SHA1 751ad3bb38b8a0ab25430b9e206f7bfeda38a1a9 SHA256 f9c066760a312306e8da2973a35f2467fc8a86662a8e5a88b5442ae387d5773d
-MISC ChangeLog 23280 RMD160 9bc7b862dbe3701aef122f5b0929e38d5ecc9b6f SHA1 8dde56ef0d705cf27a223f8115ba58a0ab536432 SHA256 827311307ccdca44a5fb28050be7329ab631add7a1b6c7ce9b482d07f6439afd
+MISC ChangeLog 23558 RMD160 ce4a21019eeeeb2390b7c85e72639bf1d15cb045 SHA1 8e066b780f52676829534f3c1046bdfbee2c34fc SHA256 8c91a0d3a7a845ce6b6e95b587af1a233cced0a0f677c6114df0863188709818
 MISC metadata.xml 1181 RMD160 74e177f4c687acb1df2637f28ac36cc80b4f224e SHA1 3ea8a8aba7d077d6a008b8360811f4e43538232b SHA256 49515885af0ad4b13d4f93911c0b8b84e25abcda3fdc8e5715b1aa956b18af15
diff --git a/x11-libs/qt-gui/files/qt-gui-4.7.4-fix-libreoffice-crash.patch b/x11-libs/qt-gui/files/qt-gui-4.7.4-fix-libreoffice-crash.patch
new file mode 100644 (file)
index 0000000..0350183
--- /dev/null
@@ -0,0 +1,46 @@
+--- src/corelib/global/qnamespace.qdoc.sav     2011-08-23 14:02:27.000000000 +0200
++++ src/corelib/global/qnamespace.qdoc 2011-11-22 13:06:00.879288001 +0100
+@@ -167,6 +167,10 @@
+            attribute is true. This attribute must be set after QApplication is
+            constructed. This is only supported in Symbian^3 and later Symbian releases.
+ 
++    \value AA_X11InitThreads Calls XInitThreads() as part of the QApplication
++           construction in order to make Xlib calls thread-safe.
++
++
+     \omitvalue AA_AttributeCount
+ */
+ 
+--- src/corelib/global/qnamespace.h.sav        2011-08-23 14:02:27.000000000 +0200
++++ src/corelib/global/qnamespace.h    2011-11-22 13:07:35.925288002 +0100
+@@ -544,6 +544,7 @@ public:
+         AA_MacDontSwapCtrlAndMeta = 7,
+         AA_S60DontConstructApplicationPanes = 8,
+         AA_S60DisablePartialScreenInputMode = 9,
++        AA_X11InitThreads = 10,
+ 
+         // Add new attributes before this line
+         AA_AttributeCount
+--- src/gui/kernel/qapplication_x11.cpp.sav    2011-08-23 14:02:27.000000000 +0200
++++ src/gui/kernel/qapplication_x11.cpp        2011-11-22 13:06:00.881288001 +0100
+@@ -1739,6 +1739,9 @@ void qt_init(QApplicationPrivate *priv,
+     } else {
+         // Qt controls everything (default)
+ 
++        if (QApplication::testAttribute(Qt::AA_X11InitThreads))
++            XInitThreads();
++
+         // Set application name and class
+         char *app_class = 0;
+         if (argv && argv[0]) {
+--- src/gui/image/qpixmap.cpp.sav      2011-08-23 14:02:27.000000000 +0200
++++ src/gui/image/qpixmap.cpp  2011-11-22 13:06:39.723288001 +0100
+@@ -99,7 +99,7 @@ static bool qt_pixmap_thread_test()
+         return false;
+     }
+ #ifndef Q_WS_WIN
+-    if (qApp->thread() != QThread::currentThread()) {
++    if (!QApplication::testAttribute(Qt::AA_X11InitThreads) && qApp->thread() != QThread::currentThread()) {
+         qWarning("QPixmap: It is not safe to use pixmaps outside the GUI thread");
+         return false;
+     }
diff --git a/x11-libs/qt-gui/qt-gui-4.7.4-r1.ebuild b/x11-libs/qt-gui/qt-gui-4.7.4-r1.ebuild
new file mode 100644 (file)
index 0000000..7b9a59c
--- /dev/null
@@ -0,0 +1,195 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/qt-gui/qt-gui-4.7.4-r1.ebuild,v 1.1 2011/11/28 21:01:19 tampakrap Exp $
+
+EAPI="3"
+inherit confutils qt4-build
+
+DESCRIPTION="The GUI module for the Qt toolkit"
+SLOT="4"
+KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 -sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris"
+IUSE="+accessibility cups dbus egl +glib gtkstyle mng nas nis private-headers qt3support raster tiff trace xinerama"
+
+RDEPEND="media-libs/fontconfig
+       media-libs/freetype:2
+       media-libs/libpng:0
+       sys-libs/zlib
+       virtual/jpeg
+       ~x11-libs/qt-core-${PV}[aqua=,debug=,glib=,qt3support=]
+       ~x11-libs/qt-script-${PV}[aqua=,debug=]
+       !aqua? (
+               x11-libs/libX11
+               x11-libs/libXext
+               x11-libs/libXrandr
+               x11-libs/libXcursor
+               x11-libs/libXfont
+               x11-libs/libSM
+               x11-libs/libXi
+       )
+       cups? ( net-print/cups )
+       dbus? ( ~x11-libs/qt-dbus-${PV}[aqua=,debug=] )
+       gtkstyle? ( x11-libs/gtk+:2[aqua=] )
+       mng? ( >=media-libs/libmng-1.0.9 )
+       nas? ( >=media-libs/nas-1.5 )
+       tiff? ( media-libs/tiff:0 )
+       xinerama? ( x11-libs/libXinerama )"
+DEPEND="${RDEPEND}
+       !aqua? (
+               x11-proto/xextproto
+               x11-proto/inputproto
+       )
+       xinerama? ( x11-proto/xineramaproto )"
+RDEPEND="${RDEPEND}
+       !~x11-themes/qgtkstyle-4.7.2"
+PDEPEND="qt3support? ( ~x11-libs/qt-qt3support-${PV}[aqua=,debug=] )"
+
+PATCHES=( 
+       "${FILESDIR}/${PN}-4.7.3-cups.patch"
+       "${FILESDIR}/${P}-fix-libreoffice-crash.patch"
+)
+
+pkg_setup() {
+       if ! use qt3support; then
+               ewarn "WARNING: if you need 'qtconfig', you _must_ enable qt3support."
+       fi
+
+       confutils_use_depend_all gtkstyle glib
+
+       QT4_TARGET_DIRECTORIES="
+               src/gui
+               src/scripttools
+               tools/designer
+               tools/linguist/linguist
+               src/plugins/imageformats/gif
+               src/plugins/imageformats/ico
+               src/plugins/imageformats/jpeg
+               src/plugins/inputmethods"
+
+       QT4_EXTRACT_DIRECTORIES="
+               include
+               src
+               tools/linguist/phrasebooks
+               tools/linguist/shared
+               tools/shared"
+
+       use dbus && QT4_TARGET_DIRECTORIES="${QT4_TARGET_DIRECTORIES} tools/qdbus/qdbusviewer"
+       use mng && QT4_TARGET_DIRECTORIES="${QT4_TARGET_DIRECTORIES} src/plugins/imageformats/mng"
+       use tiff && QT4_TARGET_DIRECTORIES="${QT4_TARGET_DIRECTORIES} src/plugins/imageformats/tiff"
+       use accessibility && QT4_TARGET_DIRECTORIES="${QT4_TARGET_DIRECTORIES} src/plugins/accessible/widgets"
+       use trace && QT4_TARGET_DIRECTORIES="${QT4_TARGET_DIRECTORIES}  src/plugins/graphicssystems/trace"
+
+       QT4_EXTRACT_DIRECTORIES="${QT4_TARGET_DIRECTORIES} ${QT4_EXTRACT_DIRECTORIES}"
+
+       qt4-build_pkg_setup
+}
+
+src_prepare() {
+       qt4-build_src_prepare
+
+       # Don't build plugins this go around, because they depend on qt3support lib
+       sed -i -e "s:CONFIG(shared:# &:g" "${S}"/tools/designer/src/src.pro
+}
+
+src_configure() {
+       export PATH="${S}/bin:${PATH}"
+       export LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}"
+
+       myconf="$(qt_use accessibility)
+               $(qt_use cups)
+               $(qt_use glib)
+               $(qt_use mng libmng system)
+               $(qt_use nis)
+               $(qt_use tiff libtiff system)
+               $(qt_use dbus qdbus)
+               $(qt_use dbus)
+               $(qt_use egl)
+               $(qt_use qt3support)
+               $(qt_use gtkstyle)
+               $(qt_use xinerama)"
+
+       use nas && myconf="${myconf} -system-nas-sound"
+       use raster && myconf="${myconf} -graphicssystem raster"
+
+       myconf="${myconf} -qt-gif -system-libpng -system-libjpeg
+               -no-sql-mysql -no-sql-psql -no-sql-ibase -no-sql-sqlite -no-sql-sqlite2
+               -no-sql-odbc -xrender -xrandr -xkb -xshape -sm -no-svg -no-webkit
+               -no-phonon -no-opengl"
+
+       qt4-build_src_configure
+
+       if use gtkstyle; then
+               einfo "patching the Makefile to fix qgtkstyle compilation"
+               sed "s:-I/usr/include/qt4 ::" -i src/gui/Makefile ||
+                       die "sed failed"
+       fi
+       einfo "patching the Makefile to fix bug #361277"
+       sed "s:-I/usr/include/qt4/QtGui ::" -i src/gui/Makefile ||
+               die "sed failed"
+}
+
+src_install() {
+       QCONFIG_ADD="x11sm xshape xcursor xfixes xrandr xrender xkb fontconfig
+               $(usev accessibility) $(usev xinerama) $(usev cups) $(usev nas)
+               gif png system-png system-jpeg
+               $(use mng && echo system-mng)
+               $(use tiff && echo system-tiff)"
+       QCONFIG_REMOVE="no-gif no-png"
+       QCONFIG_DEFINE="$(use accessibility && echo QT_ACCESSIBILITY)
+                       $(use cups && echo QT_CUPS) QT_FONTCONFIG QT_IMAGEFORMAT_JPEG
+                       $(use mng && echo QT_IMAGEFORMAT_MNG)
+                       $(use nas && echo QT_NAS)
+                       $(use nis && echo QT_NIS) QT_IMAGEFORMAT_PNG QT_SESSIONMANAGER QT_SHAPE
+                       $(use tiff && echo QT_IMAGEFORMAT_TIFF) QT_XCURSOR
+                       $(use xinerama && echo QT_XINERAMA) QT_XFIXES QT_XKB QT_XRANDR QT_XRENDER"
+
+       qt4-build_src_install
+
+       # remove unnecessary Windows headers
+       rm -f "${D}${QTHEADERDIR}"/{Qt,QtGui}/qwindowdefs_win.h
+       # remove Mac OS X headers
+       use aqua || rm -f \
+               "${D}${QTHEADERDIR}"/{Qt,QtGui}/qmacstyle_mac.h \
+               "${D}${QTHEADERDIR}"/QtGui/QMacStyle
+
+       # qt-creator
+       # some qt-creator headers are located
+       # under /usr/include/qt4/QtDesigner/private.
+       # those headers are just includes of the headers
+       # which are located under tools/designer/src/lib/*
+       # So instead of installing both, we create the private folder
+       # and drop tools/designer/src/lib/* headers in it.
+       if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then
+               insinto "${QTLIBDIR#${EPREFIX}}"/QtDesigner.framework/Headers/private/
+       else
+               insinto "${QTHEADERDIR#${EPREFIX}}"/QtDesigner/private/
+       fi
+       doins "${S}"/tools/designer/src/lib/shared/* || die
+       doins "${S}"/tools/designer/src/lib/sdk/* || die
+       #install private headers
+       if use private-headers; then
+               if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then
+                       insinto "${QTLIBDIR#${EPREFIX}}"/QtGui.framework/Headers/private/
+               else
+                       insinto "${QTHEADERDIR#${EPREFIX}}"/QtGui/private
+               fi
+               find "${S}"/src/gui -type f -name "*_p.h" -exec doins {} \;
+       fi
+       if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then
+               # rerun to get links to headers right
+               fix_includes
+       fi
+
+       # install correct designer and linguist icons, bug 241208
+       doicon tools/linguist/linguist/images/icons/linguist-128-32.png \
+               tools/designer/src/designer/images/designer.png \
+               || die "doicon failed"
+       # Note: absolute image path required here!
+       make_desktop_entry "${EPREFIX}"/usr/bin/linguist Linguist \
+                       "${EPREFIX}"/usr/share/pixmaps/linguist-128-32.png \
+                       'Qt;Development;GUIDesigner' \
+                       || die "linguist make_desktop_entry failed"
+       make_desktop_entry "${EPREFIX}"/usr/bin/designer Designer \
+                       "${EPREFIX}"/usr/share/pixmaps/designer.png \
+                       'Qt;Development;GUIDesigner' \
+                       || die "designer make_desktop_entry failed"
+}