diff --git a/0001-Add-support-for-new-ConfirmedRebootToBootOptions-sig.patch b/0001-Add-support-for-new-ConfirmedRebootToBootOptions-sig.patch new file mode 100644 index 0000000..1ff6a6e --- /dev/null +++ b/0001-Add-support-for-new-ConfirmedRebootToBootOptions-sig.patch @@ -0,0 +1,173 @@ +From cba2fdd2ee9fc3decd4179feeda0cb7d833f1022 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 14 Aug 2018 14:41:43 +0200 +Subject: [PATCH 1/2] Add support for new ConfirmedRebootToBootOptions signal + send by org.gnome.SessionManager.EndSessionDialog + +In order to allow the user to choose advanced boot-options on systems where +the boot menu is not shown by default at boot, gnome-shell's endSessionDialog.js +may emit a new ConfirmedRebootToBootOptions signal to indicate that +gnome-session should reboot the system in such a way that the boot-menu will +be shown next boot. + +This implements the backend for the "Boot Options" button from: +https://wiki.gnome.org/Design/OS/BootOptions + +Note that at the moment ConfirmedRebootToBootOptions is just treated as an +alias to ConfirmedReboot, since there is no bootloader agnostic way yet to +indicate the menu should be shown. + +For now the FIXME may be patched with a distro specific patch to implement +this for the distro's chosen bootloader. I will start a discussion on +systemd-devel to come up with a distro / bootloader agnostic interface +for this. +--- + gnome-session/gsm-manager.c | 28 ++++++++++++++++++++++++++++ + gnome-session/gsm-shell.c | 10 ++++++++++ + gnome-session/gsm-shell.h | 7 ++++--- + 3 files changed, 42 insertions(+), 3 deletions(-) + +diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c +index 6eeea4a6..e0f190a1 100644 +--- a/gnome-session/gsm-manager.c ++++ b/gnome-session/gsm-manager.c +@@ -109,6 +109,7 @@ typedef enum + GSM_MANAGER_LOGOUT_NONE, + GSM_MANAGER_LOGOUT_LOGOUT, + GSM_MANAGER_LOGOUT_REBOOT, ++ GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS, + GSM_MANAGER_LOGOUT_REBOOT_INTERACT, + GSM_MANAGER_LOGOUT_SHUTDOWN, + GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT, +@@ -165,6 +166,7 @@ struct GsmManagerPrivate + guint shell_end_session_dialog_confirmed_logout_id; + guint shell_end_session_dialog_confirmed_shutdown_id; + guint shell_end_session_dialog_confirmed_reboot_id; ++ guint shell_end_session_dialog_confirmed_reboot_to_boot_options_id; + }; + + enum { +@@ -478,6 +480,7 @@ gsm_manager_quit (GsmManager *manager) + gsm_quit (); + break; + case GSM_MANAGER_LOGOUT_REBOOT: ++ case GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS: + case GSM_MANAGER_LOGOUT_REBOOT_INTERACT: + gsm_system_complete_shutdown (manager->priv->system); + break; +@@ -1138,6 +1141,7 @@ end_session_or_show_shell_dialog (GsmManager *manager) + type = GSM_SHELL_END_SESSION_DIALOG_TYPE_LOGOUT; + break; + case GSM_MANAGER_LOGOUT_REBOOT: ++ case GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS: + case GSM_MANAGER_LOGOUT_REBOOT_INTERACT: + type = GSM_SHELL_END_SESSION_DIALOG_TYPE_RESTART; + break; +@@ -3324,6 +3328,12 @@ disconnect_shell_dialog_signals (GsmManager *manager) + manager->priv->shell_end_session_dialog_confirmed_reboot_id = 0; + } + ++ if (manager->priv->shell_end_session_dialog_confirmed_reboot_to_boot_options_id != 0) { ++ g_signal_handler_disconnect (manager->priv->shell, ++ manager->priv->shell_end_session_dialog_confirmed_reboot_to_boot_options_id); ++ manager->priv->shell_end_session_dialog_confirmed_reboot_to_boot_options_id = 0; ++ } ++ + if (manager->priv->shell_end_session_dialog_open_failed_id != 0) { + g_signal_handler_disconnect (manager->priv->shell, + manager->priv->shell_end_session_dialog_open_failed_id); +@@ -3386,6 +3396,14 @@ on_shell_end_session_dialog_confirmed_reboot (GsmShell *shell, + disconnect_shell_dialog_signals (manager); + } + ++static void ++on_shell_end_session_dialog_confirmed_reboot_to_boot_options (GsmShell *shell, ++ GsmManager *manager) ++{ ++ _handle_end_session_dialog_response (manager, GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS); ++ disconnect_shell_dialog_signals (manager); ++} ++ + static void + connect_shell_dialog_signals (GsmManager *manager) + { +@@ -3421,6 +3439,12 @@ connect_shell_dialog_signals (GsmManager *manager) + "end-session-dialog-confirmed-reboot", + G_CALLBACK (on_shell_end_session_dialog_confirmed_reboot), + manager); ++ ++ manager->priv->shell_end_session_dialog_confirmed_reboot_to_boot_options_id = ++ g_signal_connect (manager->priv->shell, ++ "end-session-dialog-confirmed-reboot-to-boot-options", ++ G_CALLBACK (on_shell_end_session_dialog_confirmed_reboot_to_boot_options), ++ manager); + } + + static void +@@ -3694,6 +3718,10 @@ do_query_end_session_exit (GsmManager *manager) + case GSM_MANAGER_LOGOUT_REBOOT_INTERACT: + reboot = TRUE; + break; ++ case GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS: ++ /* FIXME tell bootmanager to show menu on next boot */ ++ reboot = TRUE; ++ break; + case GSM_MANAGER_LOGOUT_SHUTDOWN: + case GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT: + shutdown = TRUE; +diff --git a/gnome-session/gsm-shell.c b/gnome-session/gsm-shell.c +index 04cfa2f5..d727232d 100644 +--- a/gnome-session/gsm-shell.c ++++ b/gnome-session/gsm-shell.c +@@ -69,6 +69,7 @@ enum { + END_SESSION_DIALOG_CONFIRMED_LOGOUT, + END_SESSION_DIALOG_CONFIRMED_SHUTDOWN, + END_SESSION_DIALOG_CONFIRMED_REBOOT, ++ END_SESSION_DIALOG_CONFIRMED_REBOOT_TO_BOOT_OPTIONS, + NUMBER_OF_SIGNALS + }; + +@@ -179,6 +180,14 @@ gsm_shell_class_init (GsmShellClass *shell_class) + NULL, NULL, NULL, + G_TYPE_NONE, 0); + ++ signals [END_SESSION_DIALOG_CONFIRMED_REBOOT_TO_BOOT_OPTIONS] = ++ g_signal_new ("end-session-dialog-confirmed-reboot-to-boot-options", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (GsmShellClass, end_session_dialog_confirmed_reboot_to_boot_options), ++ NULL, NULL, NULL, ++ G_TYPE_NONE, 0); ++ + g_type_class_add_private (shell_class, sizeof (GsmShellPrivate)); + } + +@@ -342,6 +351,7 @@ on_end_session_dialog_dbus_signal (GDBusProxy *proxy, + { "Canceled", END_SESSION_DIALOG_CANCELED }, + { "ConfirmedLogout", END_SESSION_DIALOG_CONFIRMED_LOGOUT }, + { "ConfirmedReboot", END_SESSION_DIALOG_CONFIRMED_REBOOT }, ++ { "ConfirmedRebootToBootOptions", END_SESSION_DIALOG_CONFIRMED_REBOOT_TO_BOOT_OPTIONS }, + { "ConfirmedShutdown", END_SESSION_DIALOG_CONFIRMED_SHUTDOWN }, + { NULL, -1 } + }; +diff --git a/gnome-session/gsm-shell.h b/gnome-session/gsm-shell.h +index e236493a..b1cdd457 100644 +--- a/gnome-session/gsm-shell.h ++++ b/gnome-session/gsm-shell.h +@@ -64,9 +64,10 @@ struct _GsmShellClass + void (* end_session_dialog_closed) (GsmShell *shell); + void (* end_session_dialog_canceled) (GsmShell *shell); + +- void (* end_session_dialog_confirmed_logout) (GsmShell *shell); +- void (* end_session_dialog_confirmed_shutdown) (GsmShell *shell); +- void (* end_session_dialog_confirmed_reboot) (GsmShell *shell); ++ void (* end_session_dialog_confirmed_logout) (GsmShell *shell); ++ void (* end_session_dialog_confirmed_shutdown) (GsmShell *shell); ++ void (* end_session_dialog_confirmed_reboot) (GsmShell *shell); ++ void (* end_session_dialog_confirmed_reboot_to_boot_options) (GsmShell *shell); + + }; + +-- +2.19.0 + diff --git a/0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch b/0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch new file mode 100644 index 0000000..6763654 --- /dev/null +++ b/0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch @@ -0,0 +1,75 @@ +From 687ec347d2fa0bca227e3a583a3a47f9bbc10bb0 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 4 Oct 2016 13:15:39 -0400 +Subject: [PATCH] check-accelerated-gles: Use eglGetPlatformDisplay{,EXT} + +eglGetDisplay forces the implementation to guess, and in general it +can't guess correctly. Be explicit. + +Signed-off-by: Adam Jackson +--- + .../gnome-session-check-accelerated-gles-helper.c | 36 +++++++++++++++++++++- + 1 file changed, 35 insertions(+), 1 deletion(-) + +diff --git a/tools/gnome-session-check-accelerated-gles-helper.c b/tools/gnome-session-check-accelerated-gles-helper.c +index 2a38d9e..472d1ad 100644 +--- a/tools/gnome-session-check-accelerated-gles-helper.c ++++ b/tools/gnome-session-check-accelerated-gles-helper.c +@@ -34,11 +34,43 @@ + #include + #include + #include ++#include + #endif + + #include "gnome-session-check-accelerated-common.h" + + #ifdef GDK_WINDOWING_X11 ++static EGLDisplay ++get_display (void *native) ++{ ++ EGLDisplay dpy = NULL; ++ const char *client_exts = eglQueryString (NULL, EGL_EXTENSIONS); ++ ++ if (g_strstr_len (client_exts, -1, "EGL_KHR_platform_base")) { ++ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = ++ (void *) eglGetProcAddress ("eglGetPlatformDisplay"); ++ ++ if (get_platform_display) ++ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL); ++ ++ if (dpy) ++ return dpy; ++ } ++ ++ if (g_strstr_len (client_exts, -1, "EGL_EXT_platform_base")) { ++ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = ++ (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT"); ++ ++ if (get_platform_display) ++ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL); ++ ++ if (dpy) ++ return dpy; ++ } ++ ++ return eglGetDisplay ((EGLNativeDisplayType) native); ++} ++ + static char * + get_gles_renderer (void) + { +@@ -67,7 +99,9 @@ get_gles_renderer (void) + gdk_error_trap_push (); + + display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); +- egl_dpy = eglGetDisplay (display); ++ ++ egl_dpy = get_display (display); ++ + if (!egl_dpy) { + g_warning ("eglGetDisplay() failed"); + goto out; +-- +2.9.3 + diff --git a/0002-Fedora-Set-grub-boot-flags-on-shutdown-reboot.patch b/0002-Fedora-Set-grub-boot-flags-on-shutdown-reboot.patch new file mode 100644 index 0000000..43afe68 --- /dev/null +++ b/0002-Fedora-Set-grub-boot-flags-on-shutdown-reboot.patch @@ -0,0 +1,58 @@ +From 10d271c9819e3b9986e50e1eede7d3c126c45ff5 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 14 Aug 2018 14:49:59 +0200 +Subject: [PATCH 2/2] Fedora: Set grub boot-flags on shutdown / reboot + +Fedora's grub will automatically hide the boot-menu if the previous +boot has set the boot_success flag in grub's environment. This happens +automatically 30 seconds after login. + +But if the user shuts down or reboots from the system-menu before then +(e.g. directly from gdm) then the boot_success flag gets not set. If +a reboot / shutdown is initiated through gnome-session then the user +is successfully interacting with the system, so set the boot_success +flag from gnome_session for this case to fix reboot from gdm leading to +the boot-menu not being hidden. + +Likewise implement ConfirmedRebootMenu handling in a Fedora specific +way (for now) by setting the menu_show_once grub bootflag in this case. +--- + gnome-session/gsm-manager.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c +index e0f190a1..1444c553 100644 +--- a/gnome-session/gsm-manager.c ++++ b/gnome-session/gsm-manager.c +@@ -3716,14 +3716,27 @@ do_query_end_session_exit (GsmManager *manager) + break; + case GSM_MANAGER_LOGOUT_REBOOT: + case GSM_MANAGER_LOGOUT_REBOOT_INTERACT: ++ /* ++ * Fedora specific patch to make sure the boot-menu does not ++ * show when it is configured to auto-hide and a reboot is ++ * initiated directly from gdm. ++ */ ++ system("/usr/sbin/grub2-set-bootflag boot_success"); + reboot = TRUE; + break; + case GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS: +- /* FIXME tell bootmanager to show menu on next boot */ ++ /* Fedora specific implementation to show the menu on next boot */ ++ system("/usr/sbin/grub2-set-bootflag menu_show_once"); + reboot = TRUE; + break; + case GSM_MANAGER_LOGOUT_SHUTDOWN: + case GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT: ++ /* ++ * Fedora specific patch to make sure the boot-menu does not ++ * show when it is configured to auto-hide and a shutdown is ++ * initiated directly from gdm. ++ */ ++ system("/usr/sbin/grub2-set-bootflag boot_success"); + shutdown = TRUE; + break; + default: +-- +2.19.0 + diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 2967e23..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# gnome-session - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index 50f7157..0000000 --- a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# gnome-session - -#### 介绍 -{**以下是码云平台说明,您可以替换此简介** -码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 码云特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/gnome-session-3.3.92-nv30.patch b/gnome-session-3.3.92-nv30.patch new file mode 100644 index 0000000..8bb1d85 --- /dev/null +++ b/gnome-session-3.3.92-nv30.patch @@ -0,0 +1,12 @@ +--- gnome-session/data/hardware-compatibility 2012-03-21 16:30:06.269104695 -0700 ++++ gnome-session/data/hardware-compatibility.new 2012-03-22 23:26:37.201967075 -0700 +@@ -19,6 +19,9 @@ + -Mesa DRI R[12]00[^[:digit:]] + -Mesa DRI R[12]00$ + ++# NV30 family on Nouveau: https://bugzilla.redhat.com/show_bug.cgi?id=745202 ++-Gallium .* on NV3[0-9A-F]$ ++ + # Old Mesa software GL renderer + -software rasterizer + diff --git a/gnome-session-3.30.1.tar.xz b/gnome-session-3.30.1.tar.xz new file mode 100644 index 0000000..1018536 Binary files /dev/null and b/gnome-session-3.30.1.tar.xz differ diff --git a/gnome-session-3.6.2-swrast.patch b/gnome-session-3.6.2-swrast.patch new file mode 100644 index 0000000..d3fb0a9 --- /dev/null +++ b/gnome-session-3.6.2-swrast.patch @@ -0,0 +1,12 @@ +diff -up gnome-session-3.6.2/data/hardware-compatibility.jx gnome-session-3.6.2/data/hardware-compatibility +--- gnome-session-3.6.2/data/hardware-compatibility.jx 2012-12-10 12:43:06.000000000 -0500 ++++ gnome-session-3.6.2/data/hardware-compatibility 2012-12-10 12:43:50.424352484 -0500 +@@ -23,7 +23,7 @@ + -Gallium .* on NV3[0-9A-F]$ + + # Old Mesa software GL renderer +--software rasterizer ++#software rasterizer + + # Gallium has softpipe; we explicitly enable llvmpipe + -softpipe diff --git a/gnome-session.spec b/gnome-session.spec new file mode 100644 index 0000000..aa71897 --- /dev/null +++ b/gnome-session.spec @@ -0,0 +1,78 @@ +Name: gnome-session +Summary: Session Management Tools for the GNOME Desktop +Version: 3.30.1 +Release: 3 +License: GPLv2+ +URL: http://www.gnome.org +Source0: http://download.gnome.org/sources/%{name}/3.30/%{name}-%{version}.tar.xz + +Patch1: gnome-session-3.3.92-nv30.patch +Patch3: gnome-session-3.6.2-swrast.patch +Patch4: 0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch +Patch5: 0001-Add-support-for-new-ConfirmedRebootToBootOptions-sig.patch +Patch6: 0002-Fedora-Set-grub-boot-flags-on-shutdown-reboot.patch + +BuildRequires: meson gcc gettext intltool xmlto usermode /usr/bin/xsltproc +BuildRequires: pkgconfig(gl) pkgconfig(egl) pkgconfig(glesv2) pkgconfig(gnome-desktop-3.0) +BuildRequires: pkgconfig(gtk+-3.0) pkgconfig(libsystemd) pkgconfig(ice) pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(sm) pkgconfig(x11) pkgconfig(xau) pkgconfig(xcomposite) pkgconfig(xext) +BuildRequires: pkgconfig(xrender) pkgconfig(xtrans) pkgconfig(xtst) + +Requires: gsettings-desktop-schemas >= 0.1.7 +Requires: dconf dbus-x11 system-logos control-center-filesystem gnome-shell + +Requires: xorg-x11-server-Xorg%{?_isa} +Requires: xorg-x11-server-Xwayland%{?_isa} + +Obsoletes: %{name}-xsession = %{version}-%{release} +Provides: %{name}-xsession = %{version}-%{release} +Obsoletes: %{name}-wayland-session = %{version}-%{release} +Provides: %{name}-wayland-session = %{version}-%{release} + +%description +This package provides the basic session management tools, ant it manages a GNOME desktop +or GDM login session. + +%package_help + +%prep +%autosetup -p1 + +%build +%meson -Dsession_selector=true -Dsystemd=true -Dsystemd_journal=true +%meson_build + +sed -i 's/idm[0-9]\{5,32\}\"/idm123456789123456\"/g' $(find -name %{name}.html) + +%install +%meson_install + +%find_lang %{name}-3.0 + +%files -f %{name}-3.0.lang +%license COPYING +%{_bindir}/* +%{_libexecdir}/%{name}* +%{_datadir}/%{name}/ +%{_datadir}/glib-2.0/schemas/org.gnome.SessionManager.gschema.xml +%{_datadir}/GConf/gsettings/%{name}.convert +%{_datadir}/xsessions/* +%{_datadir}/wayland-sessions/* + +%files help +%doc AUTHORS NEWS README +%doc %{_mandir}/man*/* +%{_datadir}/doc/%{name}/dbus/%{name}.html + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%changelog +* Wed Nov 20 2019 caomeng - 3.30.1-3 +- Package init + +* Fri Apr 12 2019 gaoyi - 3.30.1-2.h1 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:Eliminate differences