From 200e3e949e6e8bc1fb94e4b64a2a92d89e8452cc Mon Sep 17 00:00:00 2001 From: Theo Chatzimichos Date: Mon, 28 Nov 2011 20:48:25 +0000 Subject: [PATCH] Backport patch from Qt 4.8 to fix crash in LibreOffice, as pointed out by scarabeus. FreeDesktop bug 40298 Package-Manager: portage-2.2.0_alpha77/cvs/Linux x86_64 --- x11-libs/qt-core/ChangeLog | 9 +- x11-libs/qt-core/Manifest | 4 +- .../qt-core-4.7.4-fix-libreoffice-crash.patch | 46 +++++ x11-libs/qt-core/qt-core-4.7.4-r1.ebuild | 184 ++++++++++++++++++ 4 files changed, 241 insertions(+), 2 deletions(-) create mode 100644 x11-libs/qt-core/files/qt-core-4.7.4-fix-libreoffice-crash.patch create mode 100644 x11-libs/qt-core/qt-core-4.7.4-r1.ebuild diff --git a/x11-libs/qt-core/ChangeLog b/x11-libs/qt-core/ChangeLog index d81ad66a33a3..3de94d262111 100644 --- a/x11-libs/qt-core/ChangeLog +++ b/x11-libs/qt-core/ChangeLog @@ -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 + +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 Manifest: Bug 385719: upstream altered qt-everywhere-opensource-src-4.7.4.tar.gz, mass diff --git a/x11-libs/qt-core/Manifest b/x11-libs/qt-core/Manifest index 5582cf3db2f8..a8c483f8a156 100644 --- a/x11-libs/qt-core/Manifest +++ b/x11-libs/qt-core/Manifest @@ -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 index 000000000000..0350183f8a95 --- /dev/null +++ b/x11-libs/qt-core/files/qt-core-4.7.4-fix-libreoffice-crash.patch @@ -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 index 000000000000..ff3ef1baf5cc --- /dev/null +++ b/x11-libs/qt-core/qt-core-4.7.4-r1.ebuild @@ -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 ) + !> "${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 \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 \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 +} -- 2.26.2