GNU bug report logs - #63314
[PATCH 0/2] Add PAM shepherd requirements

Previous Next

Package: guix-patches;

Reported by: Josselin Poiret <dev <at> jpoiret.xyz>

Date: Fri, 5 May 2023 17:51:01 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #29 received at 63314 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Josselin Poiret <dev <at> jpoiret.xyz>
Cc: 63314 <at> debbugs.gnu.org
Subject: Re: [PATCH v2 1/2] system: pam: Let PAM extensions add shepherd
 requirements.
Date: Thu, 11 May 2023 13:15:42 +0200
[Message part 1 (text/plain, inline)]
Hi,

Josselin Poiret <dev <at> jpoiret.xyz> skribis:

> From: Josselin Poiret <dev <at> jpoiret.xyz>
>
> * gnu/system/pam.scm (<pam-extension>): New record type.
> (pam-shepherd-service): Add Shepherd synchronization point.
>
> * gnu/services/mail.scm (dovecot-shepherd-service)
> * gnu/services/lightdm.scm (lightdm-shepherd-service)
> * gnu/services/mail.scm (opensmtpd-shepherd-service)
> * gnu/services/sddm.scm (sddm-shepherd-service)
> * gnu/services/ssh.scm (lsh-shepherd-service, openssh-shepherd-service)
> * gnu/services/xorg.scm (slim-shepherd-service, gdm-shepherd-service)
> * gnu/services/base.scm (greetd-shepherd-services): Add PAM requirement.
>
> * gnu/system/pam.scm (/etc-entry, extend-configuration,
> pam-root-service-type, pam-root-service)
> * gnu/services/authentication.scm (pam-ldap-pam-service)
> * gnu/services/base.scm (pam-limits-service-type)
> (greetd-pam-service)
> * gnu/services/desktop.scm (pam-gnome-keyring)
> * gnu/services/kerberos.scm (pam-krb5-pam-service)
> * gnu/services/pam-mount.scm (pam-mount-pam-service): Adapt to use
> pam-extension.

Excellent!  I committed with the cosmetic changes below:

[Message part 2 (text/x-patch, inline)]
diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm
index f624064999..adc40c975f 100644
--- a/gnu/system/pam.scm
+++ b/gnu/system/pam.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013-2017, 2019-2021 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2023 Josselin Poiret <dev <at> jpoiret.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -354,9 +355,9 @@ (define (session-environment-service vars)
 ;;; PAM root service.
 ;;;
 
-;; A PAM transformer consists of a procedure acting on each PAM entry, with an
-;; additional list of shepherd-requirements that the meta PAM shepherd service
-;; will depend on.
+;; Extension of the PAM configuration.  A PAM transformer consists of a
+;; procedure acting on each PAM entry; 'shepherd-requirements' lists services
+;; that the meta 'pam' Shepherd service will depend on.
 (define-record-type* <pam-extension>
   pam-extension make-pam-extension pam-extension?
   (transformer pam-extension-transformer)
@@ -380,12 +381,8 @@ (define (/etc-entry config)
   "Return the /etc/pam.d entry corresponding to CONFIG."
   (match config
     (($ <pam-configuration> services transformers shepherd-requirements)
-     (let ((services
-            (map
-             ;; XXX We need to add identity because compose expects at least
-             ;; one argument for some reason.
-             (apply compose (cons identity transformers))
-             services)))
+     (let ((services (map (apply compose identity transformers)
+                          services)))
        `(("pam.d" ,(pam-services->directory services)))))))
 
 (define (pam-shepherd-service config)
@@ -404,16 +401,15 @@ (define (extend-configuration initial extensions)
   "Extend INITIAL with NEW."
   ;; TODO: Remove deprecation shim.
   (define cleaned-extensions
-    (map
-     (lambda (ext)
-       (cond
-        ((procedure? ext)
-         (begin
-           (warning (G_ "pam-root-service-type transformer extensions should\
-now use the <pam-extension> record."))
-           (pam-extension (transformer ext))))
-        (#t ext)))
-     extensions))
+    (map (lambda (ext)
+           (if (procedure? ext)
+               (begin
+                 (warning (G_ "'pam-root-service-type' extensions should \
+now use the <pam-extension> record~%"))
+                 (pam-extension (transformer ext)))
+               ext))
+         extensions))
+
   (let-values (((services pam-extensions)
                 (partition pam-service? cleaned-extensions)))
     (pam-configuration
[Message part 3 (text/plain, inline)]
Ludo’.

This bug report was last modified 2 years and 64 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.