tech-pkg: Re: proof of concept pkg upgrading tool

Subject: Re: proof of concept pkg upgrading tool
To: None <tech-pkg@netbsd.org>
From: Martijn van Buul <martijnb@atlas.ipv6.stack.nl>
List: tech-pkg
Date: 09/08/2005 07:58:41
It occurred to me that Geert Hendrickx wrote in gmane.os.netbsd.devel.packages:
> That's easy to solve. The essential thing is the ordering, and apparantly
> it's not ok yet. 
I don't claim to be a python expert, but judging by looking at the code, it 
seems that the dependency chain is built "bottom-up" using the +REQUIRED_BY
files in /var/db, and not using the contents of the pkgsrc dir. There appears
to be some code to inspect the pkgsrc dir, but it isn't called, probably 
because of speed considerations. Reading a file from /var/db is much faster
than calling 'make show-var VARNAME=DEPENDS', especially since every package
is inspected several times since there doesn't appear to be any caching of 
this data. There are several reasons why this isn't the most ideal 
solution:
1) It assumes that /var/db/pkg/*/+REQUIRED_BY is valid, but unfortunately
 this is cannot be guaranteed, especially when 'make replace' has ever
 been used, as it effectively zaps the +REQUIRED_BY files. You probably
 replaced pcre yourself at some point, and didn't update kdelibs afterwards.
 You could get around this by inspecting +CONTENTS as well, since this 
 provides the required dependencies for a given package, but it's 
 probably harder to parse.
2) It ignores newly introduced dependencies, since the dependency chain is
 built based on the dependencies of the previous, outdated, package. If
 a new version of a package needs additional dependencies, these will
 be ignored.
3) Similiarly, changes to /etc/mk.conf are ignored.

AltStyle によって変換されたページ (->オリジナル) /