From: ludo@gnu.org (Ludovic Courtès)
To: "Clément Lassieur" <clement@lassieur.org>
Cc: 30657@debbugs.gnu.org
Subject: [bug#30657] [PATCH] services: messaging: Prosody config supports file-like objects.
Date: Sat, 03 Mar 2018 15:27:52 +0100 [thread overview]
Message-ID: <87k1utb5ef.fsf@gnu.org> (raw)
In-Reply-To: <871sh1mljz.fsf@lassieur.org> ("Clément Lassieur"'s message of "Sat, 03 Mar 2018 12:43:28 +0100")
Hi!
Clément Lassieur <clement@lassieur.org> skribis:
> Clément Lassieur <clement@lassieur.org> writes:
>
>> (define (serialize-field field-name val)
>> - (format #t "~a = ~a;\n" (uglify-field-name field-name) val))
>> + #~(string-append
>> + #$(format #f "~a = " (uglify-field-name field-name)) #$val ";\n"))
>
> #~(format #f "~a = ~a;\n" #$(uglify-field-name field-name) #$val))
>
>> (define (serialize-field-list field-name val)
>> (serialize-field field-name
>> - (with-output-to-string
>> - (lambda ()
>> - (format #t "{\n")
>> - (for-each (lambda (x)
>> - (format #t "~a;\n" x))
>> - val)
>> - (format #t "}")))))
>> + #~(string-append
>> + "{\n"
>> + #$@(map (lambda (x)
>> + #~(string-append #$x ";\n"))
>> + val)
>> + "}")))
>
> (ice-9 format) can do miracles ;-)
>
> (serialize-field field-name #~(format #f "{\n~@{~a;\n~}}" #$@val)))
Indeed, though you need to make sure (ice-9 format) is in scope on the
build side (the default ‘format’, aka. ‘simple-format’, doesn’t support
anything beyond ~a, ~s, and ~%).
>> (define (enclose-quotes s)
>> - (format #f "\"~a\"" s))
>> + #~(string-append "\"" #$s "\""))
>
> #~(format #f "\"~a\"" #$s))
It’s a case where I prefer ‘string-append’ because is ensures that
everything is a string and reports a type error if not. Conversely,
(format #f "~a" …) will silently convert anything to a string, which may
not be what you want.
> (with-imported-modules '((ice-9 format))
This would import (ice-9 format) from the host Guile into the build
environment. Thus, if you build your system with Guix on Guile 2.2.2
and I build mine on Guile 2.0.14, we end up with different derivations,
which is not desirable.
Instead, what you need is this:
> #~(begin
> (use-modules (ice-9 format))
That puts (ice-9 format) in scope, which is all you need. It’s the
(ice-9 format) of the build-side Guile that’s used.
Thanks,
Ludo’.
next prev parent reply other threads:[~2018-03-03 14:28 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-28 22:25 [bug#30657] Add support for file-like objects to the Prosody configuration Clément Lassieur
2018-02-28 22:28 ` [bug#30657] [PATCH 1/4] services: utils: Add 'push-tokens' and 'with-tokens-to-list' Clément Lassieur
2018-02-28 22:28 ` [bug#30657] [PATCH 2/4] gexp: Add 'file-like?' Clément Lassieur
2018-03-02 16:51 ` Ludovic Courtès
2018-03-03 1:44 ` Clément Lassieur
2018-03-03 14:38 ` Ludovic Courtès
2018-02-28 22:28 ` [bug#30657] [PATCH 3/4] services: utils: move 'flatten' from (gnu services web) Clément Lassieur
2018-02-28 22:28 ` [bug#30657] [PATCH 4/4] services: messaging: Prosody config supports file-like objects Clément Lassieur
2018-03-02 17:00 ` [bug#30657] Add support for file-like objects to the Prosody configuration Ludovic Courtès
2018-03-03 1:33 ` [bug#30657] [PATCH] services: messaging: Prosody config supports file-like objects Clément Lassieur
2018-03-03 11:43 ` Clément Lassieur
2018-03-03 14:27 ` Ludovic Courtès [this message]
2018-03-03 14:37 ` Ludovic Courtès
2018-03-03 17:38 ` bug#30657: " Clément Lassieur
2018-03-03 1:40 ` [bug#30657] Add support for file-like objects to the Prosody configuration Clément Lassieur
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87k1utb5ef.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=30657@debbugs.gnu.org \
--cc=clement@lassieur.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.