diff options
-rw-r--r-- | .SRCINFO | 98 | ||||
-rw-r--r-- | 0001-Xsession-Don-t-start-ssh-agent-by-default.patch | 11 | ||||
-rw-r--r-- | 0002-nvidia-prime.patch | 100 | ||||
-rw-r--r-- | 0002-pam-arch-Don-t-check-greeter-account-for-expiry.patch | 30 | ||||
-rw-r--r-- | 0003-pam-arch-Restrict-greeter-service-to-the-gdm-user.patch | 31 | ||||
-rw-r--r-- | 0004-nvidia-prime.patch | 154 | ||||
-rw-r--r-- | PKGBUILD | 207 | ||||
-rw-r--r-- | gdm-prime.install | 10 |
8 files changed, 320 insertions, 321 deletions
@@ -1,60 +1,104 @@ pkgbase = gdm-prime - pkgver = 3.34.0 + pkgdesc = Display manager and login screen - patched with Prime support for Optimus laptops + pkgver = 46.0 pkgrel = 1 url = https://wiki.gnome.org/Projects/GDM arch = x86_64 - license = GPL + license = GPL-2.0-or-later checkdepends = check - makedepends = yelp-tools - makedepends = gobject-introspection - makedepends = git + makedepends = dconf makedepends = docbook-xsl - depends = gnome-shell + makedepends = git + makedepends = gobject-introspection + makedepends = meson + makedepends = plymouth + makedepends = python-packaging + makedepends = yelp-tools + depends = accountsservice + depends = audit + depends = bash + depends = gcc-libs + depends = gdk-pixbuf2 + depends = glib2 + depends = glibc depends = gnome-session + depends = gnome-shell + depends = gtk3 + depends = json-glib + depends = keyutils + depends = libcanberra + depends = libgudev + depends = libx11 + depends = libxau + depends = libxcb + depends = libxdmcp + depends = pam + depends = systemd + depends = systemd-libs depends = upower - depends = xorg-xrdb depends = xorg-server depends = xorg-xhost - source = git+https://gitlab.gnome.org/GNOME/gdm.git#commit=7c8950d94de854a227d2aa0eda82d3145f529a61 + depends = xorg-xrdb + source = git+https://gitlab.gnome.org/GNOME/gdm.git#commit=a5b591cd8d1db5c5d1ebe67d10ec3fe57b9bbded source = 0001-Xsession-Don-t-start-ssh-agent-by-default.patch - source = 0002-pam-arch-Don-t-check-greeter-account-for-expiry.patch - source = 0003-pam-arch-Restrict-greeter-service-to-the-gdm-user.patch - source = 0004-nvidia-prime.patch - sha256sums = SKIP - sha256sums = 098ffb1cdc0232f014e5fe5fb8d268b752afc54d6ee661664036879acd075b22 - sha256sums = 2e2b12d4609004a010245de51a8c017b164e84f249cd19706d020cb599d2d7e7 - sha256sums = 3fa02eb7bbbe1586eae4ae98221a284251ca2869dc731c80b753e7effc443379 - sha256sums = f2ac60c8e4d62805dc2f441a8754f1c15e12c64ec0dbb1031dbd91dd47df52d9 + source = 0002-nvidia-prime.patch + b2sums = 23f2346014a2c7f39fb53627e1531d74eeb7636027e2192d8be72a1a553126796b0445b0c02691ee104835e333275881be77883b80252f9e0bc13a37a152fe6b + b2sums = f7e868fdd7cc121433de1572583eb728f4d186cd4f52c6d6c8f2ccf4a3cf781144ff71f704f13571ddb97a1ff4ec55cfa3df25d38737ad19da21e84ddc2d3ee4 + b2sums = b02edd38bb178b457379717633f935f18bea153470905d34675a587c807a4c0de79e48cc82c53ec5a139d667f57c13e652ea6d9cb3a7fcd05bdd59b9cf715b45 pkgname = gdm-prime - pkgdesc = Display manager and login screen - patched with Prime support for Optimus laptops install = gdm-prime.install groups = gnome - depends = gnome-shell + depends = accountsservice + depends = audit + depends = bash + depends = gcc-libs + depends = gdk-pixbuf2 + depends = glib2 + depends = glibc depends = gnome-session + depends = gnome-shell + depends = gtk3 + depends = json-glib + depends = keyutils + depends = libcanberra + depends = libgudev + depends = libx11 + depends = libxau + depends = libxcb + depends = libxdmcp + depends = pam + depends = systemd + depends = systemd-libs depends = upower - depends = xorg-xrdb depends = xorg-server depends = xorg-xhost + depends = xorg-xrdb depends = libgdm optdepends = fprintd: fingerprint authentication provides = gdm conflicts = gdm + backup = etc/gdm/PostSession/Default + backup = etc/gdm/PreSession/Default + backup = etc/gdm/Xsession + backup = etc/gdm/custom.conf backup = etc/pam.d/gdm-autologin backup = etc/pam.d/gdm-fingerprint backup = etc/pam.d/gdm-launch-environment backup = etc/pam.d/gdm-password backup = etc/pam.d/gdm-smartcard - backup = etc/gdm/custom.conf - backup = etc/gdm/Xsession - backup = etc/gdm/PostSession/Default - backup = etc/gdm/PreSession/Default pkgname = libgdm-prime - pkgdesc = GDM support library - patched with Prime support for Optimus laptops - depends = systemd - depends = glib2 + pkgdesc = Display manager and login screen - patched with Prime support for Optimus laptops - support library depends = dconf + depends = gcc-libs + depends = glib2 + depends = glibc + depends = libglib-2.0.so + depends = libgobject-2.0.so + depends = libgio-2.0.so + depends = libsystemd.so + depends = systemd-libs + provides = libgdm.so provides = libgdm conflicts = libgdm - diff --git a/0001-Xsession-Don-t-start-ssh-agent-by-default.patch b/0001-Xsession-Don-t-start-ssh-agent-by-default.patch index bfdaca1ee13a..56699008c6fc 100644 --- a/0001-Xsession-Don-t-start-ssh-agent-by-default.patch +++ b/0001-Xsession-Don-t-start-ssh-agent-by-default.patch @@ -1,17 +1,17 @@ -From 58cdf43d7b053a7370e6779d06835c239598f59a Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Sat, 20 Jun 2015 17:22:38 +0200 -Subject: [PATCH 1/3] Xsession: Don't start ssh-agent by default +Subject: [PATCH] Xsession: Don't start ssh-agent by default --- data/Xsession.in | 8 -------- 1 file changed, 8 deletions(-) diff --git a/data/Xsession.in b/data/Xsession.in -index 9d79558c..ff6d9de0 100755 +index 2e4de4fe384f..29ebc30ea0c5 100755 --- a/data/Xsession.in +++ b/data/Xsession.in -@@ -175,14 +175,6 @@ if [ "x$command" = "xdefault" ] ; then +@@ -207,14 +207,6 @@ if [ "x$command" = "xdefault" ] ; then fi fi @@ -26,6 +26,3 @@ index 9d79558c..ff6d9de0 100755 echo "$0: Setup done, will execute: $command" eval exec $command --- -2.23.0 - diff --git a/0002-nvidia-prime.patch b/0002-nvidia-prime.patch new file mode 100644 index 000000000000..b4b804864ae0 --- /dev/null +++ b/0002-nvidia-prime.patch @@ -0,0 +1,100 @@ +From: Tim Lunn <tim@feathertop.org> +Date: Sat, 22 Mar 2014 00:23:12 +0100 +Subject: Add hooks to run prime scripts (as root) before and after a + gdm-session + +This allows enabling and disabling the dGPU on log out. +--- + common/gdm-common.c | 2 +- + daemon/gdm-session.c | 6 ++++++ + daemon/gdm-x-session.c | 5 +++++ + data/Prime.in | 6 ++++++ + data/PrimeOff.in | 6 ++++++ + data/meson.build | 2 +- + 6 files changed, 25 insertions(+), 2 deletions(-) + create mode 100644 data/Prime.in + create mode 100644 data/PrimeOff.in + +diff --git a/common/gdm-common.c b/common/gdm-common.c +index b8de755..eb2ed38 100644 +--- a/common/gdm-common.c ++++ b/common/gdm-common.c +@@ -720,7 +720,7 @@ gdm_run_script (const char *dir, + goto out; + } + +- env = gdm_get_script_environment (username, ++ env = gdm_get_script_environment ((g_strcmp0 (username, "root") == 0)?NULL:username, + display_name, + display_hostname, + display_x11_authority_file); +diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c +index ca7d98f..e6fd59a 100644 +--- a/daemon/gdm-session.c ++++ b/daemon/gdm-session.c +@@ -2987,6 +2987,12 @@ gdm_session_close (GdmSession *self) + + g_list_free_full (self->outside_connections, g_object_unref); + self->outside_connections = NULL; ++ ++ /* Run PrimeOff after the session is closed */ ++ gdm_run_script (GDMCONFDIR "/PrimeOff", "root", ++ NULL, ++ NULL, ++ NULL); + } + + void +diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c +index f0082fd..fd0bd0b 100644 +--- a/daemon/gdm-x-session.c ++++ b/daemon/gdm-x-session.c +@@ -618,6 +618,11 @@ spawn_session (State *state, + + g_debug ("Running X session"); + ++ gdm_run_script (GDMCONFDIR "/Prime", "root", ++ state->display_name, ++ NULL, /* hostname */ ++ state->auth_file); ++ + launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_NONE); + + if (state->environment != NULL) { +diff --git a/data/Prime.in b/data/Prime.in +new file mode 100644 +index 0000000..30caf03 +--- /dev/null ++++ b/data/Prime.in +@@ -0,0 +1,6 @@ ++#!/bin/sh ++ ++primeoffload=/sbin/prime-offload ++if [ -f "$primeoffload" ]; then ++ $primeoffload ++fi +diff --git a/data/PrimeOff.in b/data/PrimeOff.in +new file mode 100644 +index 0000000..5a61c3c +--- /dev/null ++++ b/data/PrimeOff.in +@@ -0,0 +1,6 @@ ++#!/bin/sh ++ ++primeswitch=/sbin/prime-switch ++if [ -f "$primeswitch" ]; then ++ $primeswitch ++fi +diff --git a/data/meson.build b/data/meson.build +index 05a2011..05429d5 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -3,7 +3,7 @@ subdir('autostart') + subdir('dconf') + + # XPath configs +-foreach file : [ 'Init', 'PreSession', 'PostSession' ] ++foreach file : [ 'Init', 'PreSession', 'PostSession', 'Prime', 'PrimeOff' ] + generated_file = configure_file( + input: '@0@.in'.format(file), + output: file, diff --git a/0002-pam-arch-Don-t-check-greeter-account-for-expiry.patch b/0002-pam-arch-Don-t-check-greeter-account-for-expiry.patch deleted file mode 100644 index 60ae9d0d7565..000000000000 --- a/0002-pam-arch-Don-t-check-greeter-account-for-expiry.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a9c2cb0ae478caf40cc24001fbf6cfbbcc19196e Mon Sep 17 00:00:00 2001 -From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> -Date: Tue, 10 Sep 2019 20:37:08 +0000 -Subject: [PATCH 2/3] pam-arch: Don't check greeter account for expiry - -systemd-sysusers now creates expired accounts, which broke the greeter -on new installations. - -Doesn't actually fully fix the problem as the user@.service still fails -to launch. ---- - data/pam-arch/gdm-launch-environment.pam | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/data/pam-arch/gdm-launch-environment.pam b/data/pam-arch/gdm-launch-environment.pam -index 618a7d3a..89521472 100644 ---- a/data/pam-arch/gdm-launch-environment.pam -+++ b/data/pam-arch/gdm-launch-environment.pam -@@ -1,7 +1,7 @@ - auth required pam_env.so - auth optional pam_permit.so - --account include system-local-login -+account optional pam_permit.so - - password required pam_deny.so - --- -2.23.0 - diff --git a/0003-pam-arch-Restrict-greeter-service-to-the-gdm-user.patch b/0003-pam-arch-Restrict-greeter-service-to-the-gdm-user.patch deleted file mode 100644 index daed25a7feb0..000000000000 --- a/0003-pam-arch-Restrict-greeter-service-to-the-gdm-user.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 3b6ca2e211b9874e61e9a6950c52b52f2a79dca3 Mon Sep 17 00:00:00 2001 -From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> -Date: Tue, 10 Sep 2019 20:41:10 +0000 -Subject: [PATCH 3/3] pam-arch: Restrict greeter service to the gdm user - -Copied from pam-exherbo. ---- - data/pam-arch/gdm-launch-environment.pam | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/data/pam-arch/gdm-launch-environment.pam b/data/pam-arch/gdm-launch-environment.pam -index 89521472..d59c9cb9 100644 ---- a/data/pam-arch/gdm-launch-environment.pam -+++ b/data/pam-arch/gdm-launch-environment.pam -@@ -1,10 +1,13 @@ - auth required pam_env.so -+auth required pam_succeed_if.so audit quiet_success user = gdm - auth optional pam_permit.so - -+account required pam_succeed_if.so audit quiet_success user = gdm - account optional pam_permit.so - - password required pam_deny.so - - session optional pam_keyinit.so force revoke -+session required pam_succeed_if.so audit quiet_success user = gdm - session required pam_systemd.so - session optional pam_permit.so --- -2.23.0 - diff --git a/0004-nvidia-prime.patch b/0004-nvidia-prime.patch deleted file mode 100644 index b11baa16202e..000000000000 --- a/0004-nvidia-prime.patch +++ /dev/null @@ -1,154 +0,0 @@ -From: Tim Lunn <tim@feathertop.org> -Date: Sat, 22 Mar 2014 00:23:12 +0100 -Subject: Add hooks to run prime scripts (as root) before and after a - gdm-session - -This allows enabling and disabling the dGPU on log out. ---- - common/gdm-common.c | 2 +- - daemon/gdm-session.c | 6 ++++++ - daemon/gdm-x-session.c | 5 +++++ - data/Makefile.am | 28 ++++++++++++++++++++++++++-- - data/Prime | 6 ++++++ - data/PrimeOff | 6 ++++++ - 6 files changed, 50 insertions(+), 3 deletions(-) - create mode 100644 data/Prime - create mode 100644 data/PrimeOff - -diff --git a/common/gdm-common.c b/common/gdm-common.c -index 373d5b8..02a6044 100644 ---- a/common/gdm-common.c -+++ b/common/gdm-common.c -@@ -721,7 +721,7 @@ gdm_run_script (const char *dir, - goto out; - } - -- env = gdm_get_script_environment (username, -+ env = gdm_get_script_environment ((g_strcmp0 (username, "root") == 0)?NULL:username, - display_name, - display_hostname, - display_x11_authority_file); -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index 6a116a8..1792bfd 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -2970,6 +2970,12 @@ gdm_session_close (GdmSession *self) - - g_list_free_full (self->outside_connections, g_object_unref); - self->outside_connections = NULL; -+ -+ /* Run PrimeOff after the session is closed */ -+ gdm_run_script (GDMCONFDIR "/PrimeOff", "root", -+ NULL, -+ NULL, -+ NULL); - } - - void -diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c -index 3b2fcef..9a57300 100644 ---- a/daemon/gdm-x-session.c -+++ b/daemon/gdm-x-session.c -@@ -614,6 +614,11 @@ spawn_session (State *state, - - g_debug ("Running X session"); - -+ gdm_run_script (GDMCONFDIR "/Prime", "root", -+ state->display_name, -+ NULL, /* hostname */ -+ state->auth_file); -+ - launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_NONE); - - if (state->environment != NULL) { -diff --git a/data/Makefile.am b/data/Makefile.am -index 210bf5d..7bca5e4 100644 ---- a/data/Makefile.am -+++ b/data/Makefile.am -@@ -10,6 +10,8 @@ SUBDIRS = \ - initdir = $(gdmconfdir)/Init - postdir = $(gdmconfdir)/PostSession - predir = $(gdmconfdir)/PreSession -+primedir = $(gdmconfdir)/Prime -+primeoffdir = $(gdmconfdir)/PrimeOff - postlogindir = $(gdmconfdir)/PostLogin - workingdir = $(GDM_WORKING_DIR) - xauthdir = $(GDM_XAUTH_DIR) -@@ -174,6 +176,8 @@ EXTRA_DIST += \ - Xsession.in \ - Init.in \ - PreSession.in \ -+ Prime \ -+ PrimeOff \ - PostSession.in \ - PostLogin \ - $(NULL) -@@ -237,6 +241,8 @@ uninstall-hook: - $(DESTDIR)$(initdir)/Default \ - $(DESTDIR)$(postlogindir)/Default.sample \ - $(DESTDIR)$(predir)/Default \ -+ $(DESTDIR)$(primedir)/Default \ -+ $(DESTDIR)$(primeoffdir)/Default \ - $(DESTDIR)$(postdir)/Default \ - $(DESTDIR)$(sysconfdir)/dconf/db/gdm \ - $(DESTDIR)$(sysconfdir)/dconf/profile/gdm \ -@@ -281,7 +287,25 @@ endif - -if test -f $(DESTDIR)$(predir)/Default; then \ - cp -f $(DESTDIR)$(predir)/Default $(DESTDIR)$(predir)/Default.orig; \ - fi -- $(INSTALL_SCRIPT) PreSession $(DESTDIR)$(predir)/Default -+ $(INSTALL_SCRIPT) $(builddir)/PreSession $(DESTDIR)$(predir)/Default -+ -+ if test '!' -d $(DESTDIR)$(primedir); then \ -+ $(mkinstalldirs) $(DESTDIR)$(primedir); \ -+ chmod 755 $(DESTDIR)$(primedir); \ -+ fi -+ -if test -f $(DESTDIR)$(primedir)/Default; then \ -+ cp -f $(DESTDIR)$(primedir)/Default $(DESTDIR)$(primedir)/Default.orig; \ -+ fi -+ $(INSTALL_SCRIPT) $(srcdir)/Prime $(DESTDIR)$(primedir)/Default -+ -+ if test '!' -d $(DESTDIR)$(primeoffdir); then \ -+ $(mkinstalldirs) $(DESTDIR)$(primeoffdir); \ -+ chmod 755 $(DESTDIR)$(primeoffdir); \ -+ fi -+ -if test -f $(DESTDIR)$(primeoffdir)/Default; then \ -+ cp -f $(DESTDIR)$(primeoffdir)/Default $(DESTDIR)$(primeoffdir)/Default.orig; \ -+ fi -+ $(INSTALL_SCRIPT) $(srcdir)/PrimeOff $(DESTDIR)$(primeoffdir)/Default - - if test '!' -d $(DESTDIR)$(postdir); then \ - $(mkinstalldirs) $(DESTDIR)$(postdir); \ -@@ -290,7 +314,7 @@ endif - -if test -f $(DESTDIR)$(postdir)/Default; then \ - cp -f $(DESTDIR)$(postdir)/Default $(DESTDIR)$(postdir)/Default.orig; \ - fi -- $(INSTALL_SCRIPT) PostSession $(DESTDIR)$(postdir)/Default -+ $(INSTALL_SCRIPT) $(builddir)/PostSession $(DESTDIR)$(postdir)/Default - - if test '!' -d $(DESTDIR)$(logdir); then \ - $(mkinstalldirs) $(DESTDIR)$(logdir); \ -diff --git a/data/Prime b/data/Prime -new file mode 100644 -index 0000000..30caf03 ---- /dev/null -+++ b/data/Prime -@@ -0,0 +1,6 @@ -+#!/bin/sh -+ -+primeoffload=/sbin/prime-offload -+if [ -f "$primeoffload" ]; then -+ $primeoffload -+fi -diff --git a/data/PrimeOff b/data/PrimeOff -new file mode 100644 -index 0000000..5a61c3c ---- /dev/null -+++ b/data/PrimeOff -@@ -0,0 +1,6 @@ -+#!/bin/sh -+ -+primeswitch=/sbin/prime-switch -+if [ -f "$primeswitch" ]; then -+ $primeswitch -+fi @@ -1,98 +1,181 @@ -# Maintainer: Robin Lange <robin dot langenc at gmail dot com> -# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> +# Maintainer: Robin Lange <robin.langenc@gmail.com> +# Contributor: Fabian Bornschein <fabiscafe-at-mailbox-dot-org> +# Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgbase=gdm-prime -pkgname=(gdm-prime libgdm-prime) -pkgver=3.34.0 +pkgname=( + gdm-prime + libgdm-prime +) +pkgver=46.0 pkgrel=1 +pkgdesc="Display manager and login screen - patched with Prime support for Optimus laptops" url="https://wiki.gnome.org/Projects/GDM" arch=(x86_64) -license=(GPL) -depends=(gnome-shell gnome-session upower xorg-xrdb xorg-server xorg-xhost) -makedepends=(yelp-tools gobject-introspection git docbook-xsl) +license=(GPL-2.0-or-later) +depends=( + accountsservice + audit + bash + gcc-libs + gdk-pixbuf2 + glib2 + glibc + gnome-session + gnome-shell + gtk3 + json-glib + keyutils + libcanberra + libgudev + libx11 + libxau + libxcb + libxdmcp + pam + systemd + systemd-libs + upower + xorg-server + xorg-xhost + xorg-xrdb +) +makedepends=( + dconf + docbook-xsl + git + gobject-introspection + meson + plymouth + python-packaging + yelp-tools +) checkdepends=(check) -_commit=7c8950d94de854a227d2aa0eda82d3145f529a61 # tags/3.34.0^0 -source=("git+https://gitlab.gnome.org/GNOME/gdm.git#commit=$_commit" - 0001-Xsession-Don-t-start-ssh-agent-by-default.patch - 0002-pam-arch-Don-t-check-greeter-account-for-expiry.patch - 0003-pam-arch-Restrict-greeter-service-to-the-gdm-user.patch - 0004-nvidia-prime.patch) -sha256sums=('SKIP' - '098ffb1cdc0232f014e5fe5fb8d268b752afc54d6ee661664036879acd075b22' - '2e2b12d4609004a010245de51a8c017b164e84f249cd19706d020cb599d2d7e7' - '3fa02eb7bbbe1586eae4ae98221a284251ca2869dc731c80b753e7effc443379' - 'f2ac60c8e4d62805dc2f441a8754f1c15e12c64ec0dbb1031dbd91dd47df52d9') +_commit=a5b591cd8d1db5c5d1ebe67d10ec3fe57b9bbded # tags/46.0^0 +source=( + "git+https://gitlab.gnome.org/GNOME/gdm.git#commit=$_commit" + 0001-Xsession-Don-t-start-ssh-agent-by-default.patch + 0002-nvidia-prime.patch +) +b2sums=('23f2346014a2c7f39fb53627e1531d74eeb7636027e2192d8be72a1a553126796b0445b0c02691ee104835e333275881be77883b80252f9e0bc13a37a152fe6b' + 'f7e868fdd7cc121433de1572583eb728f4d186cd4f52c6d6c8f2ccf4a3cf781144ff71f704f13571ddb97a1ff4ec55cfa3df25d38737ad19da21e84ddc2d3ee4' + 'b02edd38bb178b457379717633f935f18bea153470905d34675a587c807a4c0de79e48cc82c53ec5a139d667f57c13e652ea6d9cb3a7fcd05bdd59b9cf715b45') -prepare() { - mkdir build +pkgver() { cd gdm - patch -Np1 -i ../0001-Xsession-Don-t-start-ssh-agent-by-default.patch + git describe --tags | sed 's/[^-]*-g/r&/;s/-/+/g' +} - # https://bugs.archlinux.org/task/63706 - patch -Np1 -i ../0002-pam-arch-Don-t-check-greeter-account-for-expiry.patch - patch -Np1 -i ../0003-pam-arch-Restrict-greeter-service-to-the-gdm-user.patch +prepare() { + cd gdm - patch -Np1 -i ../0004-nvidia-prime.patch + # Don't start ssh-agent by default + git apply -3 ../0001-Xsession-Don-t-start-ssh-agent-by-default.patch - NOCONFIGURE=1 ./autogen.sh + git apply -3 ../0002-nvidia-prime.patch } build() { - cd build - ../gdm/configure \ - --prefix=/usr \ - --sysconfdir=/etc \ - --localstatedir=/var \ - --sbindir=/usr/bin \ - --libexecdir=/usr/lib \ - with_dbus_sys=/usr/share/dbus-1/system.d \ - --disable-schemas-compile \ - --disable-static \ - --enable-gdm-xsession \ - --enable-ipv6 \ - --with-default-pam-config=arch \ - --with-default-path=/usr/local/bin:/usr/local/sbin:/usr/bin \ - --without-plymouth \ - --without-tcp-wrappers - sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool - make + local meson_options=( + -D dbus-sys="/usr/share/dbus-1/system.d" + -D default-pam-config=arch + -D default-path="/usr/local/bin:/usr/local/sbin:/usr/bin" + -D gdm-xsession=true + -D ipv6=true + -D run-dir=/run/gdm + -D selinux=disabled + ) + + arch-meson gdm build "${meson_options[@]}" + meson compile -C build } check() { - make -C build check + meson test -C build --print-errorlogs +} + +_pick() { + local p="$1" f d; shift + for f; do + d="$srcdir/$p/${f#$pkgdir/}" + mkdir -p "$(dirname "$d")" + mv "$f" "$d" + rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")" + done } package_gdm-prime() { provides=(gdm) conflicts=(gdm) - pkgdesc="Display manager and login screen - patched with Prime support for Optimus laptops" depends+=(libgdm) optdepends=('fprintd: fingerprint authentication') - backup=(etc/pam.d/gdm-autologin etc/pam.d/gdm-fingerprint etc/pam.d/gdm-launch-environment - etc/pam.d/gdm-password etc/pam.d/gdm-smartcard etc/gdm/custom.conf - etc/gdm/Xsession etc/gdm/PostSession/Default etc/gdm/PreSession/Default) + backup=( + etc/gdm/PostSession/Default + etc/gdm/PreSession/Default + etc/gdm/Xsession + etc/gdm/custom.conf + etc/pam.d/gdm-autologin + etc/pam.d/gdm-fingerprint + etc/pam.d/gdm-launch-environment + etc/pam.d/gdm-password + etc/pam.d/gdm-smartcard + ) groups=(gnome) install=gdm-prime.install - DESTDIR="$pkgdir" make -C build install + meson install -C build --destdir "$pkgdir" + + cd "$pkgdir" + + install -d -o 0 -g 0 -m 0755 var + install -d -o 0 -g 0 -m 0755 var/lib + install -d -o 120 -g 120 -m 1770 var/lib/gdm + install -d -o 120 -g 120 -m 0700 var/lib/gdm/.config + install -d -o 120 -g 120 -m 0700 var/lib/gdm/.config/pulse + install -d -o 120 -g 120 -m 0700 var/lib/gdm/.local + install -d -o 120 -g 120 -m 0755 var/lib/gdm/.local/share + install -d -o 120 -g 120 -m 0755 var/lib/gdm/.local/share/applications - chown -Rc 120:120 "$pkgdir/var/lib/gdm" + # https://src.fedoraproject.org/rpms/gdm/blob/master/f/default.pa-for-gdm + install -o120 -g120 -m644 /dev/stdin var/lib/gdm/.config/pulse/default.pa <<END +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-systemd-login +load-module module-position-event-sounds +END - # Unused or created at start - rm -r "$pkgdir"/var/{cache,log,run} + install -Dm644 /dev/stdin usr/lib/sysusers.d/gdm.conf <<END +g gdm 120 - +u gdm 120 "Gnome Display Manager" /var/lib/gdm +END -### Split libgdm - mkdir -p libgdm/{lib,share} - mv -t libgdm "$pkgdir"/usr/include - mv -t libgdm/lib "$pkgdir"/usr/lib/{girepository-1.0,libgdm*,pkgconfig} - mv -t libgdm/share "$pkgdir"/usr/share/{gir-1.0,glib-2.0} + _pick libgdm usr/include + _pick libgdm usr/lib/{girepository-1.0,libgdm*,pkgconfig} + _pick libgdm usr/share/{gir-1.0,glib-2.0} } package_libgdm-prime() { - provides=(libgdm) + pkgdesc+=" - support library" + depends=( + dconf + gcc-libs + glib2 + glibc + libg{lib,object,io}-2.0.so + libsystemd.so + systemd-libs + ) + provides=(libgdm.so libgdm) conflicts=(libgdm) - pkgdesc="GDM support library - patched with Prime support for Optimus laptops" - depends=(systemd glib2 dconf) - mv libgdm "$pkgdir/usr" + + mv libgdm/* "$pkgdir" } + +# vim:set sw=2 sts=-1 et: diff --git a/gdm-prime.install b/gdm-prime.install index 74aa44da143d..4b39564cba61 100644 --- a/gdm-prime.install +++ b/gdm-prime.install @@ -1,13 +1,3 @@ -post_install() { - # Can't use sysusers as the greeter session cannot launch with an expired 'gdm' account - # https://bugs.archlinux.org/task/63706 - if ! getent passwd gdm >/dev/null; then - groupadd -r -g 120 gdm - useradd -r -c "Gnome Display Manager" -u 120 -g gdm -d /var/lib/gdm -s /sbin/nologin gdm - passwd -ql gdm - fi -} - post_upgrade() { if (( $(vercmp $2 3.34.0-2) < 0 )); then usermod --expiredate= gdm >/dev/null |