[PATCH] scripts: Emit GC hint if free space is lower than absolute and relative threshold.

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Pierre Neidhardt
Owner
unassigned
Submitted by
Pierre Neidhardt
Severity
normal
P
P
Pierre Neidhardt wrote on 22 Feb 2020 11:46
(address . guix-patches@gnu.org)
20200222104653.1324-1-mail@ambrevar.xyz
* guix/scripts.scm (%disk-space-warning-absolute): New variable.
(warn-about-disk-space): Test against %disk-space-warning-absolute.
Fix error in display-hint due to extraneous 'profile' argument.
---
guix/scripts.scm | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)

Toggle diff (49 lines)
diff --git a/guix/scripts.scm b/guix/scripts.scm
index 77cbf12350..f8cce3a542 100644
--- a/guix/scripts.scm
+++ b/guix/scripts.scm
@@ -188,25 +188,35 @@ Show what and how will/would be built."
(#f .05) ;5%
(threshold (/ threshold 100.)))))
+(define %disk-space-warning-absolute
+ ;; The decimal number of GiB of free disk space below which a warning is
+ ;; emitted.
+ (make-parameter (match (and=> (getenv "GUIX_DISK_SPACE_WARNING_ABSOLUTE")
+ string->number)
+ (#f 17.0)
+ (threshold threshold))))
+
(define* (warn-about-disk-space #:optional profile
#:key
- (threshold (%disk-space-warning)))
+ (relative-threshold (%disk-space-warning))
+ (absolute-threshold (%disk-space-warning-absolute)))
"Display a hint about 'guix gc' if less than THRESHOLD of /gnu/store is
available."
(let* ((stats (statfs (%store-prefix)))
(block-size (file-system-block-size stats))
(available (* block-size (file-system-blocks-available stats)))
(total (* block-size (file-system-block-count stats)))
- (ratio (/ available total 1.)))
- (when (< ratio threshold)
- (warning (G_ "only ~,1f% of free space available on ~a~%")
- (* ratio 100) (%store-prefix))
+ (relative-threshold-in-bytes (* total relative-threshold))
+ (absolute-threshold-in-bytes (* 1024 1024 1024 absolute-threshold)))
+ (when (< available (min relative-threshold-in-bytes
+ absolute-threshold-in-bytes))
+ (warning (G_ "only ~,1f GiB of free space available on ~a~%")
+ available (%store-prefix))
(display-hint (format #f (G_ "Consider deleting old profile
generations and collecting garbage, along these lines:
@example
guix gc --delete-generations=1m
-@end example\n")
- profile)))))
+@end example\n"))))))
;;; scripts.scm ends here
--
2.25.0
L
L
Ludovic Courtès wrote on 22 Feb 2020 12:12
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734@debbugs.gnu.org)
874kvizxi6.fsf@gnu.org
Hi!

Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (4 lines)
> * guix/scripts.scm (%disk-space-warning-absolute): New variable.
> (warn-about-disk-space): Test against %disk-space-warning-absolute.
> Fix error in display-hint due to extraneous 'profile' argument.

[...]

Toggle quote (8 lines)
> +(define %disk-space-warning-absolute
> + ;; The decimal number of GiB of free disk space below which a warning is
> + ;; emitted.
> + (make-parameter (match (and=> (getenv "GUIX_DISK_SPACE_WARNING_ABSOLUTE")
> + string->number)
> + (#f 17.0)
> + (threshold threshold))))

Perhaps we should arrange for ‘GUIX_DISK_SPACE_WARNING’ to handle both
cases?

That is, we’d first try to convert it with ‘size->number’; if that
works, it’s an absolute measure, and if it returns #f, then pass the
string to ‘string->number’ and assume it’s a fraction.

Does that make sense?

Toggle quote (2 lines)
> + (absolute-threshold-in-bytes (* 1024 1024 1024 absolute-threshold)))

Always use bytes internally; that is, convert to bytes at the UI border.

Thanks,
Ludo’.
P
P
Pierre Neidhardt wrote on 22 Feb 2020 12:39
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87tv3ig8bc.fsf@ambrevar.xyz
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (25 lines)
> Hi!
>
> Pierre Neidhardt <mail@ambrevar.xyz> skribis:
>
>> * guix/scripts.scm (%disk-space-warning-absolute): New variable.
>> (warn-about-disk-space): Test against %disk-space-warning-absolute.
>> Fix error in display-hint due to extraneous 'profile' argument.
>
> [...]
>
>> +(define %disk-space-warning-absolute
>> + ;; The decimal number of GiB of free disk space below which a warning is
>> + ;; emitted.
>> + (make-parameter (match (and=> (getenv "GUIX_DISK_SPACE_WARNING_ABSOLUTE")
>> + string->number)
>> + (#f 17.0)
>> + (threshold threshold))))
>
> Perhaps we should arrange for ‘GUIX_DISK_SPACE_WARNING’ to handle both
> cases?
>
> That is, we’d first try to convert it with ‘size->number’; if that
> works, it’s an absolute measure, and if it returns #f, then pass the
> string to ‘string->number’ and assume it’s a fraction.

I thought of something similar too, but this needs discussion:

- If we change the meaning of a value like "1", we are breaking backward compatibility.

- GUIX_DISK_SPACE_WARNING is currently undocumented, so I guess it's OK
to break backward compatibility. However, it'd be nice to document it :)

- Currently (size->number "1.MiB") "leaves" the Guile instance on error. Which
I find quite weird, I'd expect it to return #f when it cannot parse
the input.

- Currently (size->number "0.8") returns 1. If we want to use your
suggestion, we would need to change the behaviour so that it returns
#f.

- Alternatively, since we are breaking backward compatibility anyways,
we could parse a trailing percent sign "%" to decide whether the value
is relative or absolute.

Anyways, the issue was originally about dealing with both small and big
partitions, and for this we need both a default absolute threshold and a
default relative threshold. Does that make sense?

Toggle quote (4 lines)
>> + (absolute-threshold-in-bytes (* 1024 1024 1024 absolute-threshold)))
>
> Always use bytes internally; that is, convert to bytes at the UI border.

