No stress 
I promised the same and I know what it is.

Stef

On Nov 22, 2012, at 12:14 AM, Dale Henrichs wrote:

> Stef,
> 
> The Thanksgiving holiday is coming up tomorrow and through the weekend ... I 
> promised my wife that I would avoid the computer this weekend since I was 
> away in Argentina for 10 days, but I will probably be able to find a couple 
> of hours poke at an image and try to see where things are falling through the 
> cracks:)
> 
> Dale
> 
> ----- Original Message -----
> | From: "Stéphane Ducasse" <[email protected]>
> | To: [email protected]
> | Sent: Wednesday, November 21, 2012 2:40:17 PM
> | Subject: Re: [Pharo-project] Metacello loading semantics
> | 
> | 
> | On Nov 21, 2012, at 8:51 PM, Dale Henrichs wrote:
> | 
> | > Doru,
> | > 
> | > The loadDirectives structure is the structure that does the actual
> | > package load for metacello, so extracting the information from the
> | > loadDirectives is the correct technique for producing a list of
> | > packages in load order. From a cursory read of Stefs code he
> | > appears to be doing it correctly ... atomic/linear loadType is an
> | > important distinction that has to be taken into account when
> | > attempting to reproduce the Metacello load behavior without using
> | > Metacello…
> | 
> | We thought that too but I got a problem with Roassal since it looks
> | like some classes are not loaded first.
> | 
> | > Of course in the end, it's the details like which packages/projects
> | > specifically are causing trouble that will help me figure out
> | > exactly where things are breaking down. I assume that when
> | > Metacello does the load, everything gets loaded correctly?
> | 
> | Well when we use the configuration of Moose (not the flatten one) it
> | loads: this is the Moose default configuration.
> | 
> | > If you want me to help build/debug a package flattener for Moose I
> | > would be glad to help, but I need more detailed information about
> | > what you are trying to do and why. Also having the actual code to
> | > look at and a reproducible test case makes addressing issues a ton
> | > easier...Perhaps making an image available with a workspace doit
> | > primed for failure is a good first step:)
> | 
> | The code in MooseReloader on smalltalkhub. I'm going to bed that and
> | tomorrow I follow lectures so I will explain it to you.
> | 
> | 
> | 
> | > 
> | > Dale
> | > 
> | > ----- Original Message -----
> | > | From: "Tudor Girba" <[email protected]>
> | > | To: [email protected]
> | > | Sent: Wednesday, November 21, 2012 10:49:12 AM
> | > | Subject: Re: [Pharo-project] Metacello loading semantics
> | > | 
> | > | Hi Dale,
> | > | 
> | > | The question is how to get all packages that will be loaded for a
> | > | given configuration version in the correct order. We want to
> | > | obtain
> | > | that to provide a flattened configuration version based on what
> | > | is
> | > | in the image.
> | > | 
> | > | Cheers,
> | > | Doru
> | > | 
> | > | 
> | > | 
> | > | On 21 Nov 2012, at 19:33, Dale Henrichs <[email protected]>
> | > | wrote:
> | > | 
> | > | > Stef,
> | > | > 
> | > | > If you need to leverage the multi-package load, you can do that
> | > | > in
> | > | > Metacello by using the #atomic loadType in the project method
> | > | > of
> | > | > your configuration:
> | > | > 
> | > | >  project
> | > | >    ^ project
> | > | >        ifNil: [
> | > | >            "Bootstrap Metacello if it is not already loaded"
> | > | >            self class ensureMetacello.
> | > | >            project := self projectClass new projectAttributes:
> | > | >            self
> | > | >            customProjectAttributes.   "Create the Metacello
> | > | >            project"
> | > | >            project versionNumberClass: self versionNumberClass.
> | > | >            project class versionConstructorClass on: self
> | > | >            project:
> | > | >            project.   "Construct the project"
> | > | >            project loadType: #'atomic'.       "change to #atomic if
> | > | >            desired"
> | > | >            project ]
> | > | > 
> | > | > With #atomic, all of the packages are loaded in one
> | > | > multi-package
> | > | > load. with #linear (the default) each package is loaded
> | > | > individually.
> | > | > 
> | > | > If you inspect the loadDirectives that are produced by the
> | > | > #record
> | > | > message, the load type is encoded in the class of the
> | > | > directive,
> | > | > so you can tell whether #linear or #atomic loadTypes are used
> | > | > in
> | > | > the configurations...
> | > | > 
> | > | > Does this help?
> | > | > 
> | > | > Dale
> | > | > 
> | > | > ----- Original Message -----
> | > | > | From: "Stéphane Ducasse" <[email protected]>
> | > | > | To: "Pharo Development" <[email protected]>
> | > | > | Sent: Saturday, November 17, 2012 11:28:03 AM
> | > | > | Subject: [Pharo-project] Metacello loading semantics
> | > | > | 
> | > | > | Hi dale
> | > | > | 
> | > | > | I implemented a little tool that
> | > | > |     - create a kind of specification (version, package, repo)
> | > | > |     for
> | > | > |     all
> | > | > |     the packages reachable from a configurationOf
> | > | > |             (see below method method
> | > | > |             
> packagesAndAssociatedRepositoriesFromConfigurationRecord )
> | > | > | 
> | > | > |     It generates a script looking as follows:
> | > | > |     script3
> | > | > |             ^ #(
> | > | > |                     #('ConfigurationOfFame-TudorGirba.5.mcz'
> | > | > |                      'http://www.squeaksource.com/Fame/'
> | > | > |                       'ConfigurationOfFame' )
> | > | > |                     #('ConfigurationOfMooseAlgos-usmanbhatti.27.mcz'
> | > | > |                      'http://www.squeaksource.com/MooseAlgos/'
> | > | > |                      'ConfigurationOfMooseAlgos' )
> | > | > |                     #('ConfigurationOfGlamour-TudorGirba.98.mcz'
> | > | > |                      'http://www.squeaksource.com/Glamour/'
> | > | > |                       'ConfigurationOfGlamour'
> | > | > |                     )
> | > | > |                     #('ConfigurationOfDSM-AlexandreBergel.56.mcz'
> | > | > |                      'http://www.squeaksource.com/dsm/'  
> 'ConfigurationOfDSM'
> | > | > |                      )
> | > | > |                     #('ConfigurationOfKumpel-AlexandreBergel.3.mcz'
> | > | > |                      'http://www.squeaksource.com/Kumpel/'
> | > | > |                       'ConfigurationOfKumpel' )
> | > | > |                     #('ConfigurationOfSmallDud………….)
> | > | > |     
> | > | > |     - I keep the order given by Metacello. I extract the
> | > | > |     information
> | > | > |     as
> | > | > |     follows:
> | > | > | 
> | > | > | packagesAndAssociatedRepositoriesFromConfigurationRecord:
> | > | > | aConfigurationRecord
> | > | > |     "| record |
> | > | > |     record := ((Smalltalk globals at: #ConfigurationOfMoose)
> | > | > |     project
> | > | > |     version: 'default')   ignoreImage: true;  record.
> | > | > |     self
> | > | > |     packagesAndAssociatedRepositoriesFromConfigurationRecord:
> | > | > |     record
> | > | > |     "
> | > | > | 
> | > | > |     | pkgs |
> | > | > |      pkgs := OrderedCollection new.
> | > | > |      aConfigurationRecord loadDirective packageDirectivesDo:
> | > | > |      [:directive |
> | > | > |         pkgs add:
> | > | > |             {directive spec name, '*'.
> | > | > |             (self removeCache: directive spec workingCopy
> | > | > |             repositoryGroup repositories) anyOne
> | > | > |              locationWithTrailingSlash} ].
> | > | > |      ^ pkgs
> | > | > | 
> | > | > | 
> | > | > |     - then I try to load the package as follows:
> | > | > | 
> | > | > |     flatVersion47: spec
> | > | > |             <version: '4.7-flat'>
> | > | > |     
> | > | > |             spec for: #common do: [
> | > | > |                     self populateSpec: spec with: self script3 ]
> | > | > | 
> | > | > | I load them doing
> | > | > |     (ConfigurationOfMoose project version: '4.7-flat') load
> | > | > | Now It does not work because after fetching all the packages,
> | > | > | the
> | > | > | system complain that some classes that will be loaded later
> | > | > | are
> | > | > | not
> | > | > | present.
> | > | > | I imagine that you use Gofer and that Gofer does not use the
> | > | > | merging
> | > | > | semantics of MC over multiple projects (that you can have
> | > | > | multiple
> | > | > | package in any order and that the classes get loaded - as I
> | > | > | use
> | > | > | it
> | > | > | for the scriptLoader and below).
> | > | > | 
> | > | > | 
> | > | > | - before  I was doing it by doing a diff between the pharo
> | > | > | package
> | > | > | and the one loaded and I was loading the specification after
> | > | > | installing the repository
> | > | > | and the working copies using the MCVersionLoader and it
> | > | > | worked I
> | > | > | could reload completely Moose!
> | > | > |     
> | > | > | 
> | > | > |     load: aCollectionOfPackageString
> | > | > |     "self new
> | > | > |             load: #( 'Famix-C-TudorGirba.15'
> | > | > |              'Famix-Core-NicolasAnquetil.201'))"
> | > | > |     
> | > | > |     | loader |
> | > | > |     loader :=  MCVersionLoader new.
> | > | > |     (self newerVersionsIn: aCollectionOfPackageString)
> | > | > |             do: [ :fn | loader addVersion: (self
> | > | > |             loadVersionFromFileNamed:
> | > | > |             fn).
> | > | > |             (Delay forSeconds: 2) wait.]
> | > | > |             displayingProgress: 'Adding versions...'.
> | > | > |     loader hasVersions ifTrue: [loader load].
> | > | > | 
> | > | > | 
> | > | > | So my question is
> | > | > |     - Does the  packageDirectivesDo: provide an order that I can
> | > | > |     use
> | > | > |     to
> | > | > |     load package with the gofer-load on project at a time?
> | > | > |     May be my code does not keep the same order but I payed
> | > | > |     attention to
> | > | > |     this point. I will check that further.
> | > | > |     
> | > | > |     - may be I could extend Gofer to support multiple project
> | > | > |     merge
> | > | > |     loading.
> | > | > | 
> | > | > | So right now I'm stuck and this is sad because freezing a
> | > | > | complex
> | > | > | configuration is really needed.
> | > | > | 
> | > | > | Stef
> | > | > | 
> | > | > | 
> | > | > | 
> | > | > | 
> | > | > | 
> | > | > | 
> | > | > 
> | > | 
> | > | --
> | > | www.tudorgirba.com
> | > | 
> | > | "It's not what we do that matters most, it's how we do it."
> | > | 
> | > | 
> | > | 
> | > 
> | 
> 


Reply via email to