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’.