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 20:48:25 +0000 (20:48 +0000)
committerTheo Chatzimichos <tampakrap@gentoo.org>
Mon, 28 Nov 2011 20:48:25 +0000 (20:48 +0000)
Package-Manager: portage-2.2.0_alpha77/cvs/Linux x86_64

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

index d81ad66a33a3f90b1c18412c5fa580a860788158..3de94d262111896479ffe063a36b1aea6c9af832 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for x11-libs/qt-core
 # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-libs/qt-core/ChangeLog,v 1.145 2011/11/26 19:59:35 robbat2 Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/qt-core/ChangeLog,v 1.146 2011/11/28 20:48:24 tampakrap Exp $
+
+*qt-core-4.7.4-r1 (28 Nov 2011)
+
+  28 Nov 2011; Theo Chatzimichos <tampakrap@gentoo.org>
+  +qt-core-4.7.4-r1.ebuild, +files/qt-core-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 5582cf3db2f84c65d2a6b2231f79be093e47c2cd..a8c483f8a1567a9b6ec44600d37d1dc8c06e6684 100644 (file)
@@ -4,6 +4,7 @@ AUX qt-4.5-nolibx11.diff 1167 RMD160 da983a70bd436d35e325203dfe9390b2aee925ae SH
 AUX qt-4.6-nolibx11.patch 1037 RMD160 a32338fa24ca2f99b0f3b679b1fabb88ac9b0ec1 SHA1 b7b2a430147a746a6a52f05a495be6262f2925ef SHA256 2b1d4e7df4918cafa50476e911f4c8e3e79e09fa702d756236ad2308e1c9bc69
 AUX qt-4.6-nox11r6.patch 5191 RMD160 60bac3e843addd91427ada9e4e4d7a94dc8f0430 SHA1 7534d6838426b86101ac8fc5ced829c5d5035a04 SHA256 b6db19c5b1de5e86628d37ca467f293b3ab3cf48272df93dae7ad5755ffa79cd
 AUX qt-4.6.2-alpha.patch 2913 RMD160 52ca59388d88c8e0ea2a40fd8d9d6721d324664e SHA1 bb08627e018184d4023c9fabc03adba79a67bcf0 SHA256 042c29d938339dacfb66278f62ce38c8bc597dbc2017e6d5df9397a79ac27dd3
+AUX qt-core-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
@@ -16,6 +17,7 @@ EBUILD qt-core-4.7.2-r1.ebuild 5120 RMD160 7ca4d3dfbcf4613ad3e61e5deb7d8acc73b64
 EBUILD qt-core-4.7.2-r2.ebuild 5153 RMD160 931395bd70ce9f80d79754377034856ee56aaff3 SHA1 338a4265d9955067e3b923bcf1ebbbc44d589bb5 SHA256 c8f26fea402bcdfe0e6cd9d2a0267599e5d483024ee8d357d2bfd15826096f66
 EBUILD qt-core-4.7.3-r1.ebuild 5145 RMD160 15fc91e044bce6256c058d718956946e2bac44ed SHA1 eb6ae2c5f61b5270b7023ccc4f187ab47539dce5 SHA256 9f78ef2e73ab2053776cf4c04b7035e1ef15866883d86498d50d543beba95600
 EBUILD qt-core-4.7.3.ebuild 5073 RMD160 967a5ce2abb2e75fed6212c91c3fea7dce92e13d SHA1 d8ddcb0130db836494cc4ebf1cc992f5770536de SHA256 f8585c33daa1b8b2dd7471213321c89987997bb86bf3d8143640d8d4f4f6f194
+EBUILD qt-core-4.7.4-r1.ebuild 5184 RMD160 ce1077c8316744b27bf654cc60ed2d9107cd43fc SHA1 a120c065104cdded623f2f001f2dea2ca5dd81ac SHA256 c9a7d796210e451c36bf1ba5f4157ca549b2f0c2a81fb9d97da8f69662f163fc
 EBUILD qt-core-4.7.4.ebuild 5128 RMD160 686815a3b214bc4d43b800e7917c477d9e723660 SHA1 035b1c2cbc932987ae15436c10605c92354587a7 SHA256 e26313d6d129ab24f98f971854bae93cd9e88fcf713aa960327e7d9de6871574
