[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: File search

From: Antoine R. Dumont (@ardumont)
Subject: Re: File search
Date: Tue, 20 Dec 2022 12:13:31 +0100

Hello Guix,

Thanks for the feedback!

Note: @civodul, assuming you are subscribed to the ml, I currently kept
you as a `To:` recipient but I can drop you from it, right? I'm "also"
subscribed to the ml so you may drop me from the `To:` too (if i'm not

Ludovic Courtès <> writes:

> Hi Antoine!
> "Antoine R. Dumont (@ardumont)" <>
> skribis:
>> Here is the rough changelog:
>> - The local db cache is now versioned. Migration will transparently
>>   happen for users at each index command calls (if need be).
> Perfect!
>> - The cli parsing got rewritten to be more flexible (inspired from
>>   existing code from guix, notably `guix home`).
>> - We can now choose the indexation method using the
>>   `--with-method={store|manifests}` flag. The "manifests" method is the
>>   default, seel the help message for more details).
> Excellent.  (I think we can call it ‘--method’, without “with”.)


>> - Finally, the indexation methods are displayed using a progress bar.
> Yay, I love progress bars.  :-)

I have some work to improve the implementation to have more details in
the messages (typically make the "prefix" parameter of
`progress-report/bar` be a callable/function [1]...). If that's of some
interest, i'll push forward (in another patch maybe?).  I stopped at the
moment 'cause i had some strange issues with my env (where i could not
make guile see the changes for some reasons...). Anyway, that's of
lesser priority than the rest so...

[1] or whatever the name is in guile context ;)

>> Heads up, I did not yet address the "output" part. Thanks @zimoun for
>> the clarification btw ;)
> Future work.  ;-)


If i'm getting out of all the modifications i need to do, and if I have
some energy left, I might attend to it too ;)

>>> In the package case, the number of packages is known ahead.
>> @civodul For the index 'store' implementation, ^ I did not find that
>> information.
> (length (all-packages)) gives you the total number of packages you’re
> going to traverse.  ‘all-packages’ is not instantaneous, but as a good
> approximation the time spent in ‘all-packages’ can be ignored.

ok. I missed that.

Although, the current call to `fold-packages` does some package
filtering first. So, I guess that's why you call `(length
(all-packages))` an approximation (no filtering on that call), right?

>> So, as a costly implementation detail, I'm folding over all packages
>> first to know the total number of packages (for the progress bar). And
>> then another round trip to actually do the insert.
> You could build up the package list just once and call ‘length’ on it.

I explained myself wrongly. That's what it is doing currenly. It does
that ^ folding and keep the packages list, then do a `length` call on it
to have the exact number of entries. And then does the actual loop on
that list to insert them in the db cache.

I naively thought that the `length` call on the list would cost one
round trip O(n), isn't it so? Or is there some memoization somewhere?

>> Hope you'll find it mostly to your taste!
> I do!


>> Note: I gather we'll rework the commits at some point (when it's ready)
>> so I did not bother too much right now.
> I think at this point we could consider integration in Guix proper,
> under ‘guix/scripts’.  For that we could dismiss commit history.

Fine with me. I'll do the adaptations to make it a script then.

> That’ll entail extra work (d’oh!) such as fine-tuning, writing tests,
> and writing a section for the manual.

Yes, i'm fine with that.

FWIW, I tried to have a look at how current unit tests were written last
week. I did not grok it entirely yet. I saw some script tests generate
some guile and I got lost there ;) I'll have to double check.

I'll probalby need some help for testing and documentation. I guess
asking questions on irc is fine for that part, right?

> The other option, if you prefer, would be to keep it in a separate repo
> as an extension that people can install.  To me that would be more of a
> temporary solution because I think it’s a useful feature that ought to
> be provided by Guix proper eventually.
> WDYT?  :-)

If it's temporary then i'm fine with trying to do the extra work to
merge the work with proper Guix ;).

Although, zimoun, down thread has some interesting remarks too.  I'll
let you discuss those.

I have another extension idea [1] that might help anyway. So we'll have
another opportunity to entertain the guix extensions features (if the
idea is interesting to proper Guix).

[1] `guix bug-report [--with-uname|--with-version|...]`

> Ludo’.

tony / Antoine R. Dumont (@ardumont)

gpg fingerprint BF00 203D 741A C9D5 46A8 BE07 52E2 E984 0D10 C3B8

Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]