What do you mean?

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5REucACgkQm9z0l6S7
zH8+UAf/XVDObcYFPWaGbkTYJ+0CLw4Jh6yUC3REG1pAphVz6zVRTC3EN24kA2Zz
vVmLojFxklEaYaoK3WcHGROcxoM1MXKeXYWF/ZUF5ObbemRCrJrQzruMFdRYClfK
XhFgGaR0sdEkR5od0u/j7XaipCm1qrSgcAKohsSngCxCIfamn3fr4eHJ1tVWmH0y
X0RA2oPairrewN1sT/T/7QL0cjO5Mo9smrXSxRwM+HGWyysbSvQPdXKwDqbvHqlM
Z/Ty2+XbqX9dmzch1bCn95pYM1W3lqs8Xkhiyg1D/SQd8p8qWpYw/ep4B0DZOgWp
j/81PqkScdM7zl/A1q7s/DwOgadpSg==
=Gfjh
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 23 Feb 2020 12:46
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734@debbugs.gnu.org)
87h7zhttk1.fsf@gnu.org
Hello!

Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (31 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> Hi!
>>
>> Pierre Neidhardt <mail@ambrevar.xyz> skribis:
>>
>>> * guix/scripts.scm (%disk-space-warning-absolute): New variable.
>>> (warn-about-disk-space): Test against %disk-space-warning-absolute.
>>> Fix error in display-hint due to extraneous 'profile' argument.
>>
>> [...]
>>
>>> +(define %disk-space-warning-absolute
>>> + ;; The decimal number of GiB of free disk space below which a warning is
>>> + ;; emitted.
>>> + (make-parameter (match (and=> (getenv "GUIX_DISK_SPACE_WARNING_ABSOLUTE")
>>> + string->number)
>>> + (#f 17.0)
>>> + (threshold threshold))))
>>
>> Perhaps we should arrange for ‘GUIX_DISK_SPACE_WARNING’ to handle both
>> cases?
>>
>> That is, we’d first try to convert it with ‘size->number’; if that
>> works, it’s an absolute measure, and if it returns #f, then pass the
>> string to ‘string->number’ and assume it’s a fraction.
>
> I thought of something similar too, but this needs discussion:
>
> - If we change the meaning of a value like "1", we are breaking backward compatibility.

We can assume values <= 100 are a percentage.

Toggle quote (3 lines)
> - GUIX_DISK_SPACE_WARNING is currently undocumented, so I guess it's OK
> to break backward compatibility. However, it'd be nice to document it :)

Yup.

Toggle quote (4 lines)
> - Currently (size->number "1.MiB") "leaves" the Guile instance on error. Which
> I find quite weird, I'd expect it to return #f when it cannot parse
> the input.

Fixed.

Toggle quote (4 lines)
> - Currently (size->number "0.8") returns 1. If we want to use your
> suggestion, we would need to change the behaviour so that it returns
> #f.

Hmm.

Toggle quote (4 lines)
> - Alternatively, since we are breaking backward compatibility anyways,
> we could parse a trailing percent sign "%" to decide whether the value
> is relative or absolute.

Right.

Toggle quote (4 lines)
> Anyways, the issue was originally about dealing with both small and big
> partitions, and for this we need both a default absolute threshold and a
> default relative threshold. Does that make sense?

It does!

So how about this:

We check for a trailing “%”, and if there’s one, assume it’s a percentage.

Else, call ‘size->number’. If we get an integer < 100, assume it’s a
percentage, otherwise assume it’s an absolute size in bytes.

How does that sound?

Thanks!

Ludo’.
P
P
Pierre Neidhardt wrote on 23 Feb 2020 12:49
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
874kvhfrqk.fsf@ambrevar.xyz
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (9 lines)
> So how about this:
>
> We check for a trailing “%”, and if there’s one, assume it’s a percentage.
>
> Else, call ‘size->number’. If we get an integer < 100, assume it’s a
> percentage, otherwise assume it’s an absolute size in bytes.
>
> How does that sound?

I think there is a misunderstanding. If we have only _one_ threshold,
there is no way to set sane defaults for both big and small partitions.

Or were you thinking of something else?

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5SZtMACgkQm9z0l6S7
zH/tHggAmtJrRISTPiPRTlPVI03I7sOlwrVshgVo9hINcy/B6LFiZ/ip1fTnGGMC
4bTatg1a/Tkwqbsmx3yn2K0HkGVE/+NW8RAqi50zmDHd0fyBcVLxp93D+Y05mT8x
b4QUDfwg7kDaSjOsl+CAPnIWHdb0YIgYw6m2rMIVPJP7U6sXonsaqj4KI2LDUJFd
LEONYYxrbDWb01sDzlpEE5ES/1KYnAZvYiqDfItZ1Vp9mqDSkE4FE174r7VIjSwZ
VdvCcMVdR7S6Ro1cRe9zG0WoeAiuRprHA/QOglMsh/+AJ06ZWrJ9JYAJg0bQ9Dxu
DTfEKzqBlFripIBz16JxSZOakXZzZg==
=JiQw
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 23 Feb 2020 15:34
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734@debbugs.gnu.org)
875zfxtlrk.fsf@gnu.org
Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (14 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> So how about this:
>>
>> We check for a trailing “%”, and if there’s one, assume it’s a percentage.
>>
>> Else, call ‘size->number’. If we get an integer < 100, assume it’s a
>> percentage, otherwise assume it’s an absolute size in bytes.
>>
>> How does that sound?
>
> I think there is a misunderstanding. If we have only _one_ threshold,
> there is no way to set sane defaults for both big and small partitions.

Oh, I must have misunderstood.

You mean you’d want to be able to set both an absolute threshold and a
relative threshold? (Why “big and small” actually?)

Why not, but it seems to me we might be going overboard for something
that’s just meant as a hint to help people learn about ‘guix gc’. :-)

Ludo’.
P
P
Pierre Neidhardt wrote on 23 Feb 2020 15:41
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87pne5e581.fsf@ambrevar.xyz
See the original discussion:


Our users fall into 2 categories:

- Those with a "small" store partition, say 25 GiB.
- Those with a "big" store partition, say 1 TiB.

If we use a relative threshold, users with a big partition will get
a hint all the time. This may mislead newcomers into thinking that they
should run "guix gc" while they still have 50 GiB of free space.

If we use an absolute threshold, users with a small partition will get a
hint all the time.

In both cases, the hints becomes irrelevant if it's triggered for the
wrong reason.

The fix is to use both thresholds and to check against the lowest one.

Does that make more sense?

Cheers!

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5Sjw4ACgkQm9z0l6S7
zH/EXwf+IbtfLX8XEajP/VJVtT6CvbhavFyu10YFCvFNkYAA/gSullVT7vQil4zc
xF0YLuy3Lt3HWWk5HfEuFQuVHKRf5LdiRiJB23SwwFIZRd4cd0DtRdPVRgazhJ67
Ulo6sW5iHRBzayfs3H7FnCUgTWZaskoSVIiIL/83V1Ezbj7fISqKgYufeBdMJ5LB
kb+XBEN5pbFfsUMQyDbUxpToeswhJsyCw7aVGEnsF21jc6QB/W1cex6U0pvdPHMe
cIDAhQdVcpMLXhnmVvINFh585XXU6DZJF+hnIx1kTktdZIBrqB4VBbxkjq3qGehE
Y4E+tzRFAwHYWosz7/xkvcXT/8173Q==
=hiYv
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 23 Feb 2020 17:09
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734@debbugs.gnu.org)
87tv3hs2u0.fsf@gnu.org
Hi!

Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (4 lines)
> See the original discussion:
>
> https://lists.gnu.org/archive/html/guix-devel/2020-02/msg00303.html

