Xml in packaging system

Matthew Dillon dillon at apollo.backplane.com
Sat Nov 1 11:29:40 PST 2003


:This is excellent.  What you have described here describes the build 
:configuration.  You mention that the install dependencies would be 
:similar.  My question is about package lists.  When I install this port 
:that I have set up would the package list stay static like the 
:pkg-plist, or would it be possible to be dynamic (i.e. record what is 
:installed and save that is the package list).  Say I'm about to `make 
:install` or equivalent for this port I'm creating (libabcd in your 
:example).  I assume it would be something like:

    I think it can be both.  For the purpose of developing a new port or
    upgrading an existing port you can 'start' with everything currently
    installed on the system, then build the new port (or rebuild the existing
    port) using the current system configuration instead of the port's
    original configuration.

    It would be a simple function of rewiring the mappings.  Instead of 
    telling the VFS to map specific port dependancies you just tell the VFS
    to map your system as it stands.  Presumably you will have already 
    generated new ports for the library dependancies.

    e.g. lets say the current mozilla port depended on libiconf-1.1, and 
    someone (or you) just added a libiconf-1.2 port which you want mozilla
    to use.  What you do is you load up the mozilla build environment
    but then tell it to discard libiconf-1.1 and load in libiconf-1.2.

    This could be a single command 'vfs upgrade', which would replace 
    VFS mappings with the highest available version, for the purposes of
    development.

    You then build mozilla up, make sure everything works, and re-record
    the VFS and you are done.  Poof, mozilla is now upgraded.

    --

    Another alternative would be to just map every library under the 
    sun for development purposes (or at least every library that is
    currently installed on your system), build mozilla, and then
    tell the VFS to print out which of the hundreds of mappings were
    actually accessed by the build.  That would be a 'dynamic' way
    of generating the port.

    The port itself, once generated, would always be static... a known
    configuration producing a known working application.

:The reason a snapshot would need to be recorded is I can't vfsunion to 
:something that doesn't exist yet.  Maybe instead of creating a snapshot 
:there could be a `vfsmonitor ${PREFIX}` which would record changes to a 
:filesystem instead of creating a (potentially huge) snapshot.  The idea 
:is that packages with the same version do not always install the same 
:files depending on which knobs are turned during configure, or 
:equivalent.  I want the information about the package installed on my 
:system to accurately reflect what was installed, not what the person who 
:generated a plist had insalled for them.  I just had this happen with 
:freebsd during installation of kerberos5.  I didn't install kerberos4 
:compatibility, and hence the package would not be created because of 
:missing files.  I had to edit the plist because I turned some knobs in a 
:makefile.
:
:regards,
:Galen

    Hmm.  This would require some thought.  There are plenty of ways to
    solve this problem, the real question is which way is the most
    beneficial?

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>






More information about the Kernel mailing list