[Q] Package dependencies

Chris Muller afunkyobject at yahoo.com
Wed Nov 3 21:19:44 UTC 2004


Hi Stéphane, let me know if I'm interpreting your suggestion correctly.  Are
you saying to make each direct-prerequisite *and* indirect-prerequisite a
direct-prerequisite.  Thus, instead of having:

  MagmaServer
    requires MagmaClient
      requires Ma Client Server
        requires Ma Object Serialization

I would have:

  MagmaServer
    requires MagmaClient
    and Ma Client Server
    and Ma Object Serialization

  MagmaClient
    requires Ma Client Server
    and Ma Object Serialization

  Ma Client Server
    requires Ma Object Serialization

and in so keeping no more than one-level of prerequisites for any particular
package, this would seem to clear up the problem as you said.

Interesting, that sounds pretty good, but please tell me what you and,
hopefully Avi if this ends up being in Monticello, think of this too.  What if,
upon marking a package dirty, it finds all packages that have that package as a
direct-prerequisite and marks them dirty too, under the same process,
therefore, *its* parents will also be marked dirty, all the way up the chain.

So, in the original example:

  MagmaServer
    requires MagmaClient
      requires Ma Client Server
        requires Ma Object Serialization

Marking Ma Object Serialization dirty causes Ma Client Server to be marked
dirty causes MagmaClient causes MagmaServer.

This may have a slight additional benefit that each package up the chain which
also serves as an independently usable package (i.e., Ma Client Server) will
have the latest version saved without having to force it dirty through some
"non-change" (i.e., add / delete a space in some method, save to force package
dirty, then save package).  Instead, it's all automatic.

I think you pulled me back to reality in terms of using prereqs.  I need the
tool to remember package-version compatibility, so I don't know what I was
thinking when I suggested the possibility of undefining all of my pre-reqs.



--- stéphane ducasse <ducasse at iam.unibe.ch> wrote:

> chris
> 
> I do not know if this is the solution but why not having a separate and 
> empty package (called map after)
> 
> MagmaServer 23
> 	requires MagmaClient.24
> 	requires MaClient.17
> 	requires Ma Object Serialization 21
> 
> Then when you change
> 
> MagmaServer 24
> 	requires MagmaClient.24
> 	requires MaClient.17
> 	requires Ma Object Serialization 26
> 
> This way you always control a complete coherent pieces of working 
> together packages
> but you do not have the problems you encountered.
> 
> We will try to develop SmallWiki two this way and try to minimise 
> hardcoding dependencies
> inside the packages.
> 
> Note that ned at OOPSLA suggested to me not to have nested map because 
> this way
> you are sure that you do not get twice and child with different version 
> in separated nested maps.
> 
> If you used this way of structuring your code I would appreciate that 
> you let us know if this is working.
> 
> Stef




More information about the Squeak-dev mailing list