[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#27855] [PATCH] gnu: Add rsync service.
From: |
Christopher Baines |
Subject: |
[bug#27855] [PATCH] gnu: Add rsync service. |
Date: |
Thu, 3 Aug 2017 16:33:22 +0100 |
On Thu, 03 Aug 2017 18:20:31 +0300
Oleg Pykhalov <address@hidden> wrote:
> Hello Christopher,
>
> Christopher Baines <address@hidden> writes:
>
> > On Sat, 29 Jul 2017 14:03:49 +0300
> > Oleg Pykhalov <address@hidden> wrote:
> >
> >> >> address@hidden {Scheme Variable} rsync-service-type
> >> >> +This is the type for the @uref{https://rsync.samba.org} rsync
> >> >> daemon, address@hidden record as in this
> >> >> example: +
> >> >> address@hidden
> >> >> +(service rsync-service-type
> >> >> + (rsync-configuration))
> >> >> address@hidden example
> >> >> +
> >> >> +See below for details about @code{rsync-configuration}.
> >> >> address@hidden deffn
> >> >> +
> >> >> address@hidden {Data Type} rsync-configuration
> >> >> +Data type representing the configuration for
> >> >> @code{rsync-service}. +
> >> >> address@hidden @asis
> >> >> address@hidden @code{package} (default: @var{rsync})
> >> >> +Package object of the Rsync utility for efficiently
> >> >> transferring and +synchronizing files.
> >> >
> >> > Object doesn't really fit here, if anything its a record. Also, I
> >> > don't think this needs a description of what rsync does, it's
> >> > probably clearest to just say that this is the rsync package?
> >>
> >> OK, is it good?
> >>
> >> @code{rsync} package to use.
> >
> > Yep, in my opinion, that is the right amount of information.
> >
> >> >> +(define (rsync-config-file config)
> >> >> + "Return the rsync configuration file corresponding to
> >> >> CONFIG."
> >> >> + (computed-file
> >> >> + "rsync.conf"
> >> >> + #~(begin
> >> >> + (call-with-output-file #$output
> >> >> + (lambda (port)
> >> >> + (display "# Generated by 'rsync-service'.\n" port)
> >> >> + (format port "pid file = ~a\n"
> >> >> + #$(rsync-configuration-pid-file config))
> >> >> + (format port "lock file = ~a\n"
> >> >> + #$(rsync-configuration-lock-file config))
> >> >> + (format port "log file = ~a\n"
> >> >> + #$(rsync-configuration-log-file config))
> >> >> + (format port "port = ~a\n"
> >> >> + #$(number->string
> >> >> + (rsync-configuration-port-number
> >> >> config)))
> >> >> + (format port "use chroot = ~a\n"
> >> >> + #$(if (rsync-configuration-use-chroot?
> >> >> config)
> >> >> + "true" "false"))
> >> >> + (display "[files]\n" port)
> >> >> + (format port "path = ~a\n"
> >> >> + #$(rsync-configuration-share-path config))
> >> >> + (format port "comment = ~a\n"
> >> >> + #$(rsync-configuration-share-comment
> >> >> config))
> >> >> + (format port "read only = ~a\n"
> >> >> + #$(if (rsync-configuration-read-only?
> >> >> config)
> >> >> + "true" "false"))
> >> >> + (format port "timeout = ~a\n"
> >> >> + #$(number->string
> >> >> + (rsync-configuration-timeout config)))
> >> >> + #t)))))
> >> >
> >> > It might be neater here to use mixed-text-file here. It might
> >> > look something like...
> >> >
> >> > (define (rsync-config-file config)
> >> > "Return the rsync configuration file corresponding to CONFIG."
> >> > (match config
> >> > (($ <rsync-configuration> package port-number pid-file
> >> > lock-file log-file use-chroot? share-path
> >> > share-comment read-only? timeout)
> >> > (mixed text-file "rsync.conf"
> >> > "# Generated by 'rsync-service'.\n"
> >> > "pid file = " pid-file "\n"
> >> > "lock file = " lock-file "\n"
> >> > "log file = " log-file "\n"
> >> > "port = " (number->string port-number) "\n"
> >> > "use chroot = " (if use-chroot? "true" "false") "\n"
> >> > "[files]\n"
> >> > "path = " share-path "\n"
> >> > "comment = " share-comment "\n"
> >> > "read only = " (if read-only? "true" "false") "\n"
> >> > "timeout = " (number->string timeout) "\n"))))
>
> OK, patched.
>
> >> > One thing I tried with the Tailon service, was to define a
> >> > gexp-compiler for the record type representing the configuration
> >> > file. One really big advantage in the case of Tailon is that it
> >> > easily allows the use of a custom file, just by providing a
> >> > different gexp.
> >>
> >> So, this way you could provide your existing Tailon config as a
> >> file in system declaration? Nice.
> >
> > Yep, I think something like the following should just work, but I
> > haven't tested it yet.
> >
> > (service tailon-service-type
> > (tailon-configuration
> > (config-file (local-file "../tailon.yml"))))
> >
> > I bring this up, as I think it is great if this is a feature of all
> > services, I'm having trouble though working out how you might do
> > that in this case, with the use of values in the activation service
> > extension. I can see complicated approaches, but nothing simple and
> > clear enough.
>
> I tried to apply your work in tailon service, but I have troubles as
> you described. So I just cleaned up code little bit.
Those changes are looking good :) Could you send the overall patch, as
that makes it easier at least for me to review and test?
pgp6N6qRUtYED.pgp
Description: OpenPGP digital signature
- [bug#27855] [PATCH] gnu: Add rsync service., Oleg Pykhalov, 2017/08/03
- [bug#27855] [PATCH] gnu: Add rsync service., Oleg Pykhalov, 2017/08/03
- [bug#27855] [PATCH] gnu: Add rsync service.,
Christopher Baines <=
- [bug#27855] [PATCH] gnu: Add rsync service., Oleg Pykhalov, 2017/08/03
- [bug#27855] [PATCH] gnu: Add rsync service., Oleg Pykhalov, 2017/08/03
- [bug#27855] [PATCH] gnu: Add rsync service., Christopher Baines, 2017/08/10
- [bug#27855] [PATCH] gnu: Add rsync service., Christopher Baines, 2017/08/10
- [bug#27855] [PATCH] gnu: Add rsync service., Oleg Pykhalov, 2017/08/10
- [bug#27855] [PATCH] gnu: Add rsync service., Oleg Pykhalov, 2017/08/11
- [bug#27855] [PATCH] gnu: Add rsync service., Christopher Baines, 2017/08/12
- [bug#27855] [PATCH] gnu: Add rsync service., Oleg Pykhalov, 2017/08/12
- [bug#27855] [PATCH] gnu: Add rsync service., Christopher Baines, 2017/08/12
- [bug#27855] [PATCH] gnu: Add rsync service., Oleg Pykhalov, 2017/08/12