Oops, I’m lagging behind and had not seen it yet, sorry about that!

Toggle quote (19 lines)
> Our users fall into 2 categories:
>
> - Those with a "small" store partition, say 25 GiB.
> - Those with a "big" store partition, say 1 TiB.
>
> If we use a relative threshold, users with a big partition will get
> a hint all the time. This may mislead newcomers into thinking that they
> should run "guix gc" while they still have 50 GiB of free space.
>
> If we use an absolute threshold, users with a small partition will get a
> hint all the time.
>
> In both cases, the hints becomes irrelevant if it's triggered for the
> wrong reason.
>
> The fix is to use both thresholds and to check against the lowest one.
>
> Does that make more sense?

It does, yes.

So back to the original patch… I think we should use ‘size->number’ for
the absolute threshold.

I’m also still mildly reluctant to the addition of
‘GUIX_DISK_SPACE_WARNING_ABSOLUTE’ (one more variable and a weird
name—“absolute warning”?). An option could be to allow
‘GUIX_DISK_SPACE_WARNING’ to optionally contain both thresholds. These
would be valid values:

1GiB;10%
15 ;15% relative, and default absolute
15% ;same
1G ;1G absolute, and default relative

Thus ‘%disk-space-warning’ would hold a pair.

Does that make sense?

Apologies for the misunderstanding!

Ludo’.
P
P
Pierre Neidhardt wrote on 23 Feb 2020 17:36
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87imjx45wk.fsf@ambrevar.xyz
Sounds good, I'll send a new patch as soon as possible! :)

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5SqhsACgkQm9z0l6S7
zH+cFgf7Bjuyrkqwvc+a7/kReuymdxQkM3kswYdAtzkn0+i+Hsm8Bf+k7Y7jpYje
o9G/lpmeFoN6su/61/8FTLmw6m56b3mgltG582PXDNy2hyIgyUMMxYFhNZoXCrwE
z52PIXnQkDF8WGfRGK/UFh6lysJOXWLE/HT7L7JkaNqccyn4vIt2iDnJoMr9Ufo9
n1r2Q96xzKCEFWm6NvUUOeDj3RaqwvfhDFtyO3jafVz9fhFm4GNqUk++l3tcAfBk
nklLDr2cdf8MtBUKEM3EK6+vD9NMhawzOsfxkqbhl3kvArYpB3YMtfCviKlIGMgv
la2q/ELkt0HWgZnyQz4uqp7HDrC6JA==
=4iRe
-----END PGP SIGNATURE-----

P
P
Pierre Neidhardt wrote on 23 Feb 2020 22:05
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87ftf1dnfj.fsf@ambrevar.xyz
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (14 lines)
> So back to the original patch… I think we should use ‘size->number’ for
> the absolute threshold.
>
> I’m also still mildly reluctant to the addition of
> ‘GUIX_DISK_SPACE_WARNING_ABSOLUTE’ (one more variable and a weird
> name—“absolute warning”?). An option could be to allow
> ‘GUIX_DISK_SPACE_WARNING’ to optionally contain both thresholds. These
> would be valid values:
>
> 1GiB;10%
> 15 ;15% relative, and default absolute
> 15% ;same
> 1G ;1G absolute, and default relative

The above logic implies that we test against size->number, and if it
fails then we set the relative threshold.

