From patchwork Thu May 22 11:32:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Trofimov X-Patchwork-Id: 42861 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 C5FDF27BC4C; Thu, 22 May 2025 12:35:37 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham 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 1201E27BC49 for ; Thu, 22 May 2025 12:35:37 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uI4CX-0000Kt-HA; Thu, 22 May 2025 07:35: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 1uI4CU-0000Hl-HM for guix-patches@gnu.org; Thu, 22 May 2025 07:35:02 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uI4CT-0008R3-TT for guix-patches@gnu.org; Thu, 22 May 2025 07:35:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:From:To:In-Reply-To:References:Subject; bh=l3C+IZf0CVAKvJf4kiqt9zhNQm7d+tGEkSKdfF5MPHw=; b=F6y0uv28QxC055tGy7fCLBJGEPKA7rt6ZKROYBCnLeHUEdoPCxXnx/m+x1N7rKWob84854RoVvN6WyU857FtGOmdRGdmhqfRYkfzdQrVz96cX4gWTA91SYMuK0zuvm/KEeorBtuk+wH0llmUtjK7Q8pXvy57QGg9s8GFZMH4c+Gc7MXflRi5sY/MdbcbnQkr8d6vJwUlrZFiOj+wwjuSpjiRGh3ANY3SotTaO+bba9Bdlq9nPcVovpe9l/ihExwNlUC9hUE6HRUCDMA1HvK6zARf/qGkYd7EjVt/2VEeJKI5ZMaGNZ4BmTne/ZTxkHbRUYf8nMclXB5RfVuV5nNEwg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uI4CT-0006Oo-NA for guix-patches@gnu.org; Thu, 22 May 2025 07:35:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78546] [PATCH 1/3] services: configuration: Add define-enumerated-field-type helper. References: In-Reply-To: Resent-From: Sergey Trofimov Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 22 May 2025 11:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78546 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78546@debbugs.gnu.org Cc: Sergey Trofimov Received: via spool by 78546-submit@debbugs.gnu.org id=B78546.174791368524506 (code B ref 78546); Thu, 22 May 2025 11:35:01 +0000 Received: (at 78546) by debbugs.gnu.org; 22 May 2025 11:34:45 +0000 Received: from localhost ([127.0.0.1]:32817 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uI4CC-0006N9-Na for submit@debbugs.gnu.org; Thu, 22 May 2025 07:34:45 -0400 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]:42415) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uI4C6-0006Lr-It for 78546@debbugs.gnu.org; Thu, 22 May 2025 07:34:40 -0400 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-acacb8743a7so1345764666b.1 for <78546@debbugs.gnu.org>; Thu, 22 May 2025 04:34:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sarg.org.ru; s=google; t=1747913671; x=1748518471; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=l3C+IZf0CVAKvJf4kiqt9zhNQm7d+tGEkSKdfF5MPHw=; b=o+PAF3yEy0/Vvkd6EIX3P3qhAxSjZcQjxWFNs3bea1rt4Innv8qsz7msE0nR+A/CER zTevfACjKotMroAhEvi4OhbC7m7sV6PqwPJvixySGai2wLPB/rioNHFIJzqaZTJ76oss F/IvhVF9jDpAFDmup81JiDJP8sIF12hQ19AOo1kRENZQ1Amz1uwO1vgFU3Idji7EO8eU rQpdWMlpF808x8AkmTfwUSOy4F+z6Z6pGe8l4tKuy34QMx3Fak2jY1Avj+7VGBthQy36 f0tKNOlD1OvYHoXL7LW8vUZg5AhMU6kIhtdSKgGJM79ZSOPTLJ2Vw2vwQ95FFdVa0asy NzdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747913671; x=1748518471; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=l3C+IZf0CVAKvJf4kiqt9zhNQm7d+tGEkSKdfF5MPHw=; b=lO5xa4qxXqIytFnGznaB0PYhzTOHcFVPME1M3alU/IrYdujdEdrTB88oEA9XPPQ4x8 nhLU0y8xW39U8qzpmXZrA7ffB3p077hBcoO0q07eBsC0+eGc7ngkJpK6OBUYKtsYJw2O NEJAr0DNqzgLe79RHmZ+ghFSAg2YhXPD8o3HVm1NkP1QE73U1lQnOqwJOIUJg9+sWeYD Vs6/CJ580Ax7QvtsvFufCVyRNJhoj1l0wUzp91FwMc7cIfalEqfGociq5QN/dEzEv1Uv 07qsMZ4qQ/zFFZPg1IqfQtFp/YrXOfvnjorDOuzGUxdm5xrwMxUkvwsoaymrJK76xxLf UGqQ== X-Gm-Message-State: AOJu0Yx4fDRkFqEU9Yf9OZIvTs0BCDzOjHFolnz0SNQnhsQBT3LthrFr aNVAneT190tnaxgqusY4tn6bwV2SP0bUeZiGeOjKQp49TaTAKaVj4Sk8kUezpweVPwanahwYfke 78wMwZ8s= X-Gm-Gg: ASbGncsD1vj7EUKsTmZT0fsNKrFuPzCGdJly9HpHSkVeI1W0CGITE5WGR0MI9Dg+sTh o9EurqyUAxqrKwJeFQmgUwCwy347FAz50JAk8KWBHASH2C5LXQavmpJOBZqVy/A7iprHdBpSXD5 l2gfS7wV9ZcmOaR80YyFiNR84HCURCawpqmR6yNdek31aZVSwwpaDg9JC6z1ftCVd/ZO3ItV5BI Wrnw+O++Sy23zLPMOruHvyzPSpeyJUAPcC0Ri2DT6f3QsQdLxqhkfuyv3V+Go64eXORxYUH714u /0RUeVkfBTfZyT4StK3tQ7nevgyc7Fu+Bz82gaFQ+7dXItwKhw== X-Google-Smtp-Source: AGHT+IGnplal5eqvjx3Tam6HtQMIjLf6Oqo2byVriKQT9LkFSnxJCI3DRw0o2c7F1r34uayR7wW71w== X-Received: by 2002:a17:907:60d2:b0:ad5:54ec:6b3c with SMTP id a640c23a62f3a-ad554ec711bmr1759108166b.27.1747913670680; Thu, 22 May 2025 04:34:30 -0700 (PDT) Received: from localhost ([2a02:2454:a095:5600:a6fe:ab0a:f6f7:9028]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad52d49afb8sm1064307566b.152.2025.05.22.04.34.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 May 2025 04:34:30 -0700 (PDT) From: Sergey Trofimov Date: Thu, 22 May 2025 13:32:55 +0200 Message-ID: X-Mailer: git-send-email 2.49.0 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 * gnu/services/cups.scm (define-enumerated-field-type): Move... * gnu/services/configuration.scm (define-enumerated-field-type): ...here. * gnu/services/vpn.scm (define-enumerated-field-type): Remove. * gnu/services/power.scm (define-enum): Replace with define-enumerated-field-type. Change-Id: I89ec40f479e3f800268e714f1f88d638be017c7e --- gnu/services/configuration.scm | 13 ++++++++++ gnu/services/cups.scm | 12 --------- gnu/services/power.scm | 45 +++++++++++----------------------- gnu/services/vpn.scm | 12 --------- 4 files changed, 27 insertions(+), 55 deletions(-) base-commit: ed83953921cd3a2abb09c1709399053c092215a2 prerequisite-patch-id: f9cc903b8048c8c6fde576fbf38ab110263020e3 prerequisite-patch-id: b6d30068ce4971d4d8e67517229916df4e76c529 prerequisite-patch-id: c99e71b3eaa726b8ecf2d9b782d5a6a51476e702 prerequisite-patch-id: 08fa3e98a432063db118aa1502c6bd0166415bdd prerequisite-patch-id: 95bb686bc7dc0961b89a2900a368f270de065d94 prerequisite-patch-id: f56033bf148a2fdfb5d9321315bdff877ebdb7ba prerequisite-patch-id: 6d43f84387c6ec611389d6f16c1809cc28a29365 prerequisite-patch-id: 73fabf1570be45886923df86ca4c66e4330c3752 prerequisite-patch-id: 2ed8951b99f17bac7694d7e2c3ed0440e650b0c1 prerequisite-patch-id: 09df1d4083ee7abc4f2f346f8576be31db4d193d prerequisite-patch-id: bace844ae66e50873074acf659ea8fc33796ac73 prerequisite-patch-id: 58f741d217a355489de150faf91cfa5e111d21b5 prerequisite-patch-id: f7817220252740d4dd3433fa2f689f261b82ae6c prerequisite-patch-id: 8d312fa060e7f6a2b1d58d40c4ff6dc9f1a529a1 prerequisite-patch-id: 38a9fa9641ee1ec252c7068e1b5f9c1ac3a3281c prerequisite-patch-id: 500be64418ed5e4994de42cfd99b6c8f15498f9d diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm index 15eddd7665..659a25f352 100644 --- a/gnu/services/configuration.scm +++ b/gnu/services/configuration.scm @@ -75,6 +75,7 @@ (define-module (gnu services configuration) configuration->documentation empty-serializer serialize-package + define-enumerated-field-type filter-configuration-fields @@ -508,6 +509,18 @@ (define* (interpose ls #:optional (delimiter "\n") (grammar 'infix)) (cons delimiter acc)))) '() ls)) +(define-syntax define-enumerated-field-type + (lambda (x) + (define (id-append ctx . parts) + (datum->syntax ctx (apply symbol-append (map syntax->datum parts)))) + (syntax-case x () + ((_ name (option ...)) + #`(begin + (define (#,(id-append #'name #'name #'?) x) + (memq x '(option ...))) + (define (#,(id-append #'name #'serialize- #'name) field-name val) + (serialize-field field-name val))))))) + ;;; ;;; Commonly used predicates diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm index 738bb7f5cc..27aac7a16a 100644 --- a/gnu/services/cups.scm +++ b/gnu/services/cups.scm @@ -137,18 +137,6 @@ (define (non-negative-integer? val) (define (serialize-non-negative-integer field-name val) (serialize-field field-name val)) -(define-syntax define-enumerated-field-type - (lambda (x) - (define (id-append ctx . parts) - (datum->syntax ctx (apply symbol-append (map syntax->datum parts)))) - (syntax-case x () - ((_ name (option ...)) - #`(begin - (define (#,(id-append #'name #'name #'?) x) - (memq x '(option ...))) - (define (#,(id-append #'name #'serialize- #'name) field-name val) - (serialize-field field-name val))))))) - (define-enumerated-field-type access-log-level (config actions all)) (define-enumerated-field-type browse-local-protocols diff --git a/gnu/services/power.scm b/gnu/services/power.scm index ec8ae555d4..ad386549cd 100644 --- a/gnu/services/power.scm +++ b/gnu/services/power.scm @@ -204,23 +204,6 @@ (define-configuration/no-serialization apcupsd-event-handlers #~(#t)) "The handler for the battattach event.")) -(define-syntax define-enum - (lambda (x) - (syntax-case x () - ((_ name values) - (let* ((datum/name (syntax->datum #'name)) - (datum/predicate (string->symbol - (format #f "enum-~a?" datum/name))) - (datum/serialize (string->symbol - (format #f "serialize-enum-~a" datum/name)))) - (with-syntax - ((predicate (datum->syntax x datum/predicate)) - (serialize (datum->syntax x datum/serialize))) - #'(begin - (define (predicate value) - (memq value values)) - (define serialize serialize-symbol)))))))) - (define mangle-field-name (match-lambda ('name "UPSNAME") @@ -252,25 +235,25 @@ (define mangle-field-name ('data-time "DATATIME") ('facility "FACILITY"))) -(define (serialize-string field-name value) +(define (serialize-field field-name value) #~(format #f "~a ~a\n" #$(mangle-field-name field-name) '#$value)) -(define serialize-symbol serialize-string) -(define serialize-integer serialize-string) +(define serialize-string serialize-field) +(define serialize-symbol serialize-field) +(define serialize-integer serialize-field) (define (serialize-boolean field-name value) - #~(format #f "~a ~a\n" - #$(mangle-field-name field-name) - #$(if value "on" "off"))) + (serialize-field field-name (if value "on" "off"))) (define-maybe string) -(define-enum cable '( simple smart ether usb - 940-0119A 940-0127A 940-0128A 940-0020B 940-0020C - 940-0023A 940-0024B 940-0024C 940-1524C 940-0024G - 940-0095A 940-0095B 940-0095C 940-0625A MAM-04-02-2000)) -(define-enum type '(apcsmart usb net snmp netsnmp dumb pcnet modbus test)) -(define-enum no-logon '(disable timeout percent minutes always)) -(define-enum class '(standalone shareslave sharemaster)) -(define-enum mode '(disable share)) +(define-enumerated-field-type enum-cable + ( simple smart ether usb + 940-0119A 940-0127A 940-0128A 940-0020B 940-0020C + 940-0023A 940-0024B 940-0024C 940-1524C 940-0024G + 940-0095A 940-0095B 940-0095C 940-0625A MAM-04-02-2000)) +(define-enumerated-field-type enum-type (apcsmart usb net snmp netsnmp dumb pcnet modbus test)) +(define-enumerated-field-type enum-no-logon (disable timeout percent minutes always)) +(define-enumerated-field-type enum-class (standalone shareslave sharemaster)) +(define-enumerated-field-type enum-mode (disable share)) (define-configuration apcupsd-configuration (apcupsd (package apcupsd) "The @code{apcupsd} package to use.") diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm index f97cbac7bb..56022ac27a 100644 --- a/gnu/services/vpn.scm +++ b/gnu/services/vpn.scm @@ -141,18 +141,6 @@ (define (ip-mask? val) #f))) (define serialize-ip-mask serialize-string) -(define-syntax define-enumerated-field-type - (lambda (x) - (define (id-append ctx . parts) - (datum->syntax ctx (apply symbol-append (map syntax->datum parts)))) - (syntax-case x () - ((_ name (option ...)) - #`(begin - (define (#,(id-append #'name #'name #'?) x) - (memq x '(option ...))) - (define (#,(id-append #'name #'serialize- #'name) field-name val) - (serialize-field field-name val))))))) - (define-enumerated-field-type proto (udp tcp udp6 tcp6)) (define-enumerated-field-type dev