dev-qt/qtprintsupport: Fix revdeps segfault if built with USE=-cups
authorAndreas Sturmlechner <asturm@gentoo.org>
Sun, 12 Jan 2020 16:09:32 +0000 (17:09 +0100)
committerAndreas Sturmlechner <asturm@gentoo.org>
Sun, 12 Jan 2020 16:20:12 +0000 (17:20 +0100)
Tested-by: David Flogeras <dflogeras2@gmail.com>
Thanks-to: David Flogeras <dflogeras2@gmail.com>
Closes: https://bugs.gentoo.org/704936
Package-Manager: Portage-2.3.84, Repoman-2.3.20
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
dev-qt/qtprintsupport/files/qtprintsupport-5.13.2-no-cups.patch [new file with mode: 0644]
dev-qt/qtprintsupport/qtprintsupport-5.13.2-r1.ebuild [new file with mode: 0644]
dev-qt/qtprintsupport/qtprintsupport-5.14.0-r1.ebuild [new file with mode: 0644]

diff --git a/dev-qt/qtprintsupport/files/qtprintsupport-5.13.2-no-cups.patch b/dev-qt/qtprintsupport/files/qtprintsupport-5.13.2-no-cups.patch
new file mode 100644 (file)
index 0000000..fe19baf
--- /dev/null
@@ -0,0 +1,49 @@
+From 2ad3348031d8a622374920eac5bdd8fb9ecefcd7 Mon Sep 17 00:00:00 2001
+From: Christian Ehrlicher <ch.ehrlicher@gmx.de>
+Date: Sat, 21 Dec 2019 19:57:45 +0100
+Subject: QPrintDialog: don't access dangling pointer when cups is disabled
+
+When no cups support is available, ui.pagesRadioButton is destroyed in
+QPrintDialogPrivate::init() but was accessed later on. Fix it by moving
+the cups check one line above.
+
+Fixes: QTBUG-80945
+Change-Id: Ieb062b39e1461f39665ef612dfea1d7757274b7e
+Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
+---
+ src/printsupport/dialogs/qprintdialog_unix.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp
+index c7328d9732..7bbf137977 100644
+--- a/src/printsupport/dialogs/qprintdialog_unix.cpp
++++ b/src/printsupport/dialogs/qprintdialog_unix.cpp
+@@ -637,8 +637,10 @@ void QPrintDialogPrivate::init()
+     options.pageSetCombo->addItem(tr("Odd Pages"), QVariant::fromValue(QCUPSSupport::OddPages));
+     options.pageSetCombo->addItem(tr("Even Pages"), QVariant::fromValue(QCUPSSupport::EvenPages));
+ #else
+-    for (int i = options.pagesLayout->count() - 1; i >= 0; --i)
+-        delete options.pagesLayout->itemAt(i)->widget();
++    delete options.pagesRadioButton;
++    delete options.pagesLineEdit;
++    options.pagesRadioButton = nullptr;
++    options.pagesLineEdit = nullptr;
+ #endif
+     top->d->setOptionsPane(this);
+@@ -727,12 +729,12 @@ void QPrintDialogPrivate::selectPrinter(const QPrinter::OutputFormat outputForma
+         else
+             options.pageSetCombo->setEnabled(true);
++#if QT_CONFIG(cups)
+         // Disable complex page ranges widget when printing to pdf
+         // It doesn't work since it relies on cups to do the heavy lifting and cups
+         // is not used when printing to PDF
+         options.pagesRadioButton->setEnabled(outputFormat != QPrinter::PdfFormat);
+-#if QT_CONFIG(cups)
+         // Disable color options on main dialog if not printing to file, it will be handled by CUPS advanced dialog
+         options.colorMode->setVisible(outputFormat == QPrinter::PdfFormat);
+ #endif
+-- 
+cgit v1.2.1
diff --git a/dev-qt/qtprintsupport/qtprintsupport-5.13.2-r1.ebuild b/dev-qt/qtprintsupport/qtprintsupport-5.13.2-r1.ebuild
new file mode 100644 (file)
index 0000000..7ce0cf6
--- /dev/null
@@ -0,0 +1,44 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+QT5_MODULE="qtbase"
+VIRTUALX_REQUIRED="test"
+inherit qt5-build
+
+DESCRIPTION="Printing support library for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+       KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+fi
+
+IUSE="cups gles2"
+
+RDEPEND="
+       ~dev-qt/qtcore-${PV}
+       ~dev-qt/qtgui-${PV}[gles2=]
+       ~dev-qt/qtwidgets-${PV}[gles2=]
+       cups? ( >=net-print/cups-1.4 )
+"
+DEPEND="${RDEPEND}
+       test? ( ~dev-qt/qtnetwork-${PV} )
+"
+
+QT5_TARGET_SUBDIRS=(
+       src/printsupport
+       src/plugins/printsupport
+)
+
+QT5_GENTOO_CONFIG=(
+       cups
+)
+
+PATCHES=( "${FILESDIR}/${P}-no-cups.patch" ) # bug #704936, QTBUG-80945
+
+src_configure() {
+       local myconf=(
+               $(qt_use cups)
+               -opengl $(usex gles2 es2 desktop)
+       )
+       qt5-build_src_configure
+}
diff --git a/dev-qt/qtprintsupport/qtprintsupport-5.14.0-r1.ebuild b/dev-qt/qtprintsupport/qtprintsupport-5.14.0-r1.ebuild
new file mode 100644 (file)
index 0000000..b9cb036
--- /dev/null
@@ -0,0 +1,44 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+QT5_MODULE="qtbase"
+VIRTUALX_REQUIRED="test"
+inherit qt5-build
+
+DESCRIPTION="Printing support library for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+       KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+fi
+
+IUSE="cups gles2"
+
+RDEPEND="
+       ~dev-qt/qtcore-${PV}
+       ~dev-qt/qtgui-${PV}[gles2=]
+       ~dev-qt/qtwidgets-${PV}[gles2=]
+       cups? ( >=net-print/cups-1.4 )
+"
+DEPEND="${RDEPEND}
+       test? ( ~dev-qt/qtnetwork-${PV} )
+"
+
+QT5_TARGET_SUBDIRS=(
+       src/printsupport
+       src/plugins/printsupport
+)
+
+QT5_GENTOO_CONFIG=(
+       cups
+)
+
+PATCHES=( "${FILESDIR}/${PN}-5.13.2-no-cups.patch" ) # bug #704936, QTBUG-80945
+
+src_configure() {
+       local myconf=(
+               $(qt_use cups)
+               -opengl $(usex gles2 es2 desktop)
+       )
+       qt5-build_src_configure
+}