Package init

This commit is contained in:
dogsheng 2019-12-14 18:54:33 +08:00
parent e2764092ed
commit f812803f95
9 changed files with 408 additions and 75 deletions

View File

@ -0,0 +1,173 @@
From cba2fdd2ee9fc3decd4179feeda0cb7d833f1022 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
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

View File

@ -0,0 +1,75 @@
From 687ec347d2fa0bca227e3a583a3a47f9bbc10bb0 Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
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 <ajax@redhat.com>
---
.../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 <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include <EGL/egl.h>
+#include <EGL/eglext.h>
#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

View File

@ -0,0 +1,58 @@
From 10d271c9819e3b9986e50e1eede7d3c126c45ff5 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
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

View File

@ -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/)

View File

@ -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/)

View File

@ -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

BIN
gnome-session-3.30.1.tar.xz Normal file

Binary file not shown.

View File

@ -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

78
gnome-session.spec Normal file
View File

@ -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<caomeng5@huawei.com> - 3.30.1-3
- Package init
* Fri Apr 12 2019 gaoyi<gaoyi15@huawei.com> - 3.30.1-2.h1
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:Eliminate differences