Xml in packaging system
Matthew Dillon
dillon at apollo.backplane.com
Sat Nov 1 11:08:46 PST 2003
:Well, I think it would only record changes to the vfs layout - not
:every action you took, like a screen-scrubber would.
:
:But I'm confused too. Wouldn't entire files be sucked into the file
:build_depends.vfs? How would you tell it that /usr/local/lib/foo.a
:is just a dependency, to be built by some other port/package as a
:prerequisite, and not something to be created outright by the 'patch'?
:
:At any rate, I guess this means slogging through the meaty stuff will
:have to wait until VFS is working. But, it doesn't address the other
:details about ports/packages - metadata, file format, and so forth, so
:we still have plenty we can bikeshed about in the meantime :)
:
:-Chris
There are two things going on:
(1) Dependancies are other VFS-generated blah.vfs files. They would be
'mapped' into the current VFS as a dependancy, not actually copied
into the current VFS.
(2) The only 'top-layer' modifications made to the current VFS, other
then the mappings in (1), would reflect *ONLY* the requirements of
the current package.
build time: mappings + package source code + the modifications
that were made to get it to compile on DragonFly.
install time: possibly additional mappings required to install
(e.g. one might need 'perl' to install a third
party package but the third party package itself
doesn't need perl at run time)
run time: A totally different set of mappings + package
install image.
Lets take the build-time situation first, since it makes a great
example. Lets say you are building mozilla.
* Mozilla depends on other libraries, which you have already
generated ports for. So you just 'map' these library
dependancies in for the purposes of doing the build.
* The Mozilla base source for version XYZ is distributed by a
third party. You create a port that represents the broken-out
base source (which can then be abstracted at a higher level
to mean 'pull down this mozillaBLAHXYZ.tgz from host FUBAR and
tar xvzpf it').
Call it: mozilla-base-XYZ
* With the base source available as a port you can simply map it
in. Now you 'modify' the base source to make it compile under
DragonFly.
Call it: mozilla-dfly-XYZ
The 'patch set' for mozilla-base-XYZ would be zippo because we would
have a VFS option to 'tar xvzpf' the archive into the VFS's memory
filesystem, so this devoles into a fetch-like entity similar to what
we see with the FreeBSD packages system.
The 'patch set' for mozilla-dfly-XYZ would represent only the
modifications we have made to the source base in order to get it to
compile on DragonFly.
So, as you can see here, I am attempting to make things as easy as
possible for the person responsible for doing the port and, also,
I am attempting to make things as easy as possible for anyone who wishes
to maintain the port. Maintaining the port can be as simple as
loading up mozilla-dfly-XYZ VFS, making *additional* modifications,
and then just telling the VFS to save its state again. i.e. no messing
with manual patch set generation just to make a small change here and
there like has to be done with the FreeBSD ports system.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
More information about the Kernel
mailing list