From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:37452) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1inQrl-00077B-F1 for guix-patches@gnu.org; Fri, 03 Jan 2020 12:36:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1inQrk-0003Cj-3y for guix-patches@gnu.org; Fri, 03 Jan 2020 12:36:05 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:35438) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1inQrj-0003Ba-ST for guix-patches@gnu.org; Fri, 03 Jan 2020 12:36:03 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1inQrj-0008Gx-QG for guix-patches@gnu.org; Fri, 03 Jan 2020 12:36:03 -0500 Subject: [bug#38902] [PATCH 4/9] services: nfs: Allow pipefs-service-type to be extended. Resent-Message-ID: From: Ricardo Wurmus Message-ID: <20200103173506.9779-4-rekado@elephly.net> Date: Fri, 3 Jan 2020 18:35:01 +0100 In-Reply-To: <20200103173506.9779-1-rekado@elephly.net> References: <20200103173506.9779-1-rekado@elephly.net> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf8 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 38902@debbugs.gnu.org Cc: Ricardo Wurmus * gnu/services/nfs.scm (pipefs-service-type): Rewrite using SERVICE-TYPE to add ability to extend the service. --- gnu/services/nfs.scm | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/gnu/services/nfs.scm b/gnu/services/nfs.scm index 0681e764ec..1b5dcb0e97 100644 --- a/gnu/services/nfs.scm +++ b/gnu/services/nfs.scm @@ -24,6 +24,7 @@ #:use-module (gnu packages linux) #:use-module (guix) #:use-module (guix records) + #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:use-module (gnu build file-systems) #:export (rpcbind-service-type @@ -96,23 +97,33 @@ (default default-pipefs-directory))) =20 (define pipefs-service-type - (shepherd-service-type - 'pipefs - (lambda (config) - (define pipefs-directory (pipefs-configuration-mount-point config)) + (let ((proc + (lambda (config) + (define pipefs-directory (pipefs-configuration-mount-point conf= ig)) =20 - (shepherd-service - (documentation "Mount the pipefs pseudo file system.") - (provision '(rpc-pipefs)) + (shepherd-service + (documentation "Mount the pipefs pseudo file system.") + (provision '(rpc-pipefs)) =20 - (start #~(lambda () - (mkdir-p #$pipefs-directory) - (mount "rpc_pipefs" #$pipefs-directory "rpc_pipefs") - (member #$pipefs-directory (mount-points)))) + (start #~(lambda () + (mkdir-p #$pipefs-directory) + (mount "rpc_pipefs" #$pipefs-directory "rpc_pipefs"= ) + (member #$pipefs-directory (mount-points)))) =20 - (stop #~(lambda (pid . args) - (umount #$pipefs-directory MNT_DETACH) - (not (member #$pipefs-directory (mount-points))))))))) + (stop #~(lambda (pid . args) + (umount #$pipefs-directory MNT_DETACH) + (not (member #$pipefs-directory (mount-points)))))))= )) + (service-type + (name 'pipefs) + (extensions + (list (service-extension shepherd-root-service-type + (compose list proc)))) + ;; We use the extensions feature to allow other services to automatic= ally + ;; configure and start this service. Only one value can be provided.= We + ;; override it with the value returned by the extending service. + (compose identity) + (extend (lambda (config values) (first values))) + (default-value (pipefs-configuration))))) =20 =0C =20 --=20 2.24.1