From 60ef078452baefdcd4df087ced1ecac9965e4dc6 Mon Sep 17 00:00:00 2001 From: Yuri Konotopov Date: Thu, 26 Jan 2017 18:38:56 +0400 Subject: gnome-extra/chrome-gnome-shell: added patches to fix various issues. Closes: https://github.com/gentoo/gentoo/pull/3660 --- .../chrome-gnome-shell-8-r1.ebuild | 70 +++++++++++++++++ .../chrome-gnome-shell/chrome-gnome-shell-8.ebuild | 64 --------------- ...me-gnome-shell-8-enabled-extensions-array.patch | 32 ++++++++ .../chrome-gnome-shell-8-get_dbus_connection.patch | 91 ++++++++++++++++++++++ .../chrome-gnome-shell-8-metadata-version.patch | 28 +++++++ 5 files changed, 221 insertions(+), 64 deletions(-) create mode 100644 gnome-extra/chrome-gnome-shell/chrome-gnome-shell-8-r1.ebuild delete mode 100644 gnome-extra/chrome-gnome-shell/chrome-gnome-shell-8.ebuild create mode 100644 gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-enabled-extensions-array.patch create mode 100644 gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-get_dbus_connection.patch create mode 100644 gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-metadata-version.patch (limited to 'gnome-extra') diff --git a/gnome-extra/chrome-gnome-shell/chrome-gnome-shell-8-r1.ebuild b/gnome-extra/chrome-gnome-shell/chrome-gnome-shell-8-r1.ebuild new file mode 100644 index 000000000000..495e02ee7386 --- /dev/null +++ b/gnome-extra/chrome-gnome-shell/chrome-gnome-shell-8-r1.ebuild @@ -0,0 +1,70 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +PYTHON_COMPAT=( python2_7 python3_{4,5} ) + +inherit cmake-utils python-single-r1 + +DESCRIPTION="GNOME Shell integration for Chrome/Chromium, Firefox, Vivaldi, Opera browsers" +HOMEPAGE="https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome" +SRC_URI="mirror://gnome/sources/${PN}/${PV}/${P}.tar.xz" + +LICENSE="GPL-3+" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="" + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +DEPEND="${PYTHON_DEPS} + app-misc/jq + sys-apps/coreutils +" +RDEPEND="${PYTHON_DEPS} + dev-python/pygobject:3[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + gnome-base/gnome-shell +" + +PATCHES=( + "${FILESDIR}/${P}"-enabled-extensions-array.patch + "${FILESDIR}/${P}"-metadata-version.patch + "${FILESDIR}/${P}"-get_dbus_connection.patch +) + +src_configure() { + local mycmakeargs=( -DBUILD_EXTENSION=OFF ) + cmake-utils_src_configure +} + +src_install() { + # Chrome policy files should be removed with package. + # Otherwise it will not be possible to uninstall web extension + # from browser. + echo -n "CONFIG_PROTECT_MASK=\"" > 50"${PN}" || die + echo -n "/etc/chromium/policies/managed/${PN}.json " >> 50"${PN}" || die + echo "/etc/opt/chrome/policies/managed/${PN}.json\"" >> 50"${PN}" || die + doenvd 50"${PN}" + + cmake-utils_src_install +} + +pkg_postinst() { + elog "If you are installing ${PN} for the first time then you should" + elog "restart or reload dbus service before starting your browser." + elog + elog "Please note that this package provides native messaging connector only." + elog + elog "Managed policy was installed to force web extension installation" + elog "for Google Chrome, Chromium and Vivaldi browsers from Chrome Store" + elog "https://chrome.google.com/webstore/detail/gphhapmejobijbbhgpjhcjognlahblep" + elog + elog "For Mozilla Firefox you should manualy install web extension from" + elog "https://addons.mozilla.org/firefox/addon/gnome-shell-integration/" + elog + elog "For Opera you should manualy install web extension from" + elog "https://addons.opera.com/extensions/details/gnome-shell-integration/" +} diff --git a/gnome-extra/chrome-gnome-shell/chrome-gnome-shell-8.ebuild b/gnome-extra/chrome-gnome-shell/chrome-gnome-shell-8.ebuild deleted file mode 100644 index 5eed8d81c4e2..000000000000 --- a/gnome-extra/chrome-gnome-shell/chrome-gnome-shell-8.ebuild +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id$ - -EAPI=6 - -PYTHON_COMPAT=( python2_7 python3_{4,5} ) - -inherit cmake-utils python-single-r1 - -DESCRIPTION="GNOME Shell integration for Chrome/Chromium, Firefox, Vivaldi, Opera browsers" -HOMEPAGE="https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome" -SRC_URI="mirror://gnome/sources/${PN}/${PV}/${P}.tar.xz" - -LICENSE="GPL-3+" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="" - -REQUIRED_USE="${PYTHON_REQUIRED_USE}" - -DEPEND="${PYTHON_DEPS} - app-misc/jq - sys-apps/coreutils -" -RDEPEND="${PYTHON_DEPS} - dev-python/requests[${PYTHON_USEDEP}] - dev-python/pygobject:3[${PYTHON_USEDEP}] - gnome-base/gnome-shell -" - -src_configure() { - local mycmakeargs=( -DBUILD_EXTENSION=OFF ) - cmake-utils_src_configure -} - -src_install() { - # Chrome policy files should be removed with package. - # Otherwise it will not be possible to uninstall web extension - # from browser. - echo -n "CONFIG_PROTECT_MASK=\"" > 50"${PN}" || die - echo -n "/etc/chromium/policies/managed/${PN}.json " >> 50"${PN}" || die - echo "/etc/opt/chrome/policies/managed/${PN}.json\"" >> 50"${PN}" || die - doenvd 50"${PN}" - - cmake-utils_src_install -} - -pkg_postinst() { - elog "If you are installing ${PN} for the first time then you should" - elog "restart or reload dbus service before starting your browser." - elog - elog "Please note that this package provides native messaging connector only." - elog - elog "Managed policy was installed to force web extension installation" - elog "for Google Chrome, Chromium and Vivaldi browsers from Chrome Store" - elog "https://chrome.google.com/webstore/detail/gphhapmejobijbbhgpjhcjognlahblep" - elog - elog "For Mozilla Firefox you should manualy install web extension from" - elog "https://addons.mozilla.org/firefox/addon/gnome-shell-integration/" - elog - elog "For Opera you should manualy install web extension from" - elog "https://addons.opera.com/extensions/details/gnome-shell-integration/" -} diff --git a/gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-enabled-extensions-array.patch b/gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-enabled-extensions-array.patch new file mode 100644 index 000000000000..7a56ca0256be --- /dev/null +++ b/gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-enabled-extensions-array.patch @@ -0,0 +1,32 @@ +From 1de3c56c636adfdb74970bf9d7a5424af3830d92 Mon Sep 17 00:00:00 2001 +From: Yuri Konotopov +Date: Mon, 23 Jan 2017 19:43:30 +0400 +Subject: [PATCH 3/6] connector: assume that "enabled-extensions" array can + contains duplicates + +See-Also: https://bugzilla.gnome.org/show_bug.cgi?id=777650 +Fixes: https://github.com/nE0sIghT/chrome-gnome-shell-mirror/issues/26 +--- + connector/chrome-gnome-shell.py | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/connector/chrome-gnome-shell.py b/connector/chrome-gnome-shell.py +index 719a347..0b92d83 100755 +--- a/connector/chrome-gnome-shell.py ++++ b/connector/chrome-gnome-shell.py +@@ -424,9 +424,10 @@ class ChromeGNOMEShell(Gio.Application): + continue + + if extension['enable']: +- uuids.append(extension['uuid']) ++ if not extension['uuid'] in uuids: ++ uuids.append(extension['uuid']) + elif extension['uuid'] in uuids: +- uuids.remove(extension['uuid']) ++ uuids = [value for value in uuids if value != extension['uuid']] + + settings.set_strv(ENABLED_EXTENSIONS_KEY, uuids) + +-- +2.10.2 + diff --git a/gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-get_dbus_connection.patch b/gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-get_dbus_connection.patch new file mode 100644 index 000000000000..be5f6c4e51d0 --- /dev/null +++ b/gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-get_dbus_connection.patch @@ -0,0 +1,91 @@ +From dca4a3538f86d8e2e957945a691430573192716d Mon Sep 17 00:00:00 2001 +From: Yuri Konotopov +Date: Tue, 24 Jan 2017 19:42:19 +0400 +Subject: [PATCH 6/6] connector: do not use get_dbus_connection after + GApplication was released. + +Fixes: https://github.com/nE0sIghT/chrome-gnome-shell-mirror/issues/27 +--- + connector/chrome-gnome-shell.py | 22 +++++++++++++--------- + 1 file changed, 13 insertions(+), 9 deletions(-) + +diff --git a/connector/chrome-gnome-shell.py b/connector/chrome-gnome-shell.py +index 0f6e5f1..ac6740a 100755 +--- a/connector/chrome-gnome-shell.py ++++ b/connector/chrome-gnome-shell.py +@@ -106,21 +106,26 @@ class ChromeGNOMEShell(Gio.Application): + self.hold() + + # Is there any way to hook this to shutdown? +- def cleanup(self): +- debug('Cleanup') ++ def clean_release(self): ++ debug('Release') + + if self.shellAppearedId: + Gio.bus_unwatch_name(self.shellAppearedId) + + if self.shellSignalId: +- self.get_dbus_connection().signal_unsubscribe(self.shellSignalId) ++ dbus_connection = self.get_dbus_connection() ++ ++ if dbus_connection is not None: ++ dbus_connection.signal_unsubscribe(self.shellSignalId) ++ ++ self.release() + + def default_exception_hook(self, exception_type, value, tb): + log_error("Uncaught exception of type %s occured" % exception_type) + traceback.print_tb(tb) + log_error("Exception: %s" % value) + +- self.release() ++ self.clean_release() + + def add_simple_action(self, name, callback, parameter_type): + action = Gio.SimpleAction.new( +@@ -191,7 +196,7 @@ class ChromeGNOMEShell(Gio.Application): + # noinspection PyUnusedLocal + def on_service_timeout(self, data): + debug('On service timeout') +- self.release() ++ self.clean_release() + + return False + +@@ -203,7 +208,7 @@ class ChromeGNOMEShell(Gio.Application): + + if len(text_length_bytes) == 0: + debug('Release condition: %s' % str(condition)) +- self.release() ++ self.clean_release() + return + + # Unpack message length as 4 byte integer. +@@ -255,14 +260,14 @@ class ChromeGNOMEShell(Gio.Application): + # noinspection PyUnusedLocal + def on_hup(self, source, condition, data): + debug('On hup: %s' % str(condition)) +- self.release() ++ self.clean_release() + + return False + + # noinspection PyUnusedLocal + def on_sigint(self, data): + debug('On sigint') +- self.release() ++ self.clean_release() + + return False + +@@ -545,6 +550,5 @@ if __name__ == '__main__': + app = ChromeGNOMEShell('--gapplication-service' in sys.argv) + + app.run(sys.argv) +- app.cleanup() + + debug('Quit') +-- +2.10.2 + diff --git a/gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-metadata-version.patch b/gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-metadata-version.patch new file mode 100644 index 000000000000..238d1fcd1df6 --- /dev/null +++ b/gnome-extra/chrome-gnome-shell/files/chrome-gnome-shell-8-metadata-version.patch @@ -0,0 +1,28 @@ +From 48ded6911e60fb8415190b252ca420b994e6c525 Mon Sep 17 00:00:00 2001 +From: Yuri Konotopov +Date: Mon, 23 Jan 2017 22:29:12 +0400 +Subject: [PATCH 4/6] connector: assume version 1 for extensions without + version in metadata + +Bug: https://github.com/nE0sIghT/chrome-gnome-shell-mirror/issues/27 +See-Also: https://git.gnome.org/browse/extensions-web/commit/?id=214f03ee90f0f391d3d4fdec23feedf45e3d0507 +--- + connector/chrome-gnome-shell.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/connector/chrome-gnome-shell.py b/connector/chrome-gnome-shell.py +index 0b92d83..0f6e5f1 100755 +--- a/connector/chrome-gnome-shell.py ++++ b/connector/chrome-gnome-shell.py +@@ -506,7 +506,7 @@ class ChromeGNOMEShell(Gio.Application): + http_request['installed'][uuid] = { + 'version': int(extensions[uuid]['version']) + } +- except ValueError: ++ except (ValueError, KeyError): + http_request['installed'][uuid] = { + 'version': 1 + } +-- +2.10.2 + -- cgit v1.2.3-65-gdbad