GNU bug report logs - #49547
[PATCH v2 2/4] home-services: Add home-run-on-change-service-type

Previous Next

Package: guix-patches;

Reported by: Andrew Tropin <andrew <at> trop.in>

Date: Tue, 13 Jul 2021 18:19:02 UTC

Severity: normal

Tags: patch

Merged with 49419, 49546, 49548, 49549

Done: Oleg Pykhalov <go.wigust <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #10 received at 49547 <at> debbugs.gnu.org (full text, mbox):

From: Maxime Devos <maximedevos <at> telenet.be>
To: Andrew Tropin <andrew <at> trop.in>, 49547 <at> debbugs.gnu.org
Subject: Re: [bug#49547] [PATCH v2 2/4] home-services: Add
 home-run-on-change-service-type
Date: Wed, 14 Jul 2021 12:41:35 +0200
[Message part 1 (text/plain, inline)]
Andrew Tropin schreef op ma 05-07-2021 om 18:39 [+0300]:
> +      (define (equal-regulars? file1 file2)
> +        "Check if FILE1 and FILE2 are bit for bit identical."
> +        (let* ((cmp-binary #$(file-append
> +                              (@ (gnu packages base) diffutils) "/bin/cmp"))
> +               (status (system* cmp-binary file1 file2)))
> +          (= status 0)))

Is there any particular reason to shell out to "cmp" instead
of doing the comparison in Guile?  Starting a process isn't
the most efficient thing.

Try "time /run/current-system/profile/bin echo", on my system,
it takes about 2--3 milliseconds for "echo" to finish
even though it only had to print a newline character.
Compare with "time echo" (to use the shell built-in "echo"),
it takes 0.000s seconds on my system.

3 milliseconds isn't much by itself, but this can accumulate,
so I would implement the comparison in Guile.

As an optimisation, you could look at the value returned by "lstat".
If the 'size' is different, then 'equal-regulars?' can return #f
without reading the file.  If the 'inode' and 'device' are equal,
then 'equal-regulars?' can return #t I think (at least on conventional
file systems like btrfs and ext4).

Greetings,
Maxime.
[signature.asc (application/pgp-signature, inline)]

This bug report was last modified 3 years and 271 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.