dougb at FreeBSD.org
Mon Aug 1 10:02:01 UTC 2011
On 08/01/2011 01:51, Michel Talon wrote:
> Doug wrote:
>> Unfortunately the only way to improve on this would be to not do the
>> checks on a port-by-port basis, and do them all together at the end.
>> While that sounds appealing, it would dramatically increase the code
>> complexity, and also dramatically increase the chances of leaving the
>> pkg files in an inconsistent state if the process gets interrupted. I
>> don't like either one of those options.
> In here i have a program which checks the +REQUIRED_BY files and
> fixes the origins in +CONTENTS
> proceeding globally as you describe above. It would not make a big
> difference to completely fix the +CONTENTS.
FYI, what portmaster is doing is fixing the pkgdep lines in +CONTENTS,
and updating +REQUIRED_BY as needed.
> On an old machine with around +1000 ports installed it takes of the
> order of 10-30 seconds to run. Of course this is very fast because it
> uses the information in the INDEX file.
2 problems, obviously portmaster is doing more work, and it's not using
the INDEX file by default. Without using INDEX with 600 ports installed
portmaster --check-depends takes less than a minute. Using INDEX
actually takes about 1:20, but that's because the way that portmaster
accesses the INDEX file isn't really optimized for hundreds of reads by
the same process.
> If one accepts to download the
> INDEX (like portupgrade does) this is no problem. If one wants to rebuild
> the index from the ports, it takes time, but one can build a partial
> index for the installed ports (and dependencies). This is done in
> and takes someting like 1-2mn on the same machine.
Either of which takes more time. :)
> So there are ways to speed up the bookeeping done by programs like
> portupgrade, portmaster, but, as you are saying, doing this job between
> *each* port upgrade is far more time consuming.
Just to be clear, what portmaster does after installing a port is to
take care of +CONTENTS and +REQUIRED_BY only for the relevant files.
--check-depends does everything.
> Of course the complexity
> is also increased, perhaps shell scripting is not the good tool to do that
A lot of people say that, but I'll stack it up against just about any
interpreted language. Some of my routines are actually faster than the
equivalents in pkg_info (which is why I use them).
Nothin' ever doesn't change, but nothin' changes much.
-- OK Go
Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price. :) http://SupersetSolutions.com/
More information about the freebsd-ports