From ee8c5c2586b343d5b763d394e58d428f317f9823 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 17 2022 09:18:15 +0000 Subject: import gnome-extensions-app-40.0-3.el9 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..af72745 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/gnome-shell-40.0.tar.xz diff --git a/.gnome-extensions-app.metadata b/.gnome-extensions-app.metadata new file mode 100644 index 0000000..3c5a788 --- /dev/null +++ b/.gnome-extensions-app.metadata @@ -0,0 +1 @@ +85e3e1108c0f2cf95be52268ac47c449e06ad0b3 SOURCES/gnome-shell-40.0.tar.xz diff --git a/SOURCES/0001-extensions-app-Add-compatibility-with-GNOME-3.34.patch b/SOURCES/0001-extensions-app-Add-compatibility-with-GNOME-3.34.patch new file mode 100644 index 0000000..173bcf5 --- /dev/null +++ b/SOURCES/0001-extensions-app-Add-compatibility-with-GNOME-3.34.patch @@ -0,0 +1,168 @@ +From 42d5ff3ec2d18d7239eac8a6ce0544d4f69efab3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Tue, 31 Mar 2020 19:53:50 +0200 +Subject: [PATCH] extensions-app: Add compatibility with GNOME 3.34 + +We are currently relying on 3.36 changes: + + - the addition of the UserExtensionsEnabled property + + - the separate org.gnome.Shell.Extensions name to expose + the interface + +In order to work with the previous stable release as well, we can +fall back to connecting to gnome-shell itself and changing the +underlying GSettings directly. +--- + subprojects/extensions-app/data/meson.build | 2 + + .../data/org.gnome.Extensions.gschema.xml | 12 +++++ + subprojects/extensions-app/js/main.js | 47 +++++++++++++++---- + subprojects/extensions-app/meson.build | 1 + + 4 files changed, 54 insertions(+), 8 deletions(-) + create mode 100644 subprojects/extensions-app/data/org.gnome.Extensions.gschema.xml + +diff --git a/subprojects/extensions-app/data/meson.build b/subprojects/extensions-app/data/meson.build +index 0568fafc8..e9399e3b6 100644 +--- a/subprojects/extensions-app/data/meson.build ++++ b/subprojects/extensions-app/data/meson.build +@@ -33,5 +33,7 @@ configure_file( + install_dir: servicedir, + ) + ++install_data(app_id + '.gschema.xml', install_dir: schemadir) ++ + subdir('icons') + subdir('metainfo') +diff --git a/subprojects/extensions-app/data/org.gnome.Extensions.gschema.xml b/subprojects/extensions-app/data/org.gnome.Extensions.gschema.xml +new file mode 100644 +index 000000000..d70d4bd4c +--- /dev/null ++++ b/subprojects/extensions-app/data/org.gnome.Extensions.gschema.xml +@@ -0,0 +1,12 @@ ++ ++ ++ ++ false ++ Disable user extensions ++ ++ Disable all extensions the user has enabled without affecting ++ the “enabled-extension” setting. ++ ++ ++ ++ +diff --git a/subprojects/extensions-app/js/main.js b/subprojects/extensions-app/js/main.js +index d25df9c57..f5ac2e564 100644 +--- a/subprojects/extensions-app/js/main.js ++++ b/subprojects/extensions-app/js/main.js +@@ -47,6 +47,10 @@ class Application extends Gtk.Application { + return this._shellProxy; + } + ++ get legacyMode() { ++ return this._legacyMode; ++ } ++ + vfunc_activate() { + this._shellProxy.CheckForUpdatesRemote(); + this._window.present(); +@@ -69,6 +73,13 @@ class Application extends Gtk.Application { + this._shellProxy = new GnomeShellProxy(Gio.DBus.session, + 'org.gnome.Shell.Extensions', '/org/gnome/Shell/Extensions'); + ++ this._legacyMode = this._shellProxy.g_name_owner === null; ++ ++ if (this._legacyMode) { ++ this._shellProxy = new GnomeShellProxy(Gio.DBus.session, ++ 'org.gnome.Shell', '/org/gnome/Shell'); ++ } ++ + this._window = new ExtensionsWindow({ application: this }); + } + }); +@@ -89,6 +100,10 @@ var ExtensionsWindow = GObject.registerClass({ + _init(params) { + super._init(params); + ++ this._settings = this.application.legacyMode ++ ? new Gio.Settings({ schema_id: 'org.gnome.shell' }) ++ : null; ++ + this._updatesCheckId = 0; + + this._exporter = new Shew.WindowExporter({ window: this }); +@@ -111,7 +126,12 @@ var ExtensionsWindow = GObject.registerClass({ + }); + action.connect('activate', toggleState); + action.connect('change-state', (a, state) => { +- this._shellProxy.UserExtensionsEnabled = state.get_boolean(); ++ const value = state.get_boolean(); ++ ++ if (this._settings) ++ this._settings.set_boolean('disable-user-extensions', !value); ++ else ++ this._shellProxy.UserExtensionsEnabled = value; + }); + this.add_action(action); + +@@ -124,8 +144,13 @@ var ExtensionsWindow = GObject.registerClass({ + this._shellProxy.connectSignal('ExtensionStateChanged', + this._onExtensionStateChanged.bind(this)); + +- this._shellProxy.connect('g-properties-changed', +- this._onUserExtensionsEnabledChanged.bind(this)); ++ if (this._settings) { ++ this._settings.connect('changed::disable-user-extensions', ++ this._onUserExtensionsEnabledChanged.bind(this)); ++ } else { ++ this._shellProxy.connect('g-properties-changed', ++ this._onUserExtensionsEnabledChanged.bind(this)); ++ } + this._onUserExtensionsEnabledChanged(); + + this._scanExtensions(); +@@ -166,9 +191,13 @@ var ExtensionsWindow = GObject.registerClass({ + } + } + +- this._shellProxy.OpenExtensionPrefsRemote(uuid, +- this._exportedHandle, +- { modal: new GLib.Variant('b', true) }); ++ if (this.application.legacyMode) { ++ this._shellProxy.LaunchExtensionPrefsRemote(uuid); ++ } else { ++ this._shellProxy.OpenExtensionPrefsRemote(uuid, ++ this._exportedHandle, ++ { modal: new GLib.Variant('b', true) }); ++ } + } + + _showAbout() { +@@ -228,8 +257,10 @@ var ExtensionsWindow = GObject.registerClass({ + + _onUserExtensionsEnabledChanged() { + let action = this.lookup_action('user-extensions-enabled'); +- action.set_state( +- new GLib.Variant('b', this._shellProxy.UserExtensionsEnabled)); ++ const newState = this._settings ++ ? !this._settings.get_boolean('disable-user-extensions') ++ : this._shellProxy.UserExtensionsEnabled; ++ action.set_state(new GLib.Variant('b', newState)); + } + + _onExtensionStateChanged(proxy, senderName, [uuid, newState]) { +diff --git a/subprojects/extensions-app/meson.build b/subprojects/extensions-app/meson.build +index 88536236a..ebf3da942 100644 +--- a/subprojects/extensions-app/meson.build ++++ b/subprojects/extensions-app/meson.build +@@ -34,6 +34,7 @@ icondir = join_paths(datadir, 'icons') + localedir = join_paths(datadir, 'locale') + metainfodir = join_paths(datadir, 'metainfo') + servicedir = join_paths(datadir, 'dbus-1', 'services') ++schemadir = join_paths(datadir, 'glib-2.0', 'schemas') + + gjs = find_program('gjs') + appstream_util = find_program('appstream-util', required: false) +-- +2.25.1 + diff --git a/SPECS/gnome-extensions-app.spec b/SPECS/gnome-extensions-app.spec new file mode 100644 index 0000000..7b3d51a --- /dev/null +++ b/SPECS/gnome-extensions-app.spec @@ -0,0 +1,123 @@ +%global _vpath_srcdir subprojects/extensions-app +%global source_name gnome-shell +%global tarball_version %%(echo %{version} | tr '~' '.') + +Name: gnome-extensions-app +Version: 40.0 +Release: 3%{?dist} +Summary: Manage GNOME Shell extensions + +License: GPLv2+ +URL: https://gitlab.gnome.org/GNOME/%{source_name} +Source0: https://download.gnome.org/sources/%{source_name}/40/%{source_name}-%{tarball_version}.tar.xz + +Patch0: 0001-extensions-app-Add-compatibility-with-GNOME-3.34.patch + +BuildRequires: gcc +BuildRequires: gettext +BuildRequires: meson +BuildRequires: git + +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gtk4) +BuildRequires: pkgconfig(gobject-introspection-1.0) +BuildRequires: gjs +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib + +Requires: gjs%{_isa} + +%define exec_name gnome-extensions-app +%define bus_name org.gnome.Extensions + +%description +GNOME Extensions is an application for configuring and removing +GNOME Shell extensions. + + +%prep +%setup -q -n %{source_name}-%{tarball_version} + +%if 0%{?flatpak} +%patch0 -p1 +%endif + +%{_vpath_srcdir}/generate-translations.sh + + +%build +%meson +%meson_build + +%check +%meson_test +desktop-file-validate %{buildroot}%{_datadir}/applications/%{bus_name}.desktop + + +%install +%meson_install + +%find_lang %{name} + +rm -rf %{buildroot}/%{_datadir}/%{name}/gir-1.0 + +%files -f %{name}.lang +%license COPYING +%{_bindir}/%{exec_name} +%{_datadir}/applications/%{bus_name}.desktop +%{_datadir}/dbus-1/services/%{bus_name}.service +%if 0%{?flatpak} +%{_datadir}/glib-2.0/schemas/%{bus_name}.gschema.xml +%endif +%{_datadir}/metainfo/%{bus_name}.metainfo.xml +%{_datadir}/icons/hicolor/scalable/apps/%{bus_name}.svg +%{_datadir}/icons/hicolor/scalable/apps/%{bus_name}.Devel.svg +%{_datadir}/icons/hicolor/symbolic/apps/%{bus_name}-symbolic.svg +%{_datadir}/%{name}/ +%{_libdir}/%{name}/ + + +%changelog +* Mon Aug 09 2021 Mohan Boddu - 40.0-3 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Thu Apr 15 2021 Mohan Boddu - 40.0-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Sun Mar 28 2021 Kalev Lember - 40.0-1 +- Update to 40.0 + +* Mon Mar 15 2021 Florian Müllner - 40.0~rc-1 +- Update to 40.rc + +* Thu Mar 11 2021 Florian Müllner - 40.0~beta-1 +- Update to 40.beta + +* Tue Jan 26 2021 Fedora Release Engineering - 3.38.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Sep 15 2020 Florian Müllner - 3.38.0-1 +- Update to 3.38.0 + +* Sat Aug 01 2020 Fedora Release Engineering - 3.37.3-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 3.37.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 07 2020 Florian Müllner - 3.37.2-1 +- Update to 3.37.3 + +* Wed Jun 03 2020 Florian Müllner - 3.37.2-1 +- Update to 3.37.2 + +* Thu Apr 30 2020 Florian Müllner - 3.37.1-1 +- Update to 3.37.1 + +* Wed Apr 01 2020 Florian Müllner - 3.36.1-1 +- Make flatpak build compatible with F31 + +* Tue Mar 31 2020 Florian Müllner - 3.36.1-1 +- Build initial version