From patchwork Sat Feb 25 18:57:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruno Victal X-Patchwork-Id: 47309 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id AE0D916B42; Sat, 25 Feb 2023 18:59:45 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 13DFB16AFC for ; Sat, 25 Feb 2023 18:59:42 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pVzlF-0001sX-P7; Sat, 25 Feb 2023 13:59:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pVzlE-0001rL-2L for guix-patches@gnu.org; Sat, 25 Feb 2023 13:59:08 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pVzlD-0000ck-QD for guix-patches@gnu.org; Sat, 25 Feb 2023 13:59:07 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pVzlD-0007xi-Md for guix-patches@gnu.org; Sat, 25 Feb 2023 13:59:07 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#61789] [PATCH 08/27] services: base: Deprecate 'udev-service' procedure. Resent-From: Bruno Victal Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 25 Feb 2023 18:59:07 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61789 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 61789@debbugs.gnu.org Cc: Bruno Victal Received: via spool by 61789-submit@debbugs.gnu.org id=B61789.167735154630578 (code B ref 61789); Sat, 25 Feb 2023 18:59:07 +0000 Received: (at 61789) by debbugs.gnu.org; 25 Feb 2023 18:59:06 +0000 Received: from localhost ([127.0.0.1]:41474 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pVzlB-0007wx-M1 for submit@debbugs.gnu.org; Sat, 25 Feb 2023 13:59:06 -0500 Received: from smtpm8.myservices.hosting ([185.26.105.209]:46010) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pVzke-0007tB-E2 for 61789@debbugs.gnu.org; Sat, 25 Feb 2023 13:58:33 -0500 Received: from mail1.netim.hosting (unknown [185.26.106.173]) by smtpm8.myservices.hosting (Postfix) with ESMTP id 2C71820D4A for <61789@debbugs.gnu.org>; Sat, 25 Feb 2023 19:58:19 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by mail1.netim.hosting (Postfix) with ESMTP id D2B7E8009E; Sat, 25 Feb 2023 19:58:19 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mail1.netim.hosting Received: from mail1.netim.hosting ([127.0.0.1]) by localhost (mail1-2.netim.hosting [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id lJgKbWAiwf86; Sat, 25 Feb 2023 19:58:19 +0100 (CET) Received: from guix-nuc.home.arpa (bl9-119-177.dsl.telepac.pt [85.242.119.177]) (Authenticated sender: lumen@makinata.eu) by mail1.netim.hosting (Postfix) with ESMTPSA id 585728009D; Sat, 25 Feb 2023 19:58:19 +0100 (CET) From: Bruno Victal Date: Sat, 25 Feb 2023 18:57:54 +0000 Message-Id: <09d5091f0636e7fd4eb5d63184e0fb5ca962227c.1677350249.git.mirai@makinata.eu> X-Mailer: git-send-email 2.39.1 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * doc/guix.texi (Base Services): Replace udev-service with udev-service-type. Document . Use @defun @-commands for udev-rules-service, udev-rule and file->udev-rule. * gnu/services/base.scm (udev-service): Deprecate procedure. * gnu/system/install.scm (%installation-services): Use udev-service-type. --- doc/guix.texi | 52 +++++++++++++++++++++++++++--------------- gnu/services/base.scm | 5 ++-- gnu/system/install.scm | 4 +++- 3 files changed, 39 insertions(+), 22 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 5072bcc11f..283524245a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -18675,15 +18675,30 @@ Base Services @end table @end deftp -@deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}] -Run @var{udev}, which populates the @file{/dev} directory dynamically. -udev rules can be provided as a list of files through the @var{rules} -variable. The procedures @code{udev-rule}, @code{udev-rules-service} -and @code{file->udev-rule} from @code{(gnu services base)} simplify the -creation of such rule files. -@end deffn +@defvar udev-service-type +Type of the service that runs udev, a service which populates the +@file{/dev} directory dynamically, whose value is a +@code{} object. + +This service type can be @emph{extended} using procedures +@code{udev-rules-service} along with @code{file->udev-rule} or +@code{udev-rule} which simplify the process of writing udev rules. +@end defvar -@deffn {Scheme Procedure} udev-rule [@var{file-name} @var{contents}] +@deftp {Data Type} udev-configuration +Data type representing the configuration of udev. + +@table @asis +@item @code{udev} (default: @code{eudev}) (type: file-like) +Package object of the udev service. + +@item @code{rules} (default: @var{'()}) (type: list-of-file-like) +List of file-like objects denoting udev-rule files. + +@end table +@end deftp + +@defun udev-rule @var{file-name} @var{contents} Return a udev-rule file named @var{file-name} containing the rules defined by the @var{contents} literal. @@ -18699,18 +18714,17 @@ Base Services "ATTR@{product@}==\"Example\", " "RUN+=\"/path/to/script\""))) @end lisp -@end deffn +@end defun -@deffn {Scheme Procedure} udev-rules-service [@var{name} @var{rules}] @ - [#:groups @var{groups}] -Return a service that extends @code{udev-service-type } with @var{rules} +@defun udev-rules-service @var{name} @var{rules} [#:groups '()] +Return a service that extends @code{udev-service-type} with @var{rules} and @code{account-service-type} with @var{groups} as system groups. This works by creating a singleton service type @code{@var{name}-udev-rules}, of which the returned service is an instance. -Here we show how it can be used to extend @code{udev-service-type} with the -previously defined rule @code{%example-udev-rule}. +Here we show how it can be used to extend @code{udev-service-type} +with the previously defined rule @code{%example-udev-rule}. @lisp (operating-system @@ -18719,11 +18733,11 @@ Base Services (cons (udev-rules-service 'usb-thing %example-udev-rule) %desktop-services))) @end lisp -@end deffn +@end defun -@deffn {Scheme Procedure} file->udev-rule [@var{file-name} @var{file}] -Return a udev file named @var{file-name} containing the rules defined -within @var{file}, a file-like object. +@defun file->udev-rule @var{file-name} @var{file} +Return a udev-rule file named @var{file-name} containing the rules +defined within @var{file}, a file-like object. The following example showcases how we can use an existing rule file. @@ -18743,7 +18757,7 @@ Base Services (sha256 (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003")))))) @end lisp -@end deffn +@end defun Additionally, Guix package definitions can be included in @var{rules} in order to extend the udev rules with the definitions found under their diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 45e6c5f448..b183cf58c1 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -150,7 +150,7 @@ (define-module (gnu services base) udev-configuration? udev-configuration-rules udev-service-type - udev-service + udev-service ; deprecated udev-rule file->udev-rule udev-rules-service @@ -2351,7 +2351,8 @@ (define udev-service-type directory dynamically. Get extra rules from the packages listed in the @code{rules} field of its value, @code{udev-configuration} object."))) -(define* (udev-service #:key (udev eudev) (rules '())) +(define-deprecated (udev-service #:key (udev eudev) (rules '())) + udev-service-type "Run @var{udev}, which populates the @file{/dev} directory dynamically. Get extra rules from the packages listed in @var{rules}." (service udev-service-type diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 8c7752df0e..dd965f312b 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -388,7 +388,9 @@ (define* (%installation-services #:key (system (or (and=> ;; Start udev so that useful device nodes are available. ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for ;; regulations-compliant WiFi access. - (udev-service #:rules (list lvm2 crda)) + (service udev-service-type + (udev-configuration + (rules (list lvm2 crda)))) ;; Add the 'cow-store' service, which users have to start manually ;; since it takes the installation directory as an argument.