unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
@ 2021-12-30 23:52 Leo Famulari
  2022-01-04  2:15 ` Chris Marusich
  0 siblings, 1 reply; 16+ messages in thread
From: Leo Famulari @ 2021-12-30 23:52 UTC (permalink / raw)
  To: 52908

The Guix test 'tests/guix-system.sh' fails on aarch64-linux, like this:

------
+ for example in gnu/system/examples/*.tmpl    
+ grep hurd              
+ echo gnu/system/examples/desktop.tmpl  
+ target=                          
+ guix system -n disk-image gnu/system/examples/desktop.tmpl                 
accepted connection from pid 23537, user nixbld                                                 
guix system: warning: 'disk-image' is deprecated: use 'image' instead
spurious SIGPOLL               
spurious SIGPOLL                         
spurious SIGPOLL             
guix system: error: service 'xorg-server' provided more than once   
+ rm -f t-guix-system-22708 t-guix-system-error-22708 /tmp/guix-build-guix-1.3.0-17.2a49ddb.drv-0/t-guix-system-22708/config.scm /tmp/guix-build-guix-1.3.0-17.2a49ddb.drv-0/t-guix-system-22708
/my-torrc                    
+ rmdir /tmp/guix-build-guix-1.3.0-17.2a49ddb.drv-0/t-guix-system-22708
FAIL tests/guix-system.sh (exit status: 1)
------

This manifests while building the 'guix' package itself. Specifically
this derivation:

/gnu/store/i8rjwl9fmm4b6icvry8l2wlz2dwq09ic-guix-1.3.0-17.2a49ddb.drv

... which is based on commit 9f6532c77d35603f5e5d190616e0c6b1740e82bd:

https://ci.guix.gnu.org/build/251537/details

It doesn't happen on x86_64-linux:

https://ci.guix.gnu.org/build/251564/details




^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2021-12-30 23:52 bug#52908: 'tests/guix-system.sh' fails on aarch64-linux Leo Famulari
@ 2022-01-04  2:15 ` Chris Marusich
  2022-01-04  3:43   ` Aiko Kyle
  2022-01-06 16:39   ` Ludovic Courtès
  0 siblings, 2 replies; 16+ messages in thread
From: Chris Marusich @ 2022-01-04  2:15 UTC (permalink / raw)
  To: Leo Famulari, Aiko Kyle; +Cc: 52908


[-- Attachment #1.1: Type: text/plain, Size: 2924 bytes --]

Hi Leo and Aiko,

This issue also affects powerpc64le-linux.

Aiko's patch would indeed fix the failing test.  Thank you, Aiko, for
taking the initiative to help investigate and solve the issue!  However,
even though that patch would fix the test, anyone who is using
set-xorg-configuration on a non-x86_64 system would still need to change
the way they call it, which is not ideal.

I've attached a different patch that attempts to fix the issue without
requiring callers of set-xorg-configuration to update their code.  I
believe this is more consistent with the intent of Ludo's original
change in commit 49599fab564f203b8e92d32e9b28c99e99849bfb.

You'll notice that this patch moves the (gnu services sddm) code into
(gnu services xorg) and deprecates (gnu services sddm).  I did this in
order to avoid a circular dependency between the two modules.  Perhaps
there's a better way.  However, many of the existing display managers
already live in (gnu services xorg), so it seemed reasonable to me.

I've verified that the tests/guix-system.sh test passes on
powerpc64le-linux after applying this patch to current master branch (on
top of commit 9309b488ca4ceef4fcc9283546e3b05c57b16ca8).  I've also
verified that the deprecation warnings are being emitted, and that the
existing bindings in (gnu services sddm) are still usable, at the REPL:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix repl
GNU Guile 3.0.7
Copyright (C) 1995-2021 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guix-user)> ,use (gnu services sddm)
scheme@(guix-user)> (sddm-configuration)
guix repl: warning: 'sddm-configuration' is deprecated, use '(@ (gnu services xorg) sddm-configuration)' instead
$1 = #<<sddm-configuration> sddm: [... omitted for brevity ...]
scheme@(guix-user)> (sddm-configuration? $1)
guix repl: warning: 'sddm-configuration?' is deprecated, use '(@ (gnu services xorg) sddm-configuration?)' instead
$2 = #t
scheme@(guix-user)> sddm-service-type
guix repl: warning: 'sddm-service-type' is deprecated, use '(@ (gnu services xorg) sddm-service-type)' instead
$3 = #<service-type sddm 4b3812c0>
scheme@(guix-user)> (sddm-service)
guix repl: warning: 'sddm-service' is deprecated, use '(@ (gnu services xorg) sddm-service)' instead
guix repl: warning: 'sddm-service' is deprecated, use 'sddm-service-type' instead
$4 = #<<service> type: #<service-type sddm 4b3812c0> value:
#<<sddm-configuration> sddm: [... omitted for brevity ...]
scheme@(guix-user)>
--8<---------------cut here---------------end--------------->8---

What do you think?

-- 
Chris

PGP: https://savannah.gnu.org/people/viewgpg.php?user_id=106836

[-- Attachment #1.2: 0001-services-Consistently-use-SDDM-rather-than-GDM-on-no.patch --]
[-- Type: text/x-patch, Size: 33014 bytes --]

From 09091cc8495e0b4c302a58961e79ac8455ecd208 Mon Sep 17 00:00:00 2001
From: Chris Marusich <cmmarusich@gmail.com>
Date: Mon, 3 Jan 2022 14:59:35 -0800
Subject: [PATCH] services: Consistently use SDDM rather than GDM on
 non-x86_64.

This is a follow-up to 49599fab564f203b8e92d32e9b28c99e99849bfb.  Notably, it
also deprecates (gnu services sddm) and moves what was there into (gnu
services xorg).

Fixes: <https://issues.guix.gnu.org/52908>.

* gnu/services/sddm.scm (sddm-configuration, sddm-configuration?)
(sddm-service-type, sddm-service): Move the code for these exported bindings
to gnu/services/xorg.scm.  Use (guix deprecation) to ensure that existing code
can continue to call these original bindings in the (gnu services sddm)
module, in which case a deprecation warning will be issued to the caller.
(gnu-services-sddm-sentinel): New exported variable.
* gnu/services/xorg.scm (sddm-configuration, sddm-configuration?)
(sddm-service-type, sddm-service): New exported bindings.  The code was moved
verbatim from gnu/services/sddm.scm.  These bindings were moved here to avoid
introducing a circular dependency between the (gnu services sddm) and (gnu
services xorg) modules.
(set-xorg-configuration)[login-manager-service-type]: When the current system
or target system begins with the string "x86_64", use gdm-service type as
before; otherwise, use sddm-service-type (i.e., the one from the (gnu services
xorg) module).
* gnu/system/examples/vm-image.tmpl (services): Add sddm-service-type to the
list of service types to remove.
* gnu/services/desktop.scm: Remove the #:autoload for (gnu services sddm).  It
is no longer required, since (gnu services xorg) exports sddm-service-type.
---
 gnu/services/desktop.scm          |   1 -
 gnu/services/sddm.scm             | 320 ++----------------------------
 gnu/services/xorg.scm             | 311 ++++++++++++++++++++++++++++-
 gnu/system/examples/vm-image.tmpl |   4 +-
 4 files changed, 332 insertions(+), 304 deletions(-)

diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index c6761ca784..8395b51242 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -40,7 +40,6 @@
   #:use-module (gnu services sound)
   #:use-module ((gnu system file-systems)
                 #:select (%elogind-file-systems file-system))
-  #:autoload   (gnu services sddm) (sddm-service-type)
   #:use-module (gnu system)
   #:use-module (gnu system setuid)
   #:use-module (gnu system shadow)
diff --git a/gnu/services/sddm.scm b/gnu/services/sddm.scm
index 694ad736dc..54c0f1b594 100644
--- a/gnu/services/sddm.scm
+++ b/gnu/services/sddm.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2022 Chris Marusich <cmmarusich@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,313 +21,32 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu services sddm)
-  #:use-module (gnu packages admin)
-  #:use-module (gnu packages display-managers)
-  #:use-module (gnu packages freedesktop)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu services)
-  #:use-module (gnu services shepherd)
-  #:use-module (gnu services xorg)
-  #:use-module (gnu system pam)
-  #:use-module (gnu system shadow)
-  #:use-module (guix gexp)
-  #:use-module (guix records)
   #:use-module (guix deprecation)
