[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#37388: <nginx-configuration> can lead to syntactically invalid confi
From: |
Ludovic Courtès |
Subject: |
bug#37388: <nginx-configuration> can lead to syntactically invalid configs |
Date: |
Sat, 14 Sep 2019 14:26:27 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Hi,
Christopher Baines <address@hidden> skribis:
> Ludovic Courtès <address@hidden> writes:
>
>> It’s nice that we have <nginx-configuration> but I noticed that, unlike
>> most or all other configuration records that we have, it’s possible to
>> create an <nginx-configuration> record that leads to a syntactically
>> invalid nginx config file.
>>
>> For example, if you have a location block like this:
>>
>> (nginx-location-configuration
>> (uri "/manual/")
>> (body (list "alias /srv/guix-manual")))
>>
>> Guix will silently create an invalid nginx config file, which you’ll
>> only notice once you’ve reconfigured and nginx fails to start.
>
> I wonder if some errors could be caught at build time, before attempting
> to start the service.
>
> If in the derivation to build the configuration file, nginx is run
> against the built config file with -t, that might spot errors at
> derivation build time.
Yeah, this is probably doable.
I would consider it a stop-gap measure though. Fundamentally, I think
we should make it so that, by construction, invalid (or at least
syntactically-invalid) config files cannot be produced.
> An sexp representation sounds good, although I think records will work
> out better for the common and high level parts.
The way I see it, sexps and records could be almost indistinguishable
provided some appropriate macrology. But sexps are definitely easier to
implement.
Thanks,
Ludo’.