summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Le Cuirot <chewi@gentoo.org>2020-08-20 23:10:01 +0100
committerJames Le Cuirot <chewi@gentoo.org>2020-08-20 23:10:01 +0100
commitb0311e22fe1952500385ab56183d7fb8d13099ff (patch)
tree33048cc5b802a0cac2bfd2b6c201280fa540ee7d /gnome-base
parentmedia-fonts/ja-ipafonts: keyworded 003.03 for sparc, bug #737618 (diff)
downloadgentoo-b0311e22fe1952500385ab56183d7fb8d13099ff.tar.gz
gentoo-b0311e22fe1952500385ab56183d7fb8d13099ff.tar.bz2
gentoo-b0311e22fe1952500385ab56183d7fb8d13099ff.zip
gnome-base/gconf: Python 3, python-single-r1.eclass, EAPI 6
Only a single Python executable is installed so supporting multiple Python versions does not make sense here. Closes: https://bugs.gentoo.org/705354 Package-Manager: Portage-3.0.4, Repoman-3.0.1 Signed-off-by: James Le Cuirot <chewi@gentoo.org>
Diffstat (limited to 'gnome-base')
-rw-r--r--gnome-base/gconf/files/gconf-3.2.6-python3.patch164
-rw-r--r--gnome-base/gconf/gconf-3.2.6-r5.ebuild146
2 files changed, 310 insertions, 0 deletions
diff --git a/gnome-base/gconf/files/gconf-3.2.6-python3.patch b/gnome-base/gconf/files/gconf-3.2.6-python3.patch
new file mode 100644
index 000000000000..d1504cc0e235
--- /dev/null
+++ b/gnome-base/gconf/files/gconf-3.2.6-python3.patch
@@ -0,0 +1,164 @@
+From dbd4f1bc1992c2942538980e76a50c8b8a758d70 Mon Sep 17 00:00:00 2001
+From: Takao Fujiwara <tfujiwar@redhat.com>
+Date: Fri, 11 Dec 2015 18:29:49 +0900
+Subject: [PATCH] gsettings-schema-convert: Support python3
+
+https://bugzilla.gnome.org/show_bug.cgi?id=759334
+---
+ gsettings/gsettings-schema-convert | 43 ++++++++++++++++++++------------------
+ 1 file changed, 23 insertions(+), 20 deletions(-)
+
+diff --git a/gsettings/gsettings-schema-convert b/gsettings/gsettings-schema-convert
+index 913cc83..6ccf8c5 100755
+--- a/gsettings/gsettings-schema-convert
++++ b/gsettings/gsettings-schema-convert
+@@ -25,6 +25,9 @@
+ # TODO: we don't support migrating a pair from a gconf schema. It has yet to be
+ # seen in real-world usage, though.
+
++from __future__ import print_function
++
++import codecs
+ import os
+ import sys
+
+@@ -398,7 +401,7 @@ class SimpleSchemaParser:
+
+ def _word_to_token(self, word):
+ lower = word.lower()
+- if lower and lower in self.allowed_tokens.keys():
++ if lower and lower in list(self.allowed_tokens.keys()):
+ return lower
+ raise GSettingsSchemaConvertException('\'%s\' is not a valid token.' % lower)
+
+@@ -594,7 +597,7 @@ class SimpleSchemaParser:
+ self.object_stack.append(new_object)
+
+ def parse(self):
+- f = open(self.file, 'r')
++ f = codecs.open(self.file, 'r', encoding='utf-8')
+ lines = [ line[:-1] for line in f.readlines() ]
+ f.close()
+
+@@ -603,7 +606,7 @@ class SimpleSchemaParser:
+ for line in lines:
+ current_line_nb += 1
+ self.parse_line(line)
+- except GSettingsSchemaConvertException, e:
++ except GSettingsSchemaConvertException as e:
+ raise GSettingsSchemaConvertException('%s:%s: %s' % (os.path.basename(self.file), current_line_nb, e))
+
+ return self.root
+@@ -711,7 +714,7 @@ class XMLSchemaParser:
+ schema = self._parse_schema(schema_node)
+
+ for (child_schema, child_name) in schema._children:
+- if parent.has_key(child_schema):
++ if child_schema in parent:
+ raise GSettingsSchemaConvertException('Child \'%s\' is declared by two different schemas: \'%s\' and \'%s\'.' % (child_schema, parent[child_schema], schema.id))
+ parent[child_schema] = schema
+
+@@ -719,7 +722,7 @@ class XMLSchemaParser:
+
+ # now let's move all schemas where they should leave
+ for schema in schemas:
+- if parent.has_key(schema.id):
++ if schema.id in parent:
+ parent_schema = parent[schema.id]
+
+ # check that the paths of parent and child are supported by
+@@ -1054,31 +1057,31 @@ def main(args):
+ (options, args) = parser.parse_args()
+
+ if len(args) < 1:
+- print >> sys.stderr, 'Need a filename to work on.'
++ print('Need a filename to work on.', file=sys.stderr)
+ return 1
+ elif len(args) > 1:
+- print >> sys.stderr, 'Too many arguments.'
++ print('Too many arguments.', file=sys.stderr)
+ return 1
+
+ if options.simple and options.xml:
+- print >> sys.stderr, 'Too many output formats requested.'
++ print('Too many output formats requested.', file=sys.stderr)
+ return 1
+
+ if not options.gconf and options.gettext_domain:
+- print >> sys.stderr, 'Default gettext domain can only be specified when converting a gconf schema.'
++ print('Default gettext domain can only be specified when converting a gconf schema.', file=sys.stderr)
+ return 1
+
+ if not options.gconf and options.schema_id:
+- print >> sys.stderr, 'Default schema ID can only be specified when converting a gconf schema.'
++ print('Default schema ID can only be specified when converting a gconf schema.', file=sys.stderr)
+ return 1
+
+ if not options.gconf and options.keep_underscores:
+- print >> sys.stderr, 'The --keep-underscores option can only be specified when converting a gconf schema.'
++ print('The --keep-underscores option can only be specified when converting a gconf schema.', file=sys.stderr)
+ return 1
+
+ argfile = os.path.expanduser(args[0])
+ if not os.path.exists(argfile):
+- print >> sys.stderr, '\'%s\' does not exist.' % argfile
++ print('\'%s\' does not exist.' % argfile, file=sys.stderr)
+ return 1
+
+ if options.output:
+@@ -1095,7 +1098,7 @@ def main(args):
+ try:
+ parser = GConfSchemaParser(argfile, options.gettext_domain, options.schema_id, options.keep_underscores)
+ schema_root = parser.parse()
+- except SyntaxError, e:
++ except SyntaxError as e:
+ raise GSettingsSchemaConvertException('\'%s\' does not look like a valid gconf schema file: %s' % (argfile, e))
+ else:
+ # autodetect if file is XML or not
+@@ -1104,7 +1107,7 @@ def main(args):
+ schema_root = parser.parse()
+ if not options.simple and not options.xml:
+ options.simple = True
+- except SyntaxError, e:
++ except SyntaxError as e:
+ parser = SimpleSchemaParser(argfile)
+ schema_root = parser.parse()
+ if not options.simple and not options.xml:
+@@ -1113,10 +1116,10 @@ def main(args):
+ if options.xml:
+ node = schema_root.get_xml_node()
+ try:
+- output = ET.tostring(node, pretty_print = True)
++ output = ET.tostring(node, pretty_print = True, encoding="unicode")
+ except TypeError:
+ # pretty_print only works with lxml
+- output = ET.tostring(node)
++ output = ET.tostring(node, encoding="unicode")
+ else:
+ output = schema_root.get_simple_string()
+
+@@ -1124,17 +1127,17 @@ def main(args):
+ sys.stdout.write(output)
+ else:
+ try:
+- fout = open(options.output, 'w')
++ fout = codecs.open(options.output, 'w', encoding='utf-8')
+ fout.write(output)
+ fout.close()
+- except GSettingsSchemaConvertException, e:
++ except GSettingsSchemaConvertException as e:
+ fout.close()
+ if os.path.exists(options.output):
+ os.unlink(options.output)
+ raise e
+
+- except GSettingsSchemaConvertException, e:
+- print >> sys.stderr, '%s' % e
++ except GSettingsSchemaConvertException as e:
++ print('%s' % e, file=sys.stderr)
+ return 1
+
+ return 0
+--
+2.4.3
+
diff --git a/gnome-base/gconf/gconf-3.2.6-r5.ebuild b/gnome-base/gconf/gconf-3.2.6-r5.ebuild
new file mode 100644
index 000000000000..ca22f3e6fb60
--- /dev/null
+++ b/gnome-base/gconf/gconf-3.2.6-r5.ebuild
@@ -0,0 +1,146 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+GNOME_ORG_MODULE="GConf"
+GNOME2_LA_PUNT="yes"
+PYTHON_COMPAT=( python3_{7,8,9} )
+PYTHON_REQ_USE="xml"
+
+inherit gnome2 multilib-minimal python-single-r1
+
+DESCRIPTION="GNOME configuration system and daemon"
+HOMEPAGE="https://projects.gnome.org/gconf/"
+
+LICENSE="LGPL-2+"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-linux"
+IUSE="debug +introspection ldap policykit"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}]
+ >=dev-libs/dbus-glib-0.100.2:=[${MULTILIB_USEDEP}]
+ >=sys-apps/dbus-1.6.18-r1:=[${MULTILIB_USEDEP}]
+ >=dev-libs/libxml2-2.9.1-r4:2[${MULTILIB_USEDEP}]
+ introspection? ( >=dev-libs/gobject-introspection-0.9.5:= )
+ ldap? ( >=net-nds/openldap-2.4.38-r1:=[${MULTILIB_USEDEP}] )
+ policykit? ( sys-auth/polkit:= )
+"
+DEPEND="${RDEPEND}
+ dev-libs/libxslt
+ dev-util/glib-utils
+ dev-util/gtk-doc-am
+ >=dev-util/intltool-0.35
+ virtual/pkgconfig
+"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+pkg_setup() {
+ kill_gconf
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ # Do not start gconfd when installing schemas, fix bug #238276, upstream #631983
+ eapply "${FILESDIR}/${PN}-2.24.0-no-gconfd.patch"
+
+ # Do not crash in gconf_entry_set_value() when entry pointer is NULL, upstream #631985
+ eapply "${FILESDIR}/${PN}-2.28.0-entry-set-value-sigsegv.patch"
+
+ # From 'master'
+ # mconvert: enable recursive scheme lookup and fix a crasher
+ eapply "${FILESDIR}/${P}-mconvert-crasher.patch"
+
+ # dbus: Don't spew to console when unable to connect to dbus daemon
+ eapply "${FILESDIR}/${P}-spew-console-error.patch"
+
+ # gsettings-data-convert: Warn (and fix) invalid schema paths
+ eapply "${FILESDIR}/${P}-gsettings-data-convert-paths.patch"
+
+ # gsettings-data-convert: Migrate from Python 2 to 3.
+ eapply "${FILESDIR}/${P}-python3.patch"
+
+ gnome2_src_prepare
+}
+
+multilib_src_configure() {
+ ECONF_SOURCE=${S} \
+ gnome2_src_configure \
+ --disable-static \
+ --enable-gsettings-backend \
+ --with-gtk=3.0 \
+ --disable-orbit \
+ $(use_enable debug) \
+ $(multilib_native_use_enable introspection) \
+ $(use_with ldap openldap) \
+ $(multilib_native_use_enable policykit defaults-service)
+
+ if multilib_is_native_abi; then
+ ln -s "${S}"/doc/gconf/html doc/gconf/html || die
+ fi
+}
+
+multilib_src_install() {
+ gnome2_src_install
+}
+
+multilib_src_install_all() {
+ python_fix_shebang "${ED}"/usr/bin/gsettings-schema-convert
+
+ keepdir /etc/gconf/gconf.xml.mandatory
+ keepdir /etc/gconf/gconf.xml.defaults
+ # Make sure this directory exists, bug #268070, upstream #572027
+ keepdir /etc/gconf/gconf.xml.system
+
+ echo "CONFIG_PROTECT_MASK=\"/etc/gconf\"" > 50gconf
+ echo 'GSETTINGS_BACKEND="gconf"' >> 50gconf
+ doenvd 50gconf
+ dodir /root/.gconfd
+}
+
+pkg_preinst() {
+ kill_gconf
+ gnome2_pkg_preinst
+}
+
+pkg_postinst() {
+ kill_gconf
+
+ gnome2_pkg_postinst
+
+ multilib_pkg_postinst() {
+ gnome2_giomodule_cache_update \
+ || die "Update GIO modules cache failed (for ${ABI})"
+ }
+ multilib_foreach_abi multilib_pkg_postinst
+
+ # change the permissions to avoid some gconf bugs
+ einfo "changing permissions for gconf dirs"
+ find "${EPREFIX}"/etc/gconf/ -type d -exec chmod ugo+rx "{}" \;
+
+ einfo "changing permissions for gconf files"
+ find "${EPREFIX}"/etc/gconf/ -type f -exec chmod ugo+r "{}" \;
+}
+
+pkg_postrm() {
+ gnome2_pkg_postrm
+
+ multilib_pkg_postrm() {
+ gnome2_giomodule_cache_update \
+ || die "Update GIO modules cache failed (for ${ABI})"
+ }
+ multilib_foreach_abi multilib_pkg_postrm
+}
+
+kill_gconf() {
+ # This function will kill all running gconfd-2 that could be causing troubles
+ if [ -x "${EPREFIX}"/usr/bin/gconftool-2 ]
+ then
+ "${EPREFIX}"/usr/bin/gconftool-2 --shutdown
+ fi
+
+ return 0
+}