+  #:use-module (gnu services xorg)
   #:export (sddm-configuration
             sddm-configuration?
             sddm-service-type
-            sddm-service))
-
-(define-record-type* <sddm-configuration>
-  sddm-configuration      make-sddm-configuration
-  sddm-configuration?
-  (sddm                   sddm-configuration-sddm
-                          (default sddm))
-
-  ;; [General]
-  ;; valid values are x11 and wayland
-  ;; currently doesn't do anything is enabled by wayland greeter PR
-  (display-server         sddm-configuration-display-server
-                          (default "x11"))
-  ;; valid values are on, off or none
-  (numlock                sddm-configuration-numlock
-                          (default "on"))
-  (halt-command           sddm-configuration-halt-command
-                          (default (file-append shepherd "/sbin/halt")))
-  (reboot-command         sddm-configuration-reboot-command
-                          (default (file-append shepherd "/sbin/reboot")))
-
-  ;; [Theme]
-  ;; valid values are elarun, maldives or maya
-  (theme                  sddm-configuration-theme
-                          (default "maldives"))
-  (themes-directory       sddm-configuration-themes-directory
-                          (default "/run/current-system/profile/share/sddm/themes"))
-  (faces-directory        sddm-configuration-faces-directory
-                          (default "/run/current-system/profile/share/sddm/faces"))
-
-  ;; [Users]
-  (default-path           sddm-configuration-default-path
-                          (default "/run/current-system/profile/bin"))
-  (minimum-uid            sddm-configuration-minimum-uid
-                          (default 1000))
-  (maximum-uid            sddm-configuration-maximum-uid
-                          (default 2000))
-  (remember-last-user?    sddm-configuration-remember-last-user?
-                          (default #t))
-  (remember-last-session? sddm-configuration-remember-last-session?
-                          (default #t))
-  (hide-users             sddm-configuration-hide-users
-                          (default ""))
-  (hide-shells            sddm-configuration-hide-shells
-                          (default (file-append shadow "/sbin/nologin")))
-
-  ;; [Wayland]
-  (session-command        sddm-configuration-session-command
-                          (default (file-append sddm "/share/sddm/scripts/wayland-session")))
-  (sessions-directory     sddm-configuration-sessions-directory
-                          (default "/run/current-system/profile/share/wayland-sessions"))
-  ;; [X11]
-  (xorg-configuration     sddm-configuration-xorg
-                          (default (xorg-configuration)))
-  (xauth-path             sddm-configuration-xauth-path
-                          (default (file-append xauth "/bin/xauth")))
-  (xephyr-path            sddm-configuration-xephyr-path
-                          (default (file-append xorg-server "/bin/Xephyr")))
-  (xdisplay-start         sddm-configuration-xdisplay-start
-                          (default (file-append sddm "/share/sddm/scripts/Xsetup")))
-  (xdisplay-stop          sddm-configuration-xdisplay-stop
-                          (default (file-append sddm "/share/sddm/scripts/Xstop")))
-  (xsession-command       sddm-configuration-xsession-command
-                          (default (xinitrc)))
-  (xsessions-directory    sddm-configuration-xsessions-directory
-                          (default "/run/current-system/profile/share/xsessions"))
-  (minimum-vt             sddm-configuration-minimum-vt
-                          (default 7))
-
-  ;; [Autologin]
-  (auto-login-user        sddm-configuration-auto-login-user
-                          (default ""))
-  ;; valid values are xfce.desktop gnome.desktop weston.desktop hawaii.desktop
-  (auto-login-session     sddm-configuration-auto-login-session
-                          (default ""))
-  (relogin?               sddm-configuration-relogin?
-                          (default #f)))
-
-(define (sddm-configuration-file config)
-  (mixed-text-file "sddm.conf" "
-[General]
-DisplayServer="        (sddm-configuration-display-server config)              "
-Numlock="              (sddm-configuration-numlock config)                     "
-HaltCommand="          (sddm-configuration-halt-command config)                "
-RebootCommand="        (sddm-configuration-reboot-command config)              "
-
-[Users]
-DefaultPath="          (sddm-configuration-default-path config)                "
-MinimumUid="           (number->string (sddm-configuration-minimum-uid config))"
-MaximumUid="           (number->string (sddm-configuration-maximum-uid config))"
-RememberLastUser="     (if (sddm-configuration-remember-last-user? config)
-                           "true" "false")                                     "
-RememberLastSession="  (if (sddm-configuration-remember-last-session? config)
-                           "true" "false")                                     "
-HideUsers="            (sddm-configuration-hide-users config)                  "
-Hideshells="           (sddm-configuration-hide-shells config)                 "
-
-[Theme]
-Current="              (sddm-configuration-theme config)                       "
-ThemeDir="             (sddm-configuration-themes-directory config)            "
-FacesDir="             (sddm-configuration-faces-directory config)             "
-
-[Wayland]
-SessionCommand="       (sddm-configuration-session-command config)             "
-SessionDir="           (sddm-configuration-sessions-directory config)          "
-
-[X11]
-ServerPath="           (xorg-start-command (sddm-configuration-xorg config))   "
-XauthPath="            (sddm-configuration-xauth-path config)                  "
-XephyrPath="           (sddm-configuration-xephyr-path config)                 "
-DisplayCommand="       (sddm-configuration-xdisplay-start config)              "
-DisplayStopCommand="   (sddm-configuration-xdisplay-stop config)               "
-SessionCommand="       (sddm-configuration-xsession-command config)            "
-SessionDir="           (sddm-configuration-xsessions-directory config)         "
-MinimumVT="            (number->string (sddm-configuration-minimum-vt config)) "
-ServerArguments="      (string-join
-                        (xorg-configuration-server-arguments
-                         (sddm-configuration-xorg config)))           "
-
-[Autologin]
-User="                 (sddm-configuration-auto-login-user config)             "
-Session="              (sddm-configuration-auto-login-session config)          "
-Relogin="              (if (sddm-configuration-relogin? config)
-                           "true" "false")                                     "
-"))
-
-(define (sddm-shepherd-service config)
-  "Return a <shepherd-service> for sddm with CONFIG."
-
-  (define sddm-command
-    #~(list (string-append #$(sddm-configuration-sddm config) "/bin/sddm")))
-
-  (list (shepherd-service
-         (documentation "SDDM display manager.")
-         (requirement '(user-processes elogind))
-         (provision '(xorg-server display-manager))
-         (start #~(make-forkexec-constructor #$sddm-command))
-         (stop #~(make-kill-destructor)))))
-
-(define (sddm-etc-service config)
-  (list `("sddm.conf" ,(sddm-configuration-file config))))
-
-(define (sddm-pam-service config)
-  "Return a PAM service for @command{sddm}."
-  (pam-service
-   (name "sddm")
-   (auth
-    (list
-     (pam-entry
-      (control "requisite")
-      (module "pam_nologin.so"))
-     (pam-entry
-      (control "required")
-      (module "pam_env.so"))
-     (pam-entry
-      (control "required")
-      (module "pam_succeed_if.so")
-      (arguments (list (string-append "uid >= "
-                                      (number->string (sddm-configuration-minimum-uid config)))
-                       "quiet")))
-     ;; should be factored out into system-auth
-     (pam-entry
-      (control "required")
-      (module "pam_unix.so"))))
-   (account
-    (list
-     ;; should be factored out into system-account
-     (pam-entry
-      (control "required")
-      (module "pam_unix.so"))))
-   (password
-    (list
-     ;; should be factored out into system-password
-     (pam-entry
-      (control "required")
-      (module "pam_unix.so")
-      (arguments (list "sha512" "shadow" "try_first_pass")))))
-   (session
-    (list
-     ;; lfs has a required pam_limits.so
-     ;; should be factored out into system-session
-     (pam-entry
-      (control "required")
-      (module "pam_unix.so"))))))
-
-(define (sddm-greeter-pam-service)
-  "Return a PAM service for @command{sddm-greeter}."
-  (pam-service
-   (name "sddm-greeter")
-   (auth
-    (list
-     ;; Load environment from /etc/environment and ~/.pam_environment
-     (pam-entry
-      (control "required")
-      (module "pam_env.so"))
-     ;; Always let the greeter start without authentication
-     (pam-entry
-      (control "required")
-      (module "pam_permit.so"))))
-   (account
-    (list
-     ;; No action required for account management
-     (pam-entry
-      (control "required")
-      (module "pam_permit.so"))))
-   (password
-    (list
-     ;; Can't change password
-     (pam-entry
-      (control "required")
-      (module "pam_deny.so"))))
-   (session
-    (list
-     ;; Setup session
-     (pam-entry
-      (control "required")
-      (module "pam_unix.so"))))))
+            sddm-service
+            gnu-services-sddm-sentinel))
 
-(define (sddm-autologin-pam-service config)
-  "Return a PAM service for @command{sddm-autologin}"
-  (pam-service
-   (name "sddm-autologin")
-   (auth
-    (list
-     (pam-entry
-      (control "requisite")
-      (module "pam_nologin.so"))
-     (pam-entry
-      (control "required")
-      (module "pam_succeed_if.so")
-      (arguments (list (string-append "uid >= "
-                                      (number->string (sddm-configuration-minimum-uid config)))
-                       "quiet")))
-     (pam-entry
-      (control "required")
-      (module "pam_permit.so"))))
-   (account
-    (list
-     (pam-entry
-      (control "include")
-      (module "sddm"))))
-   (password
-    (list
-     (pam-entry
-      (control "required")
-      (module "pam_deny.so"))))
-   (session
-    (list
-     (pam-entry
-      (control "include")
-      (module "sddm"))))))
+;; All bindings originally exported by this module have been moved to (gnu
+;; services xorg).  They were moved to avoid a circular dependency between
+;; (gnu services xorg) and this module.  After a deprecation period has
+;; passed, we can remove this module entirely.
 
-(define (sddm-pam-services config)
-  (list (sddm-pam-service config)
-        (sddm-greeter-pam-service)
-        (sddm-autologin-pam-service config)))
+(define-deprecated/alias sddm-configuration
+  (@ (gnu services xorg) sddm-configuration))
 
-(define %sddm-accounts
-  (list (user-group (name "sddm") (system? #t))
-        (user-account
-         (name "sddm")
-         (group "sddm")
-         (system? #t)
-         (comment "SDDM user")
-         (home-directory "/var/lib/sddm")
-         (shell (file-append shadow "/sbin/nologin")))))
+(define-deprecated/alias sddm-configuration?
+  (@ (gnu services xorg) sddm-configuration?))
 
-;; Add default themes to profile
-(define sddm-profile-service
-  (compose list sddm-configuration-sddm))
+(define-deprecated/alias sddm-service-type
+  (@ (gnu services xorg) sddm-service-type))
 
-(define sddm-service-type
-  (handle-xorg-configuration sddm-configuration
-    (service-type (name 'sddm)
-                  (extensions
-                    (list (service-extension shepherd-root-service-type
-                                             sddm-shepherd-service)
-                          (service-extension etc-service-type
-                                             sddm-etc-service)
-                          (service-extension pam-root-service-type
-                                             sddm-pam-services)
-                          (service-extension account-service-type
-                                             (const %sddm-accounts))
-                          (service-extension profile-service-type
-                                             sddm-profile-service)))
-                  (default-value (sddm-configuration))
-                  (description
-                   "Run SDDM, a display and log-in manager for X11 and
-Wayland."))))
+(define-deprecated/alias sddm-service
+  (@ (gnu services xorg) sddm-service))
 
-(define-deprecated (sddm-service #:optional (config (sddm-configuration)))
-  sddm-service-type
-  "Run the @uref{https://github.com/sddm/sddm,SDDM display manager}
-with the given @var{config}, a @code{<sddm-configuration>} object."
-  (service sddm-service-type config))
+;; The forms above only define macros.  To ensure that the (guix
+;; discovery) machinery finds this module, we must export at least one
+;; public variable.  Its value does not matter.
+(define gnu-services-sddm-sentinel #t)
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 82a7d25602..cbe77f1891 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -2,8 +2,10 @@
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
 ;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2020 shtwzrd <shtwzrd@protonmail.com>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
@@ -11,6 +13,7 @@
 ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch>
+;;; Copyright © 2022 Chris Marusich <cmmarusich@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -113,6 +116,11 @@
             gdm-configuration
             gdm-service-type
 
+            sddm-configuration
+            sddm-configuration?
+            sddm-service-type
+            sddm-service
+
             handle-xorg-configuration
             set-xorg-configuration))
 
@@ -1040,10 +1048,311 @@ the GNOME desktop environment.")
                    "Run the GNOME Desktop Manager (GDM), a program that allows
 you to log in in a graphical session, whether or not you use GNOME."))))
 
+(define-record-type* <sddm-configuration>
+  sddm-configuration      make-sddm-configuration
+  sddm-configuration?
+  (sddm                   sddm-configuration-sddm
+                          (default sddm))
+
+  ;; [General]
+  ;; valid values are x11 and wayland
+  ;; currently doesn't do anything is enabled by wayland greeter PR
+  (display-server         sddm-configuration-display-server
+                          (default "x11"))
+  ;; valid values are on, off or none
+  (numlock                sddm-configuration-numlock
+                          (default "on"))
+  (halt-command           sddm-configuration-halt-command
+                          (default (file-append shepherd "/sbin/halt")))
+  (reboot-command         sddm-configuration-reboot-command
+                          (default (file-append shepherd "/sbin/reboot")))
+
+  ;; [Theme]
+  ;; valid values are elarun, maldives or maya
+  (theme                  sddm-configuration-theme
+                          (default "maldives"))
+  (themes-directory       sddm-configuration-themes-directory
+                          (default "/run/current-system/profile/share/sddm/themes"))
+  (faces-directory        sddm-configuration-faces-directory
+                          (default "/run/current-system/profile/share/sddm/faces"))
+
+  ;; [Users]
+  (default-path           sddm-configuration-default-path
+                          (default "/run/current-system/profile/bin"))
+  (minimum-uid            sddm-configuration-minimum-uid
+                          (default 1000))
+  (maximum-uid            sddm-configuration-maximum-uid
+                          (default 2000))
+  (remember-last-user?    sddm-configuration-remember-last-user?
+                          (default #t))
+  (remember-last-session? sddm-configuration-remember-last-session?
+                          (default #t))
+  (hide-users             sddm-configuration-hide-users
+                          (default ""))
+  (hide-shells            sddm-configuration-hide-shells
+                          (default (file-append shadow "/sbin/nologin")))
+
+  ;; [Wayland]
+  (session-command        sddm-configuration-session-command
+                          (default (file-append sddm "/share/sddm/scripts/wayland-session")))
+  (sessions-directory     sddm-configuration-sessions-directory
+                          (default "/run/current-system/profile/share/wayland-sessions"))
+  ;; [X11]
+  (xorg-configuration     sddm-configuration-xorg
+                          (default (xorg-configuration)))
+  (xauth-path             sddm-configuration-xauth-path
+                          (default (file-append xauth "/bin/xauth")))
+  (xephyr-path            sddm-configuration-xephyr-path
+                          (default (file-append xorg-server "/bin/Xephyr")))
+  (xdisplay-start         sddm-configuration-xdisplay-start
+                          (default (file-append sddm "/share/sddm/scripts/Xsetup")))
+  (xdisplay-stop          sddm-configuration-xdisplay-stop
+                          (default (file-append sddm "/share/sddm/scripts/Xstop")))
+  (xsession-command       sddm-configuration-xsession-command
+                          (default (xinitrc)))
+  (xsessions-directory    sddm-configuration-xsessions-directory
+                          (default "/run/current-system/profile/share/xsessions"))
+  (minimum-vt             sddm-configuration-minimum-vt
+                          (default 7))
+
+  ;; [Autologin]
+  (auto-login-user        sddm-configuration-auto-login-user
+                          (default ""))
+  ;; valid values are xfce.desktop gnome.desktop weston.desktop hawaii.desktop
+  (auto-login-session     sddm-configuration-auto-login-session
+                          (default ""))
+  (relogin?               sddm-configuration-relogin?
+                          (default #f)))
+
+(define (sddm-configuration-file config)
+  (mixed-text-file "sddm.conf" "
+[General]
+DisplayServer="        (sddm-configuration-display-server config)              "
+Numlock="              (sddm-configuration-numlock config)                     "
+HaltCommand="          (sddm-configuration-halt-command config)                "
+RebootCommand="        (sddm-configuration-reboot-command config)              "
+
+[Users]
+DefaultPath="          (sddm-configuration-default-path config)                "
+MinimumUid="           (number->string (sddm-configuration-minimum-uid config))"
+MaximumUid="           (number->string (sddm-configuration-maximum-uid config))"
+RememberLastUser="     (if (sddm-configuration-remember-last-user? config)
+                           "true" "false")                                     "
+RememberLastSession="  (if (sddm-configuration-remember-last-session? config)
+                           "true" "false")                                     "
+HideUsers="            (sddm-configuration-hide-users config)                  "
+Hideshells="           (sddm-configuration-hide-shells config)                 "
+
+[Theme]
+Current="              (sddm-configuration-theme config)                       "
+ThemeDir="             (sddm-configuration-themes-directory config)            "
+FacesDir="             (sddm-configuration-faces-directory config)             "
+
+[Wayland]
+SessionCommand="       (sddm-configuration-session-command config)             "
+SessionDir="           (sddm-configuration-sessions-directory config)          "
+
+[X11]
+ServerPath="           (xorg-start-command (sddm-configuration-xorg config))   "
+XauthPath="            (sddm-configuration-xauth-path config)                  "
+XephyrPath="           (sddm-configuration-xephyr-path config)                 "
+DisplayCommand="       (sddm-configuration-xdisplay-start config)              "
+DisplayStopCommand="   (sddm-configuration-xdisplay-stop config)               "
+SessionCommand="       (sddm-configuration-xsession-command config)            "
+SessionDir="           (sddm-configuration-xsessions-directory config)         "
+MinimumVT="            (number->string (sddm-configuration-minimum-vt config)) "
+ServerArguments="      (string-join
+                        (xorg-configuration-server-arguments
+                         (sddm-configuration-xorg config)))           "
+
+[Autologin]
+User="                 (sddm-configuration-auto-login-user config)             "
+Session="              (sddm-configuration-auto-login-session config)          "
+Relogin="              (if (sddm-configuration-relogin? config)
+                           "true" "false")                                     "
+"))
+
+(define (sddm-shepherd-service config)
+  "Return a <shepherd-service> for sddm with CONFIG."
+
+  (define sddm-command
+    #~(list (string-append #$(sddm-configuration-sddm config) "/bin/sddm")))
+
+  (list (shepherd-service
+         (documentation "SDDM display manager.")
+         (requirement '(user-processes elogind))
+         (provision '(xorg-server display-manager))
+         (start #~(make-forkexec-constructor #$sddm-command))
+         (stop #~(make-kill-destructor)))))
+
+(define (sddm-etc-service config)
+  (list `("sddm.conf" ,(sddm-configuration-file config))))
+
+(define (sddm-pam-service config)
+  "Return a PAM service for @command{sddm}."
+  (pam-service
+   (name "sddm")
+   (auth
+    (list
+     (pam-entry
+      (control "requisite")
+      (module "pam_nologin.so"))
+     (pam-entry
+      (control "required")
+      (module "pam_env.so"))
+     (pam-entry
+      (control "required")
+      (module "pam_succeed_if.so")
+      (arguments (list (string-append "uid >= "
+                                      (number->string (sddm-configuration-minimum-uid config)))
+                       "quiet")))
+     ;; should be factored out into system-auth
+     (pam-entry
+      (control "required")
+      (module "pam_unix.so"))))
+   (account
+    (list
+     ;; should be factored out into system-account
+     (pam-entry
+      (control "required")
+      (module "pam_unix.so"))))
+   (password
+    (list
+     ;; should be factored out into system-password
+     (pam-entry
+      (control "required")
+      (module "pam_unix.so")
+      (arguments (list "sha512" "shadow" "try_first_pass")))))
+   (session
+    (list
+     ;; lfs has a required pam_limits.so
+     ;; should be factored out into system-session
+     (pam-entry
+      (control "required")
+      (module "pam_unix.so"))))))
+
+(define (sddm-greeter-pam-service)
+  "Return a PAM service for @command{sddm-greeter}."
+  (pam-service
+   (name "sddm-greeter")
+   (auth
+    (list
+     ;; Load environment from /etc/environment and ~/.pam_environment
+     (pam-entry
+      (control "required")
+      (module "pam_env.so"))
+     ;; Always let the greeter start without authentication
+     (pam-entry
+      (control "required")
+      (module "pam_permit.so"))))
+   (account
+    (list
+     ;; No action required for account management
+     (pam-entry
+      (control "required")
+      (module "pam_permit.so"))))
+   (password
+    (list
+     ;; Can't change password
+     (pam-entry
+      (control "required")
+      (module "pam_deny.so"))))
+   (session
+    (list
+     ;; Setup session
+     (pam-entry
+      (control "required")
+      (module "pam_unix.so"))))))
+
+(define (sddm-autologin-pam-service config)
+  "Return a PAM service for @command{sddm-autologin}"
+  (pam-service
+   (name "sddm-autologin")
+   (auth
+    (list
+     (pam-entry
+      (control "requisite")
+      (module "pam_nologin.so"))
+     (pam-entry
+      (control "required")
+      (module "pam_succeed_if.so")
+      (arguments (list (string-append "uid >= "
+                                      (number->string (sddm-configuration-minimum-uid config)))
+                       "quiet")))
+     (pam-entry
+      (control "required")
+      (module "pam_permit.so"))))
+   (account
+    (list
+     (pam-entry
+      (control "include")
+      (module "sddm"))))
+   (password
+    (list
+     (pam-entry
+      (control "required")
+      (module "pam_deny.so"))))
+   (session
+    (list
+     (pam-entry
+      (control "include")
+      (module "sddm"))))))
+
+(define (sddm-pam-services config)
+  (list (sddm-pam-service config)
+        (sddm-greeter-pam-service)
+        (sddm-autologin-pam-service config)))
+
+(define %sddm-accounts
+  (list (user-group (name "sddm") (system? #t))
+        (user-account
+         (name "sddm")
+         (group "sddm")
+         (system? #t)
+         (comment "SDDM user")
+         (home-directory "/var/lib/sddm")
+         (shell (file-append shadow "/sbin/nologin")))))
+
+;; Add default themes to profile
+(define sddm-profile-service
+  (compose list sddm-configuration-sddm))
+
+(define sddm-service-type
+  (handle-xorg-configuration sddm-configuration
+    (service-type (name 'sddm)
+                  (extensions
+                    (list (service-extension shepherd-root-service-type
+                                             sddm-shepherd-service)
+                          (service-extension etc-service-type
+                                             sddm-etc-service)
+                          (service-extension pam-root-service-type
+                                             sddm-pam-services)
+                          (service-extension account-service-type
+                                             (const %sddm-accounts))
+                          (service-extension profile-service-type
+                                             sddm-profile-service)))
+                  (default-value (sddm-configuration))
+                  (description
+                   "Run SDDM, a display and log-in manager for X11 and
+Wayland."))))
+
+(define-deprecated (sddm-service #:optional (config (sddm-configuration)))
+  sddm-service-type
+  "Run the @uref{https://github.com/sddm/sddm,SDDM display manager}
+with the given @var{config}, a @code{<sddm-configuration>} object."
+  (service sddm-service-type config))
+
+;; Since GDM depends on Rust (gdm -> gnome-shell -> gjs -> mozjs -> rust)
+;; and Rust is currently unavailable on non-x86_64 platforms, default to
+;; SDDM there (FIXME).
 (define* (set-xorg-configuration config
                                  #:optional
                                  (login-manager-service-type
-                                  gdm-service-type))
+                                  (let ((system (or (%current-target-system)
+                                                    (%current-system))))
+                                    (if (string-prefix? "x86_64" system)
+                                        gdm-service-type
+                                        sddm-service-type))))
   "Tell the log-in manager (of type @var{login-manager-service-type}) to use
 @var{config}, an <xorg-configuration> record."
   (simple-service 'set-xorg-configuration
diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl
index a59d91587b..07cf718466 100644
--- a/gnu/system/examples/vm-image.tmpl
+++ b/gnu/system/examples/vm-image.tmpl
@@ -107,12 +107,12 @@ root ALL=(ALL) ALL
                  ;; Use the DHCP client service rather than NetworkManager.
                  (service dhcp-client-service-type))
 
-           ;; Remove GDM, ModemManager, NetworkManager, and wpa-supplicant,
-           ;; which don't make sense in a VM.
+           ;; Remove some services that don't make sense in a VM.
            (remove (lambda (service)
                      (let ((type (service-kind service)))
                        (or (memq type
                                  (list gdm-service-type
+                                       sddm-service-type
                                        wpa-supplicant-service-type
                                        cups-pk-helper-service-type
                                        network-manager-service-type
-- 
2.26.3


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-04  2:15 ` Chris Marusich
@ 2022-01-04  3:43   ` Aiko Kyle
  2022-01-04  4:53     ` Chris Marusich
  2022-01-04 17:28     ` Leo Famulari
  2022-01-06 16:39   ` Ludovic Courtès
  1 sibling, 2 replies; 16+ messages in thread
From: Aiko Kyle @ 2022-01-04  3:43 UTC (permalink / raw)
  To: Chris Marusich; +Cc: 52908

On Mon, Jan 3, 2022 at 7:15 PM Chris Marusich <cmmarusich@gmail.com> wrote:
>
> Aiko's patch would indeed fix the failing test.  Thank you, Aiko, for
> taking the initiative to help investigate and solve the issue!  However,
> even though that patch would fix the test, anyone who is using
> set-xorg-configuration on a non-x86_64 system would still need to change
> the way they call it, which is not ideal.
>
> I've attached a different patch that attempts to fix the issue without
> requiring callers of set-xorg-configuration to update their code.  I
> believe this is more consistent with the intent of Ludo's original
> change in commit 49599fab564f203b8e92d32e9b28c99e99849bfb.
>
> You'll notice that this patch moves the (gnu services sddm) code into
> (gnu services xorg) and deprecates (gnu services sddm).  I did this in
> order to avoid a circular dependency between the two modules.  Perhaps
> there's a better way.  However, many of the existing display managers
> already live in (gnu services xorg), so it seemed reasonable to me.
>

I originally tried to implement this patch, but as a relative newcomer
to guix and guile scheme, I went for the easier patch of changing the
tests since I wasn't sure which would be the preferred way to fix this
issue. I'll defer to you and Leo for that judgment!

> I've verified that the tests/guix-system.sh test passes on
> powerpc64le-linux after applying this patch to current master branch (on
> top of commit 9309b488ca4ceef4fcc9283546e3b05c57b16ca8).  I've also
> verified that the deprecation warnings are being emitted, and that the
> existing bindings in (gnu services sddm) are still usable, at the REPL:
>

Commit 9309b48 seems to be a week old and I can't seem to apply this
patch on top of the latest commit on master e6fe4e5819.




^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-04  3:43   ` Aiko Kyle
@ 2022-01-04  4:53     ` Chris Marusich
  2022-01-04  5:08       ` Aiko Kyle
  2022-01-04 17:28     ` Leo Famulari
  1 sibling, 1 reply; 16+ messages in thread
From: Chris Marusich @ 2022-01-04  4:53 UTC (permalink / raw)
  To: Aiko Kyle; +Cc: 52908

[-- Attachment #1: Type: text/plain, Size: 930 bytes --]

Hi Aiko,

Aiko Kyle <aikokyle@gmail.com> writes:

> Commit 9309b48 seems to be a week old and I can't seem to apply this
> patch on top of the latest commit on master e6fe4e5819.

How did you apply the patch?  I was able to apply the patch locally to
commit 80ebf564e3e264a006d7c7b1f7f2e57fc2468ef1 (".guix-authorizations:
Remove Miguel Ángel Arruga Vivas due to inactivity."), which is
currently the latest commit on master.

I applied by patch by saving the MIME part to a file named "/tmp/patch".
Then I ran the following command from a clean Git checkout of commit
80ebf564e3e264a006d7c7b1f7f2e57fc2468ef1:

  git am /tmp/patch

For the record, the SHA-256 hash value of the patch file is
6650872d41068f6031633d2720553eeb05e7d650a51723dfdd2a3c2df3df294e.  If
you run "sha256sum /tmp/patch", do you see the same hash value?

-- 
Chris

PGP: https://savannah.gnu.org/people/viewgpg.php?user_id=106836

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-04  4:53     ` Chris Marusich
@ 2022-01-04  5:08       ` Aiko Kyle
  2022-01-05  9:58         ` Chris Marusich
  0 siblings, 1 reply; 16+ messages in thread
From: Aiko Kyle @ 2022-01-04  5:08 UTC (permalink / raw)
  To: Chris Marusich; +Cc: 52908

On Mon, Jan 3, 2022 at 9:53 PM Chris Marusich <cmmarusich@gmail.com> wrote:
>
> > Commit 9309b48 seems to be a week old and I can't seem to apply this
> > patch on top of the latest commit on master e6fe4e5819.
>
> How did you apply the patch?
>

Without thinking apparently (i.e. using git apply). It applies just
fine, sorry for the noise. I can confirm the test passes here on
aarch64.

It would be great to get this upstreamed soon so I can start guix
pulling master. I think the guix commit and revision in
package-management.scm will also need to be bumped after applying this
fix.




^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-04  3:43   ` Aiko Kyle
  2022-01-04  4:53     ` Chris Marusich
@ 2022-01-04 17:28     ` Leo Famulari
  1 sibling, 0 replies; 16+ messages in thread
From: Leo Famulari @ 2022-01-04 17:28 UTC (permalink / raw)
  To: Aiko Kyle; +Cc: 52908

On Mon, Jan 03, 2022 at 08:43:27PM -0700, Aiko Kyle wrote:
> I'll defer to you and Leo for that judgment!

I defer to you and Chris! And I agree, let's push the fix ASAP :)




^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-04  5:08       ` Aiko Kyle
@ 2022-01-05  9:58         ` Chris Marusich
  2022-01-05 10:47           ` Pierre Langlois
  2022-01-05 17:34           ` Aiko Kyle
  0 siblings, 2 replies; 16+ messages in thread
From: Chris Marusich @ 2022-01-05  9:58 UTC (permalink / raw)
  To: Aiko Kyle, Leo Famulari; +Cc: 52908

[-- Attachment #1: Type: text/plain, Size: 2009 bytes --]

Hi Aiko and Leo,

Aiko Kyle <aikokyle@gmail.com> writes:

> It would be great to get this upstreamed soon so I can start guix
> pulling master. I think the guix commit and revision in
> package-management.scm will also need to be bumped after applying this
> fix.

It shouldn't be necessary to update the guix commit and revision in
package-management.scm.  My understanding is that "guix pull" will
install Guix at the specified commit; it does not use the guix package
to decide which version to install.  In other words, even if at the
specified commit the "guix" package is defined to use an older version
(I believe this is always the case, actually), it will not stop "guix
pull" from installing Guix at the specified commit.

If it's necessary to update the "guix" package, we can certainly do it.
However, I don't recall that it's necessary for fixing "guix pull"
problems like this.  If you still believe it's necessary, can you help
me to understand why it's necessary?

Leo Famulari <leo@famulari.name> writes:

> On Mon, Jan 03, 2022 at 08:43:27PM -0700, Aiko Kyle wrote:
>> I'll defer to you and Leo for that judgment!
>
> I defer to you and Chris! And I agree, let's push the fix ASAP :)

OK.  I want to give people time to comment on the patch, but I also want
to help fix "guix pull" on master sooner rather than later.  I will
commit my patch in about 48 hours to the master branch if nobody has any
further feedback.

I don't think my patch will trigger many rebuilds.  To verify this, I
tried building coreutils on powerpc64le-linux before and after applying
my patch.  It did not trigger a rebuild of coreutils, so I don't think
it will trigger many rebuilds.  It's conceivable that some derivation
that uses the (gnu services xorg) or (gnu services sddm) modules might
change (maybe something related to Guix System?), but I don't know of an
easy way to check that.

-- 
Chris

PGP: https://savannah.gnu.org/people/viewgpg.php?user_id=106836

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-05  9:58         ` Chris Marusich
@ 2022-01-05 10:47           ` Pierre Langlois
  2022-01-06  7:28             ` Chris Marusich
  2022-01-05 17:34           ` Aiko Kyle
  1 sibling, 1 reply; 16+ messages in thread
From: Pierre Langlois @ 2022-01-05 10:47 UTC (permalink / raw)
  To: Chris Marusich; +Cc: aikokyle, 52908

[-- Attachment #1: Type: text/plain, Size: 1541 bytes --]

Hi Chris,

Chris Marusich <cmmarusich@gmail.com> writes:

> [[PGP Signed Part:Undecided]]
> Hi Aiko and Leo,
>
> Aiko Kyle <aikokyle@gmail.com> writes:
>
>> It would be great to get this upstreamed soon so I can start guix
>> pulling master. I think the guix commit and revision in
>> package-management.scm will also need to be bumped after applying this
>> fix.
>
> It shouldn't be necessary to update the guix commit and revision in
> package-management.scm.  My understanding is that "guix pull" will
> install Guix at the specified commit; it does not use the guix package
> to decide which version to install.  In other words, even if at the
> specified commit the "guix" package is defined to use an older version
> (I believe this is always the case, actually), it will not stop "guix
> pull" from installing Guix at the specified commit.
>
> If it's necessary to update the "guix" package, we can certainly do it.
> However, I don't recall that it's necessary for fixing "guix pull"
> problems like this.  If you still believe it's necessary, can you help
> me to understand why it's necessary?

I believe we'll have to update the package as well. For example on
aarch64 I can do a `guix pull' just fine, however `guix system reconfigure'
fails because it builds the full guix package, including running the
tests.

You've mentioned that `guix pull' was not working for you on ppc64
though right? I wonder why, is this a difference between using Guix as
the OS as opposed to a package manager on top of another OS?

Thanks,
Pierre


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 519 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-05  9:58         ` Chris Marusich
  2022-01-05 10:47           ` Pierre Langlois
@ 2022-01-05 17:34           ` Aiko Kyle
  1 sibling, 0 replies; 16+ messages in thread
From: Aiko Kyle @ 2022-01-05 17:34 UTC (permalink / raw)
  To: Chris Marusich; +Cc: 52908

On Wed, Jan 5, 2022 at 2:58 AM Chris Marusich <cmmarusich@gmail.com> wrote:
>
>
> > It would be great to get this upstreamed soon so I can start guix
> > pulling master. I think the guix commit and revision in
> > package-management.scm will also need to be bumped after applying this
> > fix.
>
> It shouldn't be necessary to update the guix commit and revision in
> package-management.scm.  My understanding is that "guix pull" will
> install Guix at the specified commit; it does not use the guix package
> to decide which version to install.  In other words, even if at the
> specified commit the "guix" package is defined to use an older version
> (I believe this is always the case, actually), it will not stop "guix
> pull" from installing Guix at the specified commit.
>
> If it's necessary to update the "guix" package, we can certainly do it.
> However, I don't recall that it's necessary for fixing "guix pull"
> problems like this.  If you still believe it's necessary, can you help
> me to understand why it's necessary?
>

I actually encountered this issue not doing a "guix pull" but in doing
a "guix system reconfigure" after a guix pull. I don't really
understand why, but I think guix system reconfigure will continue to
fail until the "guix" package is updated. I may be totally incorrect
here though as I'm still new to this.




^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-05 10:47           ` Pierre Langlois
@ 2022-01-06  7:28             ` Chris Marusich
  0 siblings, 0 replies; 16+ messages in thread
From: Chris Marusich @ 2022-01-06  7:28 UTC (permalink / raw)
  To: Pierre Langlois, Aiko Kyle; +Cc: 52908

[-- Attachment #1: Type: text/plain, Size: 2339 bytes --]

Hi Pierre and Aiko,

Pierre Langlois <pierre.langlois@gmx.com> writes:

> I believe we'll have to update the package as well. For example on
> aarch64 I can do a `guix pull' just fine, however `guix system reconfigure'
> fails because it builds the full guix package, including running the
> tests.
>
> You've mentioned that `guix pull' was not working for you on ppc64
> though right? I wonder why, is this a difference between using Guix as
> the OS as opposed to a package manager on top of another OS?

Aiko Kyle <aikokyle@gmail.com> writes:

> I actually encountered this issue not doing a "guix pull" but in doing
> a "guix system reconfigure" after a guix pull. I don't really
> understand why, but I think guix system reconfigure will continue to
> fail until the "guix" package is updated. I may be totally incorrect
> here though as I'm still new to this.

You're right.  I was confused.

I incorrectly thought that Leo and Aiko were saying that they couldn't
run "guix pull".  However, Leo's original message (on Thu, 30 Dec 2021)
explained that the problem occurred for him while building the "guix"
package, not while running "guix pull".  In fact, I've just confirmed
that "guix pull" DOES work for me on powerpc64le-linux using commit
b9c5dff57ff961a16c8fc24843a4535ea817e732.  I ran this command:

  guix pull --cores=14 --commit=b9c5dff57ff961a16c8fc24843a4535ea817e732 --profile=/tmp/test-pull-b9c5dff57

I'm not sure why I was confused, but I apologize.  The "guix pull"
command actually works fine on powerpc64le-linux.  However, the "guix"
package fails to build, exactly as described in this bug report.

So, I agree: in addition to the patch, we do also need to update the
guix package.  To that end, when I commit the patch to the master branch
in about 24 hours, I will also add two commits to update the "guix"
package twice, since the comment in the "guix" package (added in commit
c0a693dfec3e0c3361dab40f354966730dde4ef3) explains that it must be
updated twice:

  ;; If you are updating this package because it fails to build, you need to
  ;; actually update it *twice*, as the installer is pointing to the N-1 guix
  ;; package revision.

I'll let you know once I've done that.

-- 
Chris

PGP: https://savannah.gnu.org/people/viewgpg.php?user_id=106836

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-04  2:15 ` Chris Marusich
  2022-01-04  3:43   ` Aiko Kyle
@ 2022-01-06 16:39   ` Ludovic Courtès
  2022-01-07  4:32     ` Chris Marusich
  1 sibling, 1 reply; 16+ messages in thread
From: Ludovic Courtès @ 2022-01-06 16:39 UTC (permalink / raw)
  To: Chris Marusich; +Cc: Aiko Kyle, 52908

Hi,

Chris Marusich <cmmarusich@gmail.com> skribis:

> I've attached a different patch that attempts to fix the issue without
> requiring callers of set-xorg-configuration to update their code.  I
> believe this is more consistent with the intent of Ludo's original
> change in commit 49599fab564f203b8e92d32e9b28c99e99849bfb.

[...]

> From 09091cc8495e0b4c302a58961e79ac8455ecd208 Mon Sep 17 00:00:00 2001
> From: Chris Marusich <cmmarusich@gmail.com>
> Date: Mon, 3 Jan 2022 14:59:35 -0800
> Subject: [PATCH] services: Consistently use SDDM rather than GDM on
>  non-x86_64.
>
> This is a follow-up to 49599fab564f203b8e92d32e9b28c99e99849bfb.  Notably, it
> also deprecates (gnu services sddm) and moves what was there into (gnu
> services xorg).
>
> Fixes: <https://issues.guix.gnu.org/52908>.

I’d rather not move things and fix the bug in the same commit.  (I’m not
even convinced sddm needs to leave its own module, plus it would break
the API, which is not something to do lightly.)

[...]

>  (define* (set-xorg-configuration config
>                                   #:optional
>                                   (login-manager-service-type
> -                                  gdm-service-type))
> +                                  (let ((system (or (%current-target-system)
> +                                                    (%current-system))))
> +                                    (if (string-prefix? "x86_64" system)
> +                                        gdm-service-type
> +                                        sddm-service-type))))

[...]

> --- a/gnu/system/examples/vm-image.tmpl
> +++ b/gnu/system/examples/vm-image.tmpl
> @@ -107,12 +107,12 @@ root ALL=(ALL) ALL
>                   ;; Use the DHCP client service rather than NetworkManager.
>                   (service dhcp-client-service-type))
>  
> -           ;; Remove GDM, ModemManager, NetworkManager, and wpa-supplicant,
> -           ;; which don't make sense in a VM.
> +           ;; Remove some services that don't make sense in a VM.
>             (remove (lambda (service)
>                       (let ((type (service-kind service)))
>                         (or (memq type
>                                   (list gdm-service-type
> +                                       sddm-service-type

These bits LGTM.

Thanks for fixing it!

And yes, we’ll need to update the ‘guix’ package once this fix is in.

Ludo’.




^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-06 16:39   ` Ludovic Courtès
@ 2022-01-07  4:32     ` Chris Marusich
  2022-01-07 10:48       ` Maxime Devos
  2022-01-08  1:26       ` Aiko Kyle
  0 siblings, 2 replies; 16+ messages in thread
From: Chris Marusich @ 2022-01-07  4:32 UTC (permalink / raw)
  To: Ludovic Courtès, Aiko Kyle; +Cc: 52908


[-- Attachment #1.1: Type: text/plain, Size: 830 bytes --]

Hi Ludo and Aiko,

Ludovic Courtès <ludo@gnu.org> writes:

> I’d rather not move things and fix the bug in the same commit.  (I’m not
> even convinced sddm needs to leave its own module, plus it would break
> the API, which is not something to do lightly.)

You're right!  I was able to avoid moving the (gnu services sddm) module
by autoloading it from (gnu services xorg).  I've committed the fix as
79260c8695cc5e3cd64f5b01e262369d5a67f141, along with two commits that
update the guix package.

> Thanks for fixing it!
>
> And yes, we’ll need to update the ‘guix’ package once this fix is in.

Thank you for the review!

Aiko, can you confirm that after running "guix pull" the issue is
resolved on your end, too?

-- 
Chris

PGP: https://savannah.gnu.org/people/viewgpg.php?user_id=106836

[-- Attachment #1.2: 0001-services-Consistently-use-SDDM-rather-than-GDM-on-no.patch --]
[-- Type: text/x-patch, Size: 4160 bytes --]

From 79260c8695cc5e3cd64f5b01e262369d5a67f141 Mon Sep 17 00:00:00 2001
From: Chris Marusich <cmmarusich@gmail.com>
Date: Thu, 6 Jan 2022 18:43:47 -0800
Subject: [PATCH] services: Consistently use SDDM rather than GDM on
 non-x86_64.

This is a follow-up to 49599fab564f203b8e92d32e9b28c99e99849bfb.

Fixes: <https://issues.guix.gnu.org/52908>.

* gnu/services/xorg.scm (set-xorg-configuration)[login-manager-service-type]:
When the current system or target system begins with the string "x86_64", use
gdm-service-type as before; otherwise, use sddm-service-type.
* gnu/system/examples/vm-image.tmpl (services): Add sddm-service-type to the
list of service types to remove.
---
 gnu/services/xorg.scm             | 11 ++++++++++-
 gnu/system/examples/vm-image.tmpl |  6 +++---
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 82a7d25602..35f8dbc5f8 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch>
+;;; Copyright © 2022 Chris Marusich <cmmarusich@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,6 +29,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu services xorg)
+  #:autoload   (gnu services sddm) (sddm-service-type)
   #:use-module (gnu artwork)
   #:use-module (gnu services)
   #:use-module (gnu services shepherd)
@@ -1040,10 +1042,17 @@ the GNOME desktop environment.")
                    "Run the GNOME Desktop Manager (GDM), a program that allows
 you to log in in a graphical session, whether or not you use GNOME."))))
 
+;; Since GDM depends on Rust (gdm -> gnome-shell -> gjs -> mozjs -> rust)
+;; and Rust is currently unavailable on non-x86_64 platforms, default to
+;; SDDM there (FIXME).
 (define* (set-xorg-configuration config
                                  #:optional
                                  (login-manager-service-type
-                                  gdm-service-type))
+                                  (let ((system (or (%current-target-system)
+                                                    (%current-system))))
+                                    (if (string-prefix? "x86_64" system)
+                                        gdm-service-type
+                                        sddm-service-type))))
   "Tell the log-in manager (of type @var{login-manager-service-type}) to use
 @var{config}, an <xorg-configuration> record."
   (simple-service 'set-xorg-configuration
diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl
index a59d91587b..ccb0b045db 100644
--- a/gnu/system/examples/vm-image.tmpl
+++ b/gnu/system/examples/vm-image.tmpl
@@ -5,7 +5,7 @@
 ;;
 
 (use-modules (gnu) (guix) (srfi srfi-1))
-(use-service-modules desktop mcron networking spice ssh xorg)
+(use-service-modules desktop mcron networking spice ssh xorg sddm)
 (use-package-modules bootloaders certs fonts nvi
                      package-management wget xorg)
 
@@ -107,12 +107,12 @@ root ALL=(ALL) ALL
                  ;; Use the DHCP client service rather than NetworkManager.
                  (service dhcp-client-service-type))
 
-           ;; Remove GDM, ModemManager, NetworkManager, and wpa-supplicant,
-           ;; which don't make sense in a VM.
+           ;; Remove some services that don't make sense in a VM.
            (remove (lambda (service)
                      (let ((type (service-kind service)))
                        (or (memq type
                                  (list gdm-service-type
+                                       sddm-service-type
                                        wpa-supplicant-service-type
                                        cups-pk-helper-service-type
                                        network-manager-service-type

base-commit: c4240dfdb433239108edaf12acb5c51138f9dc74
-- 
2.30.2


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-07  4:32     ` Chris Marusich
@ 2022-01-07 10:48       ` Maxime Devos
  2022-01-09  4:42         ` Chris Marusich
  2022-01-08  1:26       ` Aiko Kyle
  1 sibling, 1 reply; 16+ messages in thread
From: Maxime Devos @ 2022-01-07 10:48 UTC (permalink / raw)
  To: Chris Marusich, Ludovic Courtès, Aiko Kyle; +Cc: 52908

[-- Attachment #1: Type: text/plain, Size: 262 bytes --]

Chris Marusich schreef op do 06-01-2022 om 20:32 [-0800]:
> +                                    (if (string-prefix? "x86_64"
> system)

There's a target-x86-64? procedure in (guix utils) you could use here.

Greetings,
Maxime

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-07  4:32     ` Chris Marusich
  2022-01-07 10:48       ` Maxime Devos
@ 2022-01-08  1:26       ` Aiko Kyle
  2022-01-08  2:18         ` Leo Famulari
  1 sibling, 1 reply; 16+ messages in thread
From: Aiko Kyle @ 2022-01-08  1:26 UTC (permalink / raw)
  To: Chris Marusich; +Cc: 52908

On Thu, Jan 6, 2022 at 9:32 PM Chris Marusich <cmmarusich@gmail.com> wrote:
>
> Aiko, can you confirm that after running "guix pull" the issue is
> resolved on your end, too?
>

I can confirm that this test passes here. However guix system
reconfigure is still failing for me on aarch64 due to the test
'file-needed/recursive' in tests/gremlin.scm failing. There was an
email on guix-devel starting to look into this issue on aarch64 but I
haven't had the time to follow up.




^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-08  1:26       ` Aiko Kyle
@ 2022-01-08  2:18         ` Leo Famulari
  0 siblings, 0 replies; 16+ messages in thread
From: Leo Famulari @ 2022-01-08  2:18 UTC (permalink / raw)
  To: Aiko Kyle; +Cc: 52908-done

On Fri, Jan 07, 2022 at 06:26:13PM -0700, Aiko Kyle wrote:
> I can confirm that this test passes here.

Awesome, I am closing this bug. Thanks everybody, for collaborating on a
quick fix!

> However guix system
> reconfigure is still failing for me on aarch64 due to the test
> 'file-needed/recursive' in tests/gremlin.scm failing. There was an
> email on guix-devel starting to look into this issue on aarch64 but I
> haven't had the time to follow up.

I think there is a fix being discussed here:

https://issues.guix.gnu.org/52940




^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#52908: 'tests/guix-system.sh' fails on aarch64-linux
  2022-01-07 10:48       ` Maxime Devos
@ 2022-01-09  4:42         ` Chris Marusich
  0 siblings, 0 replies; 16+ messages in thread
From: Chris Marusich @ 2022-01-09  4:42 UTC (permalink / raw)
  To: Maxime Devos, Aiko Kyle, Leo Famulari; +Cc: 52908

[-- Attachment #1: Type: text/plain, Size: 2102 bytes --]

Hi Maxime, Aiko, and Leo,

Maxime Devos <maximedevos@telenet.be> writes:

> Chris Marusich schreef op do 06-01-2022 om 20:32 [-0800]:
>> +                                    (if (string-prefix? "x86_64"
>> system)
>
> There's a target-x86-64? procedure in (guix utils) you could use here.
>
> Greetings,
> Maxime

Good call!  I implemented your suggestion in commit dc2b901.

Aiko Kyle <aikokyle@gmail.com> writes:

> On Thu, Jan 6, 2022 at 9:32 PM Chris Marusich <cmmarusich@gmail.com> wrote:
>>
>> Aiko, can you confirm that after running "guix pull" the issue is
>> resolved on your end, too?
>>
>
> I can confirm that this test passes here. However guix system
> reconfigure is still failing for me on aarch64 due to the test
> 'file-needed/recursive' in tests/gremlin.scm failing. There was an
> email on guix-devel starting to look into this issue on aarch64 but I
> haven't had the time to follow up.

Thank you for confirming!

Leo Famulari <leo@famulari.name> writes:

> On Fri, Jan 07, 2022 at 06:26:13PM -0700, Aiko Kyle wrote:
> > I can confirm that this test passes here.
> 
> Awesome, I am closing this bug. Thanks everybody, for collaborating on a
> quick fix!
> 
> > However guix system
> > reconfigure is still failing for me on aarch64 due to the test
> > 'file-needed/recursive' in tests/gremlin.scm failing. There was an
> > email on guix-devel starting to look into this issue on aarch64 but I
> > haven't had the time to follow up.
> 
> I think there is a fix being discussed here:
> 
> https://issues.guix.gnu.org/52940

I think the issue described in 52940 is similar but slightly different
to the one Aiko mentioned.  I have resolved 52940 because that issue
(only happening on powerpc64le-linux, to my knowledge) has been fixed.
However, I have re-opened Aiko's existing report for the
aarch64-specific issue here:

https://issues.guix.gnu.org/52943

Let's continue the discussion of that issue there.

-- 
Chris

PGP: https://savannah.gnu.org/people/viewgpg.php?user_id=106836

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2022-01-09  4:43 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-30 23:52 bug#52908: 'tests/guix-system.sh' fails on aarch64-linux Leo Famulari
2022-01-04  2:15 ` Chris Marusich
2022-01-04  3:43   ` Aiko Kyle
2022-01-04  4:53     ` Chris Marusich
2022-01-04  5:08       ` Aiko Kyle
2022-01-05  9:58         ` Chris Marusich
2022-01-05 10:47           ` Pierre Langlois
2022-01-06  7:28             ` Chris Marusich
2022-01-05 17:34           ` Aiko Kyle
2022-01-04 17:28     ` Leo Famulari
2022-01-06 16:39   ` Ludovic Courtès
2022-01-07  4:32     ` Chris Marusich
2022-01-07 10:48       ` Maxime Devos
2022-01-09  4:42         ` Chris Marusich
2022-01-08  1:26       ` Aiko Kyle
2022-01-08  2:18         ` Leo Famulari

Code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).