Tracking which ports were installed explicitly

Rainer Müller raimue at macports.org
Wed Dec 3 18:46:29 PST 2008


Joshua Root wrote:
> If it's done as proposed in the ticket, you would do 'port dependents
> foo' (or rather its internal equivalent) to see whether foo is orphaned.
> If it has no dependents, it's orphaned. Explicitly installing a port
> adds 'world' as a dependent.

Using a pseudo-port like 'world' sounds like a very nice and elegant
idea to me. But checking for dependents is currently a very expensive
operation. To find all dependents the current code iterates over the
whole dep_map, which can grow very large depending on the number of
ports being installed.

If you never heard about dep_map, take a look in your own install:
  bzless /opt/local/var/macports/receipts/dep_map.bz2
And then you will see why searching and modifying this file is so expensive.

Therefore we should focus on finishing registry2.0. This was already
started by Chris Pickel (sfiera) in Google Summer of Code 2007. The code
was merged to trunk, and it is also already distributed with releases,
but it is not used at all yet.

registry2.0 plans to use a sqlite db instead of plain text files for
dependency tracking (dep_map) and receipts. This should hopefully make
such search operations a lot faster and also make the registry more
extensible.

I tried to get a statement about the status of registry2.0 from Chris
some time ago in April, but the only response was that he is busy. So I
don't know what is left to complete registry2.0.

Rainer


More information about the macports-dev mailing list