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