summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2020-10-24 18:15:53 +0200
committerAndreas Sturmlechner <asturm@gentoo.org>2020-10-25 02:27:39 +0200
commit14a30e74032de0399de3e8ffefbf04c2316070a5 (patch)
treef05ef5d81717b666152f746e9ab6650697f5f400 /app-admin
parentnet-libs/libaccounts-glib: python3_9, fix assert failure (diff)
downloadgentoo-14a30e74032de0399de3e8ffefbf04c2316070a5.tar.gz
gentoo-14a30e74032de0399de3e8ffefbf04c2316070a5.tar.bz2
gentoo-14a30e74032de0399de3e8ffefbf04c2316070a5.zip
app-admin/system-config-printer: python3_9 w/ required fixes
Package-Manager: Portage-3.0.8, Repoman-3.0.2 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'app-admin')
-rw-r--r--app-admin/system-config-printer/files/system-config-printer-1.5.12-catch-urllib-errors.patch22
-rw-r--r--app-admin/system-config-printer/files/system-config-printer-1.5.12-fix-remember-passwd.patch121
-rw-r--r--app-admin/system-config-printer/files/system-config-printer-1.5.12-py39-1.patch45
-rw-r--r--app-admin/system-config-printer/files/system-config-printer-1.5.12-py39-2.patch147
-rw-r--r--app-admin/system-config-printer/system-config-printer-1.5.12-r2.ebuild86
5 files changed, 421 insertions, 0 deletions
diff --git a/app-admin/system-config-printer/files/system-config-printer-1.5.12-catch-urllib-errors.patch b/app-admin/system-config-printer/files/system-config-printer-1.5.12-catch-urllib-errors.patch
new file mode 100644
index 000000000000..fbae84426159
--- /dev/null
+++ b/app-admin/system-config-printer/files/system-config-printer-1.5.12-catch-urllib-errors.patch
@@ -0,0 +1,22 @@
+From feed693225cc0c26464bfc0adef21da72581e811 Mon Sep 17 00:00:00 2001
+From: Zdenek Dohnal <zdohnal@redhat.com>
+Date: Thu, 28 Nov 2019 15:45:22 +0100
+Subject: [PATCH] Catch errors from urllib too
+
+---
+ newprinter.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/newprinter.py b/newprinter.py
+index 8b9298887..6c71ec578 100644
+--- a/newprinter.py
++++ b/newprinter.py
+@@ -4183,7 +4183,7 @@ def getNPPPD(self):
+ tmpf.flush ()
+ ppd = cups.PPD(tmpf.name)
+
+- except RuntimeError as e:
++ except (RuntimeError, urllib.error.HTTPError) as e:
+ debugprint ("RuntimeError: " + repr (e))
+ if self.rbtnNPFoomatic.get_active():
+ # Foomatic database problem of some sort.
diff --git a/app-admin/system-config-printer/files/system-config-printer-1.5.12-fix-remember-passwd.patch b/app-admin/system-config-printer/files/system-config-printer-1.5.12-fix-remember-passwd.patch
new file mode 100644
index 000000000000..980d1e031548
--- /dev/null
+++ b/app-admin/system-config-printer/files/system-config-printer-1.5.12-fix-remember-passwd.patch
@@ -0,0 +1,121 @@
+From b74c701feb52a1d2865fe1d33c393f71ae3ac47a Mon Sep 17 00:00:00 2001
+From: Ave Ozkal <ave@ave.zone>
+Date: Thu, 19 Mar 2020 13:30:23 +0300
+Subject: [PATCH 1/3] jobviewer: Use sync methods for secret.service
+
+---
+ jobviewer.py | 28 +++++++++-------------------
+ 1 file changed, 9 insertions(+), 19 deletions(-)
+
+diff --git a/jobviewer.py b/jobviewer.py
+index b95bf6c58..ba8abd06f 100644
+--- a/jobviewer.py
++++ b/jobviewer.py
+@@ -91,36 +91,26 @@
+ class ServiceGet:
+ service = Secret.Service()
+
+- def on_get_service(self, source, result, unused):
+- service = Secret.Service.get_finish(result)
+-
+ def __init__(self):
+- Secret.Service.get(0,
+- None,
+- self.on_get_service,
+- None)
++ self.service = Secret.Service.get(0,
++ None)
+
+ def get_service(self):
+- return ServiceGet.service
++ return self.service
+
+
+ class ItemSearch:
+ items = list()
+
+- def on_search_item(self, source, result, unused):
+- items = Secret.Service.search_finish(None, result)
+-
+ def __init__(self, service, attrs):
+- Secret.Service.search(service,
+- NETWORK_PASSWORD,
+- attrs,
+- Secret.SearchFlags.LOAD_SECRETS,
+- None,
+- self.on_search_item,
+- None)
++ self.items = Secret.Service.search_sync(service,
++ NETWORK_PASSWORD,
++ attrs,
++ Secret.SearchFlags.LOAD_SECRETS,
++ None)
+
+ def get_items(self):
+- return ItemSearch.items
++ return self.items
+
+
+ class PasswordStore:
+
+From 152b617f511cd44757d2db4d730067aca8cf69a9 Mon Sep 17 00:00:00 2001
+From: Ave Ozkal <ave@ave.zone>
+Date: Thu, 19 Mar 2020 14:39:21 +0300
+Subject: [PATCH 2/3] jobviewer: properly use sync
+
+---
+ jobviewer.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/jobviewer.py b/jobviewer.py
+index ba8abd06f..761673b49 100644
+--- a/jobviewer.py
++++ b/jobviewer.py
+@@ -92,8 +92,8 @@ class ServiceGet:
+ service = Secret.Service()
+
+ def __init__(self):
+- self.service = Secret.Service.get(0,
+- None)
++ self.service = Secret.Service.get_sync(0,
++ None)
+
+ def get_service(self):
+ return self.service
+
+From 00177768ca1464c694acde4cdbabc1a18420c176 Mon Sep 17 00:00:00 2001
+From: Ave Ozkal <ave@ave.zone>
+Date: Thu, 19 Mar 2020 14:40:55 +0300
+Subject: [PATCH 3/3] jobviewer: Properly fetch username and password
+
+---
+ jobviewer.py | 14 ++------------
+ 1 file changed, 2 insertions(+), 12 deletions(-)
+
+diff --git a/jobviewer.py b/jobviewer.py
+index 761673b49..5376a7e88 100644
+--- a/jobviewer.py
++++ b/jobviewer.py
+@@ -1049,20 +1049,10 @@ def get_authentication (self, job, device_uri, printer_uri,
+ if items:
+ auth_info = ['' for x in auth_info_required]
+ ind = auth_info_required.index ('username')
+-
+- for attr in items[0].attributes:
+- # It might be safe to assume here that the
+- # user element is always the second item in a
+- # NETWORK_PASSWORD element but lets make sure.
+- if attr.name == 'user':
+- auth_info[ind] = attr.get_string()
+- break
+- else:
+- debugprint ("Did not find username keyring "
+- "attributes.")
++ auth_info[ind] = items[0].get_attributes().get("user")
+
+ ind = auth_info_required.index ('password')
+- auth_info[ind] = items[0].secret
++ auth_info[ind] = items[0].get_secret().get().decode()
+ break
+ else:
+ debugprint ("Failed to find secret in keyring.")
diff --git a/app-admin/system-config-printer/files/system-config-printer-1.5.12-py39-1.patch b/app-admin/system-config-printer/files/system-config-printer-1.5.12-py39-1.patch
new file mode 100644
index 000000000000..658a63d65c78
--- /dev/null
+++ b/app-admin/system-config-printer/files/system-config-printer-1.5.12-py39-1.patch
@@ -0,0 +1,45 @@
+From cf7a74217558b19aff7c21a724878bcc15dc4e38 Mon Sep 17 00:00:00 2001
+From: Zdenek Dohnal <zdohnal@redhat.com>
+Date: Mon, 5 Oct 2020 09:26:40 +0200
+Subject: [PATCH] isAlive() is removed, use is_alive()
+
+---
+ asyncipp.py | 2 +-
+ timedops.py | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/asyncipp.py b/asyncipp.py
+index 5bc160e0f..61cd72136 100644
+--- a/asyncipp.py
++++ b/asyncipp.py
+@@ -269,7 +269,7 @@ def destroy (self):
+ for binding in self.bindings:
+ delattr (self, binding)
+
+- if self.thread.isAlive ():
++ if self.thread.is_alive ():
+ debugprint ("Stopping worker thread")
+ self.thread.stop ()
+ GLib.timeout_add_seconds (1, self._reap_thread)
+diff --git a/timedops.py b/timedops.py
+index 8a8741c82..111d575f6 100644
+--- a/timedops.py
++++ b/timedops.py
+@@ -157,7 +157,7 @@ def run (self):
+ self.exception = e
+
+ def collect_result (self):
+- if self.isAlive ():
++ if self.is_alive ():
+ # We've been canceled.
+ raise OperationCanceled()
+
+@@ -212,7 +212,7 @@ def run (self):
+ return self.thread.collect_result ()
+
+ def _check_thread (self):
+- if self.thread.isAlive ():
++ if self.thread.is_alive ():
+ # Thread still running.
+ return True
+
diff --git a/app-admin/system-config-printer/files/system-config-printer-1.5.12-py39-2.patch b/app-admin/system-config-printer/files/system-config-printer-1.5.12-py39-2.patch
new file mode 100644
index 000000000000..eccb3939e0d1
--- /dev/null
+++ b/app-admin/system-config-printer/files/system-config-printer-1.5.12-py39-2.patch
@@ -0,0 +1,147 @@
+From 63eccd5603e19cd35d6d44af65443665a3c63f38 Mon Sep 17 00:00:00 2001
+From: Zdenek Dohnal <zdohnal@redhat.com>
+Date: Wed, 22 Jul 2020 13:57:13 +0200
+Subject: [PATCH] python3.9 - xml module removed elem.getchildren() method, use
+ list(elem)
+
+---
+ cupshelpers/openprinting.py | 6 +++---
+ cupshelpers/xmldriverprefs.py | 20 ++++++++++----------
+ xml/validate.py | 10 +++++-----
+ 3 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/cupshelpers/openprinting.py b/cupshelpers/openprinting.py
+index c616d913c..9bb4764c9 100755
+--- a/cupshelpers/openprinting.py
++++ b/cupshelpers/openprinting.py
+@@ -338,7 +338,7 @@ def parse_result (status, data, result):
+ packages = {}
+ container = driver.find ('packages')
+ if container is not None:
+- for arch in container.getchildren ():
++ for arch in list(container):
+ rpms = {}
+ for package in arch.findall ('package'):
+ rpm = {}
+@@ -351,7 +351,7 @@ def parse_result (status, data, result):
+
+ repositories = package.find ('repositories')
+ if repositories is not None:
+- for pkgsys in repositories.getchildren ():
++ for pkgsys in list(repositories):
+ rpm.setdefault('repositories', {})[pkgsys.tag] = pkgsys.text
+
+ rpms[package.attrib['file']] = rpm
+@@ -363,7 +363,7 @@ def parse_result (status, data, result):
+ ppds = []
+ container = driver.find ('ppds')
+ if container is not None:
+- for each in container.getchildren ():
++ for each in list(container):
+ ppds.append (each.text)
+
+ if ppds:
+diff --git a/cupshelpers/xmldriverprefs.py b/cupshelpers/xmldriverprefs.py
+index 4177e1c0f..0d02950f4 100644
+--- a/cupshelpers/xmldriverprefs.py
++++ b/cupshelpers/xmldriverprefs.py
+@@ -27,7 +27,7 @@
+
+ def PreferredDrivers (filename):
+ preferreddrivers = xml.etree.ElementTree.XML (open (filename).read ())
+- return preferreddrivers.getchildren()
++ return list(preferreddrivers)
+
+ class DeviceIDMatch:
+ """
+@@ -227,10 +227,10 @@ def load (self, drivertypes):
+ """
+
+ types = []
+- for drivertype in drivertypes.getchildren ():
++ for drivertype in list(drivertypes):
+ t = DriverType (drivertype.attrib["name"])
+
+- for child in drivertype.getchildren ():
++ for child in list(drivertype):
+ if child.tag == "ppdname":
+ t.add_ppd_name (child.attrib["match"])
+ elif child.tag == "attribute":
+@@ -238,7 +238,7 @@ def load (self, drivertypes):
+ child.attrib["match"])
+ elif child.tag == "deviceid":
+ deviceid_match = DeviceIDMatch ()
+- for field in child.getchildren ():
++ for field in list(child):
+ if field.tag == "field":
+ deviceid_match.add_field (field.attrib["name"],
+ field.attrib["match"])
+@@ -414,29 +414,29 @@ def load (self, preferreddrivers):
+ Load the policy from an XML file.
+ """
+
+- for printer in preferreddrivers.getchildren ():
++ for printer in list(preferreddrivers):
+ ptype = PrinterType ()
+- for child in printer.getchildren ():
++ for child in list(printer):
+ if child.tag == "make-and-model":
+ ptype.add_make_and_model (child.attrib["match"])
+ elif child.tag == "deviceid":
+ deviceid_match = DeviceIDMatch ()
+- for field in child.getchildren ():
++ for field in list(child):
+ if field.tag == "field":
+ deviceid_match.add_field (field.attrib["name"],
+ field.attrib["match"])
+ ptype.add_deviceid_match (deviceid_match)
+
+ elif child.tag == "drivers":
+- for drivertype in child.getchildren ():
++ for drivertype in list(child):
+ ptype.add_drivertype_pattern (drivertype.text)
+
+ elif child.tag == "avoid":
+- for drivertype in child.getchildren ():
++ for drivertype in list(child):
+ ptype.add_avoidtype_pattern (drivertype.text)
+
+ elif child.tag == "blacklist":
+- for drivertype in child.getchildren ():
++ for drivertype in list(child):
+ ptype.add_blacklisted (drivertype.text)
+
+ self.ptypes.append (ptype)
+diff --git a/xml/validate.py b/xml/validate.py
+index 8fc201ecf..ba16766dc 100644
+--- a/xml/validate.py
++++ b/xml/validate.py
+@@ -35,23 +35,23 @@ def validate (self):
+ filename = self._filename
+ print ("Validating %s" % filename)
+ preferreddrivers = xml.etree.ElementTree.XML (open (filename).read ())
+- (drivertypes, preferenceorder) = preferreddrivers.getchildren ()
++ (drivertypes, preferenceorder) = list(preferreddrivers)
+ validates = True
+
+ names = set()
+- for drivertype in drivertypes.getchildren ():
++ for drivertype in list(drivertypes):
+ name = drivertype.get ("name")
+ names.add (name)
+
+- for printer in preferenceorder.getchildren ():
++ for printer in list(preferenceorder):
+ types = []
+ drivers = printer.find ("drivers")
+ if drivers is not None:
+- types.extend (drivers.getchildren ())
++ types.extend (list(drivers))
+
+ blacklist = printer.find ("blacklist")
+ if blacklist is not None:
+- types.extend (blacklist.getchildren ())
++ types.extend (list(blacklist))
+
+ for drivertype in types:
+ pattern = drivertype.text.strip ()
diff --git a/app-admin/system-config-printer/system-config-printer-1.5.12-r2.ebuild b/app-admin/system-config-printer/system-config-printer-1.5.12-r2.ebuild
new file mode 100644
index 000000000000..c97eaf9b4f29
--- /dev/null
+++ b/app-admin/system-config-printer/system-config-printer-1.5.12-r2.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python3_{7,8,9} )
+PYTHON_REQ_USE="xml"
+inherit gnome2 python-single-r1 systemd
+
+DESCRIPTION="Graphical user interface for CUPS administration"
+HOMEPAGE="https://github.com/OpenPrinting/system-config-printer"
+SRC_URI="https://github.com/OpenPrinting/${PN}/releases/download/${PV}/${P}.tar.xz"
+
+LICENSE="GPL-2+"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+SLOT="0"
+IUSE="gnome-keyring policykit"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# Needs cups running, bug 284005
+RESTRICT="test"
+
+# Additional unhandled dependencies
+# gnome-extra/gnome-packagekit[${PYTHON_USEDEP}] with pygobject:2 ?
+# python samba client: smbc
+# selinux: needed for troubleshooting
+COMMON_DEPEND="${PYTHON_DEPS}
+ dev-libs/glib:2
+ net-print/cups[dbus]
+ virtual/libusb:1
+ >=virtual/udev-172
+ x11-libs/gtk+:3[introspection]
+ x11-libs/libnotify[introspection]
+ x11-libs/pango[introspection]
+"
+DEPEND="${COMMON_DEPEND}
+ app-text/docbook-xml-dtd:4.1.2
+ >=app-text/xmlto-0.0.22
+ dev-perl/XML-Parser
+ dev-util/desktop-file-utils
+ dev-util/intltool
+ sys-devel/gettext
+ virtual/pkgconfig
+"
+RDEPEND="${COMMON_DEPEND}
+ $(python_gen_cond_dep '
+ dev-python/dbus-python[${PYTHON_MULTI_USEDEP}]
+ dev-python/pycairo[${PYTHON_MULTI_USEDEP}]
+ dev-python/pycups[${PYTHON_MULTI_USEDEP}]
+ dev-python/pygobject:3[${PYTHON_MULTI_USEDEP}]
+ dev-python/requests[${PYTHON_MULTI_USEDEP}]
+ dev-python/urllib3[${PYTHON_MULTI_USEDEP}]
+ ')
+ gnome-keyring? ( app-crypt/libsecret[introspection] )
+ policykit? ( net-print/cups-pk-helper )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-check-for-null.patch
+ "${FILESDIR}"/${P}-fix-abrt-in-udev-configure-printer.patch
+ "${FILESDIR}"/${P}-catch-urllib-errors.patch
+ "${FILESDIR}"/${P}-fix-remember-passwd.patch
+ "${FILESDIR}"/${P}-py39-{1,2}.patch
+)
+
+pkg_setup() {
+ python-single-r1_pkg_setup
+}
+
+src_configure() {
+ gnome2_src_configure \
+ --enable-nls \
+ --with-desktop-vendor=Gentoo \
+ --with-udev-rules \
+ --with-systemdsystemunitdir=$(systemd_get_systemunitdir)
+}
+
+src_compile() {
+ gnome2_src_compile
+}
+
+src_install() {
+ gnome2_src_install
+ python_fix_shebang "${ED}"
+ python_optimize
+}