Xml in packaging system

Vadim Chekan vchekan at rogers.com
Thu Oct 30 13:50:40 PST 2003


Simon 'corecode' Schubert wrote:
okay, could we please first discuss requirements and taboos and then
the tools used before some people invest lots of time in something which
may not be accepted by the developers?
Just a few wishes.

1. I'd like to new port system to be hierarchy (tree). For example, 
searching a tool in Devel directory (1178 items), or Perl - 1128 items, 
net - 812 is no fun.

2. About port Makefile format. Currently it is really a bit strange: it 
is a make file, with a lot of variables assignment, and a dosen of 
"hooks": on-install, post-config, etc. It is non too natural to "make" 
to deal with such kind of tasks.
I am thinking about some set of attributes that can be assigned to each 
port. For example, how can I easy get list of all ports that depend on 
X? A list of ports that gmake depend on?
I am thinking about having ports in a single xml file instead a file 
system structure. All the queries can be done in XPATH queries, for example:

selectNodes("/port//[dependOn='X']")
selectNodes("/port/devel/tools/gnu/gmake/@depends")
Hook implementations can be also quite easy:

xmlElement currentPortNode = 
portDomObject.selectSingleNode(getenv("CURRENT_PORT_PATH"));
. ..
Evaluate(currentPortNode.selectSingleNode("./@beforeInstall").getText());
CallInstallSubroutine();
Evaluate(currentPortNode.selectSingleNode("./@onInstall").getText());

Ok, about xml performance. If use DOM model, it could be a problem, but 
if rewrite it to utilize stream model (SAX interface), I do not think 
it'll be an issue (but it would be impossible to use these fancy xpath 
expressions). Or it would be possible to cache the most time consuming 
data in some db files.

3. format-independent
	I'd like whole new port system to not be connected with some one tool 
format, like makefile format is now. It is no easy way to parse needed 
atributes now. Specific tool independent format (xml for example) will 
give possibility to develop a set of a little tools each of that is 
doing only one kind of task (security upgrade for example) but is doing 
it wery well. And whole set of these tools will be called a ports 
system. Isn't this a typical U*x design?

Also it would allow to compete several tools as soon as data format 
(called "schema" in xml language) is stable.

Vadim Chekan.






More information about the Kernel mailing list