But a size->number quits Guile. Should we error out instead?

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5S6SAACgkQm9z0l6S7
zH9TOgf/aT0W2CaU7E6N3WzGEveBvAiQYvAsZKN1Yx6Dh2I2rphyIuCtTG7jxaYt
d1bw77vhspqkysyvXAtXU5mUsqCuwx547BoblBfeMeaNN2Kdh2p8MNsPW2eYcptW
+Cm57uv7MGHFoi5g/ZBWd17J9xuInOqeKbKJIVXIfvxbGqyEMAX5hbMYveRnnNfF
TlfRAQQn7f3lKSRNA1YRiDBPYcHskOpd7XLIMRGkmdvt/+vsJkn4fiC7FeczlutB
2ERanfO1W+uD0KHxOf16HwnEThqOGun0cWPwqjLrbNT+HkNnP5CQeUZse91dGnNq
v8GHNWqVrnO6PySPM0TIMRzrzN3E3g==
=HyVW
-----END PGP SIGNATURE-----

P
P
Pierre Neidhardt wrote on 23 Feb 2020 22:11
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87d0a5dn5b.fsf@ambrevar.xyz
Pierre Neidhardt <mail@ambrevar.xyz> writes:

Toggle quote (16 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> So back to the original patch… I think we should use ‘size->number’ for
>> the absolute threshold.
>>
>> I’m also still mildly reluctant to the addition of
>> ‘GUIX_DISK_SPACE_WARNING_ABSOLUTE’ (one more variable and a weird
>> name—“absolute warning”?). An option could be to allow
>> ‘GUIX_DISK_SPACE_WARNING’ to optionally contain both thresholds. These
>> would be valid values:
>>
>> 1GiB;10%
>> 15 ;15% relative, and default absolute
>> 15% ;same
>> 1G ;1G absolute, and default relative

Something else: in your example it's not logically possible to make out
if a raw number is relative or absolute.
So I suggest to break backward compatibility and do this:

1GiB;10%
15 ;15 absolute (15 bytes), and default relative
15% ;15% relative, and default absolute
1G ;1G absolute, and default relative

Thoughts?

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5S6pAACgkQm9z0l6S7
zH+eoQgAhHnH03SDixC8s78nFJLhWxUoaapKTDfW2gZDHmBc1lPB7Aoywynk92VV
QmI7tMbe3BcjpfB9TmWasosFd+tSBsnIwMmB0UfRxQ3uJTn4B6y/A1Bs180RaEym
68nAXf2dQKYljFUxfG3+thv0hA3BGPJn/6NbDJLdDlGsvrTUG18cKb+gd9Iaq9Ge
fUHpT8AGghGs3UQswHO/QzonVPh8XmYPlk4kR90+ozK9TWx8uI/WwdOhKLSW687K
rykOgAJTivp3hxP+R02j1VMbFS0OHLFmz7U/n7QkscgDjfFnhpuaOveKSgi8UbVO
WEhAp4OfUfFCIWja6txhqztX4TQVqQ==
=Jsxy
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 23 Feb 2020 22:40
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734@debbugs.gnu.org)
87lfotnfrr.fsf@gnu.org
Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (21 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> So back to the original patch… I think we should use ‘size->number’ for
>> the absolute threshold.
>>
>> I’m also still mildly reluctant to the addition of
>> ‘GUIX_DISK_SPACE_WARNING_ABSOLUTE’ (one more variable and a weird
>> name—“absolute warning”?). An option could be to allow
>> ‘GUIX_DISK_SPACE_WARNING’ to optionally contain both thresholds. These
>> would be valid values:
>>
>> 1GiB;10%
>> 15 ;15% relative, and default absolute
>> 15% ;same
>> 1G ;1G absolute, and default relative
>
> The above logic implies that we test against size->number, and if it
> fails then we set the relative threshold.
>
> But a size->number quits Guile.

More precisely, it throws a 'quit exception. :-)

So you could always do: (false-if-exception (size->number x)).

HTH,
Ludo’.
P
P
Pierre Neidhardt wrote on 24 Feb 2020 08:51
[PATCH] scripts: Emit GC hint if free space is lower than absolute and relative threshold.
(address . 39734@debbugs.gnu.org)
20200224075152.5493-1-mail@ambrevar.xyz
* guix/scripts.scm (%disk-space-warning-absolute): New variable.
(warn-about-disk-space): Test against %disk-space-warning-absolute.
Fix error in display-hint due to extraneous 'profile' argument.
---
guix/scripts.scm | 59 ++++++++++++++++++++++++++++++++++++------------
1 file changed, 45 insertions(+), 14 deletions(-)

Toggle diff (84 lines)
diff --git a/guix/scripts.scm b/guix/scripts.scm
index 77cbf12350..bfb378f93c 100644
--- a/guix/scripts.scm
+++ b/guix/scripts.scm
@@ -181,32 +181,63 @@ Show what and how will/would be built."
(newline (guix-warning-port))))
(define %disk-space-warning
- ;; The fraction (between 0 and 1) of free disk space below which a warning
- ;; is emitted.
- (make-parameter (match (and=> (getenv "GUIX_DISK_SPACE_WARNING")
- string->number)
- (#f .05) ;5%
- (threshold (/ threshold 100.)))))
+ ;; Return a pair of absolute threshold (number of bytes) and relative
+ ;; threshold (fraction between 0 and 1) for the free disk space below which
+ ;; a warning is emitted.
+ ;; GUIX_DISK_SPACE_WARNING can contain both thresholds. The following
+ ;; example values are valid:
+ ;; - 1GiB;10% ;1 GiB absolute, and 10% relative.
+ ;; - 15G ;15 absolute, and default relative.
+ ;; - 15% ;15% relative, and default absolute.
+ (let* ((default-absolute-threshold (size->number "5GiB"))
+ (default-relative-threshold 0.05)
+ (percentage->float (lambda (percentage)
+ (or (if (string? percentage)
+ (string->number
+ (car (string-split percentage #\%))))
+ default-relative-threshold)))
+ (size->number* (lambda (size)
+ (or (false-if-exception (size->number size))
+ default-absolute-threshold))))
+ (make-parameter
+ (match (getenv "GUIX_DISK_SPACE_WARNING")
+ (#f (list default-absolute-threshold
+ default-relative-threshold))
+ (env-string (match (string-split env-string #\;)
+ ((threshold)
+ (if (string-contains threshold "%")
+ (list default-absolute-threshold
+ (percentage->float threshold))
+ (list (size->number* threshold)
+ default-relative-threshold)))
+ ((threshold1 threshold2)
+ (if (string-contains threshold1 "%")
+ (list (size->number* threshold2)
+ (percentage->float threshold1))
+ (list (size->number* threshold1)
+ (percentage->float threshold2))))))))))
(define* (warn-about-disk-space #:optional profile
#:key
- (threshold (%disk-space-warning)))
+ (thresholds (%disk-space-warning)))
"Display a hint about 'guix gc' if less than THRESHOLD of /gnu/store is
-available."
+available.
+THRESHOLD is a pair of (ABSOLUTE-THRESHOLD RELATIVE-THRESHOLD)."
(let* ((stats (statfs (%store-prefix)))
(block-size (file-system-block-size stats))
(available (* block-size (file-system-blocks-available stats)))
(total (* block-size (file-system-block-count stats)))
- (ratio (/ available total 1.)))
- (when (< ratio threshold)
- (warning (G_ "only ~,1f% of free space available on ~a~%")
- (* ratio 100) (%store-prefix))
+ (relative-threshold-in-bytes (* total (cadr thresholds)))
+ (absolute-threshold-in-bytes (* 1024 1024 1024 (car thresholds))))
+ (when (< available (min relative-threshold-in-bytes
+ absolute-threshold-in-bytes))
+ (warning (G_ "only ~,1f GiB of free space available on ~a~%")
+ available (%store-prefix))
(display-hint (format #f (G_ "Consider deleting old profile
generations and collecting garbage, along these lines:
@example
guix gc --delete-generations=1m
-@end example\n")
- profile)))))
+@end example\n"))))))
;;; scripts.scm ends here
--
2.25.0
P
P
Pierre Neidhardt wrote on 24 Feb 2020 08:52
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87a758e82g.fsf@ambrevar.xyz
Update sent.

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEyBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5TgKcACgkQm9z0l6S7
zH/VlQf4mwMfvMKyBLltrix6ccaxKtr8No42YqPBEAvM6kdGHWrf8rhjy/LETysm
5EGJMu5HZroJYjGJfJblQhkheS7aYPk5AS+FlKGxb7N9xg5ZW5KtmsxtDfVJ1PGS
kkAaShdgSDfNMYC9nNZG46aVMlkzoRVPTu0AjEl/wZugNMTw5yQ2cIBC6opjpG1I
saCOtZI+F2WzxTWfND+30rFMtu23coQ76dJ+zu1gSsFANrbT/lxXYMMiBj/Xjzoq
UtLbZU5wV4Eu23qxdS6+2i+jtCHlnw8LlYzvC/zY+p9nCjALIN/33wGODbm485Pe
5dkmVkw209uUZCRRRx+JZqOjQDfy
=r9Iw
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 24 Feb 2020 11:21
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734@debbugs.gnu.org)
87blponv5d.fsf@gnu.org
Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (4 lines)
> Pierre Neidhardt <mail@ambrevar.xyz> writes:
>
>> Ludovic Courtès <ludo@gnu.org> writes:

[...]

Toggle quote (16 lines)
>>> 1GiB;10%
>>> 15 ;15% relative, and default absolute
>>> 15% ;same
>>> 1G ;1G absolute, and default relative
>
> Something else: in your example it's not logically possible to make out
> if a raw number is relative or absolute.
> So I suggest to break backward compatibility and do this:
>
> 1GiB;10%
> 15 ;15 absolute (15 bytes), and default relative
> 15% ;15% relative, and default absolute
> 1G ;1G absolute, and default relative
>
> Thoughts?

What about having the rule that a number below 100 is a percentage, as
discussed before? (It doesn’t make much sense to have an absolute
threshold of 42 bytes.)

Ludo’.
P
P
Pierre Neidhardt wrote on 24 Feb 2020 11:26
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87wo8ccmd3.fsf@ambrevar.xyz
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (4 lines)
> What about having the rule that a number below 100 is a percentage, as
> discussed before? (It doesn’t make much sense to have an absolute
> threshold of 42 bytes.)

Could do that. Seems a bit ad-hoc though.

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5TpMgACgkQm9z0l6S7
zH+OGwf7BGgGGFd+i6aDSKu/SynnXAESfuR1VLpQR058MOACg+sz4AS9K4DGF1TL
OCCfUPWosu99MRMCdAmVj2PMMtztVILoRMtvR16gPLzxSkmMJCW972a18H7+YSFT
WYpO7aZwv1wUw8dYwgTgym8Q5HGRJAjf1fqf8lyERysRO3pDXxLXZluHjkn66Q+E
z2hhA87w3l9B9mPkmr21t8AJBFxFg2Jc5yk+jMCzOzvp4qWcuhMrR8OqsiHb0kKu
6MsxqzRydvg/UvkjfkfkIQ0IzJ0zy8/JQMEMun1hSH4nS8BwdUES2bJj+Cm1snPW
NfeTm0Lh4BhhWDWryojrVyreia4KGw==
=KW2S
-----END PGP SIGNATURE-----

P
P
Pierre Neidhardt wrote on 24 Feb 2020 14:20
[PATCH] scripts: Emit GC hint if free space is lower than absolute and relative threshold.
(address . 39734@debbugs.gnu.org)
20200224132024.5790-1-mail@ambrevar.xyz
* guix/scripts.scm (%disk-space-warning-absolute): New variable.
(warn-about-disk-space): Test against %disk-space-warning-absolute.
Fix error in display-hint due to extraneous 'profile' argument.
---
guix/scripts.scm | 66 ++++++++++++++++++++++++++++++++++++++----------
1 file changed, 52 insertions(+), 14 deletions(-)

Toggle diff (91 lines)
diff --git a/guix/scripts.scm b/guix/scripts.scm
index 77cbf12350..df59f5ae82 100644
--- a/guix/scripts.scm
+++ b/guix/scripts.scm
@@ -181,32 +181,70 @@ Show what and how will/would be built."
(newline (guix-warning-port))))
(define %disk-space-warning
- ;; The fraction (between 0 and 1) of free disk space below which a warning
- ;; is emitted.
- (make-parameter (match (and=> (getenv "GUIX_DISK_SPACE_WARNING")
- string->number)
- (#f .05) ;5%
- (threshold (/ threshold 100.)))))
+ ;; Return a pair of absolute threshold (number of bytes) and relative
+ ;; threshold (fraction between 0 and 1) for the free disk space below which
+ ;; a warning is emitted.
+ ;; GUIX_DISK_SPACE_WARNING can contain both thresholds. A value in [0;100)
+ ;; is a relative threshold, otherwise it's absolute. The following
+ ;; example values are valid:
+ ;; - 1GiB;10% ;1 GiB absolute, and 10% relative.
+ ;; - 15G ;15 GiB absolute, and default relative.
+ ;; - 99% ;99% relative, and default absolute.
+ ;; - 99 ;Same.
+ ;; - 100 ;100 absolute, and default relative.
+ (let* ((default-absolute-threshold (size->number "5GiB"))
+ (default-relative-threshold 0.05)
+ (percentage->float (lambda (percentage)
+ (or (and=> (string->number
+ (car (string-split percentage #\%)))
+ (lambda (n) (/ n 100.0)))
+ default-relative-threshold)))
+ (size->number* (lambda (size)
+ (or (false-if-exception (size->number size))
+ default-absolute-threshold)))
+ (absolute? (lambda (size)
+ (if (string-suffix? "%" size)
+ #f
+ (false-if-exception (<= 100 (size->number size)))))))
+ (make-parameter
+ (match (getenv "GUIX_DISK_SPACE_WARNING")
+ (#f (list default-absolute-threshold
+ default-relative-threshold))
+ (env-string (match (string-split env-string #\;)
+ ((threshold)
+ (if (absolute? threshold)
+ (list (size->number* threshold)
+ default-relative-threshold)
+ (list default-absolute-threshold
+ (percentage->float threshold))))
+ ((threshold1 threshold2)
+ (if (absolute? threshold1)
+ (list (size->number* threshold1)
+ (percentage->float threshold2))
+ (list (size->number* threshold2)
+ (percentage->float threshold1))))))))))
(define* (warn-about-disk-space #:optional profile
#:key
- (threshold (%disk-space-warning)))
+ (thresholds (%disk-space-warning)))
"Display a hint about 'guix gc' if less than THRESHOLD of /gnu/store is
-available."
+available.
+THRESHOLD is a pair of (ABSOLUTE-THRESHOLD RELATIVE-THRESHOLD)."
(let* ((stats (statfs (%store-prefix)))
(block-size (file-system-block-size stats))
(available (* block-size (file-system-blocks-available stats)))
(total (* block-size (file-system-block-count stats)))
- (ratio (/ available total 1.)))
- (when (< ratio threshold)
- (warning (G_ "only ~,1f% of free space available on ~a~%")
- (* ratio 100) (%store-prefix))
+ (relative-threshold-in-bytes (* total (cadr thresholds)))
+ (absolute-threshold-in-bytes (* 1024 1024 1024 (car thresholds))))
+ (when (< available (min relative-threshold-in-bytes
+ absolute-threshold-in-bytes))
+ (warning (G_ "only ~,1f GiB of free space available on ~a~%")
+ available (%store-prefix))
(display-hint (format #f (G_ "Consider deleting old profile
generations and collecting garbage, along these lines:
@example
guix gc --delete-generations=1m
-@end example\n")
- profile)))))
+@end example\n"))))))
;;; scripts.scm ends here
--
2.25.0
P
P
Pierre Neidhardt wrote on 24 Feb 2020 14:20
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87lfosceal.fsf@ambrevar.xyz
Patch updated.

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5TzaIACgkQm9z0l6S7
zH+PcAgAlFSo4qBYtrUL0J/gKacA3zqmUG7zHwWzXb9GieguWu1hA6WGm2Lm3sdf
Yp5bo2GceONNj7TDMD7Oop/FpYJVpXrBzr3GpvUOLytONM47So4WZAmiKIzl0iHQ
k52QWtIdlUC2XgTS8KIWiHl7xlrCRQwRy3ofYWPsCIfUXgvQLvb6EuWWJ1iJ9wNL
WceitbRMZS7OwpiZlHqvGy7l40Nk4tJOyCFqgqgQACsZmcGPd2/OUQmMS1WiyY2w
au5wqfFVEqwX7DvKIWiX/n2e++oUZHy4FZ0IEvlFgfXieBnwq4EjhFudFj5l2RNC
OAGFvqYmle1a+rfRIGcfJ9tpbrUOJA==
=c2se
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 24 Feb 2020 22:08
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734@debbugs.gnu.org)
87v9nvelqx.fsf@gnu.org
Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (4 lines)
> * guix/scripts.scm (%disk-space-warning-absolute): New variable.
> (warn-about-disk-space): Test against %disk-space-warning-absolute.
> Fix error in display-hint due to extraneous 'profile' argument.

[...]

Toggle quote (6 lines)
> + (let* ((default-absolute-threshold (size->number "5GiB"))
> + (default-relative-threshold 0.05)
> + (percentage->float (lambda (percentage)
> + (or (and=> (string->number
> + (car (string-split percentage #\%)))

Mayes just: (string-drop-right percentage 1).

Toggle quote (5 lines)
> + (absolute? (lambda (size)
> + (if (string-suffix? "%" size)
> + #f
> + (false-if-exception (<= 100 (size->number size)))))))

Maybe: (not (or (string-suffix? …) (false-if-exception …)))

Otherwise LGTM.

Thank you!

Ludo’, who actually saw the warning way too often. :-)
P
P
Pierre Neidhardt wrote on 25 Feb 2020 11:22
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87lforarw6.fsf@ambrevar.xyz
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (8 lines)
>> + (let* ((default-absolute-threshold (size->number "5GiB"))
>> + (default-relative-threshold 0.05)
>> + (percentage->float (lambda (percentage)
>> + (or (and=> (string->number
>> + (car (string-split percentage #\%)))
>
> Mayes just: (string-drop-right percentage 1).

This does not work if the value does not have a percent sign, e.g. it
turns "13" into "1".

Resubmitting the patch with the other change.
Feel free to merge! ;)

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5U9UkACgkQm9z0l6S7
zH+RawgAmDFuvyipVDDLCFfymQPk9mKSl1TbgfNl2LZzPqXFZ72QKzMZGCQu39OM
kKFUSnG21nfBu4Vdyy6kdmnELxptI0FBXt9MLz5XS0C9rl9ZhDiRK/wX9eXTE0x5
Ir0wyqwnpmHhsr1jzxHigFufbW/kD24zkYEWFkv+ww/C3bdNEP61KKGpHYOzRXaB
jwFB0LbT1ooRaDAE4PmSd6Kh9tJgvVo1ChZ3llEOII1pZqjyr2qqd+w+k1wM4n56
o857kxeNZr2fkP+O+kjnbyOYovzjR3oxN5FzK+NMJ0HNSNeYRdrLgmxstk9Ifhqg
WgPmEAa2glbhbgva/9tujaddrQBwUA==
=Y26r
-----END PGP SIGNATURE-----

P
P
Pierre Neidhardt wrote on 25 Feb 2020 11:23
[PATCH] scripts: Emit GC hint if free space is lower than absolute and relative threshold.
(address . 39734@debbugs.gnu.org)
20200225102330.4825-1-mail@ambrevar.xyz
* guix/scripts.scm (%disk-space-warning-absolute): New variable.
(warn-about-disk-space): Test against %disk-space-warning-absolute.
Fix error in display-hint due to extraneous 'profile' argument.
---
guix/scripts.scm | 65 +++++++++++++++++++++++++++++++++++++-----------
1 file changed, 51 insertions(+), 14 deletions(-)

Toggle diff (90 lines)
diff --git a/guix/scripts.scm b/guix/scripts.scm
index 77cbf12350..7ad1d5194c 100644
--- a/guix/scripts.scm
+++ b/guix/scripts.scm
@@ -181,32 +181,69 @@ Show what and how will/would be built."
(newline (guix-warning-port))))
(define %disk-space-warning
- ;; The fraction (between 0 and 1) of free disk space below which a warning
- ;; is emitted.
- (make-parameter (match (and=> (getenv "GUIX_DISK_SPACE_WARNING")
- string->number)
- (#f .05) ;5%
- (threshold (/ threshold 100.)))))
+ ;; Return a pair of absolute threshold (number of bytes) and relative
+ ;; threshold (fraction between 0 and 1) for the free disk space below which
+ ;; a warning is emitted.
+ ;; GUIX_DISK_SPACE_WARNING can contain both thresholds. A value in [0;100)
+ ;; is a relative threshold, otherwise it's absolute. The following
+ ;; example values are valid:
+ ;; - 1GiB;10% ;1 GiB absolute, and 10% relative.
+ ;; - 15G ;15 GiB absolute, and default relative.
+ ;; - 99% ;99% relative, and default absolute.
+ ;; - 99 ;Same.
+ ;; - 100 ;100 absolute, and default relative.
+ (let* ((default-absolute-threshold (size->number "5GiB"))
+ (default-relative-threshold 0.05)
+ (percentage->float (lambda (percentage)
+ (or (and=> (string->number
+ (car (string-split percentage #\%)))
+ (lambda (n) (/ n 100.0)))
+ default-relative-threshold)))
+ (size->number* (lambda (size)
+ (or (false-if-exception (size->number size))
+ default-absolute-threshold)))
+ (absolute? (lambda (size)
+ (not (or (string-suffix? "%" size)
+ (false-if-exception (< (size->number size) 100)))))))
+ (make-parameter
+ (match (getenv "GUIX_DISK_SPACE_WARNING")
+ (#f (list default-absolute-threshold
+ default-relative-threshold))
+ (env-string (match (string-split env-string #\;)
+ ((threshold)
+ (if (absolute? threshold)
+ (list (size->number* threshold)
+ default-relative-threshold)
+ (list default-absolute-threshold
+ (percentage->float threshold))))
+ ((threshold1 threshold2)
+ (if (absolute? threshold1)
+ (list (size->number* threshold1)
+ (percentage->float threshold2))
+ (list (size->number* threshold2)
+ (percentage->float threshold1))))))))))
(define* (warn-about-disk-space #:optional profile
#:key
- (threshold (%disk-space-warning)))
+ (thresholds (%disk-space-warning)))
"Display a hint about 'guix gc' if less than THRESHOLD of /gnu/store is
-available."
+available.
+THRESHOLD is a pair of (ABSOLUTE-THRESHOLD RELATIVE-THRESHOLD)."
(let* ((stats (statfs (%store-prefix)))
(block-size (file-system-block-size stats))
(available (* block-size (file-system-blocks-available stats)))
(total (* block-size (file-system-block-count stats)))
- (ratio (/ available total 1.)))
- (when (< ratio threshold)
- (warning (G_ "only ~,1f% of free space available on ~a~%")
- (* ratio 100) (%store-prefix))
+ (relative-threshold-in-bytes (* total (cadr thresholds)))
+ (absolute-threshold-in-bytes (* 1024 1024 1024 (car thresholds))))
+ (when (< available (min relative-threshold-in-bytes
+ absolute-threshold-in-bytes))
+ (warning (G_ "only ~,1f GiB of free space available on ~a~%")
+ available (%store-prefix))
(display-hint (format #f (G_ "Consider deleting old profile
generations and collecting garbage, along these lines:
@example
guix gc --delete-generations=1m
-@end example\n")
- profile)))))
+@end example\n"))))))
;;; scripts.scm ends here
--
2.25.0
L
L
Ludovic Courtès wrote on 26 Feb 2020 22:06
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734-done@debbugs.gnu.org)
87pne1awig.fsf@gnu.org
Hello,

Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (16 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>
>>> + (let* ((default-absolute-threshold (size->number "5GiB"))
>>> + (default-relative-threshold 0.05)
>>> + (percentage->float (lambda (percentage)
>>> + (or (and=> (string->number
>>> + (car (string-split percentage #\%)))
>>
>> Mayes just: (string-drop-right percentage 1).
>
> This does not work if the value does not have a percent sign, e.g. it
> turns "13" into "1".
>
> Resubmitting the patch with the other change.
> Feel free to merge! ;)

Perfect, I pushed it on your behalf.

Thank you for your patience!

Ludo’.
Closed
L
L
Ludovic Courtès wrote on 28 Feb 2020 00:19
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734@debbugs.gnu.org)
87o8tjaaa4.fsf@gnu.org
Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (4 lines)
> * guix/scripts.scm (%disk-space-warning-absolute): New variable.
> (warn-about-disk-space): Test against %disk-space-warning-absolute.
> Fix error in display-hint due to extraneous 'profile' argument.

I pushed a followup as 71c3c3df92375ca9b4bd28b2be90dda67288fa5c, fixing
a couple of issues we had overlooked.

Ludo’.
P
P
Pierre Neidhardt wrote on 28 Feb 2020 08:17
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
8736avi3jb.fsf@ambrevar.xyz
Thanks, I noticed the issue as well on my last guix pull! :)

However, shouldn't it be `min` still?

On big partitions, 5% will be high, so we don't want to display a
warning then, we only display it when lower than 5GiB, the minimum.

On small partitions, 5GiB is too much, so we don't want to display a
warning then, we only display it when lower than 5%, the minimum.

Thoughts?

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5YvpgACgkQm9z0l6S7
zH+NIAgAlaT1Y4S16KUX3G9Ss/u1rRYIHs/9DK3slrkMbETQ9qDkDKc+bxi+I+pA
NoYTVnF9pk2UpYfNT7zdpjXWR/UDj+zrYZkn6GAUye5E5Ip2SKhKJgA3RwaJmDOf
Pf7xXGisRAQfOVZxI2DvCEh8CcG71ImzJO6CV/iKD8ELEFSXA+QBTbdHlhx6LxvL
+JYJx4bIMEzMoCeZwi6YEUUDSomuYTDtj+kxHsIILlRkaR9NefhHLwk62vCxc4H1
ASzldcxpVWwHcQ3PvEgKfqWG4T5s/wqUREGGu5nrv4YwuBDN2XYNOtTVq0+MF/AF
rFB9OgX9MvKlR1hjiPyeQrCDDS8R5A==
=K767
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 5 Mar 2020 17:29
(name . Pierre Neidhardt)(address . mail@ambrevar.xyz)(address . 39734@debbugs.gnu.org)
8736amaho9.fsf@gnu.org
Howdy!

Pierre Neidhardt <mail@ambrevar.xyz> skribis:

Toggle quote (12 lines)
> Thanks, I noticed the issue as well on my last guix pull! :)
>
> However, shouldn't it be `min` still?
>
> On big partitions, 5% will be high, so we don't want to display a
> warning then, we only display it when lower than 5GiB, the minimum.
>
> On small partitions, 5GiB is too much, so we don't want to display a
> warning then, we only display it when lower than 5%, the minimum.
>
> Thoughts?

Hmm you must be right, sorry for getting it wrong. Please feel free to
push a fix!

Ludo’.
P
P
Pierre Neidhardt wrote on 6 Mar 2020 08:32
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 39734@debbugs.gnu.org)
87r1y67xbh.fsf@ambrevar.xyz
Done, thanks!

--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAl5h/JIACgkQm9z0l6S7
zH8ddAf/ayIIQ9kdwDAAh0Az8ymW1e5QBtEeB+3J3JEvjfMpw5SbZ3WNWd2SmOHd
ex3mdD/663+dqz9nZ/k0RmG7P5jCXPlNYp5GQrinNaN59f5t8QYbCR2i2bNIU3yu
bi5Nxd/Ay/jHwpSLakGuGUb2MptqRcrL+t0vvgxO2DU0AH8jXTjlo72SA4ESWoIH
0WjbIfNf8feGrtGAWSP7b8L5gllzwX+TkjQ/lzVmmstvHe7F5DI2HEPfiX7fMWdM
9Fvcx8XVHEcVpKOmYeL3efoiaOcs+jYsKrfoHEnnWQ5Ddt/XlicsHC/k/IpmOco8
QI7m3hYKNr+4KBsqt4gsDhhbvbsS+w==
=SkPV
-----END PGP SIGNATURE-----

?