-MISC ChangeLog 19564 RMD160 1f734c676ca756533666c807c55974bbae8c9f23 SHA1 7c21da8f92b599811d768e5a4bbbaaa256fc0f9b SHA256 e20e530ee194326d760f0959df80ea6fec8ad9dab0ee6b459cdf16459ad10545
+MISC ChangeLog 19845 RMD160 a81dbc0654f31c917b31f08a760f84ef85eed866 SHA1 4acde9a830f561ba56fbb53e5b699c066ab920da SHA256 f08e6cd29131b25e0da53152238a1f4ed058e17a891b0ebac94f20526d1c144e
 MISC metadata.xml 802 RMD160 0341afae262322299759a5a33bae9a42e5b7801c SHA1 b564551c1b4a7902e09200255c6c0a6ede646a23 SHA256 a84f88402ece782e8ac52ad0b90eea94e5bd563ca0a7956e1d89f1263d7f2925
diff --git a/x11-libs/qt-core/files/qt-core-4.7.4-fix-libreoffice-crash.patch b/x11-libs/qt-core/files/qt-core-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-core/qt-core-4.7.4-r1.ebuild b/x11-libs/qt-core/qt-core-4.7.4-r1.ebuild
new file mode 100644 (file)
index 0000000..ff3ef1b
--- /dev/null
@@ -0,0 +1,184 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/qt-core/qt-core-4.7.4-r1.ebuild,v 1.1 2011/11/28 20:48:24 tampakrap Exp $
+
+EAPI="3"
+inherit qt4-build
+
+DESCRIPTION="The Qt toolkit is a comprehensive C++ application development framework"
+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="+glib iconv +jit optimized-qmake private-headers qt3support ssl"
+
+DEPEND="sys-libs/zlib
+       glib? ( dev-libs/glib )
+       ssl? ( dev-libs/openssl )
+       !<x11-libs/qt-4.4.0:4"
+RDEPEND="${DEPEND}"
+PDEPEND="qt3support? ( ~x11-libs/qt-gui-${PV}[aqua=,glib=,qt3support] )"
+
+PATCHES=(
+       # bug #382171
+       "${FILESDIR}/blacklist-diginotar-certs.diff"
+       "${FILESDIR}/${P}-fix-libreoffice-crash.patch"
+)
+
+pkg_setup() {
+       QT4_TARGET_DIRECTORIES="
+               src/tools/bootstrap
+               src/tools/moc
+               src/tools/rcc
+               src/tools/uic
+               src/corelib
+               src/xml
+               src/network
+               src/plugins/codecs
+               tools/linguist/lconvert
+               tools/linguist/lrelease
+               tools/linguist/lupdate"
+
+       QT4_EXTRACT_DIRECTORIES="
+               include/Qt
+               include/QtCore
+               include/QtDeclarative
+               include/QtGui
+               include/QtNetwork
+               include/QtScript
+               include/QtXml
+               src/plugins/plugins.pro
+               src/plugins/qpluginbase.pri
+               src/src.pro
+               src/3rdparty/des
+               src/3rdparty/harfbuzz
+               src/3rdparty/md4
+               src/3rdparty/md5
+               src/3rdparty/sha1
+               src/3rdparty/easing
+               src/3rdparty/zlib_dependency.pri
+               src/declarative
+               src/gui
+               src/script
+               tools/shared
+               tools/linguist/shared
+               translations"
+       qt4-build_pkg_setup
+       QT4_EXTRACT_DIRECTORIES="${QT4_TARGET_DIRECTORIES}
+               ${QT4_EXTRACT_DIRECTORIES}"
+}
+
+src_prepare() {
+       # Don't pre-strip, bug 235026
+       for i in kr jp cn tw ; do
+               echo "CONFIG+=nostrip" >> "${S}"/src/plugins/codecs/${i}/${i}.pro
+       done
+
+       qt4-build_src_prepare
+
+       # bug 172219
+       sed -i -e "s:CXXFLAGS.*=:CXXFLAGS=${CXXFLAGS} :" \
+               "${S}/qmake/Makefile.unix" || die "sed qmake/Makefile.unix CXXFLAGS failed"
+       sed -i -e "s:LFLAGS.*=:LFLAGS=${LDFLAGS} :" \
+               "${S}/qmake/Makefile.unix" || die "sed qmake/Makefile.unix LDFLAGS failed"
+}
+
+src_configure() {
+       unset QMAKESPEC
+
+       myconf="${myconf}
+               $(qt_use glib)
+               $(qt_use iconv)
+               $(qt_use optimized-qmake)
+               $(qt_use ssl openssl)
+               $(qt_use qt3support)
+               $(qt_use jit javascript-jit)"
+
+       myconf="${myconf} -no-xkb -no-fontconfig -no-xrender -no-xrandr
+               -no-xfixes -no-xcursor -no-xinerama -no-xshape -no-sm -no-opengl
+               -no-nas-sound -no-dbus -no-cups -no-gif -no-libpng
+               -no-libmng -no-libjpeg -system-zlib -no-webkit -no-phonon -no-xmlpatterns
+               -no-freetype -no-libtiff  -no-accessibility -no-fontconfig -no-opengl
+               -no-svg -no-gtkstyle -no-phonon-backend -no-script -no-scripttools
+               -no-cups -no-xsync -no-xinput -no-multimedia"
+       qt4-build_src_configure
+}
+
+src_compile() {
+       # bug 259736
+       unset QMAKESPEC
+       qt4-build_src_compile
+}
+
+src_install() {
+       dobin "${S}"/bin/{qmake,moc,rcc,uic,lconvert,lrelease,lupdate} || die "dobin failed"
+
+       install_directories src/{corelib,xml,network,plugins/codecs}
+
+       emake INSTALL_ROOT="${D}" install_mkspecs || die "emake install_mkspecs failed"
+
+       #install private headers
+       if use private-headers; then
+               insinto "${QTHEADERDIR#${EPREFIX}}"/QtCore/private
+               find "${S}"/src/corelib -type f -name "*_p.h" -exec doins {} \;
+       fi
+       # use freshly built libraries
+       local DYLD_FPATH=
+       [[ -d "${S}"/lib/QtCore.framework ]] \
+               && DYLD_FPATH=$(for x in "${S}/lib/"*.framework; do echo -n ":$x"; done)
+       DYLD_LIBRARY_PATH="${S}/lib${DYLD_FPATH}" \
+       LD_LIBRARY_PATH="${S}/lib" "${S}"/bin/lrelease translations/*.ts \
+               || die "generating translations faied"
+       insinto "${QTTRANSDIR#${EPREFIX}}"
+       doins translations/*.qm || die "doins translations failed"
+
+       setqtenv
+       fix_library_files
+
+       # List all the multilib libdirs
+       local libdirs=
+       for libdir in $(get_all_libdirs); do
+               libdirs+=":${EPREFIX}/usr/${libdir}/qt4"
+       done
+
+       cat <<-EOF > "${T}/44qt4"
+       LDPATH="${libdirs:1}"
+       EOF
+       doenvd "${T}/44qt4"
+
+       dodir "${QTDATADIR#${EPREFIX}}"/mkspecs/gentoo || die "dodir failed"
+       mv "${D}/${QTDATADIR}"/mkspecs/qconfig.pri "${D}${QTDATADIR}"/mkspecs/gentoo \
+               || die "Failed to move qconfig.pri"
+
+       # Framework hacking
+       if use aqua && [[ ${CHOST#*-darwin} -ge 9 ]] ; then
+               #TODO do this better
+               sed -i -e '2a#include <QtCore/Gentoo/gentoo-qconfig.h>\n' \
+                               "${D}${QTLIBDIR}"/QtCore.framework/Headers/qconfig.h \
+                       || die "sed for qconfig.h failed."
+               dosym "${QTHEADERDIR#${EPREFIX}}"/Gentoo "${QTLIBDIR#${EPREFIX}}"/QtCore.framework/Headers/Gentoo ||
+                       die "dosym failed"
+       else
+               sed -i -e '2a#include <Gentoo/gentoo-qconfig.h>\n' \
+                               "${D}${QTHEADERDIR}"/QtCore/qconfig.h \
+                               "${D}${QTHEADERDIR}"/Qt/qconfig.h \
+                       || die "sed for qconfig.h failed"
+       fi
+
+       if use glib; then
+               QCONFIG_DEFINE="$(use glib && echo QT_GLIB)
+                       $(use ssl && echo QT_OPENSSL)"
+               install_qconfigs
+       fi
+       # remove .la files
+       find "${D}${QTLIBDIR}" -name "*.la" -print0 | xargs -0 rm
+
+       # remove some unnecessary headers
+       rm -f "${D}${QTHEADERDIR}"/{Qt,QtCore}/{\
+qatomic_windows.h,\
+qatomic_windowsce.h,\
+qt_windows.h}
+
+       keepdir "${QTSYSCONFDIR#${EPREFIX}}"
+
+       # Framework magic
+       fix_includes
+}