Fork gdm for now, SLFO needs another fix in gdm.pre #6
23
gdm/.gitattributes
vendored
Normal file
23
gdm/.gitattributes
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
gdm/.gitignore
vendored
Normal file
1
gdm/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.osc
|
12
gdm/X11-displaymanager-gdm
Normal file
12
gdm/X11-displaymanager-gdm
Normal file
@@ -0,0 +1,12 @@
|
||||
gdm_vars() {
|
||||
case "${DISPLAYMANAGER##*/}" in
|
||||
gdm|GDM|Gnome|GNOME)
|
||||
RELOADSIGNAL="-USR1"
|
||||
DISPLAYMANAGER=/usr/sbin/gdm
|
||||
PIDFILE=/run/gdm/gdm.pid
|
||||
return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
|
||||
return 1
|
||||
}
|
19
gdm/_service
Normal file
19
gdm/_service
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0"?>
|
||||
<services>
|
||||
<service name="obs_scm" mode="manual">
|
||||
<param name="scm">git</param>
|
||||
<param name="url">https://gitlab.gnome.org/GNOME/gdm.git</param>
|
||||
<param name="revision">48.0</param>
|
||||
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
|
||||
<param name="versionrewrite-pattern">(.*)\+0</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
<!-- <param name="changesgenerate">enable</param> -->
|
||||
</service>
|
||||
<service name="tar" mode="buildtime"/>
|
||||
<service name="recompress" mode="buildtime">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">zst</param>
|
||||
</service>
|
||||
<service name="set_version" mode="manual" />
|
||||
</services>
|
||||
|
25
gdm/default.pa
Normal file
25
gdm/default.pa
Normal file
@@ -0,0 +1,25 @@
|
||||
load-module module-device-restore
|
||||
load-module module-card-restore
|
||||
load-module module-udev-detect
|
||||
load-module module-native-protocol-unix
|
||||
load-module module-default-device-restore
|
||||
load-module module-always-sink
|
||||
load-module module-intended-roles
|
||||
load-module module-suspend-on-idle
|
||||
load-module module-console-kit
|
||||
load-module module-position-event-sounds
|
||||
|
||||
### unload driver modules for Bluetooth hardware
|
||||
### this ensure Bluetooth headset are not stolen by gdm pulseaudio instance
|
||||
.nofail
|
||||
|
||||
.ifexists module-bluetooth-policy.so
|
||||
unload-module module-bluetooth-policy
|
||||
.endif
|
||||
|
||||
.ifexists module-bluetooth-discover.so
|
||||
unload-module module-bluetooth-discover
|
||||
.endif
|
||||
|
||||
.fail
|
||||
|
11
gdm/gdm-autologin-sle.pamd
Normal file
11
gdm/gdm-autologin-sle.pamd
Normal file
@@ -0,0 +1,11 @@
|
||||
#%PAM-1.0
|
||||
# GDM PAM configuration for autologin
|
||||
auth requisite pam_nologin.so
|
||||
auth required pam_permit.so
|
||||
auth optional pam_gdm.so
|
||||
auth optional pam_gnome_keyring.so
|
||||
account include common-account
|
||||
password include common-password
|
||||
session required pam_loginuid.so
|
||||
session optional pam_keyinit.so force revoke
|
||||
session include common-session
|
14
gdm/gdm-autologin.pamd
Normal file
14
gdm/gdm-autologin.pamd
Normal file
@@ -0,0 +1,14 @@
|
||||
#%PAM-1.0
|
||||
# GDM PAM configuration for autologin
|
||||
auth requisite pam_nologin.so
|
||||
auth required pam_permit.so
|
||||
auth optional pam_gdm.so
|
||||
auth optional pam_gnome_keyring.so
|
||||
account substack common-account
|
||||
account include postlogin-account
|
||||
password substack common-password
|
||||
password include postlogin-password
|
||||
session required pam_loginuid.so
|
||||
session optional pam_keyinit.so force revoke
|
||||
session substack common-session
|
||||
session include postlogin-session
|
31
gdm/gdm-disable-gnome-initial-setup.patch
Normal file
31
gdm/gdm-disable-gnome-initial-setup.patch
Normal file
@@ -0,0 +1,31 @@
|
||||
Index: gdm-45.0.1/daemon/gdm-display.c
|
||||
===================================================================
|
||||
--- gdm-45.0.1.orig/daemon/gdm-display.c
|
||||
+++ gdm-45.0.1/daemon/gdm-display.c
|
||||
@@ -1622,6 +1622,9 @@ wants_initial_setup (GdmDisplay *self)
|
||||
gboolean enabled = FALSE;
|
||||
gboolean forced = FALSE;
|
||||
|
||||
+ g_autofree gchar *release_name = NULL;
|
||||
+ release_name = g_get_os_info (G_OS_INFO_KEY_NAME);
|
||||
+
|
||||
priv = gdm_display_get_instance_private (self);
|
||||
|
||||
if (already_done_initial_setup ()) {
|
||||
@@ -1658,6 +1661,16 @@ wants_initial_setup (GdmDisplay *self)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+ if (release_name == NULL) {
|
||||
+ g_error ("GdmDisplay: Failed to parse os-release");
|
||||
+ return enabled;
|
||||
+ }
|
||||
+
|
||||
+ if (g_str_has_prefix (release_name, "SLE")) {
|
||||
+ g_debug ("GdmDisplay: Disable gnome-initial-setup on SLE");
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
return enabled;
|
||||
}
|
||||
|
16
gdm/gdm-fingerprint-sle.pamd
Normal file
16
gdm/gdm-fingerprint-sle.pamd
Normal file
@@ -0,0 +1,16 @@
|
||||
#%PAM-1.0
|
||||
|
||||
auth required pam_shells.so
|
||||
auth requisite pam_nologin.so
|
||||
auth requisite pam_faillock.so preauth
|
||||
auth required pam_fprintd.so
|
||||
auth optional pam_permit.so
|
||||
auth [success=ok default=1] pam_gdm.so
|
||||
auth optional pam_gnome_keyring.so
|
||||
|
||||
account include common-account
|
||||
|
||||
password required pam_deny.so
|
||||
|
||||
session include common-session
|
||||
session optional pam_gnome_keyring.so auto_start
|
18
gdm/gdm-fingerprint.pamd
Normal file
18
gdm/gdm-fingerprint.pamd
Normal file
@@ -0,0 +1,18 @@
|
||||
#%PAM-1.0
|
||||
|
||||
auth required pam_shells.so
|
||||
auth requisite pam_nologin.so
|
||||
auth requisite pam_faillock.so preauth
|
||||
auth required pam_fprintd.so
|
||||
auth optional pam_permit.so
|
||||
auth [success=ok default=1] pam_gdm.so
|
||||
auth optional pam_gnome_keyring.so
|
||||
|
||||
account substack common-account
|
||||
account include postlogin-account
|
||||
|
||||
password required pam_deny.so
|
||||
|
||||
session substack common-session
|
||||
session include postlogin-session
|
||||
session optional pam_gnome_keyring.so auto_start
|
42
gdm/gdm-fix-wrong-path-gdm-config.patch
Normal file
42
gdm/gdm-fix-wrong-path-gdm-config.patch
Normal file
@@ -0,0 +1,42 @@
|
||||
From bf711cfd86536971404974a48c4db7298bda0e06 Mon Sep 17 00:00:00 2001
|
||||
From: Alynx Zhou <alynx.zhou@gmail.com>
|
||||
Date: Tue, 1 Apr 2025 11:18:05 +0800
|
||||
Subject: [PATCH] gdm-config: Add missing "/" when building dconf paths
|
||||
|
||||
Closes #978
|
||||
---
|
||||
meson.build | 2 +-
|
||||
utils/gdm-config.c | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index eaa93a652..63be01011 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -222,7 +222,7 @@ endif
|
||||
# dconf paths, we should fix dconf.pc to provide us more real data though
|
||||
if dconf_dep.found()
|
||||
dconf_prefix = dconf_dep.get_variable(pkgconfig: 'prefix')
|
||||
- dconf_sysconfig = (dconf_prefix == '/usr') ? '/etc' : dconf_prefix + '/etc/'
|
||||
+ dconf_sysconfig = (dconf_prefix == '/usr') ? '/etc' : dconf_prefix + '/etc'
|
||||
dconf_datadir = dconf_prefix / 'share'
|
||||
else
|
||||
dconf_sysconfig = gdm_prefix / get_option('sysconfdir')
|
||||
diff --git a/utils/gdm-config.c b/utils/gdm-config.c
|
||||
index 70d5d4de9..82051a1b1 100644
|
||||
--- a/utils/gdm-config.c
|
||||
+++ b/utils/gdm-config.c
|
||||
@@ -34,8 +34,8 @@
|
||||
|
||||
#include "gdm-common.h"
|
||||
|
||||
-#define DCONF_SYSCONFIG_PROFILES_PATH DCONF_SYSCONFIG "dconf/profile"
|
||||
-#define DCONF_SYSCONFIG_DB_PATH DCONF_SYSCONFIG "dconf/db"
|
||||
+#define DCONF_SYSCONFIG_PROFILES_PATH DCONF_SYSCONFIG "/dconf/profile"
|
||||
+#define DCONF_SYSCONFIG_DB_PATH DCONF_SYSCONFIG "/dconf/db"
|
||||
#define DCONF_SYSTEM_DB_PREFIX "system-db:"
|
||||
#define DCONF_SYSTEM_DB_DEFAULT_NAME "gdm_auth_config"
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
95
gdm/gdm-initial-setup-hardening.patch
Normal file
95
gdm/gdm-initial-setup-hardening.patch
Normal file
@@ -0,0 +1,95 @@
|
||||
Index: gdm-46.2/daemon/gdm-display.c
|
||||
===================================================================
|
||||
--- gdm-46.2.orig/daemon/gdm-display.c
|
||||
+++ gdm-46.2/daemon/gdm-display.c
|
||||
@@ -1538,12 +1538,12 @@ can_create_environment (const char *sess
|
||||
return session_exists;
|
||||
}
|
||||
|
||||
-#define ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT GDM_RUN_DIR "/gdm.ran-initial-setup"
|
||||
+#define BLOCK_INITIAL_SETUP LOCALSTATEDIR "/lib/gdm/block-initial-setup"
|
||||
|
||||
static gboolean
|
||||
-already_done_initial_setup_on_this_boot (void)
|
||||
+already_done_initial_setup (void)
|
||||
{
|
||||
- if (g_file_test (ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT, G_FILE_TEST_EXISTS))
|
||||
+ if (g_file_test (BLOCK_INITIAL_SETUP, G_FILE_TEST_EXISTS))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
@@ -1625,7 +1625,7 @@ wants_initial_setup (GdmDisplay *self)
|
||||
|
||||
priv = gdm_display_get_instance_private (self);
|
||||
|
||||
- if (already_done_initial_setup_on_this_boot ()) {
|
||||
+ if (already_done_initial_setup ()) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Index: gdm-46.2/daemon/gdm-manager.c
|
||||
===================================================================
|
||||
--- gdm-46.2.orig/daemon/gdm-manager.c
|
||||
+++ gdm-46.2/daemon/gdm-manager.c
|
||||
@@ -62,7 +62,7 @@
|
||||
#define GDM_MANAGER_DISPLAYS_PATH GDM_DBUS_PATH "/Displays"
|
||||
|
||||
#define INITIAL_SETUP_USERNAME "gnome-initial-setup"
|
||||
-#define ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT GDM_RUN_DIR "/gdm.ran-initial-setup"
|
||||
+#define BLOCK_INITIAL_SETUP LOCALSTATEDIR "/lib/gdm/block-initial-setup"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -1847,6 +1847,7 @@ on_start_user_session (StartUserSessionO
|
||||
gboolean fail_if_already_switched = TRUE;
|
||||
GdmDisplay *display;
|
||||
const char *session_id;
|
||||
+ int fd = -1;
|
||||
|
||||
g_debug ("GdmManager: start or jump to session");
|
||||
|
||||
@@ -1889,22 +1890,21 @@ on_start_user_session (StartUserSessionO
|
||||
"doing-initial-setup", &doing_initial_setup,
|
||||
NULL);
|
||||
|
||||
+ fd = open(BLOCK_INITIAL_SETUP, O_RDONLY|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0644);
|
||||
+ if (fd == -1 && errno != EEXIST) {
|
||||
+ g_warning ("GdmDisplay: Could not write initial-setup-done marker to %s: %s",
|
||||
+ BLOCK_INITIAL_SETUP,
|
||||
+ strerror(errno));
|
||||
+ }
|
||||
+ else {
|
||||
+ close(fd);
|
||||
+ }
|
||||
+
|
||||
g_object_ref (display);
|
||||
if (doing_initial_setup) {
|
||||
- g_autoptr(GError) error = NULL;
|
||||
|
||||
g_debug ("GdmManager: closing down initial setup display in background");
|
||||
g_object_set (G_OBJECT (display), "status", GDM_DISPLAY_WAITING_TO_FINISH, NULL);
|
||||
-
|
||||
- if (!g_file_set_contents (ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT,
|
||||
- "1",
|
||||
- 1,
|
||||
- &error)) {
|
||||
- g_warning ("GdmDisplay: Could not write initial-setup-done marker to %s: %s",
|
||||
- ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT,
|
||||
- error->message);
|
||||
- g_clear_error (&error);
|
||||
- }
|
||||
} else {
|
||||
g_debug ("GdmManager: session has its display server, reusing our server for another login screen");
|
||||
}
|
||||
Index: gdm-46.2/daemon/meson.build
|
||||
===================================================================
|
||||
--- gdm-46.2.orig/daemon/meson.build
|
||||
+++ gdm-46.2/daemon/meson.build
|
||||
@@ -227,6 +227,7 @@ endif
|
||||
|
||||
gdm_daemon = executable('gdm',
|
||||
[ gdm_daemon_sources, gdm_daemon_gen_sources ],
|
||||
+ c_args: '-DLOCALSTATEDIR="'+get_option('localstatedir')+'"',
|
||||
dependencies: gdm_daemon_deps,
|
||||
include_directories: config_h_dir,
|
||||
install: true,
|
7
gdm/gdm-launch-environment.pamd
Normal file
7
gdm/gdm-launch-environment.pamd
Normal file
@@ -0,0 +1,7 @@
|
||||
#%PAM-1.0
|
||||
# GDM PAM configuration used only for the greeter session
|
||||
auth required pam_permit.so
|
||||
account required pam_permit.so
|
||||
password include common-password
|
||||
session optional pam_keyinit.so force revoke
|
||||
session include common-session
|
13
gdm/gdm-plymouth-quit-wait.patch
Normal file
13
gdm/gdm-plymouth-quit-wait.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/data/meson.build b/data/meson.build
|
||||
index de8edd6..7a24d30 100644
|
||||
--- a/data/meson.build
|
||||
+++ b/data/meson.build
|
||||
@@ -158,7 +158,7 @@ service_config.set('sbindir', gdm_prefix / get_option('sbindir'))
|
||||
service_config.set('GDM_INITIAL_VT', get_option('initial-vt'))
|
||||
service_config.set('LANG_CONFIG_FILE', lang_config_file)
|
||||
if plymouth_dep.found()
|
||||
- service_config.set('PLYMOUTH_QUIT_SERVICE', 'plymouth-quit.service')
|
||||
+ service_config.set('PLYMOUTH_QUIT_SERVICE', 'plymouth-quit.service plymouth-quit-wait.service')
|
||||
else
|
||||
service_config.set('PLYMOUTH_QUIT_SERVICE', '')
|
||||
endif
|
2
gdm/gdm-rpmlintrc
Normal file
2
gdm/gdm-rpmlintrc
Normal file
@@ -0,0 +1,2 @@
|
||||
setBadness('polkit-file-unauthorized', 100)
|
||||
setBadness('dbus-file-digest-mismatch', 100)
|
10
gdm/gdm-s390-not-require-g-s-d_wacom.patch
Normal file
10
gdm/gdm-s390-not-require-g-s-d_wacom.patch
Normal file
@@ -0,0 +1,10 @@
|
||||
--- a/data/meson.build
|
||||
+++ b/data/meson.build
|
||||
@@ -77,7 +77,6 @@ gdm_gnome_session_required_components =
|
||||
'org.gnome.SettingsDaemon.Sharing',
|
||||
'org.gnome.SettingsDaemon.Smartcard',
|
||||
'org.gnome.SettingsDaemon.Sound',
|
||||
- 'org.gnome.SettingsDaemon.Wacom',
|
||||
]
|
||||
|
||||
gdm_gnome_user_session_wanted_components = gdm_gnome_session_required_components
|
52
gdm/gdm-settings-utils_rename-variable.patch
Normal file
52
gdm/gdm-settings-utils_rename-variable.patch
Normal file
@@ -0,0 +1,52 @@
|
||||
From a5f9f274c9c902519336a489cfed0548206d2bca Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Mon, 27 Jan 2025 14:01:23 +0100
|
||||
Subject: [PATCH] gdm-settings-utils: rename variable to fix build with gcc 15
|
||||
|
||||
In GNU23 C++, bool is a keyword. Rename the variable to avoid syntax error.
|
||||
---
|
||||
common/gdm-settings-utils.c | 8 ++++----
|
||||
common/gdm-settings-utils.h | 2 +-
|
||||
2 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/common/gdm-settings-utils.c b/common/gdm-settings-utils.c
|
||||
index 636be3a9e..da4c7aefb 100644
|
||||
--- a/common/gdm-settings-utils.c
|
||||
+++ b/common/gdm-settings-utils.c
|
||||
@@ -287,16 +287,16 @@ gdm_settings_parse_boolean_as_value (gboolean boolval)
|
||||
/* adapted from GKeyFile */
|
||||
gboolean
|
||||
gdm_settings_parse_value_as_boolean (const char *value,
|
||||
- gboolean *bool)
|
||||
+ gboolean *boolval)
|
||||
{
|
||||
g_return_val_if_fail (value != NULL, FALSE);
|
||||
- g_return_val_if_fail (bool != NULL, FALSE);
|
||||
+ g_return_val_if_fail (boolval != NULL, FALSE);
|
||||
|
||||
if (g_ascii_strcasecmp (value, "true") == 0 || strcmp (value, "1") == 0) {
|
||||
- *bool = TRUE;
|
||||
+ *boolval = TRUE;
|
||||
return TRUE;
|
||||
} else if (g_ascii_strcasecmp (value, "false") == 0 || strcmp (value, "0") == 0) {
|
||||
- *bool = FALSE;
|
||||
+ *boolval = FALSE;
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
diff --git a/common/gdm-settings-utils.h b/common/gdm-settings-utils.h
|
||||
index 4f2362ce7..734d625c7 100644
|
||||
--- a/common/gdm-settings-utils.h
|
||||
+++ b/common/gdm-settings-utils.h
|
||||
@@ -44,7 +44,7 @@ gboolean gdm_settings_parse_schemas (const char *fil
|
||||
GSList **list);
|
||||
|
||||
gboolean gdm_settings_parse_value_as_boolean (const char *value,
|
||||
- gboolean *bool);
|
||||
+ gboolean *boolval);
|
||||
gboolean gdm_settings_parse_value_as_integer (const char *value,
|
||||
int *intval);
|
||||
gboolean gdm_settings_parse_value_as_double (const char *value,
|
||||
--
|
||||
GitLab
|
||||
|
9
gdm/gdm-sle.pamd
Normal file
9
gdm/gdm-sle.pamd
Normal file
@@ -0,0 +1,9 @@
|
||||
#%PAM-1.0
|
||||
# GDM PAM standard configuration (with passwords)
|
||||
auth requisite pam_nologin.so
|
||||
auth include common-auth
|
||||
account include common-account
|
||||
password include common-password
|
||||
session required pam_loginuid.so
|
||||
session optional pam_keyinit.so force revoke
|
||||
session include common-session
|
16
gdm/gdm-smartcard-sle.pamd
Normal file
16
gdm/gdm-smartcard-sle.pamd
Normal file
@@ -0,0 +1,16 @@
|
||||
#%PAM-1.0
|
||||
|
||||
auth requisite pam_faillock.so preauth
|
||||
auth required pam_pkcs11.so wait_for_card card_only
|
||||
auth required pam_shells.so
|
||||
auth requisite pam_nologin.so
|
||||
auth optional pam_permit.so
|
||||
auth [success=ok default=1] pam_gdm.so
|
||||
auth optional pam_gnome_keyring.so
|
||||
|
||||
account include common-account
|
||||
|
||||
password required pam_deny.so
|
||||
|
||||
session include common-session
|
||||
session optional pam_gnome_keyring.so auto_start
|
18
gdm/gdm-smartcard.pamd
Normal file
18
gdm/gdm-smartcard.pamd
Normal file
@@ -0,0 +1,18 @@
|
||||
#%PAM-1.0
|
||||
|
||||
auth requisite pam_faillock.so preauth
|
||||
auth required pam_pkcs11.so wait_for_card card_only
|
||||
auth required pam_shells.so
|
||||
auth requisite pam_nologin.so
|
||||
auth optional pam_permit.so
|
||||
auth [success=ok default=1] pam_gdm.so
|
||||
auth optional pam_gnome_keyring.so
|
||||
|
||||
account substack common-account
|
||||
account include postlogin-account
|
||||
|
||||
password required pam_deny.so
|
||||
|
||||
session substack common-session
|
||||
session include postlogin-session
|
||||
session optional pam_gnome_keyring.so auto_start
|
61
gdm/gdm-suse-xsession.patch
Normal file
61
gdm/gdm-suse-xsession.patch
Normal file
@@ -0,0 +1,61 @@
|
||||
diff --git a/data/Init.in b/data/Init.in
|
||||
index ec6fd395..4b8ed8ce 100644
|
||||
--- a/data/Init.in
|
||||
+++ b/data/Init.in
|
||||
@@ -1,4 +1,11 @@
|
||||
#!/bin/sh
|
||||
+
|
||||
+if test -x /etc/X11/xdm/Xsetup; then
|
||||
+ exec /etc/X11/xdm/Xsetup
|
||||
+elif test -x /usr/etc/X11/xdm/Xsetup; then
|
||||
+ exec /usr/etc/X11/xdm/Xsetup
|
||||
+fi
|
||||
+
|
||||
# Stolen from the debian kdm setup, aren't I sneaky
|
||||
# Plus a lot of fun stuff added
|
||||
# -George
|
||||
diff --git a/data/PostSession.in b/data/PostSession.in
|
||||
index c52d3c26..4d94b3e7 100755
|
||||
--- a/data/PostSession.in
|
||||
+++ b/data/PostSession.in
|
||||
@@ -1,3 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
+if test -x /etc/X11/xdm/Xreset; then
|
||||
+ exec /etc/X11/xdm/Xreset
|
||||
+elif test -x /usr/etc/X11/xdm/Xreset; then
|
||||
+ exec /usr/etc/X11/xdm/Xreset
|
||||
+fi
|
||||
+
|
||||
exit 0
|
||||
diff --git a/data/PreSession.in b/data/PreSession.in
|
||||
index cfabee75..306a905e 100755
|
||||
--- a/data/PreSession.in
|
||||
+++ b/data/PreSession.in
|
||||
@@ -6,4 +6,10 @@
|
||||
#
|
||||
# Note that output goes into the .xsession-errors file for easy debugging
|
||||
#
|
||||
+if test -x /etc/X11/xdm/Xstartup; then
|
||||
+ exec /etc/X11/xdm/Xstartup
|
||||
+elif test -x /usr/etc/X11/xdm/Xstartup; then
|
||||
+ exec /usr/etc/X11/xdm/Xstartup
|
||||
+fi
|
||||
+
|
||||
PATH="@X_PATH@:$PATH"
|
||||
diff --git a/data/Xsession.in b/data/Xsession.in
|
||||
index 9d79558c..bcefdd73 100755
|
||||
--- a/data/Xsession.in
|
||||
+++ b/data/Xsession.in
|
||||
@@ -1,4 +1,11 @@
|
||||
#!@XSESSION_SHELL@
|
||||
+
|
||||
+if test -x /etc/X11/xdm/Xsession; then
|
||||
+ exec /etc/X11/xdm/Xsession $1 $GDM_LANG
|
||||
+elif test -x /usr/etc/X11/xdm/Xsession; then
|
||||
+ exec /usr/etc/X11/xdm/Xsession $1 $GDM_LANG
|
||||
+fi
|
||||
+
|
||||
#
|
||||
# This is SORT OF LIKE an X session, but not quite. You get a command as the
|
||||
# first argument (it could be multiple words, so run it with "eval"). As a
|
66
gdm/gdm-switch-to-tty1.patch
Normal file
66
gdm/gdm-switch-to-tty1.patch
Normal file
@@ -0,0 +1,66 @@
|
||||
--- a/daemon/main.c
|
||||
+++ b/daemon/main.c
|
||||
@@ -61,6 +61,31 @@ static GdmSettings *settings =
|
||||
static uid_t gdm_uid = -1;
|
||||
static gid_t gdm_gid = -1;
|
||||
|
||||
+#define SHELLSCRIPT "\
|
||||
+/bin/bash -c \
|
||||
+\'PROCESS=\"X Xwayland plymouth\";\
|
||||
+R=$(pidof $PROCESS);\
|
||||
+while [ $? == 0 ];\
|
||||
+do sleep 1;\
|
||||
+ R=$(pidof $PROCESS);\
|
||||
+done;\
|
||||
+systemd-cat echo Switch to tty1 Successfully;\
|
||||
+/usr/bin/chvt 1\'\
|
||||
+"
|
||||
+
|
||||
+static void
|
||||
+jump_to_tty1 ()
|
||||
+{
|
||||
+ g_autoptr(GError) error = NULL;
|
||||
+
|
||||
+ g_debug ("Spawn jump to tty1 process");
|
||||
+ g_spawn_command_line_async (SHELLSCRIPT,
|
||||
+ &error);
|
||||
+
|
||||
+ if (error != NULL)
|
||||
+ g_warning ("Error chvt to tty1: %s", error->message);
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
timed_exit_cb (GMainLoop *loop)
|
||||
{
|
||||
@@ -263,6 +288,12 @@ on_shutdown_signal_cb (gpointer user_dat
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+static void
|
||||
+on_signal_term_cb (int signal)
|
||||
+{
|
||||
+ g_debug ("Received SIGTERM again");
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
on_sighup_cb (gpointer user_data)
|
||||
{
|
||||
@@ -387,6 +418,7 @@ main (int argc,
|
||||
g_main_loop_run (main_loop);
|
||||
|
||||
g_debug ("GDM finished, cleaning up...");
|
||||
+ signal (SIGTERM, on_signal_term_cb);
|
||||
|
||||
g_clear_object (&manager);
|
||||
g_clear_object (&settings);
|
||||
@@ -394,6 +426,10 @@ main (int argc,
|
||||
gdm_settings_direct_shutdown ();
|
||||
gdm_log_shutdown ();
|
||||
|
||||
+ jump_to_tty1 ();
|
||||
+
|
||||
+ g_debug ("GDM finished");
|
||||
+
|
||||
g_main_loop_unref (main_loop);
|
||||
|
||||
return EXIT_SUCCESS;
|
1051
gdm/gdm-sysconfig-settings.patch
Normal file
1051
gdm/gdm-sysconfig-settings.patch
Normal file
File diff suppressed because it is too large
Load Diff
96
gdm/gdm-xauthlocalhostname.patch
Normal file
96
gdm/gdm-xauthlocalhostname.patch
Normal file
@@ -0,0 +1,96 @@
|
||||
diff --git a/common/gdm-common.c b/common/gdm-common.c
|
||||
index 4f56a05..019971a 100644
|
||||
--- a/common/gdm-common.c
|
||||
+++ b/common/gdm-common.c
|
||||
@@ -655,6 +655,8 @@ gdm_get_script_environment (const char *username,
|
||||
|
||||
if (display_hostname) {
|
||||
g_hash_table_insert (hash, g_strdup ("REMOTE_HOST"), g_strdup (display_hostname));
|
||||
+ } else {
|
||||
+ g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), gdm_gethostname ());
|
||||
}
|
||||
|
||||
/* Runs as root */
|
||||
@@ -1120,3 +1122,14 @@ gdm_load_env_d (GdmLoadEnvVarFunc load_env_func,
|
||||
gdm_load_env_dir (dir, load_env_func, expand_func, user_data);
|
||||
g_object_unref (dir);
|
||||
}
|
||||
+
|
||||
+char *
|
||||
+gdm_gethostname (void)
|
||||
+{
|
||||
+ char localhost[HOST_NAME_MAX + 1] = "";
|
||||
+ if (gethostname (localhost, HOST_NAME_MAX) == 0) {
|
||||
+ return g_strdup (localhost);
|
||||
+ } else {
|
||||
+ return g_strdup ("localhost");
|
||||
+ }
|
||||
+}
|
||||
diff --git a/common/gdm-common.h b/common/gdm-common.h
|
||||
index cffefe1..b769021 100644
|
||||
--- a/common/gdm-common.h
|
||||
+++ b/common/gdm-common.h
|
||||
@@ -70,6 +70,7 @@ char *gdm_generate_random_bytes (gsize size,
|
||||
|
||||
gboolean gdm_get_login_window_session_id (const char *seat_id,
|
||||
char **session_id);
|
||||
+char *gdm_gethostname (void);
|
||||
|
||||
gboolean gdm_goto_login_session (GCancellable *cancellable,
|
||||
GError **error);
|
||||
diff --git a/daemon/gdm-display-access-file.c b/daemon/gdm-display-access-file.c
|
||||
index 291c163..9a4ed4a 100644
|
||||
--- a/daemon/gdm-display-access-file.c
|
||||
+++ b/daemon/gdm-display-access-file.c
|
||||
@@ -432,13 +432,10 @@ _get_auth_info_for_display (GdmDisplayAccessFile *file,
|
||||
*
|
||||
* https://bugs.freedesktop.org/show_bug.cgi?id=43425
|
||||
*/
|
||||
- char localhost[_POSIX_HOST_NAME_MAX + 1] = "";
|
||||
*family = FamilyLocal;
|
||||
- if (gethostname (localhost, _POSIX_HOST_NAME_MAX) == 0) {
|
||||
- *address = g_strdup (localhost);
|
||||
- } else {
|
||||
- *address = g_strdup ("localhost");
|
||||
- }
|
||||
+ /* using the new function we create in the patch, to detect
|
||||
+ * changes here, in the original code */
|
||||
+ *address = gdm_gethostname ();
|
||||
} else {
|
||||
*family = FamilyWild;
|
||||
gdm_display_get_remote_hostname (display, address, NULL);
|
||||
diff --git a/daemon/gdm-launch-environment.c b/daemon/gdm-launch-environment.c
|
||||
index bea2f93..18f8f5a 100644
|
||||
--- a/daemon/gdm-launch-environment.c
|
||||
+++ b/daemon/gdm-launch-environment.c
|
||||
@@ -221,6 +221,11 @@ build_launch_environment (GdmLaunchEnvironment *launch_environment,
|
||||
g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
|
||||
}
|
||||
|
||||
+ if (launch_environment->x11_display_is_local) {
|
||||
+ g_hash_table_remove (hash, "XAUTHLOCALHOSTNAME");
|
||||
+ g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), gdm_gethostname ());
|
||||
+ }
|
||||
+
|
||||
g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true"));
|
||||
|
||||
/* Now populate XDG_DATA_DIRS from env.d if we're running initial setup; this allows
|
||||
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
|
||||
index 33dee76..e5a228e 100644
|
||||
--- a/daemon/gdm-session.c
|
||||
+++ b/daemon/gdm-session.c
|
||||
@@ -2956,6 +2956,14 @@ set_up_session_environment (GdmSession *self)
|
||||
}
|
||||
}
|
||||
|
||||
+ if (self->display_is_local) {
|
||||
+ char *hostname = gdm_gethostname ();
|
||||
+ gdm_session_set_environment_variable (self,
|
||||
+ "XAUTHLOCALHOSTNAME",
|
||||
+ hostname);
|
||||
+ g_free (hostname);
|
||||
+ }
|
||||
+
|
||||
if (g_getenv ("WINDOWPATH") != NULL) {
|
||||
gdm_session_set_environment_variable (self,
|
||||
"WINDOWPATH",
|
6038
gdm/gdm.changes
Normal file
6038
gdm/gdm.changes
Normal file
File diff suppressed because it is too large
Load Diff
4
gdm/gdm.obsinfo
Normal file
4
gdm/gdm.obsinfo
Normal file
@@ -0,0 +1,4 @@
|
||||
name: gdm
|
||||
version: 48.0
|
||||
mtime: 1742227635
|
||||
commit: 2397f037d9075a6f98f43c6c2cbaacf923e82b6b
|
13
gdm/gdm.pamd
Normal file
13
gdm/gdm.pamd
Normal file
@@ -0,0 +1,13 @@
|
||||
#%PAM-1.0
|
||||
# GDM PAM standard configuration (with passwords)
|
||||
auth requisite pam_nologin.so
|
||||
auth substack common-auth
|
||||
auth include postlogin-auth
|
||||
account substack common-account
|
||||
account include postlogin-account
|
||||
password substack common-password
|
||||
password include postlogin-password
|
||||
session required pam_loginuid.so
|
||||
session optional pam_keyinit.so force revoke
|
||||
session substack common-session
|
||||
session include postlogin-session
|
505
gdm/gdm.spec
Normal file
505
gdm/gdm.spec
Normal file
@@ -0,0 +1,505 @@
|
||||
#
|
||||
# spec file for package gdm
|
||||
#
|
||||
# Copyright (c) 2025 SUSE LLC and contributors
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define enable_split_authentication 1
|
||||
|
||||
# special hack for SLE15/Leap 15: it does not yet know /usr/etc, and files in /etc should be %%config
|
||||
%if 0%{?suse_version} >= 1550
|
||||
%define _config_norepl %nil
|
||||
%else
|
||||
%define _pam_vendordir %{_sysconfdir}/pam.d
|
||||
%define _config_norepl %config(noreplace)
|
||||
%endif
|
||||
|
||||
Name: gdm
|
||||
Version: 48.0
|
||||
Release: 0
|
||||
Summary: The GNOME Display Manager
|
||||
License: GPL-2.0-or-later
|
||||
Group: System/GUI/GNOME
|
||||
URL: https://wiki.gnome.org/Projects/GDM
|
||||
|
||||
Source0: %{name}-%{version}.tar.zst
|
||||
Source1: gdm.pamd
|
||||
Source2: gdm-autologin.pamd
|
||||
Source3: gdm-launch-environment.pamd
|
||||
Source4: gdm-fingerprint.pamd
|
||||
Source5: gdm-smartcard.pamd
|
||||
# gdmflexiserver wrapper, to enable other display managers to abuse the gdmflexiserver namespace (like lightdm)
|
||||
Source6: gdmflexiserver-wrapper
|
||||
# /etc/xinit.d/xdm integration script
|
||||
Source7: X11-displaymanager-gdm
|
||||
# Use tmpfiles to create directories under /var to support transactional updates
|
||||
Source9: gdm.tmpfiles
|
||||
# Use reserveVT.conf to make autologin user session not to select tty1
|
||||
Source10: reserveVT.conf
|
||||
# Use sysusers to create gdm system user
|
||||
Source11: gdm.sysusers
|
||||
# PAM configuration files for SLE15 and older
|
||||
Source12: gdm-sle.pamd
|
||||
Source13: gdm-autologin-sle.pamd
|
||||
Source14: gdm-fingerprint-sle.pamd
|
||||
Source15: gdm-smartcard-sle.pamd
|
||||
# Configuration for pulseaudio
|
||||
Source20: default.pa
|
||||
Source99: gdm-rpmlintrc
|
||||
# WARNING: do not remove/significantly change patch0 without updating the relevant patch in accountsservice too
|
||||
# PATCH-FIX-OPENSUSE gdm-s390-not-require-g-s-d_wacom.patch bsc#1129412 yfjiang@suse.com -- Remove the runtime requirement of g-s-d Wacom plugin
|
||||
Patch0: gdm-s390-not-require-g-s-d_wacom.patch
|
||||
# PATCH-FIX-OPENSUSE gdm-sysconfig-settings.patch bnc432360 bsc#919723 hpj@novell.com -- Read autologin options from /etc/sysconfig/displaymanager; note that accountsservice has a similar patch (accountsservice-sysconfig.patch)
|
||||
Patch1: gdm-sysconfig-settings.patch
|
||||
# PATCH-FIX-OPENSUSE gdm-suse-xsession.patch vuntz@novell.com -- Use the /etc/X11/xdm/* scripts
|
||||
Patch2: gdm-suse-xsession.patch
|
||||
# PATCH-FIX-OPENSUSE gdm-xauthlocalhostname.patch bnc#538064 vuntz@novell.com -- Set XAUTHLOCALHOSTNAME to current hostname when we authenticate, for local logins, to avoid issues in the session in case the hostname changes later one. See comment 24 in the bug.
|
||||
Patch4: gdm-xauthlocalhostname.patch
|
||||
# PATCH-FIX-OPENSUSE gdm-switch-to-tty1.patch bsc#1113700 xwang@suse.com -- switch to tty1 when stopping gdm service
|
||||
Patch5: gdm-switch-to-tty1.patch
|
||||
# PATCH-FIX-OPENSUSE gdm-initial-setup-hardening.patch boo#1140851, glgo#GNOME/gnome-initial-setup#76 fezhang@suse.com -- Prevent gnome-initial-setup running if any regular user has perviously logged into the system
|
||||
Patch6: gdm-initial-setup-hardening.patch
|
||||
# PATCH-FIX-UPSTREAM gdm-settings-utils_rename-variable.patch -- Rename variable to fix build with gcc 15
|
||||
Patch7: gdm-settings-utils_rename-variable.patch
|
||||
# PATCH-FIX-UPSTREAM gdm-fix-wrong-path-gdm-config.patch bsc#1232669, glgo#GNOME/gdm!282 alynx.zhou@suse.com -- Add missing slash when gdm-config building dconf database path
|
||||
Patch8: gdm-fix-wrong-path-gdm-config.patch
|
||||
# PATCH-FIX-UPSTREAM gdm-plymouth-quit-wait.patch bsc#1243439 xwang@suse.com -- Disable plymouth-quit-wait.service
|
||||
Patch9: gdm-plymouth-quit-wait.patch
|
||||
|
||||
### NOTE: Keep please SLE-only patches at bottom (starting on 1000).
|
||||
# PATCH-FIX-SLE gdm-disable-gnome-initial-setup.patch bnc#1067976 qzhao@suse.com -- Disable gnome-initial-setup runs before gdm, g-i-s will only serve for CJK people to choose the input-method after login.
|
||||
Patch1000: gdm-disable-gnome-initial-setup.patch
|
||||
|
||||
BuildRequires: /usr/bin/dbus-run-session
|
||||
BuildRequires: check-devel
|
||||
# dconf and gnome-session-core are needed for directory ownership
|
||||
BuildRequires: dconf
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: gnome-session-core
|
||||
BuildRequires: itstool
|
||||
BuildRequires: meson >= 0.57
|
||||
BuildRequires: pam-devel
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: sysuser-shadow
|
||||
BuildRequires: sysuser-tools
|
||||
BuildRequires: tcpd-devel
|
||||
BuildRequires: xorg-x11-server
|
||||
BuildRequires: xorg-x11-server-extra
|
||||
BuildRequires: pkgconfig(accountsservice) >= 0.6.35
|
||||
BuildRequires: pkgconfig(audit)
|
||||
BuildRequires: pkgconfig(check)
|
||||
BuildRequires: pkgconfig(gio-2.0) >= 2.56.0
|
||||
BuildRequires: pkgconfig(gio-unix-2.0) >= 2.56.0
|
||||
BuildRequires: pkgconfig(glib-2.0) >= 2.56.0
|
||||
BuildRequires: pkgconfig(gobject-2.0) >= 2.56.0
|
||||
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 0.9.12
|
||||
BuildRequires: pkgconfig(gthread-2.0)
|
||||
BuildRequires: pkgconfig(gtk+-3.0) >= 2.91.1
|
||||
BuildRequires: pkgconfig(gudev-1.0) >= 232
|
||||
BuildRequires: pkgconfig(iso-codes)
|
||||
BuildRequires: pkgconfig(json-glib-1.0)
|
||||
BuildRequires: pkgconfig(libkeyutils)
|
||||
BuildRequires: pkgconfig(libsystemd)
|
||||
BuildRequires: pkgconfig(ply-boot-client)
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xau)
|
||||
BuildRequires: pkgconfig(xcb)
|
||||
BuildRequires: pkgconfig(xdmcp)
|
||||
BuildRequires: pkgconfig(xi)
|
||||
BuildRequires: pkgconfig(xinerama)
|
||||
BuildRequires: pkgconfig(xrandr)
|
||||
Requires: %{_bindir}/dbus-run-session
|
||||
Requires: %{name}-branding = %{version}
|
||||
Requires: gdmflexiserver
|
||||
Requires: gnome-session-core
|
||||
Requires: gnome-settings-daemon
|
||||
Requires: gnome-shell
|
||||
# xdm package ships systemd display-manager service and other common scripts
|
||||
# between display managers (bsc#1084655)
|
||||
Requires: (gdm-xdm-integration or gdm-systemd)
|
||||
%if !0%{?is_opensuse} || 0%{?suse_version} <= 1600
|
||||
Suggests: gdm-systemd
|
||||
%else
|
||||
Suggests: gdm-xdm-integration
|
||||
%endif
|
||||
Requires(post): dconf
|
||||
Requires(pre): group(video)
|
||||
Recommends: iso-codes
|
||||
# accessibility
|
||||
Recommends: orca
|
||||
# smartcard login
|
||||
Recommends: pam_pkcs11
|
||||
DocDir: %{_defaultdocdir}
|
||||
%ifnarch s390 s390x
|
||||
BuildRequires: pkgconfig(xorg-server)
|
||||
%endif
|
||||
%sysusers_requires
|
||||
|
||||
%description
|
||||
The GNOME Display Manager is a system service that is responsible for
|
||||
providing graphical log-ins and managing local and remote displays.
|
||||
|
||||
%package -n libgdm1
|
||||
Summary: Client Library for Communicating with GDM Greeter Server
|
||||
Group: System/Libraries
|
||||
Requires: %{name}-schema
|
||||
Recommends: gdm
|
||||
|
||||
%description -n libgdm1
|
||||
The GNOME Display Manager is a system service that is responsible for
|
||||
providing graphical log-ins and managing local and remote displays.
|
||||
|
||||
%package -n typelib-1_0-Gdm-1_0
|
||||
Summary: Introspection bindings for gdm
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n typelib-1_0-Gdm-1_0
|
||||
The GNOME Display Manager is a system service that is responsible for
|
||||
providing graphical log-ins and managing local and remote displays.
|
||||
|
||||
This package provides the GObject Introspection bindings for
|
||||
communicating with the GDM greeter server.
|
||||
|
||||
%package schema
|
||||
Summary: Config schema for GDM
|
||||
Group: System/Libraries
|
||||
BuildArch: noarch
|
||||
|
||||
%description schema
|
||||
The GNOME Display Manager is a system service that is responsible for
|
||||
providing graphical log-ins and managing local and remote displays.
|
||||
|
||||
%package devel
|
||||
Summary: Libraries for GDM -- Development Files
|
||||
Group: Development/Libraries/GNOME
|
||||
Requires: libgdm1 = %{version}
|
||||
Requires: typelib-1_0-Gdm-1_0 = %{version}
|
||||
|
||||
%description devel
|
||||
The GNOME Display Manager is a system service that is responsible for
|
||||
providing graphical log-ins and managing local and remote displays.
|
||||
|
||||
%package branding-upstream
|
||||
Summary: The GNOME Display Manager -- Upstream default configuration
|
||||
Group: System/GUI/GNOME
|
||||
Requires: %{name} = %{version}
|
||||
Supplements: (%{name} and branding-upstream)
|
||||
Conflicts: %{name}-branding
|
||||
Provides: %{name}-branding = %{version}
|
||||
BuildArch: noarch
|
||||
#BRAND: Provide one file:
|
||||
#BRAND: /etc/gdm/custom.conf
|
||||
#BRAND: Default configuration of gdm
|
||||
|
||||
%description branding-upstream
|
||||
The GNOME Display Manager is a system service that is responsible for
|
||||
providing graphical log-ins and managing local and remote displays.
|
||||
|
||||
This package provides the upstream default configuration for gdm.
|
||||
|
||||
%package xdm-integration
|
||||
Summary: GDM integration into the xdm wrapper script
|
||||
Group: System/GUI/GNOME
|
||||
Requires: gdm
|
||||
Requires: xdm
|
||||
Requires(post): update-alternatives
|
||||
Requires(postun): update-alternatives
|
||||
BuildArch: noarch
|
||||
|
||||
%description xdm-integration
|
||||
GDM's XDM wrapper integration
|
||||
By default openSUSE uses xdm which enables the DM based on sysconfig.
|
||||
|
||||
%package systemd
|
||||
Summary: Systemd gdm.service file
|
||||
Group: System/GUI/GNOME
|
||||
Requires: gdm
|
||||
# Upgrade xdm first if installed - to run systemd DM migration
|
||||
Requires(pre): (xdm >= 1.1.17 if xdm)
|
||||
BuildArch: noarch
|
||||
|
||||
%description systemd
|
||||
GDM's systemd service file.
|
||||
By default openSUSE uses xdm which enables the DM based on sysconfig.
|
||||
This package is only needed if the system administrator wishes to use
|
||||
'systemctl' instead of openSUSE's default 'update-alternatives' method.
|
||||
|
||||
%package -n gdmflexiserver
|
||||
Summary: Compatibility Wrapper for Display Managers
|
||||
Group: System/GUI/GNOME
|
||||
Suggests: gdm
|
||||
BuildArch: noarch
|
||||
|
||||
%description -n gdmflexiserver
|
||||
The GDMFlexiServer tool interacts with the display manager to
|
||||
enable fast user switching. This package contains a wrapper that
|
||||
selects the correct Gdmflexiserver implementation, based on the
|
||||
running display manager.
|
||||
|
||||
%lang_package
|
||||
|
||||
%prep
|
||||
%autosetup -N
|
||||
### NON-SLE patches start from 0 to 999
|
||||
%autopatch -p1 -m 1 -M 999
|
||||
|
||||
%ifarch s390 s390x
|
||||
%patch -P 0 -p1
|
||||
%endif
|
||||
|
||||
### SLE and Leap only patches start at 1000
|
||||
%if !0%{?is_opensuse} || 0%{?suse_version} <= 1600
|
||||
## Use this when there's no need to skip patches.
|
||||
%autopatch -p1 -m 1000
|
||||
%endif
|
||||
|
||||
%build
|
||||
%meson \
|
||||
--libexecdir=%{_libexecdir}/gdm \
|
||||
-Dat-spi-registryd-dir=%{_libexecdir}/at-spi \
|
||||
-Dgdm-xsession=true \
|
||||
-Dgnome-settings-daemon-dir=%{_libexecdir}/gnome-settings-daemon-3.0 \
|
||||
-Dinitial-vt=7 \
|
||||
-Dipv6=true \
|
||||
-Dpam-mod-dir=%{_pam_moduledir} \
|
||||
-Ddbus-sys=%{_datadir}/dbus-1/system.d \
|
||||
-Ddistro=generic \
|
||||
-Dplymouth=enabled \
|
||||
-Drun-dir=/run/gdm \
|
||||
%if %{enable_split_authentication}
|
||||
-Dsplit-authentication=true \
|
||||
%else
|
||||
-Dsplit-authentication=false \
|
||||
%endif
|
||||
-Dudev-dir=%{_udevrulesdir} \
|
||||
-Dwayland-support=true \
|
||||
%if !0%{?is_opensuse} || 0%{?suse_version} <= 1600
|
||||
-Dx11-support=false \
|
||||
%endif
|
||||
%nil
|
||||
%meson_build
|
||||
%sysusers_generate_pre %{SOURCE11} gdm gdm.conf
|
||||
|
||||
%install
|
||||
%meson_install
|
||||
## Install PAM files.
|
||||
mkdir -p %{buildroot}%{_pam_vendordir}
|
||||
# Pam config for the greeter session
|
||||
cp %{SOURCE3} %{buildroot}%{_pam_vendordir}/gdm-launch-environment
|
||||
%if 0%{?suse_version} >= 1550
|
||||
# Generic pam config
|
||||
cp %{SOURCE1} %{buildroot}%{_pam_vendordir}/gdm
|
||||
# Pam config for autologin
|
||||
cp %{SOURCE2} %{buildroot}%{_pam_vendordir}/gdm-autologin
|
||||
%if %{enable_split_authentication}
|
||||
# Pam config for fingerprint authentication
|
||||
cp %{SOURCE4} %{buildroot}%{_pam_vendordir}/gdm-fingerprint
|
||||
# Pam config for smartcard authentication
|
||||
cp %{SOURCE5} %{buildroot}%{_pam_vendordir}/gdm-smartcard
|
||||
%endif
|
||||
%else
|
||||
# Generic pam config
|
||||
cp %{SOURCE12} %{buildroot}%{_pam_vendordir}/gdm
|
||||
# Pam config for autologin
|
||||
cp %{SOURCE13} %{buildroot}%{_pam_vendordir}/gdm-autologin
|
||||
%if %{enable_split_authentication}
|
||||
# Pam config for fingerprint authentication
|
||||
cp %{SOURCE14} %{buildroot}%{_pam_vendordir}/gdm-fingerprint
|
||||
# Pam config for smartcard authentication
|
||||
cp %{SOURCE15} %{buildroot}%{_pam_vendordir}/gdm-smartcard
|
||||
%endif
|
||||
%endif
|
||||
# The default gdm pam configuration is the one to be used as pam-password too
|
||||
ln -s gdm %{buildroot}%{_pam_vendordir}/gdm-password
|
||||
## Install other files
|
||||
# Install PostLogin script.
|
||||
mv %{buildroot}%{_sysconfdir}/gdm/PostLogin/Default.sample %{buildroot}%{_sysconfdir}/gdm/PostLogin/Default
|
||||
# Move gdmflexiserver to libexecdir and replace it with the compatibility wrapper
|
||||
mv %{buildroot}%{_bindir}/gdmflexiserver %{buildroot}%{_libexecdir}/gdm/gdmflexiserver
|
||||
install -m 755 %{SOURCE6} %{buildroot}%{_bindir}/gdmflexiserver
|
||||
sed -e 's-@LIBEXECDIR@-%{_libexecdir}-g' -i %{buildroot}%{_bindir}/gdmflexiserver
|
||||
#Install /etc/xinit.d/xdm integration script
|
||||
install -D -m 644 %{SOURCE7} %{buildroot}%{_prefix}/lib/X11/displaymanagers/gdm
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
|
||||
touch %{buildroot}%{_sysconfdir}/alternatives/default-displaymanager
|
||||
ln -s %{_sysconfdir}/alternatives/default-displaymanager %{buildroot}%{_prefix}/lib/X11/displaymanagers/default-displaymanager
|
||||
# Install other files
|
||||
mkdir -p %{buildroot}/run/gdm
|
||||
mkdir -p %{buildroot}%{_bindir}
|
||||
ln -s ../sbin/gdm %{buildroot}%{_bindir}/gdm
|
||||
|
||||
mkdir -p %{buildroot}%{_tmpfilesdir}
|
||||
install -m 644 %{SOURCE9} %{buildroot}%{_tmpfilesdir}/gdm.conf
|
||||
%if !0%{?is_opensuse} || 0%{?suse_version} <= 1600
|
||||
sed -e '#/var/lib/gdm/\.pulse#d' -i %{buildroot}%{_tmpfilesdir}/gdm.conf
|
||||
%endif
|
||||
|
||||
mkdir -p %{buildroot}%{_prefix}/lib/systemd/logind.conf.d
|
||||
install -m 644 %{SOURCE10} %{buildroot}%{_prefix}/lib/systemd/logind.conf.d/reserveVT.conf
|
||||
|
||||
mkdir -p %{buildroot}%{_sysusersdir}
|
||||
install -m 644 %{SOURCE11} %{buildroot}%{_sysusersdir}/gdm.conf
|
||||
|
||||
%if 0%{?is_opensuse} && 0%{?suse_version} > 1600
|
||||
install -D -m 644 %{SOURCE20} %{buildroot}%{_prefix}/share/factory/var/lib/gdm/.pulse/default.pa
|
||||
%endif
|
||||
|
||||
%find_lang %{name} %{?no_lang_C}
|
||||
%fdupes -s %{buildroot}%{_datadir}/help
|
||||
|
||||
%check
|
||||
%meson_test
|
||||
|
||||
%pre -f gdm.pre
|
||||
if [ $1 -gt 1 ]; then
|
||||
if [ "$(systemctl is-enabled display-manager-legacy)" = "enabled" -a -x /usr/sbin/update-alternatives ]; then
|
||||
if [ "$(update-alternatives --query default-displaymanager | awk '/Value:/ {print $2}')" = "/usr/lib/X11/displaymanagers/gdm" ]; then
|
||||
touch /var/tmp/migrate_to_gdm
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
%post
|
||||
%tmpfiles_create gdm.conf
|
||||
|
||||
%post xdm-integration
|
||||
%{_sbindir}/update-alternatives --install %{_prefix}/lib/X11/displaymanagers/default-displaymanager \
|
||||
default-displaymanager %{_prefix}/lib/X11/displaymanagers/gdm 25
|
||||
|
||||
%posttrans
|
||||
# Create dconf database for gdm, to lockdown the gdm session
|
||||
dconf update
|
||||
|
||||
%postun xdm-integration
|
||||
[ -f %{_prefix}/lib/X11/displaymanagers/gdm ] || %{_sbindir}/update-alternatives \
|
||||
--remove default-displaymanager %{_prefix}/lib/X11/displaymanagers/gdm
|
||||
|
||||
%pre systemd
|
||||
%service_add_pre gdm.service
|
||||
|
||||
%post systemd
|
||||
%service_add_post gdm.service
|
||||
|
||||
%preun systemd
|
||||
%service_del_preun gdm.service
|
||||
|
||||
%postun systemd
|
||||
%dnl do not restart gdm.service, as we might lose the graphical session we're in
|
||||
%service_del_postun_without_restart gdm.service
|
||||
|
||||
%posttrans systemd
|
||||
%dnl migrate a system that still uses xdm abstraction as display manager to gdm
|
||||
%dnl part of https://en.opensuse.org/openSUSE:DisplayManagerRework
|
||||
if [ "$(systemctl is-enabled display-manager-legacy)" = "enabled" ]; then
|
||||
# display-manager is currently 'legacy mode' - if migration has already occured
|
||||
# the above command would return 'disabled'
|
||||
if [ -x /usr/sbin/update-alternatives ]; then
|
||||
if [ "$(update-alternatives --query default-displaymanager | awk '/Value:/ {print $2}')" = "/usr/lib/X11/displaymanagers/gdm" ] || [ -f /var/tmp/migrate_to_gdm ]; then
|
||||
# the display-manager started by xdm is currently gdm - let's switch to the native service
|
||||
# this only force-enables gdm whenever xdm was enabled AND it was uses as wrapper to start gdm
|
||||
systemctl enable --force gdm.service
|
||||
unlink /var/tmp/migrate_to_gdm
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
%ldconfig_scriptlets -n libgdm1
|
||||
|
||||
%files
|
||||
%license COPYING
|
||||
%doc AUTHORS NEWS README.md
|
||||
%doc %{_datadir}/help/C/%{name}/
|
||||
%dir %config %{_sysconfdir}/gdm
|
||||
%config %{_sysconfdir}/gdm/[IPXl]*
|
||||
%{_sbindir}/gdm
|
||||
%{_bindir}/gdm
|
||||
%{_bindir}/gdm-config
|
||||
%dir %{_datadir}/dconf
|
||||
%dir %{_datadir}/dconf/profile
|
||||
%{_datadir}/dconf/profile/gdm
|
||||
%if 0%{?is_opensuse} && 0%{?suse_version} > 1600
|
||||
%dir %{_datadir}/factory/var
|
||||
%dir %{_datadir}/factory/var/lib
|
||||
%{_datadir}/factory/var/lib/gdm
|
||||
%endif
|
||||
%{_datadir}/gdm/
|
||||
%{_datadir}/gnome-session/sessions/gnome-login.session
|
||||
%{_pam_moduledir}/pam_gdm.so
|
||||
%dir %{_libexecdir}/gdm
|
||||
%{_libexecdir}/gdm/gdm-*
|
||||
%{_libexecdir}/gdm/gdmflexiserver
|
||||
%ghost %attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm
|
||||
%if 0%{?is_opensuse} && 0%{?suse_version} > 1600
|
||||
%attr(0700, gdm, gdm) %ghost %dir %{_localstatedir}/lib/gdm/.pulse
|
||||
%attr(0600, gdm, gdm) %ghost %{_localstatedir}/lib/gdm/.pulse/default.pa
|
||||
%endif
|
||||
%ghost %attr(711,root,gdm) %dir %{_localstatedir}/log/gdm
|
||||
%ghost %attr(1755,root,root) /var/cache/gdm
|
||||
%ghost %attr(711,root,gdm) %dir /run/gdm
|
||||
%_config_norepl %{_pam_vendordir}/gdm
|
||||
%_config_norepl %{_pam_vendordir}/gdm-autologin
|
||||
%if %{enable_split_authentication}
|
||||
%_config_norepl %{_pam_vendordir}/gdm-fingerprint
|
||||
%_config_norepl %{_pam_vendordir}/gdm-smartcard
|
||||
%endif
|
||||
%_config_norepl %{_pam_vendordir}/gdm-password
|
||||
%_config_norepl %{_pam_vendordir}/gdm-launch-environment
|
||||
%{_datadir}/dbus-1/system.d/gdm.conf
|
||||
%if 0%{?is_opensuse} && 0%{?suse_version} > 1600
|
||||
%{_udevrulesdir}/61-gdm.rules
|
||||
%endif
|
||||
%{_datadir}/polkit-1/rules.d/20-gdm.rules
|
||||
%{_tmpfilesdir}/gdm.conf
|
||||
%{_sysusersdir}/gdm.conf
|
||||
%dir %{_prefix}/lib/systemd/logind.conf.d
|
||||
%{_prefix}/lib/systemd/logind.conf.d/reserveVT.conf
|
||||
%dir %{_userunitdir}/gnome-session@gnome-login.target.d
|
||||
%{_userunitdir}/gnome-session@gnome-login.target.d/session.conf
|
||||
|
||||
%files xdm-integration
|
||||
# /etc/xinit.d/xdm integration
|
||||
%dir %{_prefix}/lib/X11/displaymanagers
|
||||
%{_prefix}/lib/X11/displaymanagers/default-displaymanager
|
||||
%{_prefix}/lib/X11/displaymanagers/gdm
|
||||
%ghost %{_sysconfdir}/alternatives/default-displaymanager
|
||||
|
||||
%files -n libgdm1
|
||||
%{_libdir}/libgdm.so.*
|
||||
|
||||
%files -n typelib-1_0-Gdm-1_0
|
||||
%{_libdir}/girepository-1.0/Gdm-1.0.typelib
|
||||
|
||||
%files schema
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.login-screen.gschema.xml
|
||||
|
||||
%files devel
|
||||
%{_includedir}/gdm/
|
||||
%{_libdir}/libgdm.so
|
||||
%{_libdir}/pkgconfig/gdm.pc
|
||||
%{_libdir}/pkgconfig/gdm-pam-extensions.pc
|
||||
%{_datadir}/gir-1.0/Gdm-1.0.gir
|
||||
|
||||
%files branding-upstream
|
||||
%config(noreplace) %{_sysconfdir}/gdm/custom.conf
|
||||
|
||||
%files systemd
|
||||
%{_unitdir}/gdm.service
|
||||
|
||||
%files -n gdmflexiserver
|
||||
%{_bindir}/gdmflexiserver
|
||||
|
||||
%files lang -f %{name}.lang
|
||||
|
||||
%changelog
|
3
gdm/gdm.sysusers
Normal file
3
gdm/gdm.sysusers
Normal file
@@ -0,0 +1,3 @@
|
||||
# Type Name ID GECOS Home
|
||||
u gdm - "Gnome Display Manager daemon" /var/lib/gdm
|
||||
m gdm video
|
6
gdm/gdm.tmpfiles
Normal file
6
gdm/gdm.tmpfiles
Normal file
@@ -0,0 +1,6 @@
|
||||
d /var/lib/gdm 0750 gdm gdm -
|
||||
d /var/lib/gdm/.pulse 0700 gdm gdm -
|
||||
C /var/lib/gdm/.pulse/default.pa 0600 gdm gdm - /usr/share/factory/var/lib/gdm/.pulse/default.pa
|
||||
d /var/log/gdm 0711 root gdm -
|
||||
d /var/cache/gdm 1755 root root -
|
||||
d /run/gdm 0711 root gdm -
|
8
gdm/gdmflexiserver-wrapper
Normal file
8
gdm/gdmflexiserver-wrapper
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test ! -x "${GDMFLEXISERVER:-@LIBEXECDIR@/gdm/gdmflexiserver}"; then
|
||||
echo "No gdmflexiserver implementation found. Maybe install gdm?" >&2
|
||||
exit 1
|
||||
else
|
||||
exec "${GDMFLEXISERVER:-@LIBEXECDIR@/gdm/gdmflexiserver}"
|
||||
fi
|
2
gdm/reserveVT.conf
Normal file
2
gdm/reserveVT.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
[Login]
|
||||
ReserveVT=1
|
Reference in New Issue
Block a user