From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id SHKxMHh4TWQZiQAASxT56A (envelope-from ) for ; Sat, 29 Apr 2023 22:05:12 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id MD/jL3h4TWRorgAA9RJhRA (envelope-from ) for ; Sat, 29 Apr 2023 22:05:12 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 3C59019AF3 for ; Sat, 29 Apr 2023 22:05:11 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1psoHq-00014k-BX; Sat, 29 Apr 2023 13:23:06 -0400 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 1psoHo-00013n-Kd for bug-guix@gnu.org; Sat, 29 Apr 2023 13:23:04 -0400 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 1psoHo-0003Ml-B9 for bug-guix@gnu.org; Sat, 29 Apr 2023 13:23:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1psoHo-00007W-6Z for bug-guix@gnu.org; Sat, 29 Apr 2023 13:23:04 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#63082: [PATCH v2 04/16] services: mpd: Obsolete the 'group' field. Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sat, 29 Apr 2023 17:23:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63082 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 63082@debbugs.gnu.org Cc: Maxim Cournoyer Received: via spool by 63082-submit@debbugs.gnu.org id=B63082.168278893932701 (code B ref 63082); Sat, 29 Apr 2023 17:23:04 +0000 Received: (at 63082) by debbugs.gnu.org; 29 Apr 2023 17:22:19 +0000 Received: from localhost ([127.0.0.1]:36557 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1psoH4-0008V7-9v for submit@debbugs.gnu.org; Sat, 29 Apr 2023 13:22:19 -0400 Received: from mail-qk1-f171.google.com ([209.85.222.171]:58522) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1psoGx-0008TZ-DY for 63082@debbugs.gnu.org; Sat, 29 Apr 2023 13:22:12 -0400 Received: by mail-qk1-f171.google.com with SMTP id af79cd13be357-74fb8677a36so46638185a.0 for <63082@debbugs.gnu.org>; Sat, 29 Apr 2023 10:22:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682788925; x=1685380925; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jOad/dnL1Fix/DeQmGi57a9BlCufRtJsVYAMDzZKedo=; b=XzjQbOipiIxf9HpmIiXwy+WkRDFMoRnDAIcKnNTtd4vrYAHGRMHosSAWnP2SX6bQ1R U5neollhcF1seNXal6QJO5UZA78mwXq4w5JIrWL+JXH8SHxPWH+6AO7m9w7IPqY3FP/w w8XfhUpJWgZbZ4RFHxSmH2cmEFaWYkfozcwE8v2enSEfdWavndNejNnJ1GMGitiwRqHM 7OELRqzU27W5o/z12yyaxnHo/kyXigZCkiirtxIvmwzVavW4Mmh3Xi4Jee1ZMklyiVwO NIACKwOCgH4qKTFyZM0qzaxovYiCDf+oCC0Le0gA/8R3XTHr/6mrLtI5LF6pTY1rxVbx ++vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682788925; x=1685380925; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jOad/dnL1Fix/DeQmGi57a9BlCufRtJsVYAMDzZKedo=; b=B27OpTYgrnH0+oi+BZy1Y3q9PRcK1V/4Qj7Lfy7O/qP1PG5RmI26cMvE8GjhcksEwU Zdz84nUCOaIYB3qQ7SFFaJ+0US4UDmmLi6SBsXCJ/Ghdg4FO4NV9FiE2Hrznwuw1QCUY 36zXY6gSk8wwOtaG/izr3K1dbLZRdmsHSsjVzcYFMxP1lg22DuBgKh/E29jylTS0vGF/ tn1goQISK0H3YCStMx/wcL6PNk3YluBBrZEPfRP6s7+sYzCuak8E/sRXqqJaq3ch+4Gv OzJ2J6q8XBGIYs+E431BMmG5RAVBFq/s2ueMdiWpLco9HDZ7vt+OiOgoV48X1/rTs6rN gD9Q== X-Gm-Message-State: AC+VfDyvVy0ox/yqkl+HNUIIQj5R2hLXLHiqTjAfgWDKm51hO7prRWSB 7VblDkXklKylcCY1it96vHz0Xl4uh7c= X-Google-Smtp-Source: ACHHUZ7Ug2QPP3leKsa2iyiF36gPA5d5peu95TQG4kTtb+46ugPICbEgIUm8B46hbosImOmmyqyF4w== X-Received: by 2002:a05:6214:f07:b0:61a:197b:60b with SMTP id gw7-20020a0562140f0700b0061a197b060bmr792702qvb.39.1682788925502; Sat, 29 Apr 2023 10:22:05 -0700 (PDT) Received: from localhost.localdomain (dsl-155-245.b2b2c.ca. [66.158.155.245]) by smtp.gmail.com with ESMTPSA id dm45-20020a05620a1d6d00b0074cf009f443sm7582489qkb.85.2023.04.29.10.22.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Apr 2023 10:22:05 -0700 (PDT) From: Maxim Cournoyer Date: Sat, 29 Apr 2023 13:21:41 -0400 Message-Id: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: bug-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Seal: i=1; s=key1; d=yhetil.org; t=1682798712; a=rsa-sha256; cv=none; b=GXl/ha1dCqHxhICy7OiNdzCh140MaktpwtB9EqiMH4gos2fcKO9MfFKeyVh0RNBaAWfLzP Egopp/8FKSIxVOF3+vEsMsZqxhAEZgVPpy6wznYy09vDNeZfM41RrklXH5trVU1xfLNd32 oZjx+Sai8a/alDnL4ATipO25uXLV7R26zsY9xyNnRi+8q7H264X6L51HbmSi/gzmb1buA5 BdZRGHDwhOMT+CwwlGsFoO3wgL5DGplqaL98fEQh581B+mS/nz7KfzDxQq/Z45dsZ+uvz0 abV+BKzyLvDVedPaUF/V0WY2+WC6NPfFlK6ZMP+kro1kzwld4a+xpH9ruAkgig== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20221208 header.b=XzjQbOip; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1682798712; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=gJnoPveB4vhz0dVwwoux3q6nSeRf0xjcv0YF/M9WTlU=; b=uUgpwcyhc8kHO+mNuvEEW9ZCZtWBFrqJGNrYbC+ZXAL2niv7sW+QULL1WrmeIRyaga/wsn M4nSIsOE1kP/MoB4wWTAS/6l9EdHbtMKNi99VAaA77manXCDdUNtQFM84kTbcroLdRfolp 59eebD+Wc+BnolvBKxSRlX3+1g7u/qN9LR+LhssVkp0aJRcqbmsdAF5ViUOOpvUdWTCaH0 ad1cssGy62gOkCCBk3z2HsVN0to8/CiZHgQsw5RWtsdehkq/7L2PEqf4AnGg8VUZDV2tfl /lqdaMkCvbwWjKzEsivdET1wEwKjru95WybH8vs2IyyR9hgL0J9VksQhjA8j9w== X-Migadu-Spam-Score: -1.90 X-Spam-Score: -1.90 X-Migadu-Queue-Id: 3C59019AF3 X-Migadu-Scanner: scn0.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20221208 header.b=XzjQbOip; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-TUID: VLipv2UObt3j Prior to this change, there was a discrepancy where a user could have disagreeing groups between the group and user fields (the user field being a record, which includes its primary group as a string). This could have caused problems because the USER's group was being used to set the file permissions, while the GROUP name was serialized to MPD's configuration, and MPD would use it to set the group of its running process. Synchronizing both is not practical, as it can easily lead to slightly different objects conflicting, again causing problems. The compromise is to obsolete the 'group' field. A group can still be configured via the 'user' field, which accepts a object, with the limitation that the group should already exist. * gnu/services/audio.scm (%lazy-group): Delete variable. (%set-user-group): Delete procedure. (mpd-serialize-user-group): Likewise. (%mpd-user) [group]: Default to "audio". (%mpd-group): Delete variable. (mpd-group-sanitizer, mympd-group-sanitizer): Adjust sanitizers. (mpd-configuration, mympd-configuration) [group]: Default to #f. Update doc. (mpd-accounts, mympd-accounts): Remove group. (%mympd-user) [group]: Default to "nogroup". (%mympd-group): Delete variable. * doc/guix.texi: Regenerate doc. --- doc/guix.texi | 15 +++----- gnu/services/audio.scm | 83 +++++++++++------------------------------- 2 files changed, 27 insertions(+), 71 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index f8acdbd6b5..34703b1698 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -33571,8 +33571,8 @@ Audio Services @item @code{user} (type: user-account) The user to run mpd as. -@item @code{group} (type: user-group) -The group to run mpd as. +@item @code{group} (default: @code{#f}) (type: boolean) +Obsolete. Do not use. @item @code{shepherd-requirement} (default: @code{()}) (type: list-of-symbol) This is a list of symbols naming Shepherd services that this service @@ -33824,15 +33824,12 @@ Audio Services This is a list of symbols naming Shepherd services that this service will depend on. -@item @code{user} (default: @code{%mympd-user}) (type: user-account) +@item @code{user} (type: user-account) Owner of the @command{mympd} process. -The default @code{%mympd-user} is a system user with the name ``mympd'', -who is a part of the group @var{group} (see below). -@item @code{group} (default: @code{%mympd-group}) (type: user-group) -Owner group of the @command{mympd} process. +@item @code{group} (default: @code{#f}) (type: boolean) +Obsolete. Do not use. -The default @code{%mympd-group} is a system group with name ``mympd''. @item @code{work-directory} (default: @code{"/var/lib/mympd"}) (type: string) Where myMPD will store its data. @@ -33872,7 +33869,7 @@ Audio Services Override URI to myMPD. See @uref{https://github.com/jcorporation/myMPD/issues/950}. -@item @code{script-acl} (default: @code{(mympd-ip-acl (allow '("127.0.0.1")))}) (type: maybe-mympd-ip-acl) +@item @code{script-acl} (type: maybe-mympd-ip-acl) ACL to access the myMPD script backend. @item @code{ssl?} (default: @code{#f}) (type: boolean) diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm index 7874539810..60387272fc 100644 --- a/gnu/services/audio.scm +++ b/gnu/services/audio.scm @@ -140,14 +140,6 @@ (define (uglify-field-name field-name) (define list-of-symbol? (list-of symbol?)) -;; Helpers for deprecated field types, to be removed later. -(define %lazy-group (make-symbol "%lazy-group")) - -(define (set-user-group user group) - (user-account - (inherit user) - (group (user-group-name group)))) - ;;; ;;; MPD @@ -175,9 +167,6 @@ (define (mpd-serialize-list-of-strings field-name value) (define (mpd-serialize-user-account field-name value) (mpd-serialize-string field-name (user-account-name value))) -(define (mpd-serialize-user-group field-name value) - (mpd-serialize-string field-name (user-group-name value))) - (define-maybe string (prefix mpd-)) (define-maybe list-of-strings (prefix mpd-)) (define-maybe boolean (prefix mpd-)) @@ -185,20 +174,13 @@ (define-maybe boolean (prefix mpd-)) (define %mpd-user (user-account (name "mpd") - ;; XXX: This is a place-holder to be lazily substituted in (…-accounts) - ;; with the value from the 'group' field of . - (group %lazy-group) + (group "audio") (system? #t) (comment "Music Player Daemon (MPD) user") ;; MPD can use $HOME (or $XDG_CONFIG_HOME) to place its data. (home-directory "/var/lib/mpd") (shell (file-append shadow "/sbin/nologin")))) -(define %mpd-group - (user-group - (name "mpd") - (system? #t))) - ;;; TODO: Procedures for deprecated fields, to be removed. (define mpd-deprecated-fields '((music-dir . music-directory) @@ -242,15 +224,9 @@ (define (mpd-user-sanitizer value) (configuration-field-error #f 'user value)))) (define (mpd-group-sanitizer value) - (cond ((user-group? value) value) - ((string? value) - (warning (G_ "string value for 'group' is deprecated, use \ -user-group instead~%")) - (user-group - (inherit %mpd-group) - (name value))) - (else - (configuration-field-error #f 'group value)))) + (when value + (warning (G_ "'group' in is obsolete; ignoring~%"))) + #f) ;;; @@ -407,9 +383,10 @@ (define-configuration mpd-configuration (sanitizer mpd-user-sanitizer)) (group - (user-group %mpd-group) - "The group to run mpd as." - (sanitizer mpd-group-sanitizer)) + (boolean #f) + "Obsolete. Do not use." + (sanitizer mpd-group-sanitizer) + empty-serializer) (shepherd-requirement (list-of-symbol '()) @@ -633,12 +610,9 @@ (define (mpd-shepherd-service config) (format #t "Service MPD is not running."))))))))))) (define (mpd-accounts config) - (match-record config (user group) - ;; TODO: Deprecation code, to be removed. - (let ((user (if (eq? (user-account-group user) %lazy-group) - (set-user-group user group) - user))) - (list user group)))) + (match-record config + (user) + (list user))) (define mpd-service-type (service-type @@ -676,19 +650,12 @@ (define-maybe/no-serialization mympd-ip-acl) (define %mympd-user (user-account (name "mympd") - ;; XXX: This is a place-holder to be lazily substituted in 'mympd-accounts' - ;; with the value from the 'group' field of . - (group %lazy-group) + (group "nogroup") (system? #t) (comment "myMPD user") (home-directory "/var/empty") (shell (file-append shadow "/sbin/nologin")))) -(define %mympd-group - (user-group - (name "mympd") - (system? #t))) - ;;; TODO: Procedures for unsupported value types, to be removed. (define (mympd-user-sanitizer value) (cond ((user-account? value) value) @@ -702,15 +669,10 @@ (define (mympd-user-sanitizer value) (configuration-field-error #f 'user value)))) (define (mympd-group-sanitizer value) - (cond ((user-group? value) value) - ((string? value) - (warning (G_ "string value for 'group' is not supported, use \ -user-group instead~%")) - (user-group - (inherit %mympd-group) - (name value))) - (else - (configuration-field-error #f 'group value)))) + (when value + (warning (G_ "'group' in is obsolete; ignoring~%"))) + #f) + ;;; @@ -737,8 +699,8 @@ (define-configuration/no-serialization mympd-configuration empty-serializer) (group - (user-group %mympd-group) - "Owner group of the @command{mympd} process." + (boolean #f) + "Obsolete. Do not use." (sanitizer mympd-group-sanitizer) empty-serializer) @@ -904,12 +866,9 @@ (define (mympd-shepherd-service config) (stop #~(make-kill-destructor)))))) (define (mympd-accounts config) - (match-record config (user group) - ;; TODO: Deprecation code, to be removed. - (let ((user (if (eq? (user-account-group user) %lazy-group) - (set-user-group user group) - user))) - (list user group)))) + (match-record config + (user) + (list user))) (define (mympd-log-rotation config) (match-record config (log-to) -- 2.39.2