Leo Famulari <l...@famulari.name> skribis:

> I _think_ that `gc --references` works by querying the database for a
> list of references in the store item you give it as an argument. I think
> that the information in the database is created after building, by
> scanning the files of the package's output in /gnu/store, looking for
> strings that appear to be paths in /gnu/store. I say "I think" because I
> am not sure. I don't understand that part of the code very well yet.

That’s 100% correct!  :-)  Namely, ‘guix gc --references’ makes an RPC to
the daemon, which then looks things up in the database (see the ‘Refs’
table in nix/libstore/schema.sql.)

Scanning for references indeed happens at the end of a successful build,
in ‘scanForReferences’ in libstore/references.cc.  Since scanning is
expensive (I/O-intensive), the result is stored in the database.

Ludo’.

Reply via email to