On Fri, Aug 3, 2012 at 7:27 PM, Mariano Martinez Peck <[hidden email]> wrote:
However, even if the popup disappear and the packages are included, they are in the incorrect order: seasidePackages
^ #('ConfigurationOfGrease' 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-FileSystem' 'Zinc-HTTP' 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' 'Javascript-Core' 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-Pharo-Email' 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' 'Seaside-Environment' 'Seaside-Pharo-Environment' 'Seaside-Development' 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' 'RSS-Tests-Core' 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' 'Seaside-Tests-Email' 'Seaside-Tests-Pharo-Email' 'Seaside-Tests-Functional' 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' 'Seaside-Welcome' 'Seaside-Pharo-Welcome' 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' 'Seaside-Pharo-Development' 'ConfigurationOfSeaside30' 'ConfigurationOfMagritte2' 'Magritte-Model' 'Magritte-Morph' 'Magritte-Pharo-Model' 'Magritte-Seaside' 'Magritte-Pharo-Seaside' 'Pier-Model' 'Pier-Pharo-Model' 'Pier-Seaside' 'Pier-Pharo-Seaside' 'Pier-Security' 'Pier-Pharo-Persistency' 'ConfigurationOfPier2' 'ConfigurationOfJQueryWidgetBox' 'ConfigurationOfXMLSupport' 'JQWidgetBox-Core' 'JQWidgetBox-FormExample-Core' 'ConfigurationOfXMLWriter' 'Collections-OrderPreservingDictionary' 'Collections-Support' 'XML-Writer' 'Collections-BitmapCharacterSet' 'XML-Parser' 'Pier-Blog' 'Pier-Book' 'Pier-Design' 'Pier-Documents' 'Pier-EditorEnh' 'Pier-Shout' 'Pier-Google' 'Pier-JQuery' 'Pier-LinkChecker' 'Pier-Setup' 'Pier-FuelPersistence-Core' 'Pier-FuelPersistence-Test')
'XML-Writer' is BEFORE 'XML-Parser'. But XMLWriter>>initialize references XMLNamespaceScope (which is from XML-Parser). So...we should change the order. But., XMLNode (from XML-Parser) >> printOn: references XMLWriter....
grrrr so, all in all I see a cycle. I thought Metacello had a cycle detection. Thanks Dale!
Mariano http://marianopeck.wordpress.com |
In reply to this post by Mariano Martinez Peck
Mariano,
When you use #ignoreImage, Metacello only has only the specs in the given project to work from ... if there are packages that exist in the image, that cause Metacello to change it's notion of the current version of particular dependent projects then you'll get differences in your answers ... The subtle "loaded package effects" from using "image state", rather than "loaded state" is one of the main reasons I'm going with the project registry. The project registry records what you load into your image (tracking upgrades & downgrades), so already loaded packages should not affect what version Metacello thinks is loaded. Dale ----- Original Message ----- | From: "Mariano Martinez Peck" <[hidden email]> | To: [hidden email] | Sent: Friday, August 3, 2012 10:27:56 AM | Subject: Re: [Metacello] collecting all packages of a configuration | | | | | On Fri, Aug 3, 2012 at 7:24 PM, Mariano Martinez Peck < | [hidden email] > wrote: | | | | | | | On Fri, Aug 3, 2012 at 7:17 PM, Dale Henrichs < [hidden email] > | wrote: | | | Mariano, | | | I'm running the load expression in Pharo-1.4 and I hit the warning | about needing ImageSegments, so I can't complete the load in | Pharo-1.4 ... | | I need a bit more info about how you get past needing ImageSegments | problem before I can proceed... | | | | | | Hi Dale. Thanks for trying to reproduce it. Indeed, I also had that | problem of ImageSegment as well as another one for BlockContext. I | just clicked on "proceed". | I think the problem is more or less like this: | ConfigurationOfPierAddOns loads an old version of XML-Parser ( | 1.0.1) then another project install a newer version of XML-Parser | and there appears the popup. At the same time, those packages I | mention that do not appear ( 'Collections- BitmapCharacterSet' or | 'Collections- OrderPreservingDictionary' ) are ONLY present in the | new version of ConfigurationOfXMLSupport (not in the old 1.0.1). | So...I think that what happens is that you load version XXX of | something, but then YYY (which may need other packages). However, | when you query Metacello, he only remember about XXX. Can it be | something like that? | | | | | In fact, if I change ConfigurationOfPierAddOns2 >> version210: and | change | | | project: 'XML Parser' with: '1.0.1'. | | | to | | | project: 'XML Parser' with: #stable. | | | the popup disappear and the packages are included when I query | Metacello. | | | | | | | | | | Thanks! | | | | | | | | Dale | | ----- Original Message ----- | | From: "Mariano Martinez Peck" < [hidden email] > | | To: [hidden email] | | | | Sent: Thursday, August 2, 2012 9:56:40 AM | | Subject: Re: [Metacello] collecting all packages of a configuration | | | | Hi Dale. I find myself again, trying to collect the packages loaded | | (and their order). There is something that does not work and I | | cannot figure out what is happening. At least, it is reproducible | | ;) | | | | | | I took the last Pharo 2.0 available from Jenkins, and I install | | seaside and pier as following: | | | | | | | | Gofer it | | squeaksource: 'MetacelloRepository'; | | package: 'ConfigurationOfSeaside30'; | | load. | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | #stable) | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome'). | | | | Gofer it | | squeaksource: 'MetacelloRepository'; | | package: 'ConfigurationOfPier2'; | | load. | | | | | | ((Smalltalk at: #ConfigurationOfPier2) project version: #stable) | | load. | | | | | | | | | | Gofer it | | squeaksource: 'MetacelloRepository'; | | package: 'ConfigurationOfPierAddOns2'; | | load. | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfPierAddOns2) project version: | | #stable) load: #('default' 'Pier-Shout' 'Pier-Design' ). | | | | | | | | | | Now...while loading that, I have an popup saying I am about to load | | a | | new version of XML-Parser (see attachment). Ok, I say "load" and | | everything loads fine after. | | | | | | The problem is that if now I ask Metacello the loaded packages: | | | | | | | | | | | | | | >> packagesFromConf: confName version: versionString loading: | | >> packageOrGroups | | | loader pkgs | | | | | loader := ((Smalltalk at: confName asSymbol) project version: | | versionString) | | ignoreImage: true; | | record: packageOrGroups. | | pkgs := OrderedCollection new. | | loader loadDirective packageDirectivesDo: [:directive | pkgs add: | | directive spec name ]. | | ^ pkgs | | | | | | | | | | >> seasidePackages | | | packages loader | | | packages := OrderedCollection new. | | packages addAll: (self packagesFromConf: #ConfigurationOfSeaside30 | | version: #stable loading: #('Base' 'Zinc-Seaside' 'Base Tests' | | 'RSS-Core' 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | )). | | | | | | packages addAll: (self packagesFromConf: #ConfigurationOfPier2 | | version: #stable loading: #('default')). | | packages addAll: (self packagesFromConf: | | #ConfigurationOfPierAddOns2 | | version: #stable loading: #('default' 'Pier-Shout' 'Pier-Design' | | )). | | packages addAll: #('Pier-FuelPersistence-Core' | | 'Pier-FuelPersistence-Test'). | | | | packages := packages removeDuplicates. | | | | ^ packages | | | | | | | | | | | | | | | | There are some packages that do not appear, like | | 'Collections-BitmapCharacterSet' or | | 'Collections-OrderPreservingDictionary', which are needed by | | ConfigurationOfXMLSupport . And....this is related to the error I | | got popup (saying I was loading a new version) | | | | | | So...all in all, do you have something in mind that could be | | happening? Sorry for not being able to dig deeper. | | | | | | Thanks!!! | | | | | | | | | | | | | | On Sun, May 13, 2012 at 5:05 PM, Dale Henrichs < | | [hidden email] | | > wrote: | | | | | | Mariano, | | | | The loadDirectives are actually used for the Metacello load, so you | | are getting the load order from the horse's mouth... | | | | Seaside-Core is one of the first packages that needs to be loaded | | so | | Seaside-Tools-Core should be loaded _after_ Seaside-Core ... | | | | WARegistry class is in Seaside-Core, but the method WARegistry | | class>>#clearAllHandlers is actually in the Seaside-Tools-Core | | package (*seaside-tools-core) so everything is consistent... | | | | | | Dale | | | | ----- Original Message ----- | | | From: "Mariano Martinez Peck" < [hidden email] > | | | To: [hidden email] | | | | | | | Sent: Sunday, May 13, 2012 6:50:18 AM | | | Subject: Re: [Metacello] collecting all packages of a | | | configuration | | | | | | Hi Dale. For a different purpose, I need again something related | | | to | | | this. | | | What I actually need is to ask Metacello the list of packages I | | | need | | | when I do load: xxx SORTED by the load order. I mean, I want they | | | to | | | be sorted in the way that those that need to be loaded first go | | | first. | | | | | | Take this example. I have download seaside this way: | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | #stable) | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | ). | | | | | | But those pacakages/groups have another dependencies etc etc. So | | | I | | | am | | | using this to query: | | | | | | | pkgs loader | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | version: | | | ' 3.0.6.3 ') | | | ignoreImage: true; | | | record: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | ). | | | pkgs := OrderedCollection new. | | | loader loadDirective packageDirectivesDo: [:directive | pkgs add: | | | directive spec name ]. | | | ^ pkgs | | | | | | | | | It loooks like if that would answer the list of packages in load | | | order, but this is not true. If you inspect that, you obtain | | | this: | | | | | | an OrderedCollection('ConfigurationOfGrease' | | | 'ConfigurationOfGrease' | | | 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' | | | 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Core' | | | 'Grease-Pharo-Core' | | | 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-HTTP' | | | 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' | | | 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' | | | 'Javascript-Core' | | | 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-Pharo-Email' | | | 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' | | | 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' | | | 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' | | | 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' | | | 'Seaside-Environment' | | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' | | | 'RSS-Tests-Core' | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' | | | 'Seaside-Welcome' 'Seaside-Pharo-Welcome' 'Prototype-Tests-Core' | | | 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' | | | 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | | 'Seaside-Pharo-Development') | | | | | | As you can see, for example, 'Seaside-Tools-Core' is AFTER | | | 'Seaside-Core'. Right? However, for example, WARegistry >> | | | #clearAllHandlers (package 'Seaside-Core') has references to | | | WAAdmin | | | (present in 'Seaside-Tools-Core''). So? is 'Seaside-Tools-Core' | | | actually loaded before 'Seaside-Core'? if true, how can I query | | | that | | | to Metacello. If false, why don't you get the ugly Monticello | | | popup | | | saying you that you have dependencies on ... | | | | | | Thanks! | | | | | | | | | | | | | | | | | | On Mon, Dec 5, 2011 at 6:53 PM, Dale Henrichs < | | | [hidden email] | | | > | | | wrote: | | | | | | | | | Mariano, | | | | | | Regarding your complaint about having the OmniBrowser packages | | | show | | | up when you are using the #loadDirective based variant. The | | | 'Core' | | | group for Seaside includes Seaside-Tools-OmniBrowser, so when you | | | load the 'Core' group OmniBrowser is a required package. You are | | | sitting in a Pharo image that already has OmniBrowser loaded, so | | | when you load Seaside30 you don't see the OB packages getting | | | loaded. However, in the #loadDirective variant, you are using | | | #ignoreImage: and when Metacello ignores the image, it ignores | | | the | | | fact that OB is already loaded as well ... If you want to know | | | what | | | would be loaded into the current image, then don't set | | | #ignoreImage | | | to true ... the OmniBrowser packages and any other packages that | | | are | | | already loaded won't show up ... | | | | | | If there is a set of configs that you would like to | | | include/exclude, | | | then a more complex load directive algorithm can be used... | | | | | | Regarding the duplication of packages, I would say that since you | | | are | | | only interested in the list of packages that would be loaded, you | | | can safely ignore the duplicates. | | | | | | Regarding the inclusion of the ConfigurationOfXXX files, | | | technically, | | | those files are needed for a load. No version information is | | | associated with the configuration file, because config files | | | always | | | have their latest available version loaded ... If you want to | | | filter | | | those files out, then there is a more complex loadDirective | | | traversal algorithm you could use, or you can filter out the | | | configs | | | with #beginsWith:... | | | | | | | | | Dale | | | | | | ----- Original Message ----- | | | | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | To: [hidden email] | | | | Sent: Saturday, December 3, 2011 4:27:13 PM | | | | | | | | | | Subject: Re: [Metacello] collecting all packages of a | | | | configuration | | | | | | | | | | | | | | | | | | | | On Thu, Nov 17, 2011 at 6:57 PM, Dale Henrichs < | | | | [hidden email] | | | | > wrote: | | | | | | | | | | | | Jannik, | | | | | | | | There are two routes you can take to answer your question. | | | | Firstly, | | | | you can directly query the version itself: | | | | | | | | ((ConfigurationOfMetacello project currentVersion) | | | | allPackagesForSpecNamed: 'ALL') | | | | collect: [:spec | spec file ]. | | | | | | | | Or you can use #record: and then collect the information you | | | | want: | | | | | | | | | pkgs loader | | | | | loader := (ConfigurationOfMetacello project currentVersion) | | | | ignoreImage: true; | | | | record: 'ALL'. | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | add: | | | | directive spec file ]. | | | | pkgs. | | | | | | | | | | | | | | | | Hi Dale. I have notice that both ways are different. For | | | | example, | | | | the | | | | first one does not take into account those ConfigurationOfXXX | | | | packages, whereas the second one does. Moreoever, in the second | | | | one, | | | | I see that there are repetitions. For example: | | | | | | | | | pkgs loader | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | | version: | | | | ' 3.0.6.3 ') | | | | ignoreImage: true; | | | | record: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | add: | | | | directive spec file ]. | | | | pkgs. | | | | | | | | size gives me 127, but asSet size, 106. It seems some packages | | | | appear | | | | more than once like ConfigurationOfGrease. | | | | | | | | ConfigurationOfXXX do not have version number in their name, | | | | but | | | | the | | | | rest do have. | | | | | | | | Now, the main problem is that none of them is what I need: I | | | | need | | | | ALL | | | | the required packages that are needed to load such project with | | | | metacello. I want to capture the exact list of packages needed | | | | when | | | | I do, for example: | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | ' 3.0.6.3 ') | | | | load: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | | | | The first one doesn't even take into account ConfigurationOfXX, | | | | so | | | | it | | | | doesn't help me. The second one, not only has repetitions, but | | | | also | | | | it lists packages that I really don't need. For example, | | | | OB-Morphic-lr.164 and Seaside-Tools-OmniBrowser-lr.25. I don't | | | | understand how those packages arrived to the list. If I take a | | | | clean | | | | image, and install Seaside with the way I showed you, those | | | | packages | | | | are not even downloaded. So why do they appear here? | | | | | | | | So...all in all, what I need is a list of the exact packages I | | | | need | | | | to reproduce something I have loaded with Metacello. In other | | | | words, | | | | if I start an image with an empty package-cache, and execute | | | | the | | | | load of seaside, how can I know the list of packages that were | | | | downloaded? of course, not inspecting the package-cache ;) | | | | | | | | Thanks in advance Dale!!! | | | | | | | | | | | | | | | | | | | | Dale | | | | | | | | | | | | | | | | ----- Original Message ----- | | | | | From: "jannik.laval" < [hidden email] > | | | | | To: [hidden email] | | | | | Sent: Thursday, November 17, 2011 5:11:09 AM | | | | | Subject: [Metacello] collecting all packages of a | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi guys, | | | | | | | | | | | | | | | With mariano, we had a discussion about a problem I have: | | | | | How can I collect all packages from a configuration with | | | | | resolving | | | | | all sub projects ? | | | | | | | | | | | | | | | Thank you for your help. | | | | | Cheers, | | | | | Jannik | | | | | | | | | | | | | | | | | | | | Begin forwarded message: | | | | | | | | | | | | | | | | | | | | From: Mariano Martinez Peck < [hidden email] > | | | | | | | | | | Subject: Re: Metacello question | | | | | | | | | | Date: November 16, 2011 4:09:38 PM GMT+01:00 | | | | | | | | | | To: "jannik.laval" < [hidden email] > | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 11:57 AM, jannik.laval < | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | | | | | | | | | | I understand your code and It seems to be the same as mine. | | | | | version40 make the same as "project version: '4.0'". | | | | | | | | | | | | | | | The problem is the resolution of internal projects. | | | | | We should collect the methods recursively... and possibly | | | | | with | | | | | circular dependencies. | | | | | So, Metacello can resolve them, but I do not know Metacello | | | | | :( | | | | | | | | | | | | | | | | | | | | | | | | | I have no idea :( | | | | | Ask in metacello mailing list: [hidden email] , | | | | | | | | | | good luck | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Nov 16, 2011, at 15:36 , Mariano Martinez Peck wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 6:59 AM, jannik.laval < | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | Hi Mariano, | | | | | How are you ? | | | | | Here, at Bordeaux, I am fine, and all the family too :) | | | | | | | | | | | | | | | | | | | | Excellent, nice to hear that :) | | | | | I am in Argentina in holidays (after Smalltalks) and all | | | | | familiy | | | | | good | | | | | as well hahahahah | | | | | | | | | | | | | | | | | | | | I have a question about Metacello, and you know well | | | | | Metacello | | | | | :) | | | | | I would like to collect all the files to load of a | | | | | Configuration | | | | | with | | | | | all dependencies already resolved. | | | | | | | | | | For now, I have this code in a transcript: | | | | | === | | | | | ConfigurationOfMoose version40 spec packages map select:[:e | | | | | | e | | | | | isKindOf: MetacelloPackageSpec ] | | | | | thenCollect: [:e | e repositories list isEmpty | | | | | ifTrue: [e file] | | | | | ifFalse: [e repositories list first name, '/' , e file]]. | | | | | === | | | | | It allows me to have all files in ConfigurationOfMoose, but I | | | | | have | | | | | two problems: | | | | | | | | | | - if I change version40 by version42, I have no more the name | | | | | of | | | | | packages. | | | | | Here is an example: | | | | | with version40, the first value of my collection is: ' | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-tg.3 ' | | | | | with version42, it is: ' | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-Browser ' | | | | | ==> I have no more the versions to load. | | | | | | | | | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.0') packages | | | | | collect: | | | | | [ | | | | | :each | each name ] as: Set. | | | | | | | | | | or .. | | | | | | | | | | (ConfigurationOfMoose project version: '4.2') packages | | | | | collect: | | | | | [ | | | | | :each | each name ] as: Set. | | | | | | | | | | does that help ? | | | | | | | | | | | | | | | | | | | | - the second problem is about depending project. Moose load | | | | | other | | | | | projects, and there are some cyclic dependencies between the | | | | | loads: | | | | | for example DSM needs Moose, and Moose loads DSM..... | | | | | I know that Metacello resolves this kind of problems. | | | | | | | | | | So, my question is: is it possible to obtain a list of all | | | | | packages | | | | | of a configuration ? | | | | | | | | | | Thank you | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | -- | | | | Mariano | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | -- | | Mariano | | http://marianopeck.wordpress.com | | | | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | |
In reply to this post by Mariano Martinez Peck
Mariano,
Metacello does have cycle detection -- most likely you're seeing the effects of different paths with different required versions of the same leaf project... If you print the loadDirective you should be able to trace the different paths and see the different versions. Metacello detects cycles, but Metacello does not collapse the packages with the different versions... if you are using atomic load, then I assume that the Monticello loader will collapse packages, but when you don't use atomic load, Metacello loads the packages for the "currently required version" even though that may result in a reload of the package a bit later... Dale ----- Original Message ----- | From: "Mariano Martinez Peck" <[hidden email]> | To: [hidden email] | Sent: Friday, August 3, 2012 10:37:44 AM | Subject: Re: [Metacello] collecting all packages of a configuration | | | | | On Fri, Aug 3, 2012 at 7:27 PM, Mariano Martinez Peck < | [hidden email] > wrote: | | | | | | | On Fri, Aug 3, 2012 at 7:24 PM, Mariano Martinez Peck < | [hidden email] > wrote: | | | | | | | On Fri, Aug 3, 2012 at 7:17 PM, Dale Henrichs < [hidden email] > | wrote: | | | Mariano, | | | I'm running the load expression in Pharo-1.4 and I hit the warning | about needing ImageSegments, so I can't complete the load in | Pharo-1.4 ... | | I need a bit more info about how you get past needing ImageSegments | problem before I can proceed... | | | | | | Hi Dale. Thanks for trying to reproduce it. Indeed, I also had that | problem of ImageSegment as well as another one for BlockContext. I | just clicked on "proceed". | I think the problem is more or less like this: | ConfigurationOfPierAddOns loads an old version of XML-Parser ( | 1.0.1) then another project install a newer version of XML-Parser | and there appears the popup. At the same time, those packages I | mention that do not appear ( 'Collections- BitmapCharacterSet' or | 'Collections- OrderPreservingDictionary' ) are ONLY present in the | new version of ConfigurationOfXMLSupport (not in the old 1.0.1). | So...I think that what happens is that you load version XXX of | something, but then YYY (which may need other packages). However, | when you query Metacello, he only remember about XXX. Can it be | something like that? | | | | | In fact, if I change ConfigurationOfPierAddOns2 >> version210: and | change | | | project: 'XML Parser' with: '1.0.1'. | | | to | | | project: 'XML Parser' with: #stable. | | | the popup disappear and the packages are included when I query | Metacello. | | | | | | | | | However, even if the popup disappear and the packages are included, | they are in the incorrect order: | | | | seasidePackages | ^ #('ConfigurationOfGrease' 'ConfigurationOfSPort2' | 'ConfigurationOfZincHTTPComponents' 'Grease-Core' | 'Grease-Pharo-Core' 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' | 'Zinc-FileSystem' 'Zinc-HTTP' 'Seaside-Core' 'Seaside-Pharo-Core' | 'Seaside-Component' 'Seaside-Canvas' 'Seaside-Pharo-Canvas' | 'RSS-Core' 'Javascript-Core' 'Javascript-Pharo-Core' | 'Prototype-Core' 'Scriptaculous-Core' 'JQuery-Core' 'JQuery-UI' | 'Seaside-Email' 'Seaside-Pharo-Email' 'Seaside-HTML5' | 'Seaside-InternetExplorer' 'Seaside-Session' 'Seaside-RenderLoop' | 'Seaside-Tools-Core' 'Seaside-Flow' 'Seaside-Examples' | 'RSS-Examples' 'Seaside-Widgets' 'Seaside-Tools-Web' | 'Seaside-Pharo-Tools-Web' 'Seaside-Environment' | 'Seaside-Pharo-Environment' 'Seaside-Development' | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' 'RSS-Tests-Core' | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | 'Seaside-Tests-Email' 'Seaside-Tests-Pharo-Email' | 'Seaside-Tests-Functional' 'Seaside-Tests-Pharo-Functional' | 'Seaside-Tests-Flow' 'Seaside-Welcome' 'Seaside-Pharo-Welcome' | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | 'Seaside-Pharo-Development' 'ConfigurationOfSeaside30' | 'ConfigurationOfMagritte2' 'Magritte-Model' 'Magritte-Morph' | 'Magritte-Pharo-Model' 'Magritte-Seaside' 'Magritte-Pharo-Seaside' | 'Pier-Model' 'Pier-Pharo-Model' 'Pier-Seaside' 'Pier-Pharo-Seaside' | 'Pier-Security' 'Pier-Pharo-Persistency' 'ConfigurationOfPier2' | 'ConfigurationOfJQueryWidgetBox' 'ConfigurationOfXMLSupport' | 'JQWidgetBox-Core' 'JQWidgetBox-FormExample-Core' | 'ConfigurationOfXMLWriter' 'Collections-OrderPreservingDictionary' | 'Collections-Support' 'XML-Writer' 'Collections-BitmapCharacterSet' | 'XML-Parser' 'Pier-Blog' 'Pier-Book' 'Pier-Design' 'Pier-Documents' | 'Pier-EditorEnh' 'Pier-Shout' 'Pier-Google' 'Pier-JQuery' | 'Pier-LinkChecker' 'Pier-Setup' 'Pier-FuelPersistence-Core' | 'Pier-FuelPersistence-Test') | | | | | 'XML-Writer' is BEFORE 'XML-Parser'. But XMLWriter>>initialize | references XMLNamespaceScope (which is from XML-Parser). | So...we should change the order. But., XMLNode (from XML-Parser) >> | printOn: references XMLWriter.... | | | grrrr so, all in all I see a cycle. I thought Metacello had a cycle | detection. | | | Thanks Dale! | | | | | | | | | | | | | | | Thanks! | | | | | | | | Dale | | ----- Original Message ----- | | From: "Mariano Martinez Peck" < [hidden email] > | | To: [hidden email] | | | | Sent: Thursday, August 2, 2012 9:56:40 AM | | Subject: Re: [Metacello] collecting all packages of a configuration | | | | Hi Dale. I find myself again, trying to collect the packages loaded | | (and their order). There is something that does not work and I | | cannot figure out what is happening. At least, it is reproducible | | ;) | | | | | | I took the last Pharo 2.0 available from Jenkins, and I install | | seaside and pier as following: | | | | | | | | Gofer it | | squeaksource: 'MetacelloRepository'; | | package: 'ConfigurationOfSeaside30'; | | load. | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | #stable) | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome'). | | | | Gofer it | | squeaksource: 'MetacelloRepository'; | | package: 'ConfigurationOfPier2'; | | load. | | | | | | ((Smalltalk at: #ConfigurationOfPier2) project version: #stable) | | load. | | | | | | | | | | Gofer it | | squeaksource: 'MetacelloRepository'; | | package: 'ConfigurationOfPierAddOns2'; | | load. | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfPierAddOns2) project version: | | #stable) load: #('default' 'Pier-Shout' 'Pier-Design' ). | | | | | | | | | | Now...while loading that, I have an popup saying I am about to load | | a | | new version of XML-Parser (see attachment). Ok, I say "load" and | | everything loads fine after. | | | | | | The problem is that if now I ask Metacello the loaded packages: | | | | | | | | | | | | | | >> packagesFromConf: confName version: versionString loading: | | >> packageOrGroups | | | loader pkgs | | | | | loader := ((Smalltalk at: confName asSymbol) project version: | | versionString) | | ignoreImage: true; | | record: packageOrGroups. | | pkgs := OrderedCollection new. | | loader loadDirective packageDirectivesDo: [:directive | pkgs add: | | directive spec name ]. | | ^ pkgs | | | | | | | | | | >> seasidePackages | | | packages loader | | | packages := OrderedCollection new. | | packages addAll: (self packagesFromConf: #ConfigurationOfSeaside30 | | version: #stable loading: #('Base' 'Zinc-Seaside' 'Base Tests' | | 'RSS-Core' 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | )). | | | | | | packages addAll: (self packagesFromConf: #ConfigurationOfPier2 | | version: #stable loading: #('default')). | | packages addAll: (self packagesFromConf: | | #ConfigurationOfPierAddOns2 | | version: #stable loading: #('default' 'Pier-Shout' 'Pier-Design' | | )). | | packages addAll: #('Pier-FuelPersistence-Core' | | 'Pier-FuelPersistence-Test'). | | | | packages := packages removeDuplicates. | | | | ^ packages | | | | | | | | | | | | | | | | There are some packages that do not appear, like | | 'Collections-BitmapCharacterSet' or | | 'Collections-OrderPreservingDictionary', which are needed by | | ConfigurationOfXMLSupport . And....this is related to the error I | | got popup (saying I was loading a new version) | | | | | | So...all in all, do you have something in mind that could be | | happening? Sorry for not being able to dig deeper. | | | | | | Thanks!!! | | | | | | | | | | | | | | On Sun, May 13, 2012 at 5:05 PM, Dale Henrichs < | | [hidden email] | | > wrote: | | | | | | Mariano, | | | | The loadDirectives are actually used for the Metacello load, so you | | are getting the load order from the horse's mouth... | | | | Seaside-Core is one of the first packages that needs to be loaded | | so | | Seaside-Tools-Core should be loaded _after_ Seaside-Core ... | | | | WARegistry class is in Seaside-Core, but the method WARegistry | | class>>#clearAllHandlers is actually in the Seaside-Tools-Core | | package (*seaside-tools-core) so everything is consistent... | | | | | | Dale | | | | ----- Original Message ----- | | | From: "Mariano Martinez Peck" < [hidden email] > | | | To: [hidden email] | | | | | | | Sent: Sunday, May 13, 2012 6:50:18 AM | | | Subject: Re: [Metacello] collecting all packages of a | | | configuration | | | | | | Hi Dale. For a different purpose, I need again something related | | | to | | | this. | | | What I actually need is to ask Metacello the list of packages I | | | need | | | when I do load: xxx SORTED by the load order. I mean, I want they | | | to | | | be sorted in the way that those that need to be loaded first go | | | first. | | | | | | Take this example. I have download seaside this way: | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | #stable) | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | ). | | | | | | But those pacakages/groups have another dependencies etc etc. So | | | I | | | am | | | using this to query: | | | | | | | pkgs loader | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | version: | | | ' 3.0.6.3 ') | | | ignoreImage: true; | | | record: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | ). | | | pkgs := OrderedCollection new. | | | loader loadDirective packageDirectivesDo: [:directive | pkgs add: | | | directive spec name ]. | | | ^ pkgs | | | | | | | | | It loooks like if that would answer the list of packages in load | | | order, but this is not true. If you inspect that, you obtain | | | this: | | | | | | an OrderedCollection('ConfigurationOfGrease' | | | 'ConfigurationOfGrease' | | | 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' | | | 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Core' | | | 'Grease-Pharo-Core' | | | 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-HTTP' | | | 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' | | | 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' | | | 'Javascript-Core' | | | 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-Pharo-Email' | | | 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' | | | 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' | | | 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' | | | 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' | | | 'Seaside-Environment' | | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' | | | 'RSS-Tests-Core' | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' | | | 'Seaside-Welcome' 'Seaside-Pharo-Welcome' 'Prototype-Tests-Core' | | | 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' | | | 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | | 'Seaside-Pharo-Development') | | | | | | As you can see, for example, 'Seaside-Tools-Core' is AFTER | | | 'Seaside-Core'. Right? However, for example, WARegistry >> | | | #clearAllHandlers (package 'Seaside-Core') has references to | | | WAAdmin | | | (present in 'Seaside-Tools-Core''). So? is 'Seaside-Tools-Core' | | | actually loaded before 'Seaside-Core'? if true, how can I query | | | that | | | to Metacello. If false, why don't you get the ugly Monticello | | | popup | | | saying you that you have dependencies on ... | | | | | | Thanks! | | | | | | | | | | | | | | | | | | On Mon, Dec 5, 2011 at 6:53 PM, Dale Henrichs < | | | [hidden email] | | | > | | | wrote: | | | | | | | | | Mariano, | | | | | | Regarding your complaint about having the OmniBrowser packages | | | show | | | up when you are using the #loadDirective based variant. The | | | 'Core' | | | group for Seaside includes Seaside-Tools-OmniBrowser, so when you | | | load the 'Core' group OmniBrowser is a required package. You are | | | sitting in a Pharo image that already has OmniBrowser loaded, so | | | when you load Seaside30 you don't see the OB packages getting | | | loaded. However, in the #loadDirective variant, you are using | | | #ignoreImage: and when Metacello ignores the image, it ignores | | | the | | | fact that OB is already loaded as well ... If you want to know | | | what | | | would be loaded into the current image, then don't set | | | #ignoreImage | | | to true ... the OmniBrowser packages and any other packages that | | | are | | | already loaded won't show up ... | | | | | | If there is a set of configs that you would like to | | | include/exclude, | | | then a more complex load directive algorithm can be used... | | | | | | Regarding the duplication of packages, I would say that since you | | | are | | | only interested in the list of packages that would be loaded, you | | | can safely ignore the duplicates. | | | | | | Regarding the inclusion of the ConfigurationOfXXX files, | | | technically, | | | those files are needed for a load. No version information is | | | associated with the configuration file, because config files | | | always | | | have their latest available version loaded ... If you want to | | | filter | | | those files out, then there is a more complex loadDirective | | | traversal algorithm you could use, or you can filter out the | | | configs | | | with #beginsWith:... | | | | | | | | | Dale | | | | | | ----- Original Message ----- | | | | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | To: [hidden email] | | | | Sent: Saturday, December 3, 2011 4:27:13 PM | | | | | | | | | | Subject: Re: [Metacello] collecting all packages of a | | | | configuration | | | | | | | | | | | | | | | | | | | | On Thu, Nov 17, 2011 at 6:57 PM, Dale Henrichs < | | | | [hidden email] | | | | > wrote: | | | | | | | | | | | | Jannik, | | | | | | | | There are two routes you can take to answer your question. | | | | Firstly, | | | | you can directly query the version itself: | | | | | | | | ((ConfigurationOfMetacello project currentVersion) | | | | allPackagesForSpecNamed: 'ALL') | | | | collect: [:spec | spec file ]. | | | | | | | | Or you can use #record: and then collect the information you | | | | want: | | | | | | | | | pkgs loader | | | | | loader := (ConfigurationOfMetacello project currentVersion) | | | | ignoreImage: true; | | | | record: 'ALL'. | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | add: | | | | directive spec file ]. | | | | pkgs. | | | | | | | | | | | | | | | | Hi Dale. I have notice that both ways are different. For | | | | example, | | | | the | | | | first one does not take into account those ConfigurationOfXXX | | | | packages, whereas the second one does. Moreoever, in the second | | | | one, | | | | I see that there are repetitions. For example: | | | | | | | | | pkgs loader | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | | version: | | | | ' 3.0.6.3 ') | | | | ignoreImage: true; | | | | record: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | add: | | | | directive spec file ]. | | | | pkgs. | | | | | | | | size gives me 127, but asSet size, 106. It seems some packages | | | | appear | | | | more than once like ConfigurationOfGrease. | | | | | | | | ConfigurationOfXXX do not have version number in their name, | | | | but | | | | the | | | | rest do have. | | | | | | | | Now, the main problem is that none of them is what I need: I | | | | need | | | | ALL | | | | the required packages that are needed to load such project with | | | | metacello. I want to capture the exact list of packages needed | | | | when | | | | I do, for example: | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | ' 3.0.6.3 ') | | | | load: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | | | | The first one doesn't even take into account ConfigurationOfXX, | | | | so | | | | it | | | | doesn't help me. The second one, not only has repetitions, but | | | | also | | | | it lists packages that I really don't need. For example, | | | | OB-Morphic-lr.164 and Seaside-Tools-OmniBrowser-lr.25. I don't | | | | understand how those packages arrived to the list. If I take a | | | | clean | | | | image, and install Seaside with the way I showed you, those | | | | packages | | | | are not even downloaded. So why do they appear here? | | | | | | | | So...all in all, what I need is a list of the exact packages I | | | | need | | | | to reproduce something I have loaded with Metacello. In other | | | | words, | | | | if I start an image with an empty package-cache, and execute | | | | the | | | | load of seaside, how can I know the list of packages that were | | | | downloaded? of course, not inspecting the package-cache ;) | | | | | | | | Thanks in advance Dale!!! | | | | | | | | | | | | | | | | | | | | Dale | | | | | | | | | | | | | | | | ----- Original Message ----- | | | | | From: "jannik.laval" < [hidden email] > | | | | | To: [hidden email] | | | | | Sent: Thursday, November 17, 2011 5:11:09 AM | | | | | Subject: [Metacello] collecting all packages of a | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi guys, | | | | | | | | | | | | | | | With mariano, we had a discussion about a problem I have: | | | | | How can I collect all packages from a configuration with | | | | | resolving | | | | | all sub projects ? | | | | | | | | | | | | | | | Thank you for your help. | | | | | Cheers, | | | | | Jannik | | | | | | | | | | | | | | | | | | | | Begin forwarded message: | | | | | | | | | | | | | | | | | | | | From: Mariano Martinez Peck < [hidden email] > | | | | | | | | | | Subject: Re: Metacello question | | | | | | | | | | Date: November 16, 2011 4:09:38 PM GMT+01:00 | | | | | | | | | | To: "jannik.laval" < [hidden email] > | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 11:57 AM, jannik.laval < | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | | | | | | | | | | I understand your code and It seems to be the same as mine. | | | | | version40 make the same as "project version: '4.0'". | | | | | | | | | | | | | | | The problem is the resolution of internal projects. | | | | | We should collect the methods recursively... and possibly | | | | | with | | | | | circular dependencies. | | | | | So, Metacello can resolve them, but I do not know Metacello | | | | | :( | | | | | | | | | | | | | | | | | | | | | | | | | I have no idea :( | | | | | Ask in metacello mailing list: [hidden email] , | | | | | | | | | | good luck | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Nov 16, 2011, at 15:36 , Mariano Martinez Peck wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 6:59 AM, jannik.laval < | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | Hi Mariano, | | | | | How are you ? | | | | | Here, at Bordeaux, I am fine, and all the family too :) | | | | | | | | | | | | | | | | | | | | Excellent, nice to hear that :) | | | | | I am in Argentina in holidays (after Smalltalks) and all | | | | | familiy | | | | | good | | | | | as well hahahahah | | | | | | | | | | | | | | | | | | | | I have a question about Metacello, and you know well | | | | | Metacello | | | | | :) | | | | | I would like to collect all the files to load of a | | | | | Configuration | | | | | with | | | | | all dependencies already resolved. | | | | | | | | | | For now, I have this code in a transcript: | | | | | === | | | | | ConfigurationOfMoose version40 spec packages map select:[:e | | | | | | e | | | | | isKindOf: MetacelloPackageSpec ] | | | | | thenCollect: [:e | e repositories list isEmpty | | | | | ifTrue: [e file] | | | | | ifFalse: [e repositories list first name, '/' , e file]]. | | | | | === | | | | | It allows me to have all files in ConfigurationOfMoose, but I | | | | | have | | | | | two problems: | | | | | | | | | | - if I change version40 by version42, I have no more the name | | | | | of | | | | | packages. | | | | | Here is an example: | | | | | with version40, the first value of my collection is: ' | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-tg.3 ' | | | | | with version42, it is: ' | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-Browser ' | | | | | ==> I have no more the versions to load. | | | | | | | | | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.0') packages | | | | | collect: | | | | | [ | | | | | :each | each name ] as: Set. | | | | | | | | | | or .. | | | | | | | | | | (ConfigurationOfMoose project version: '4.2') packages | | | | | collect: | | | | | [ | | | | | :each | each name ] as: Set. | | | | | | | | | | does that help ? | | | | | | | | | | | | | | | | | | | | - the second problem is about depending project. Moose load | | | | | other | | | | | projects, and there are some cyclic dependencies between the | | | | | loads: | | | | | for example DSM needs Moose, and Moose loads DSM..... | | | | | I know that Metacello resolves this kind of problems. | | | | | | | | | | So, my question is: is it possible to obtain a list of all | | | | | packages | | | | | of a configuration ? | | | | | | | | | | Thank you | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | -- | | | | Mariano | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | -- | | Mariano | | http://marianopeck.wordpress.com | | | | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | |
Mariano,
BTW, I would be very interested if you tried using the Metacello scripting API for your work in collecting the packages of a configuration ... the onDowngrade: and onUpgrade: messages might give you insight or you might uncover additional api command/features that would make your job easier ... For example here is a suggestion for an api feature/addition to produce a list of packages filtering by project/package/group: packages := Metacello image configuration: 'Moose'; projects: [:proj | proj name ~= 'Filesystem']; packages: [:pkg | true]; groups: [:group | group name = 'Tests']; list. HDTestReport runPackages: (packages asSortedCollection: [:a :b | a < b]) asOrderedCollection. Building these kinds of lists from the raw configurations takes a Masters degree in Metacello (or maybe a Phd.), but perhaps we can come up with some simple filters/approaches that simplify the creation of these lists ... Dale ----- Original Message ----- | From: "Dale Henrichs" <[hidden email]> | To: [hidden email] | Sent: Friday, August 3, 2012 11:05:12 AM | Subject: Re: [Metacello] collecting all packages of a configuration | | Mariano, | | Metacello does have cycle detection -- most likely you're seeing the | effects of different paths with different required versions of the | same leaf project... | | If you print the loadDirective you should be able to trace the | different paths and see the different versions. | | Metacello detects cycles, but Metacello does not collapse the | packages with the different versions... if you are using atomic | load, then I assume that the Monticello loader will collapse | packages, but when you don't use atomic load, Metacello loads the | packages for the "currently required version" even though that may | result in a reload of the package a bit later... | | Dale | | ----- Original Message ----- | | From: "Mariano Martinez Peck" <[hidden email]> | | To: [hidden email] | | Sent: Friday, August 3, 2012 10:37:44 AM | | Subject: Re: [Metacello] collecting all packages of a configuration | | | | | | | | | | On Fri, Aug 3, 2012 at 7:27 PM, Mariano Martinez Peck < | | [hidden email] > wrote: | | | | | | | | | | | | | | On Fri, Aug 3, 2012 at 7:24 PM, Mariano Martinez Peck < | | [hidden email] > wrote: | | | | | | | | | | | | | | On Fri, Aug 3, 2012 at 7:17 PM, Dale Henrichs < [hidden email] | | > | | wrote: | | | | | | Mariano, | | | | | | I'm running the load expression in Pharo-1.4 and I hit the warning | | about needing ImageSegments, so I can't complete the load in | | Pharo-1.4 ... | | | | I need a bit more info about how you get past needing ImageSegments | | problem before I can proceed... | | | | | | | | | | | | Hi Dale. Thanks for trying to reproduce it. Indeed, I also had that | | problem of ImageSegment as well as another one for BlockContext. I | | just clicked on "proceed". | | I think the problem is more or less like this: | | ConfigurationOfPierAddOns loads an old version of XML-Parser ( | | 1.0.1) then another project install a newer version of XML-Parser | | and there appears the popup. At the same time, those packages I | | mention that do not appear ( 'Collections- BitmapCharacterSet' or | | 'Collections- OrderPreservingDictionary' ) are ONLY present in the | | new version of ConfigurationOfXMLSupport (not in the old 1.0.1). | | So...I think that what happens is that you load version XXX of | | something, but then YYY (which may need other packages). However, | | when you query Metacello, he only remember about XXX. Can it be | | something like that? | | | | | | | | | | In fact, if I change ConfigurationOfPierAddOns2 >> version210: and | | change | | | | | | project: 'XML Parser' with: '1.0.1'. | | | | | | to | | | | | | project: 'XML Parser' with: #stable. | | | | | | the popup disappear and the packages are included when I query | | Metacello. | | | | | | | | | | | | | | | | | | However, even if the popup disappear and the packages are included, | | they are in the incorrect order: | | | | | | | | seasidePackages | | ^ #('ConfigurationOfGrease' 'ConfigurationOfSPort2' | | 'ConfigurationOfZincHTTPComponents' 'Grease-Core' | | 'Grease-Pharo-Core' 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' | | 'Zinc-FileSystem' 'Zinc-HTTP' 'Seaside-Core' 'Seaside-Pharo-Core' | | 'Seaside-Component' 'Seaside-Canvas' 'Seaside-Pharo-Canvas' | | 'RSS-Core' 'Javascript-Core' 'Javascript-Pharo-Core' | | 'Prototype-Core' 'Scriptaculous-Core' 'JQuery-Core' 'JQuery-UI' | | 'Seaside-Email' 'Seaside-Pharo-Email' 'Seaside-HTML5' | | 'Seaside-InternetExplorer' 'Seaside-Session' 'Seaside-RenderLoop' | | 'Seaside-Tools-Core' 'Seaside-Flow' 'Seaside-Examples' | | 'RSS-Examples' 'Seaside-Widgets' 'Seaside-Tools-Web' | | 'Seaside-Pharo-Tools-Web' 'Seaside-Environment' | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' 'RSS-Tests-Core' | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | 'Seaside-Tests-Email' 'Seaside-Tests-Pharo-Email' | | 'Seaside-Tests-Functional' 'Seaside-Tests-Pharo-Functional' | | 'Seaside-Tests-Flow' 'Seaside-Welcome' 'Seaside-Pharo-Welcome' | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | 'Seaside-Pharo-Development' 'ConfigurationOfSeaside30' | | 'ConfigurationOfMagritte2' 'Magritte-Model' 'Magritte-Morph' | | 'Magritte-Pharo-Model' 'Magritte-Seaside' 'Magritte-Pharo-Seaside' | | 'Pier-Model' 'Pier-Pharo-Model' 'Pier-Seaside' 'Pier-Pharo-Seaside' | | 'Pier-Security' 'Pier-Pharo-Persistency' 'ConfigurationOfPier2' | | 'ConfigurationOfJQueryWidgetBox' 'ConfigurationOfXMLSupport' | | 'JQWidgetBox-Core' 'JQWidgetBox-FormExample-Core' | | 'ConfigurationOfXMLWriter' 'Collections-OrderPreservingDictionary' | | 'Collections-Support' 'XML-Writer' 'Collections-BitmapCharacterSet' | | 'XML-Parser' 'Pier-Blog' 'Pier-Book' 'Pier-Design' 'Pier-Documents' | | 'Pier-EditorEnh' 'Pier-Shout' 'Pier-Google' 'Pier-JQuery' | | 'Pier-LinkChecker' 'Pier-Setup' 'Pier-FuelPersistence-Core' | | 'Pier-FuelPersistence-Test') | | | | | | | | | | 'XML-Writer' is BEFORE 'XML-Parser'. But XMLWriter>>initialize | | references XMLNamespaceScope (which is from XML-Parser). | | So...we should change the order. But., XMLNode (from XML-Parser) >> | | printOn: references XMLWriter.... | | | | | | grrrr so, all in all I see a cycle. I thought Metacello had a cycle | | detection. | | | | | | Thanks Dale! | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks! | | | | | | | | | | | | | | | | Dale | | | | ----- Original Message ----- | | | From: "Mariano Martinez Peck" < [hidden email] > | | | To: [hidden email] | | | | | | | Sent: Thursday, August 2, 2012 9:56:40 AM | | | Subject: Re: [Metacello] collecting all packages of a | | | configuration | | | | | | Hi Dale. I find myself again, trying to collect the packages | | | loaded | | | (and their order). There is something that does not work and I | | | cannot figure out what is happening. At least, it is reproducible | | | ;) | | | | | | | | | I took the last Pharo 2.0 available from Jenkins, and I install | | | seaside and pier as following: | | | | | | | | | | | | Gofer it | | | squeaksource: 'MetacelloRepository'; | | | package: 'ConfigurationOfSeaside30'; | | | load. | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | #stable) | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome'). | | | | | | Gofer it | | | squeaksource: 'MetacelloRepository'; | | | package: 'ConfigurationOfPier2'; | | | load. | | | | | | | | | ((Smalltalk at: #ConfigurationOfPier2) project version: #stable) | | | load. | | | | | | | | | | | | | | | Gofer it | | | squeaksource: 'MetacelloRepository'; | | | package: 'ConfigurationOfPierAddOns2'; | | | load. | | | | | | | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfPierAddOns2) project version: | | | #stable) load: #('default' 'Pier-Shout' 'Pier-Design' ). | | | | | | | | | | | | | | | Now...while loading that, I have an popup saying I am about to | | | load | | | a | | | new version of XML-Parser (see attachment). Ok, I say "load" and | | | everything loads fine after. | | | | | | | | | The problem is that if now I ask Metacello the loaded packages: | | | | | | | | | | | | | | | | | | | | | >> packagesFromConf: confName version: versionString loading: | | | >> packageOrGroups | | | | loader pkgs | | | | | | | loader := ((Smalltalk at: confName asSymbol) project version: | | | versionString) | | | ignoreImage: true; | | | record: packageOrGroups. | | | pkgs := OrderedCollection new. | | | loader loadDirective packageDirectivesDo: [:directive | pkgs add: | | | directive spec name ]. | | | ^ pkgs | | | | | | | | | | | | | | | >> seasidePackages | | | | packages loader | | | | packages := OrderedCollection new. | | | packages addAll: (self packagesFromConf: | | | #ConfigurationOfSeaside30 | | | version: #stable loading: #('Base' 'Zinc-Seaside' 'Base Tests' | | | 'RSS-Core' 'Javascript-Core' 'Prototype-Core' | | | 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | )). | | | | | | | | | packages addAll: (self packagesFromConf: #ConfigurationOfPier2 | | | version: #stable loading: #('default')). | | | packages addAll: (self packagesFromConf: | | | #ConfigurationOfPierAddOns2 | | | version: #stable loading: #('default' 'Pier-Shout' 'Pier-Design' | | | )). | | | packages addAll: #('Pier-FuelPersistence-Core' | | | 'Pier-FuelPersistence-Test'). | | | | | | packages := packages removeDuplicates. | | | | | | ^ packages | | | | | | | | | | | | | | | | | | | | | | | | There are some packages that do not appear, like | | | 'Collections-BitmapCharacterSet' or | | | 'Collections-OrderPreservingDictionary', which are needed by | | | ConfigurationOfXMLSupport . And....this is related to the error I | | | got popup (saying I was loading a new version) | | | | | | | | | So...all in all, do you have something in mind that could be | | | happening? Sorry for not being able to dig deeper. | | | | | | | | | Thanks!!! | | | | | | | | | | | | | | | | | | | | | On Sun, May 13, 2012 at 5:05 PM, Dale Henrichs < | | | [hidden email] | | | > wrote: | | | | | | | | | Mariano, | | | | | | The loadDirectives are actually used for the Metacello load, so | | | you | | | are getting the load order from the horse's mouth... | | | | | | Seaside-Core is one of the first packages that needs to be loaded | | | so | | | Seaside-Tools-Core should be loaded _after_ Seaside-Core ... | | | | | | WARegistry class is in Seaside-Core, but the method WARegistry | | | class>>#clearAllHandlers is actually in the Seaside-Tools-Core | | | package (*seaside-tools-core) so everything is consistent... | | | | | | | | | Dale | | | | | | ----- Original Message ----- | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | To: [hidden email] | | | | | | | | | | Sent: Sunday, May 13, 2012 6:50:18 AM | | | | Subject: Re: [Metacello] collecting all packages of a | | | | configuration | | | | | | | | Hi Dale. For a different purpose, I need again something | | | | related | | | | to | | | | this. | | | | What I actually need is to ask Metacello the list of packages I | | | | need | | | | when I do load: xxx SORTED by the load order. I mean, I want | | | | they | | | | to | | | | be sorted in the way that those that need to be loaded first go | | | | first. | | | | | | | | Take this example. I have download seaside this way: | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | #stable) | | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | 'Seaside-Welcome' | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | ). | | | | | | | | But those pacakages/groups have another dependencies etc etc. | | | | So | | | | I | | | | am | | | | using this to query: | | | | | | | | | pkgs loader | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | | version: | | | | ' 3.0.6.3 ') | | | | ignoreImage: true; | | | | record: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | 'Seaside-Welcome' | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | ). | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive | pkgs | | | | add: | | | | directive spec name ]. | | | | ^ pkgs | | | | | | | | | | | | It loooks like if that would answer the list of packages in | | | | load | | | | order, but this is not true. If you inspect that, you obtain | | | | this: | | | | | | | | an OrderedCollection('ConfigurationOfGrease' | | | | 'ConfigurationOfGrease' | | | | 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' | | | | 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Core' | | | | 'Grease-Pharo-Core' | | | | 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-HTTP' | | | | 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' | | | | 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' | | | | 'Javascript-Core' | | | | 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-Pharo-Email' | | | | 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' | | | | 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' | | | | 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' | | | | 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' | | | | 'Seaside-Environment' | | | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' | | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' | | | | 'RSS-Tests-Core' | | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' | | | | 'Seaside-Welcome' 'Seaside-Pharo-Welcome' | | | | 'Prototype-Tests-Core' | | | | 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' | | | | 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | | | 'Seaside-Pharo-Development') | | | | | | | | As you can see, for example, 'Seaside-Tools-Core' is AFTER | | | | 'Seaside-Core'. Right? However, for example, WARegistry >> | | | | #clearAllHandlers (package 'Seaside-Core') has references to | | | | WAAdmin | | | | (present in 'Seaside-Tools-Core''). So? is 'Seaside-Tools-Core' | | | | actually loaded before 'Seaside-Core'? if true, how can I query | | | | that | | | | to Metacello. If false, why don't you get the ugly Monticello | | | | popup | | | | saying you that you have dependencies on ... | | | | | | | | Thanks! | | | | | | | | | | | | | | | | | | | | | | | | On Mon, Dec 5, 2011 at 6:53 PM, Dale Henrichs < | | | | [hidden email] | | | | > | | | | wrote: | | | | | | | | | | | | Mariano, | | | | | | | | Regarding your complaint about having the OmniBrowser packages | | | | show | | | | up when you are using the #loadDirective based variant. The | | | | 'Core' | | | | group for Seaside includes Seaside-Tools-OmniBrowser, so when | | | | you | | | | load the 'Core' group OmniBrowser is a required package. You | | | | are | | | | sitting in a Pharo image that already has OmniBrowser loaded, | | | | so | | | | when you load Seaside30 you don't see the OB packages getting | | | | loaded. However, in the #loadDirective variant, you are using | | | | #ignoreImage: and when Metacello ignores the image, it ignores | | | | the | | | | fact that OB is already loaded as well ... If you want to know | | | | what | | | | would be loaded into the current image, then don't set | | | | #ignoreImage | | | | to true ... the OmniBrowser packages and any other packages | | | | that | | | | are | | | | already loaded won't show up ... | | | | | | | | If there is a set of configs that you would like to | | | | include/exclude, | | | | then a more complex load directive algorithm can be used... | | | | | | | | Regarding the duplication of packages, I would say that since | | | | you | | | | are | | | | only interested in the list of packages that would be loaded, | | | | you | | | | can safely ignore the duplicates. | | | | | | | | Regarding the inclusion of the ConfigurationOfXXX files, | | | | technically, | | | | those files are needed for a load. No version information is | | | | associated with the configuration file, because config files | | | | always | | | | have their latest available version loaded ... If you want to | | | | filter | | | | those files out, then there is a more complex loadDirective | | | | traversal algorithm you could use, or you can filter out the | | | | configs | | | | with #beginsWith:... | | | | | | | | | | | | Dale | | | | | | | | ----- Original Message ----- | | | | | | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | | To: [hidden email] | | | | | Sent: Saturday, December 3, 2011 4:27:13 PM | | | | | | | | | | | | | Subject: Re: [Metacello] collecting all packages of a | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | On Thu, Nov 17, 2011 at 6:57 PM, Dale Henrichs < | | | | | [hidden email] | | | | | > wrote: | | | | | | | | | | | | | | | Jannik, | | | | | | | | | | There are two routes you can take to answer your question. | | | | | Firstly, | | | | | you can directly query the version itself: | | | | | | | | | | ((ConfigurationOfMetacello project currentVersion) | | | | | allPackagesForSpecNamed: 'ALL') | | | | | collect: [:spec | spec file ]. | | | | | | | | | | Or you can use #record: and then collect the information you | | | | | want: | | | | | | | | | | | pkgs loader | | | | | | loader := (ConfigurationOfMetacello project currentVersion) | | | | | ignoreImage: true; | | | | | record: 'ALL'. | | | | | pkgs := OrderedCollection new. | | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | | add: | | | | | directive spec file ]. | | | | | pkgs. | | | | | | | | | | | | | | | | | | | | Hi Dale. I have notice that both ways are different. For | | | | | example, | | | | | the | | | | | first one does not take into account those ConfigurationOfXXX | | | | | packages, whereas the second one does. Moreoever, in the | | | | | second | | | | | one, | | | | | I see that there are repetitions. For example: | | | | | | | | | | | pkgs loader | | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | | | version: | | | | | ' 3.0.6.3 ') | | | | | ignoreImage: true; | | | | | record: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | pkgs := OrderedCollection new. | | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | | add: | | | | | directive spec file ]. | | | | | pkgs. | | | | | | | | | | size gives me 127, but asSet size, 106. It seems some | | | | | packages | | | | | appear | | | | | more than once like ConfigurationOfGrease. | | | | | | | | | | ConfigurationOfXXX do not have version number in their name, | | | | | but | | | | | the | | | | | rest do have. | | | | | | | | | | Now, the main problem is that none of them is what I need: I | | | | | need | | | | | ALL | | | | | the required packages that are needed to load such project | | | | | with | | | | | metacello. I want to capture the exact list of packages | | | | | needed | | | | | when | | | | | I do, for example: | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | | ' 3.0.6.3 ') | | | | | load: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | | | | | | The first one doesn't even take into account | | | | | ConfigurationOfXX, | | | | | so | | | | | it | | | | | doesn't help me. The second one, not only has repetitions, | | | | | but | | | | | also | | | | | it lists packages that I really don't need. For example, | | | | | OB-Morphic-lr.164 and Seaside-Tools-OmniBrowser-lr.25. I | | | | | don't | | | | | understand how those packages arrived to the list. If I take | | | | | a | | | | | clean | | | | | image, and install Seaside with the way I showed you, those | | | | | packages | | | | | are not even downloaded. So why do they appear here? | | | | | | | | | | So...all in all, what I need is a list of the exact packages | | | | | I | | | | | need | | | | | to reproduce something I have loaded with Metacello. In other | | | | | words, | | | | | if I start an image with an empty package-cache, and execute | | | | | the | | | | | load of seaside, how can I know the list of packages that | | | | | were | | | | | downloaded? of course, not inspecting the package-cache ;) | | | | | | | | | | Thanks in advance Dale!!! | | | | | | | | | | | | | | | | | | | | | | | | | Dale | | | | | | | | | | | | | | | | | | | | ----- Original Message ----- | | | | | | From: "jannik.laval" < [hidden email] > | | | | | | To: [hidden email] | | | | | | Sent: Thursday, November 17, 2011 5:11:09 AM | | | | | | Subject: [Metacello] collecting all packages of a | | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi guys, | | | | | | | | | | | | | | | | | | With mariano, we had a discussion about a problem I have: | | | | | | How can I collect all packages from a configuration with | | | | | | resolving | | | | | | all sub projects ? | | | | | | | | | | | | | | | | | | Thank you for your help. | | | | | | Cheers, | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | Begin forwarded message: | | | | | | | | | | | | | | | | | | | | | | | | From: Mariano Martinez Peck < [hidden email] > | | | | | | | | | | | | Subject: Re: Metacello question | | | | | | | | | | | | Date: November 16, 2011 4:09:38 PM GMT+01:00 | | | | | | | | | | | | To: "jannik.laval" < [hidden email] > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 11:57 AM, jannik.laval < | | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | | | | | | | | | | | | | I understand your code and It seems to be the same as mine. | | | | | | version40 make the same as "project version: '4.0'". | | | | | | | | | | | | | | | | | | The problem is the resolution of internal projects. | | | | | | We should collect the methods recursively... and possibly | | | | | | with | | | | | | circular dependencies. | | | | | | So, Metacello can resolve them, but I do not know Metacello | | | | | | :( | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have no idea :( | | | | | | Ask in metacello mailing list: [hidden email] , | | | | | | | | | | | | good luck | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Nov 16, 2011, at 15:36 , Mariano Martinez Peck wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 6:59 AM, jannik.laval < | | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | How are you ? | | | | | | Here, at Bordeaux, I am fine, and all the family too :) | | | | | | | | | | | | | | | | | | | | | | | | Excellent, nice to hear that :) | | | | | | I am in Argentina in holidays (after Smalltalks) and all | | | | | | familiy | | | | | | good | | | | | | as well hahahahah | | | | | | | | | | | | | | | | | | | | | | | | I have a question about Metacello, and you know well | | | | | | Metacello | | | | | | :) | | | | | | I would like to collect all the files to load of a | | | | | | Configuration | | | | | | with | | | | | | all dependencies already resolved. | | | | | | | | | | | | For now, I have this code in a transcript: | | | | | | === | | | | | | ConfigurationOfMoose version40 spec packages map select:[:e | | | | | | | | | | | | | e | | | | | | isKindOf: MetacelloPackageSpec ] | | | | | | thenCollect: [:e | e repositories list isEmpty | | | | | | ifTrue: [e file] | | | | | | ifFalse: [e repositories list first name, '/' , e file]]. | | | | | | === | | | | | | It allows me to have all files in ConfigurationOfMoose, but | | | | | | I | | | | | | have | | | | | | two problems: | | | | | | | | | | | | - if I change version40 by version42, I have no more the | | | | | | name | | | | | | of | | | | | | packages. | | | | | | Here is an example: | | | | | | with version40, the first value of my collection is: ' | | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-tg.3 ' | | | | | | with version42, it is: ' | | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-Browser ' | | | | | | ==> I have no more the versions to load. | | | | | | | | | | | | | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.0') packages | | | | | | collect: | | | | | | [ | | | | | | :each | each name ] as: Set. | | | | | | | | | | | | or .. | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.2') packages | | | | | | collect: | | | | | | [ | | | | | | :each | each name ] as: Set. | | | | | | | | | | | | does that help ? | | | | | | | | | | | | | | | | | | | | | | | | - the second problem is about depending project. Moose load | | | | | | other | | | | | | projects, and there are some cyclic dependencies between | | | | | | the | | | | | | loads: | | | | | | for example DSM needs Moose, and Moose loads DSM..... | | | | | | I know that Metacello resolves this kind of problems. | | | | | | | | | | | | So, my question is: is it possible to obtain a list of all | | | | | | packages | | | | | | of a configuration ? | | | | | | | | | | | | Thank you | | | | | | --- | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | Mariano | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | Mariano | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | Mariano | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | -- | | Mariano | | http://marianopeck.wordpress.com | | | | | | | | | | | | -- | | Mariano | | http://marianopeck.wordpress.com | | | | | | | | | | | | -- | | Mariano | | http://marianopeck.wordpress.com | | | | | |
On Fri, Aug 3, 2012 at 8:25 PM, Dale Henrichs <[hidden email]> wrote: Mariano, That would be awesome. What I was doing so far is: packagesFromConf: confName version: versionString loading: packageOrGroups
| loader pkgs | loader := ((Smalltalk at: confName asSymbol) project version: versionString)
ignoreImage: false; record: packageOrGroups. pkgs := OrderedCollection new.
loader loadDirective packageDirectivesDo: [:directive | pkgs add: directive spec name ]. ^ pkgs
I will take a look to what you say.
Mariano http://marianopeck.wordpress.com |
Dale...it looks my image was broken because of loading different versions of XML-Writer (something didn't cleaned well).
So I created a new version of ConfigurationOfXMLSupport which uses #stable version of XML Parser, and then I reloaded everything in a clean image. And now it works :)
BTW, if you want I can show you in ESUG what I am doing. With Tanker (a tool to expor/import packages using Fuel) I can export all seaside/pier/magritte in 2.7 seconds. And import them in 10. We are not yet exporting/importing source code (just compiled methods) so at the end it will be slower. But so far we have good results. I am using Metacello as a way to get the list of packages I need and in which order. So then I can export all that. So yes, we plan an integration between Tanker and Metacello in the future.
Cheers, On Fri, Aug 3, 2012 at 8:27 PM, Mariano Martinez Peck <[hidden email]> wrote:
Mariano http://marianopeck.wordpress.com |
That sounds very cool ... Metacello should be able to handle 'fuel tanks' instead of 'packages', but we'll have to monkey with the loaders, unless you plan to create a Monticello compatible repository (like we're doing with FileTree) in which case adding `fuel tanks` should be trivial...
Let's definitely talk at ESUG! Dale ----- Original Message ----- | From: "Mariano Martinez Peck" <[hidden email]> | To: [hidden email] | Sent: Friday, August 3, 2012 12:32:18 PM | Subject: Re: [Metacello] collecting all packages of a configuration | | Dale...it looks my image was broken because of loading different | versions of XML-Writer (something didn't cleaned well). | So I created a new version of ConfigurationOfXMLSupport which uses | #stable version of XML Parser, and then I reloaded everything in a | clean image. And now it works :) | | | BTW, if you want I can show you in ESUG what I am doing. With Tanker | (a tool to expor/import packages using Fuel) I can export all | seaside/pier/magritte in 2.7 seconds. And import them in 10. We are | not yet exporting/importing source code (just compiled methods) so | at the end it will be slower. But so far we have good results. I am | using Metacello as a way to get the list of packages I need and in | which order. So then I can export all that. So yes, we plan an | integration between Tanker and Metacello in the future. | | | Cheers, | | | On Fri, Aug 3, 2012 at 8:27 PM, Mariano Martinez Peck < | [hidden email] > wrote: | | | | | | | On Fri, Aug 3, 2012 at 8:25 PM, Dale Henrichs < [hidden email] > | wrote: | | | Mariano, | | | BTW, I would be very interested if you tried using the Metacello | scripting API for your work in collecting the packages of a | configuration ... the onDowngrade: and onUpgrade: messages might | give you insight or you might uncover additional api | command/features that would make your job easier ... | | For example here is a suggestion for an api feature/addition to | produce a list of packages filtering by project/package/group: | | packages := Metacello image | configuration: 'Moose'; | projects: [:proj | proj name ~= 'Filesystem']; | packages: [:pkg | true]; | groups: [:group | group name = 'Tests']; | list. | HDTestReport runPackages: | (packages asSortedCollection: [:a :b | a < b]) asOrderedCollection. | | Building these kinds of lists from the raw configurations takes a | Masters degree in Metacello (or maybe a Phd.), but perhaps we can | come up with some simple filters/approaches that simplify the | creation of these lists ... | | | | | | That would be awesome. What I was doing so far is: | | | | | packagesFromConf: confName version: versionString loading: | packageOrGroups | | loader pkgs | | | loader := ((Smalltalk at: confName asSymbol) project version: | versionString) | ignoreImage: false; | | record: packageOrGroups. | pkgs := OrderedCollection new. | loader loadDirective packageDirectivesDo: [:directive | pkgs add: | directive spec name ]. | ^ pkgs | | | I will take a look to what you say. | | | | | | | | | | Dale | | ----- Original Message ----- | | | From: "Dale Henrichs" < [hidden email] > | | To: [hidden email] | | | | Sent: Friday, August 3, 2012 11:05:12 AM | | Subject: Re: [Metacello] collecting all packages of a configuration | | | | Mariano, | | | | Metacello does have cycle detection -- most likely you're seeing | | the | | effects of different paths with different required versions of the | | same leaf project... | | | | If you print the loadDirective you should be able to trace the | | different paths and see the different versions. | | | | Metacello detects cycles, but Metacello does not collapse the | | packages with the different versions... if you are using atomic | | load, then I assume that the Monticello loader will collapse | | packages, but when you don't use atomic load, Metacello loads the | | packages for the "currently required version" even though that may | | result in a reload of the package a bit later... | | | | Dale | | | | ----- Original Message ----- | | | From: "Mariano Martinez Peck" < [hidden email] > | | | To: [hidden email] | | | Sent: Friday, August 3, 2012 10:37:44 AM | | | Subject: Re: [Metacello] collecting all packages of a | | | configuration | | | | | | | | | | | | | | | On Fri, Aug 3, 2012 at 7:27 PM, Mariano Martinez Peck < | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | On Fri, Aug 3, 2012 at 7:24 PM, Mariano Martinez Peck < | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | On Fri, Aug 3, 2012 at 7:17 PM, Dale Henrichs < | | | [hidden email] | | | > | | | wrote: | | | | | | | | | Mariano, | | | | | | | | | I'm running the load expression in Pharo-1.4 and I hit the | | | warning | | | about needing ImageSegments, so I can't complete the load in | | | Pharo-1.4 ... | | | | | | I need a bit more info about how you get past needing | | | ImageSegments | | | problem before I can proceed... | | | | | | | | | | | | | | | | | | Hi Dale. Thanks for trying to reproduce it. Indeed, I also had | | | that | | | problem of ImageSegment as well as another one for BlockContext. | | | I | | | just clicked on "proceed". | | | I think the problem is more or less like this: | | | ConfigurationOfPierAddOns loads an old version of XML-Parser ( | | | 1.0.1) then another project install a newer version of XML-Parser | | | and there appears the popup. At the same time, those packages I | | | mention that do not appear ( 'Collections- BitmapCharacterSet' or | | | 'Collections- OrderPreservingDictionary' ) are ONLY present in | | | the | | | new version of ConfigurationOfXMLSupport (not in the old 1.0.1). | | | So...I think that what happens is that you load version XXX of | | | something, but then YYY (which may need other packages). However, | | | when you query Metacello, he only remember about XXX. Can it be | | | something like that? | | | | | | | | | | | | | | | In fact, if I change ConfigurationOfPierAddOns2 >> version210: | | | and | | | change | | | | | | | | | project: 'XML Parser' with: '1.0.1'. | | | | | | | | | to | | | | | | | | | project: 'XML Parser' with: #stable. | | | | | | | | | the popup disappear and the packages are included when I query | | | Metacello. | | | | | | | | | | | | | | | | | | | | | | | | | | | However, even if the popup disappear and the packages are | | | included, | | | they are in the incorrect order: | | | | | | | | | | | | seasidePackages | | | ^ #('ConfigurationOfGrease' 'ConfigurationOfSPort2' | | | 'ConfigurationOfZincHTTPComponents' 'Grease-Core' | | | 'Grease-Pharo-Core' 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' | | | 'Zinc-FileSystem' 'Zinc-HTTP' 'Seaside-Core' 'Seaside-Pharo-Core' | | | 'Seaside-Component' 'Seaside-Canvas' 'Seaside-Pharo-Canvas' | | | 'RSS-Core' 'Javascript-Core' 'Javascript-Pharo-Core' | | | 'Prototype-Core' 'Scriptaculous-Core' 'JQuery-Core' 'JQuery-UI' | | | 'Seaside-Email' 'Seaside-Pharo-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Session' 'Seaside-RenderLoop' | | | 'Seaside-Tools-Core' 'Seaside-Flow' 'Seaside-Examples' | | | 'RSS-Examples' 'Seaside-Widgets' 'Seaside-Tools-Web' | | | 'Seaside-Pharo-Tools-Web' 'Seaside-Environment' | | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' | | | 'RSS-Tests-Core' | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Pharo-Email' | | | 'Seaside-Tests-Functional' 'Seaside-Tests-Pharo-Functional' | | | 'Seaside-Tests-Flow' 'Seaside-Welcome' 'Seaside-Pharo-Welcome' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | | 'Seaside-Pharo-Development' 'ConfigurationOfSeaside30' | | | 'ConfigurationOfMagritte2' 'Magritte-Model' 'Magritte-Morph' | | | 'Magritte-Pharo-Model' 'Magritte-Seaside' | | | 'Magritte-Pharo-Seaside' | | | 'Pier-Model' 'Pier-Pharo-Model' 'Pier-Seaside' | | | 'Pier-Pharo-Seaside' | | | 'Pier-Security' 'Pier-Pharo-Persistency' 'ConfigurationOfPier2' | | | 'ConfigurationOfJQueryWidgetBox' 'ConfigurationOfXMLSupport' | | | 'JQWidgetBox-Core' 'JQWidgetBox-FormExample-Core' | | | 'ConfigurationOfXMLWriter' | | | 'Collections-OrderPreservingDictionary' | | | 'Collections-Support' 'XML-Writer' | | | 'Collections-BitmapCharacterSet' | | | 'XML-Parser' 'Pier-Blog' 'Pier-Book' 'Pier-Design' | | | 'Pier-Documents' | | | 'Pier-EditorEnh' 'Pier-Shout' 'Pier-Google' 'Pier-JQuery' | | | 'Pier-LinkChecker' 'Pier-Setup' 'Pier-FuelPersistence-Core' | | | 'Pier-FuelPersistence-Test') | | | | | | | | | | | | | | | 'XML-Writer' is BEFORE 'XML-Parser'. But XMLWriter>>initialize | | | references XMLNamespaceScope (which is from XML-Parser). | | | So...we should change the order. But., XMLNode (from XML-Parser) | | | >> | | | printOn: references XMLWriter.... | | | | | | | | | grrrr so, all in all I see a cycle. I thought Metacello had a | | | cycle | | | detection. | | | | | | | | | Thanks Dale! | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks! | | | | | | | | | | | | | | | | | | | | | | | | Dale | | | | | | ----- Original Message ----- | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | To: [hidden email] | | | | | | | | | | Sent: Thursday, August 2, 2012 9:56:40 AM | | | | Subject: Re: [Metacello] collecting all packages of a | | | | configuration | | | | | | | | Hi Dale. I find myself again, trying to collect the packages | | | | loaded | | | | (and their order). There is something that does not work and I | | | | cannot figure out what is happening. At least, it is | | | | reproducible | | | | ;) | | | | | | | | | | | | I took the last Pharo 2.0 available from Jenkins, and I install | | | | seaside and pier as following: | | | | | | | | | | | | | | | | Gofer it | | | | squeaksource: 'MetacelloRepository'; | | | | package: 'ConfigurationOfSeaside30'; | | | | load. | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | #stable) | | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | 'Seaside-Welcome' | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome'). | | | | | | | | Gofer it | | | | squeaksource: 'MetacelloRepository'; | | | | package: 'ConfigurationOfPier2'; | | | | load. | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfPier2) project version: | | | | #stable) | | | | load. | | | | | | | | | | | | | | | | | | | | Gofer it | | | | squeaksource: 'MetacelloRepository'; | | | | package: 'ConfigurationOfPierAddOns2'; | | | | load. | | | | | | | | | | | | | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfPierAddOns2) project version: | | | | #stable) load: #('default' 'Pier-Shout' 'Pier-Design' ). | | | | | | | | | | | | | | | | | | | | Now...while loading that, I have an popup saying I am about to | | | | load | | | | a | | | | new version of XML-Parser (see attachment). Ok, I say "load" | | | | and | | | | everything loads fine after. | | | | | | | | | | | | The problem is that if now I ask Metacello the loaded packages: | | | | | | | | | | | | | | | | | | | | | | | | | | | | >> packagesFromConf: confName version: versionString loading: | | | | >> packageOrGroups | | | | | loader pkgs | | | | | | | | | loader := ((Smalltalk at: confName asSymbol) project version: | | | | versionString) | | | | ignoreImage: true; | | | | record: packageOrGroups. | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive | pkgs | | | | add: | | | | directive spec name ]. | | | | ^ pkgs | | | | | | | | | | | | | | | | | | | | >> seasidePackages | | | | | packages loader | | | | | packages := OrderedCollection new. | | | | packages addAll: (self packagesFromConf: | | | | #ConfigurationOfSeaside30 | | | | version: #stable loading: #('Base' 'Zinc-Seaside' 'Base Tests' | | | | 'RSS-Core' 'Javascript-Core' 'Prototype-Core' | | | | 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | 'Seaside-Welcome' | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | )). | | | | | | | | | | | | packages addAll: (self packagesFromConf: #ConfigurationOfPier2 | | | | version: #stable loading: #('default')). | | | | packages addAll: (self packagesFromConf: | | | | #ConfigurationOfPierAddOns2 | | | | version: #stable loading: #('default' 'Pier-Shout' | | | | 'Pier-Design' | | | | )). | | | | packages addAll: #('Pier-FuelPersistence-Core' | | | | 'Pier-FuelPersistence-Test'). | | | | | | | | packages := packages removeDuplicates. | | | | | | | | ^ packages | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are some packages that do not appear, like | | | | 'Collections-BitmapCharacterSet' or | | | | 'Collections-OrderPreservingDictionary', which are needed by | | | | ConfigurationOfXMLSupport . And....this is related to the error | | | | I | | | | got popup (saying I was loading a new version) | | | | | | | | | | | | So...all in all, do you have something in mind that could be | | | | happening? Sorry for not being able to dig deeper. | | | | | | | | | | | | Thanks!!! | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Sun, May 13, 2012 at 5:05 PM, Dale Henrichs < | | | | [hidden email] | | | | > wrote: | | | | | | | | | | | | Mariano, | | | | | | | | The loadDirectives are actually used for the Metacello load, so | | | | you | | | | are getting the load order from the horse's mouth... | | | | | | | | Seaside-Core is one of the first packages that needs to be | | | | loaded | | | | so | | | | Seaside-Tools-Core should be loaded _after_ Seaside-Core ... | | | | | | | | WARegistry class is in Seaside-Core, but the method WARegistry | | | | class>>#clearAllHandlers is actually in the Seaside-Tools-Core | | | | package (*seaside-tools-core) so everything is consistent... | | | | | | | | | | | | Dale | | | | | | | | ----- Original Message ----- | | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | | To: [hidden email] | | | | | | | | | | | | | Sent: Sunday, May 13, 2012 6:50:18 AM | | | | | Subject: Re: [Metacello] collecting all packages of a | | | | | configuration | | | | | | | | | | Hi Dale. For a different purpose, I need again something | | | | | related | | | | | to | | | | | this. | | | | | What I actually need is to ask Metacello the list of packages | | | | | I | | | | | need | | | | | when I do load: xxx SORTED by the load order. I mean, I want | | | | | they | | | | | to | | | | | be sorted in the way that those that need to be loaded first | | | | | go | | | | | first. | | | | | | | | | | Take this example. I have download seaside this way: | | | | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | | #stable) | | | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | | 'Seaside-Welcome' | | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | | ). | | | | | | | | | | But those pacakages/groups have another dependencies etc etc. | | | | | So | | | | | I | | | | | am | | | | | using this to query: | | | | | | | | | | | pkgs loader | | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | | | version: | | | | | ' 3.0.6.3 ') | | | | | ignoreImage: true; | | | | | record: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | | 'Seaside-Welcome' | | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | | ). | | | | | pkgs := OrderedCollection new. | | | | | loader loadDirective packageDirectivesDo: [:directive | pkgs | | | | | add: | | | | | directive spec name ]. | | | | | ^ pkgs | | | | | | | | | | | | | | | It loooks like if that would answer the list of packages in | | | | | load | | | | | order, but this is not true. If you inspect that, you obtain | | | | | this: | | | | | | | | | | an OrderedCollection('ConfigurationOfGrease' | | | | | 'ConfigurationOfGrease' | | | | | 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' | | | | | 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Core' | | | | | 'Grease-Pharo-Core' | | | | | 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-HTTP' | | | | | 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' | | | | | 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' | | | | | 'Javascript-Core' | | | | | 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' | | | | | 'Seaside-Pharo-Email' | | | | | 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' | | | | | 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' | | | | | 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' | | | | | 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' | | | | | 'Seaside-Environment' | | | | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | | | | 'Scriptaculous-Components' 'Zinc-Seaside' | | | | | 'Seaside-Tests-Core' | | | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' | | | | | 'RSS-Tests-Core' | | | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | | 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' | | | | | 'Seaside-Welcome' 'Seaside-Pharo-Welcome' | | | | | 'Prototype-Tests-Core' | | | | | 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' | | | | | 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | | | | 'Seaside-Pharo-Development') | | | | | | | | | | As you can see, for example, 'Seaside-Tools-Core' is AFTER | | | | | 'Seaside-Core'. Right? However, for example, WARegistry >> | | | | | #clearAllHandlers (package 'Seaside-Core') has references to | | | | | WAAdmin | | | | | (present in 'Seaside-Tools-Core''). So? is | | | | | 'Seaside-Tools-Core' | | | | | actually loaded before 'Seaside-Core'? if true, how can I | | | | | query | | | | | that | | | | | to Metacello. If false, why don't you get the ugly Monticello | | | | | popup | | | | | saying you that you have dependencies on ... | | | | | | | | | | Thanks! | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Mon, Dec 5, 2011 at 6:53 PM, Dale Henrichs < | | | | | [hidden email] | | | | | > | | | | | wrote: | | | | | | | | | | | | | | | Mariano, | | | | | | | | | | Regarding your complaint about having the OmniBrowser | | | | | packages | | | | | show | | | | | up when you are using the #loadDirective based variant. The | | | | | 'Core' | | | | | group for Seaside includes Seaside-Tools-OmniBrowser, so when | | | | | you | | | | | load the 'Core' group OmniBrowser is a required package. You | | | | | are | | | | | sitting in a Pharo image that already has OmniBrowser loaded, | | | | | so | | | | | when you load Seaside30 you don't see the OB packages getting | | | | | loaded. However, in the #loadDirective variant, you are using | | | | | #ignoreImage: and when Metacello ignores the image, it | | | | | ignores | | | | | the | | | | | fact that OB is already loaded as well ... If you want to | | | | | know | | | | | what | | | | | would be loaded into the current image, then don't set | | | | | #ignoreImage | | | | | to true ... the OmniBrowser packages and any other packages | | | | | that | | | | | are | | | | | already loaded won't show up ... | | | | | | | | | | If there is a set of configs that you would like to | | | | | include/exclude, | | | | | then a more complex load directive algorithm can be used... | | | | | | | | | | Regarding the duplication of packages, I would say that since | | | | | you | | | | | are | | | | | only interested in the list of packages that would be loaded, | | | | | you | | | | | can safely ignore the duplicates. | | | | | | | | | | Regarding the inclusion of the ConfigurationOfXXX files, | | | | | technically, | | | | | those files are needed for a load. No version information is | | | | | associated with the configuration file, because config files | | | | | always | | | | | have their latest available version loaded ... If you want to | | | | | filter | | | | | those files out, then there is a more complex loadDirective | | | | | traversal algorithm you could use, or you can filter out the | | | | | configs | | | | | with #beginsWith:... | | | | | | | | | | | | | | | Dale | | | | | | | | | | ----- Original Message ----- | | | | | | | | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | | | To: [hidden email] | | | | | | Sent: Saturday, December 3, 2011 4:27:13 PM | | | | | | | | | | | | | | | | Subject: Re: [Metacello] collecting all packages of a | | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Thu, Nov 17, 2011 at 6:57 PM, Dale Henrichs < | | | | | | [hidden email] | | | | | | > wrote: | | | | | | | | | | | | | | | | | | Jannik, | | | | | | | | | | | | There are two routes you can take to answer your question. | | | | | | Firstly, | | | | | | you can directly query the version itself: | | | | | | | | | | | | ((ConfigurationOfMetacello project currentVersion) | | | | | | allPackagesForSpecNamed: 'ALL') | | | | | | collect: [:spec | spec file ]. | | | | | | | | | | | | Or you can use #record: and then collect the information | | | | | | you | | | | | | want: | | | | | | | | | | | | | pkgs loader | | | | | | | loader := (ConfigurationOfMetacello project currentVersion) | | | | | | ignoreImage: true; | | | | | | record: 'ALL'. | | | | | | pkgs := OrderedCollection new. | | | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | | | add: | | | | | | directive spec file ]. | | | | | | pkgs. | | | | | | | | | | | | | | | | | | | | | | | | Hi Dale. I have notice that both ways are different. For | | | | | | example, | | | | | | the | | | | | | first one does not take into account those | | | | | | ConfigurationOfXXX | | | | | | packages, whereas the second one does. Moreoever, in the | | | | | | second | | | | | | one, | | | | | | I see that there are repetitions. For example: | | | | | | | | | | | | | pkgs loader | | | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) | | | | | | project | | | | | | version: | | | | | | ' 3.0.6.3 ') | | | | | | ignoreImage: true; | | | | | | record: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | | pkgs := OrderedCollection new. | | | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | | | add: | | | | | | directive spec file ]. | | | | | | pkgs. | | | | | | | | | | | | size gives me 127, but asSet size, 106. It seems some | | | | | | packages | | | | | | appear | | | | | | more than once like ConfigurationOfGrease. | | | | | | | | | | | | ConfigurationOfXXX do not have version number in their | | | | | | name, | | | | | | but | | | | | | the | | | | | | rest do have. | | | | | | | | | | | | Now, the main problem is that none of them is what I need: | | | | | | I | | | | | | need | | | | | | ALL | | | | | | the required packages that are needed to load such project | | | | | | with | | | | | | metacello. I want to capture the exact list of packages | | | | | | needed | | | | | | when | | | | | | I do, for example: | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | | | ' 3.0.6.3 ') | | | | | | load: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | | | | | | | | The first one doesn't even take into account | | | | | | ConfigurationOfXX, | | | | | | so | | | | | | it | | | | | | doesn't help me. The second one, not only has repetitions, | | | | | | but | | | | | | also | | | | | | it lists packages that I really don't need. For example, | | | | | | OB-Morphic-lr.164 and Seaside-Tools-OmniBrowser-lr.25. I | | | | | | don't | | | | | | understand how those packages arrived to the list. If I | | | | | | take | | | | | | a | | | | | | clean | | | | | | image, and install Seaside with the way I showed you, those | | | | | | packages | | | | | | are not even downloaded. So why do they appear here? | | | | | | | | | | | | So...all in all, what I need is a list of the exact | | | | | | packages | | | | | | I | | | | | | need | | | | | | to reproduce something I have loaded with Metacello. In | | | | | | other | | | | | | words, | | | | | | if I start an image with an empty package-cache, and | | | | | | execute | | | | | | the | | | | | | load of seaside, how can I know the list of packages that | | | | | | were | | | | | | downloaded? of course, not inspecting the package-cache ;) | | | | | | | | | | | | Thanks in advance Dale!!! | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Dale | | | | | | | | | | | | | | | | | | | | | | | | ----- Original Message ----- | | | | | | | From: "jannik.laval" < [hidden email] > | | | | | | | To: [hidden email] | | | | | | | Sent: Thursday, November 17, 2011 5:11:09 AM | | | | | | | Subject: [Metacello] collecting all packages of a | | | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi guys, | | | | | | | | | | | | | | | | | | | | | With mariano, we had a discussion about a problem I have: | | | | | | | How can I collect all packages from a configuration with | | | | | | | resolving | | | | | | | all sub projects ? | | | | | | | | | | | | | | | | | | | | | Thank you for your help. | | | | | | | Cheers, | | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | | | | | Begin forwarded message: | | | | | | | | | | | | | | | | | | | | | | | | | | | | From: Mariano Martinez Peck < [hidden email] > | | | | | | | | | | | | | | Subject: Re: Metacello question | | | | | | | | | | | | | | Date: November 16, 2011 4:09:38 PM GMT+01:00 | | | | | | | | | | | | | | To: "jannik.laval" < [hidden email] > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 11:57 AM, jannik.laval < | | | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | | | | | | | | | | | | | | | | I understand your code and It seems to be the same as | | | | | | | mine. | | | | | | | version40 make the same as "project version: '4.0'". | | | | | | | | | | | | | | | | | | | | | The problem is the resolution of internal projects. | | | | | | | We should collect the methods recursively... and possibly | | | | | | | with | | | | | | | circular dependencies. | | | | | | | So, Metacello can resolve them, but I do not know | | | | | | | Metacello | | | | | | | :( | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have no idea :( | | | | | | | Ask in metacello mailing list: [hidden email] | | | | | | | , | | | | | | | | | | | | | | good luck | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Nov 16, 2011, at 15:36 , Mariano Martinez Peck wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 6:59 AM, jannik.laval < | | | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | | How are you ? | | | | | | | Here, at Bordeaux, I am fine, and all the family too :) | | | | | | | | | | | | | | | | | | | | | | | | | | | | Excellent, nice to hear that :) | | | | | | | I am in Argentina in holidays (after Smalltalks) and all | | | | | | | familiy | | | | | | | good | | | | | | | as well hahahahah | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have a question about Metacello, and you know well | | | | | | | Metacello | | | | | | | :) | | | | | | | I would like to collect all the files to load of a | | | | | | | Configuration | | | | | | | with | | | | | | | all dependencies already resolved. | | | | | | | | | | | | | | For now, I have this code in a transcript: | | | | | | | === | | | | | | | ConfigurationOfMoose version40 spec packages map | | | | | | | select:[:e | | | | | | | | | | | | | | | e | | | | | | | isKindOf: MetacelloPackageSpec ] | | | | | | | thenCollect: [:e | e repositories list isEmpty | | | | | | | ifTrue: [e file] | | | | | | | ifFalse: [e repositories list first name, '/' , e file]]. | | | | | | | === | | | | | | | It allows me to have all files in ConfigurationOfMoose, | | | | | | | but | | | | | | | I | | | | | | | have | | | | | | | two problems: | | | | | | | | | | | | | | - if I change version40 by version42, I have no more the | | | | | | | name | | | | | | | of | | | | | | | packages. | | | | | | | Here is an example: | | | | | | | with version40, the first value of my collection is: ' | | | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-tg.3 ' | | | | | | | with version42, it is: ' | | | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-Browser ' | | | | | | | ==> I have no more the versions to load. | | | | | | | | | | | | | | | | | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.0') packages | | | | | | | collect: | | | | | | | [ | | | | | | | :each | each name ] as: Set. | | | | | | | | | | | | | | or .. | | | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.2') packages | | | | | | | collect: | | | | | | | [ | | | | | | | :each | each name ] as: Set. | | | | | | | | | | | | | | does that help ? | | | | | | | | | | | | | | | | | | | | | | | | | | | | - the second problem is about depending project. Moose | | | | | | | load | | | | | | | other | | | | | | | projects, and there are some cyclic dependencies between | | | | | | | the | | | | | | | loads: | | | | | | | for example DSM needs Moose, and Moose loads DSM..... | | | | | | | I know that Metacello resolves this kind of problems. | | | | | | | | | | | | | | So, my question is: is it possible to obtain a list of | | | | | | | all | | | | | | | packages | | | | | | | of a configuration ? | | | | | | | | | | | | | | Thank you | | | | | | | --- | | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | | Mariano | | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | | Mariano | | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | Mariano | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | Mariano | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | |
In reply to this post by Mariano Martinez Peck
Mind that I haven't implemented project:/packages:/groups: but Doru does similar things for Moose and extracting test packages, so it would seem that we could build a filter or two to greatly simplify the process ...
Dale ----- Original Message ----- | From: "Mariano Martinez Peck" <[hidden email]> | To: [hidden email] | Sent: Friday, August 3, 2012 11:27:24 AM | Subject: Re: [Metacello] collecting all packages of a configuration | | | | | On Fri, Aug 3, 2012 at 8:25 PM, Dale Henrichs < [hidden email] > | wrote: | | | Mariano, | | BTW, I would be very interested if you tried using the Metacello | scripting API for your work in collecting the packages of a | configuration ... the onDowngrade: and onUpgrade: messages might | give you insight or you might uncover additional api | command/features that would make your job easier ... | | For example here is a suggestion for an api feature/addition to | produce a list of packages filtering by project/package/group: | | packages := Metacello image | configuration: 'Moose'; | projects: [:proj | proj name ~= 'Filesystem']; | packages: [:pkg | true]; | groups: [:group | group name = 'Tests']; | list. | HDTestReport runPackages: | (packages asSortedCollection: [:a :b | a < b]) asOrderedCollection. | | Building these kinds of lists from the raw configurations takes a | Masters degree in Metacello (or maybe a Phd.), but perhaps we can | come up with some simple filters/approaches that simplify the | creation of these lists ... | | | | | | That would be awesome. What I was doing so far is: | | | | packagesFromConf: confName version: versionString loading: | packageOrGroups | | loader pkgs | | | loader := ((Smalltalk at: confName asSymbol) project version: | versionString) | ignoreImage: false; | record: packageOrGroups. | pkgs := OrderedCollection new. | loader loadDirective packageDirectivesDo: [:directive | pkgs add: | directive spec name ]. | ^ pkgs | | | I will take a look to what you say. | | | | | | | | Dale | | ----- Original Message ----- | | | From: "Dale Henrichs" < [hidden email] > | | To: [hidden email] | | | | Sent: Friday, August 3, 2012 11:05:12 AM | | Subject: Re: [Metacello] collecting all packages of a configuration | | | | Mariano, | | | | Metacello does have cycle detection -- most likely you're seeing | | the | | effects of different paths with different required versions of the | | same leaf project... | | | | If you print the loadDirective you should be able to trace the | | different paths and see the different versions. | | | | Metacello detects cycles, but Metacello does not collapse the | | packages with the different versions... if you are using atomic | | load, then I assume that the Monticello loader will collapse | | packages, but when you don't use atomic load, Metacello loads the | | packages for the "currently required version" even though that may | | result in a reload of the package a bit later... | | | | Dale | | | | ----- Original Message ----- | | | From: "Mariano Martinez Peck" < [hidden email] > | | | To: [hidden email] | | | Sent: Friday, August 3, 2012 10:37:44 AM | | | Subject: Re: [Metacello] collecting all packages of a | | | configuration | | | | | | | | | | | | | | | On Fri, Aug 3, 2012 at 7:27 PM, Mariano Martinez Peck < | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | On Fri, Aug 3, 2012 at 7:24 PM, Mariano Martinez Peck < | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | On Fri, Aug 3, 2012 at 7:17 PM, Dale Henrichs < | | | [hidden email] | | | > | | | wrote: | | | | | | | | | Mariano, | | | | | | | | | I'm running the load expression in Pharo-1.4 and I hit the | | | warning | | | about needing ImageSegments, so I can't complete the load in | | | Pharo-1.4 ... | | | | | | I need a bit more info about how you get past needing | | | ImageSegments | | | problem before I can proceed... | | | | | | | | | | | | | | | | | | Hi Dale. Thanks for trying to reproduce it. Indeed, I also had | | | that | | | problem of ImageSegment as well as another one for BlockContext. | | | I | | | just clicked on "proceed". | | | I think the problem is more or less like this: | | | ConfigurationOfPierAddOns loads an old version of XML-Parser ( | | | 1.0.1) then another project install a newer version of XML-Parser | | | and there appears the popup. At the same time, those packages I | | | mention that do not appear ( 'Collections- BitmapCharacterSet' or | | | 'Collections- OrderPreservingDictionary' ) are ONLY present in | | | the | | | new version of ConfigurationOfXMLSupport (not in the old 1.0.1). | | | So...I think that what happens is that you load version XXX of | | | something, but then YYY (which may need other packages). However, | | | when you query Metacello, he only remember about XXX. Can it be | | | something like that? | | | | | | | | | | | | | | | In fact, if I change ConfigurationOfPierAddOns2 >> version210: | | | and | | | change | | | | | | | | | project: 'XML Parser' with: '1.0.1'. | | | | | | | | | to | | | | | | | | | project: 'XML Parser' with: #stable. | | | | | | | | | the popup disappear and the packages are included when I query | | | Metacello. | | | | | | | | | | | | | | | | | | | | | | | | | | | However, even if the popup disappear and the packages are | | | included, | | | they are in the incorrect order: | | | | | | | | | | | | seasidePackages | | | ^ #('ConfigurationOfGrease' 'ConfigurationOfSPort2' | | | 'ConfigurationOfZincHTTPComponents' 'Grease-Core' | | | 'Grease-Pharo-Core' 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' | | | 'Zinc-FileSystem' 'Zinc-HTTP' 'Seaside-Core' 'Seaside-Pharo-Core' | | | 'Seaside-Component' 'Seaside-Canvas' 'Seaside-Pharo-Canvas' | | | 'RSS-Core' 'Javascript-Core' 'Javascript-Pharo-Core' | | | 'Prototype-Core' 'Scriptaculous-Core' 'JQuery-Core' 'JQuery-UI' | | | 'Seaside-Email' 'Seaside-Pharo-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Session' 'Seaside-RenderLoop' | | | 'Seaside-Tools-Core' 'Seaside-Flow' 'Seaside-Examples' | | | 'RSS-Examples' 'Seaside-Widgets' 'Seaside-Tools-Web' | | | 'Seaside-Pharo-Tools-Web' 'Seaside-Environment' | | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' | | | 'RSS-Tests-Core' | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Pharo-Email' | | | 'Seaside-Tests-Functional' 'Seaside-Tests-Pharo-Functional' | | | 'Seaside-Tests-Flow' 'Seaside-Welcome' 'Seaside-Pharo-Welcome' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | | 'Seaside-Pharo-Development' 'ConfigurationOfSeaside30' | | | 'ConfigurationOfMagritte2' 'Magritte-Model' 'Magritte-Morph' | | | 'Magritte-Pharo-Model' 'Magritte-Seaside' | | | 'Magritte-Pharo-Seaside' | | | 'Pier-Model' 'Pier-Pharo-Model' 'Pier-Seaside' | | | 'Pier-Pharo-Seaside' | | | 'Pier-Security' 'Pier-Pharo-Persistency' 'ConfigurationOfPier2' | | | 'ConfigurationOfJQueryWidgetBox' 'ConfigurationOfXMLSupport' | | | 'JQWidgetBox-Core' 'JQWidgetBox-FormExample-Core' | | | 'ConfigurationOfXMLWriter' | | | 'Collections-OrderPreservingDictionary' | | | 'Collections-Support' 'XML-Writer' | | | 'Collections-BitmapCharacterSet' | | | 'XML-Parser' 'Pier-Blog' 'Pier-Book' 'Pier-Design' | | | 'Pier-Documents' | | | 'Pier-EditorEnh' 'Pier-Shout' 'Pier-Google' 'Pier-JQuery' | | | 'Pier-LinkChecker' 'Pier-Setup' 'Pier-FuelPersistence-Core' | | | 'Pier-FuelPersistence-Test') | | | | | | | | | | | | | | | 'XML-Writer' is BEFORE 'XML-Parser'. But XMLWriter>>initialize | | | references XMLNamespaceScope (which is from XML-Parser). | | | So...we should change the order. But., XMLNode (from XML-Parser) | | | >> | | | printOn: references XMLWriter.... | | | | | | | | | grrrr so, all in all I see a cycle. I thought Metacello had a | | | cycle | | | detection. | | | | | | | | | Thanks Dale! | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks! | | | | | | | | | | | | | | | | | | | | | | | | Dale | | | | | | ----- Original Message ----- | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | To: [hidden email] | | | | | | | | | | Sent: Thursday, August 2, 2012 9:56:40 AM | | | | Subject: Re: [Metacello] collecting all packages of a | | | | configuration | | | | | | | | Hi Dale. I find myself again, trying to collect the packages | | | | loaded | | | | (and their order). There is something that does not work and I | | | | cannot figure out what is happening. At least, it is | | | | reproducible | | | | ;) | | | | | | | | | | | | I took the last Pharo 2.0 available from Jenkins, and I install | | | | seaside and pier as following: | | | | | | | | | | | | | | | | Gofer it | | | | squeaksource: 'MetacelloRepository'; | | | | package: 'ConfigurationOfSeaside30'; | | | | load. | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | #stable) | | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | 'Seaside-Welcome' | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome'). | | | | | | | | Gofer it | | | | squeaksource: 'MetacelloRepository'; | | | | package: 'ConfigurationOfPier2'; | | | | load. | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfPier2) project version: | | | | #stable) | | | | load. | | | | | | | | | | | | | | | | | | | | Gofer it | | | | squeaksource: 'MetacelloRepository'; | | | | package: 'ConfigurationOfPierAddOns2'; | | | | load. | | | | | | | | | | | | | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfPierAddOns2) project version: | | | | #stable) load: #('default' 'Pier-Shout' 'Pier-Design' ). | | | | | | | | | | | | | | | | | | | | Now...while loading that, I have an popup saying I am about to | | | | load | | | | a | | | | new version of XML-Parser (see attachment). Ok, I say "load" | | | | and | | | | everything loads fine after. | | | | | | | | | | | | The problem is that if now I ask Metacello the loaded packages: | | | | | | | | | | | | | | | | | | | | | | | | | | | | >> packagesFromConf: confName version: versionString loading: | | | | >> packageOrGroups | | | | | loader pkgs | | | | | | | | | loader := ((Smalltalk at: confName asSymbol) project version: | | | | versionString) | | | | ignoreImage: true; | | | | record: packageOrGroups. | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive | pkgs | | | | add: | | | | directive spec name ]. | | | | ^ pkgs | | | | | | | | | | | | | | | | | | | | >> seasidePackages | | | | | packages loader | | | | | packages := OrderedCollection new. | | | | packages addAll: (self packagesFromConf: | | | | #ConfigurationOfSeaside30 | | | | version: #stable loading: #('Base' 'Zinc-Seaside' 'Base Tests' | | | | 'RSS-Core' 'Javascript-Core' 'Prototype-Core' | | | | 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | 'Seaside-Welcome' | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | )). | | | | | | | | | | | | packages addAll: (self packagesFromConf: #ConfigurationOfPier2 | | | | version: #stable loading: #('default')). | | | | packages addAll: (self packagesFromConf: | | | | #ConfigurationOfPierAddOns2 | | | | version: #stable loading: #('default' 'Pier-Shout' | | | | 'Pier-Design' | | | | )). | | | | packages addAll: #('Pier-FuelPersistence-Core' | | | | 'Pier-FuelPersistence-Test'). | | | | | | | | packages := packages removeDuplicates. | | | | | | | | ^ packages | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are some packages that do not appear, like | | | | 'Collections-BitmapCharacterSet' or | | | | 'Collections-OrderPreservingDictionary', which are needed by | | | | ConfigurationOfXMLSupport . And....this is related to the error | | | | I | | | | got popup (saying I was loading a new version) | | | | | | | | | | | | So...all in all, do you have something in mind that could be | | | | happening? Sorry for not being able to dig deeper. | | | | | | | | | | | | Thanks!!! | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Sun, May 13, 2012 at 5:05 PM, Dale Henrichs < | | | | [hidden email] | | | | > wrote: | | | | | | | | | | | | Mariano, | | | | | | | | The loadDirectives are actually used for the Metacello load, so | | | | you | | | | are getting the load order from the horse's mouth... | | | | | | | | Seaside-Core is one of the first packages that needs to be | | | | loaded | | | | so | | | | Seaside-Tools-Core should be loaded _after_ Seaside-Core ... | | | | | | | | WARegistry class is in Seaside-Core, but the method WARegistry | | | | class>>#clearAllHandlers is actually in the Seaside-Tools-Core | | | | package (*seaside-tools-core) so everything is consistent... | | | | | | | | | | | | Dale | | | | | | | | ----- Original Message ----- | | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | | To: [hidden email] | | | | | | | | | | | | | Sent: Sunday, May 13, 2012 6:50:18 AM | | | | | Subject: Re: [Metacello] collecting all packages of a | | | | | configuration | | | | | | | | | | Hi Dale. For a different purpose, I need again something | | | | | related | | | | | to | | | | | this. | | | | | What I actually need is to ask Metacello the list of packages | | | | | I | | | | | need | | | | | when I do load: xxx SORTED by the load order. I mean, I want | | | | | they | | | | | to | | | | | be sorted in the way that those that need to be loaded first | | | | | go | | | | | first. | | | | | | | | | | Take this example. I have download seaside this way: | | | | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | | #stable) | | | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | | 'Seaside-Welcome' | | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | | ). | | | | | | | | | | But those pacakages/groups have another dependencies etc etc. | | | | | So | | | | | I | | | | | am | | | | | using this to query: | | | | | | | | | | | pkgs loader | | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | | | version: | | | | | ' 3.0.6.3 ') | | | | | ignoreImage: true; | | | | | record: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | | 'Seaside-Welcome' | | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | | ). | | | | | pkgs := OrderedCollection new. | | | | | loader loadDirective packageDirectivesDo: [:directive | pkgs | | | | | add: | | | | | directive spec name ]. | | | | | ^ pkgs | | | | | | | | | | | | | | | It loooks like if that would answer the list of packages in | | | | | load | | | | | order, but this is not true. If you inspect that, you obtain | | | | | this: | | | | | | | | | | an OrderedCollection('ConfigurationOfGrease' | | | | | 'ConfigurationOfGrease' | | | | | 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' | | | | | 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Core' | | | | | 'Grease-Pharo-Core' | | | | | 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-HTTP' | | | | | 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' | | | | | 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' | | | | | 'Javascript-Core' | | | | | 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' | | | | | 'Seaside-Pharo-Email' | | | | | 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' | | | | | 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' | | | | | 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' | | | | | 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' | | | | | 'Seaside-Environment' | | | | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | | | | 'Scriptaculous-Components' 'Zinc-Seaside' | | | | | 'Seaside-Tests-Core' | | | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' | | | | | 'RSS-Tests-Core' | | | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | | 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' | | | | | 'Seaside-Welcome' 'Seaside-Pharo-Welcome' | | | | | 'Prototype-Tests-Core' | | | | | 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' | | | | | 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | | | | 'Seaside-Pharo-Development') | | | | | | | | | | As you can see, for example, 'Seaside-Tools-Core' is AFTER | | | | | 'Seaside-Core'. Right? However, for example, WARegistry >> | | | | | #clearAllHandlers (package 'Seaside-Core') has references to | | | | | WAAdmin | | | | | (present in 'Seaside-Tools-Core''). So? is | | | | | 'Seaside-Tools-Core' | | | | | actually loaded before 'Seaside-Core'? if true, how can I | | | | | query | | | | | that | | | | | to Metacello. If false, why don't you get the ugly Monticello | | | | | popup | | | | | saying you that you have dependencies on ... | | | | | | | | | | Thanks! | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Mon, Dec 5, 2011 at 6:53 PM, Dale Henrichs < | | | | | [hidden email] | | | | | > | | | | | wrote: | | | | | | | | | | | | | | | Mariano, | | | | | | | | | | Regarding your complaint about having the OmniBrowser | | | | | packages | | | | | show | | | | | up when you are using the #loadDirective based variant. The | | | | | 'Core' | | | | | group for Seaside includes Seaside-Tools-OmniBrowser, so when | | | | | you | | | | | load the 'Core' group OmniBrowser is a required package. You | | | | | are | | | | | sitting in a Pharo image that already has OmniBrowser loaded, | | | | | so | | | | | when you load Seaside30 you don't see the OB packages getting | | | | | loaded. However, in the #loadDirective variant, you are using | | | | | #ignoreImage: and when Metacello ignores the image, it | | | | | ignores | | | | | the | | | | | fact that OB is already loaded as well ... If you want to | | | | | know | | | | | what | | | | | would be loaded into the current image, then don't set | | | | | #ignoreImage | | | | | to true ... the OmniBrowser packages and any other packages | | | | | that | | | | | are | | | | | already loaded won't show up ... | | | | | | | | | | If there is a set of configs that you would like to | | | | | include/exclude, | | | | | then a more complex load directive algorithm can be used... | | | | | | | | | | Regarding the duplication of packages, I would say that since | | | | | you | | | | | are | | | | | only interested in the list of packages that would be loaded, | | | | | you | | | | | can safely ignore the duplicates. | | | | | | | | | | Regarding the inclusion of the ConfigurationOfXXX files, | | | | | technically, | | | | | those files are needed for a load. No version information is | | | | | associated with the configuration file, because config files | | | | | always | | | | | have their latest available version loaded ... If you want to | | | | | filter | | | | | those files out, then there is a more complex loadDirective | | | | | traversal algorithm you could use, or you can filter out the | | | | | configs | | | | | with #beginsWith:... | | | | | | | | | | | | | | | Dale | | | | | | | | | | ----- Original Message ----- | | | | | | | | | | | From: "Mariano Martinez Peck" < [hidden email] > | | | | | | To: [hidden email] | | | | | | Sent: Saturday, December 3, 2011 4:27:13 PM | | | | | | | | | | | | | | | | Subject: Re: [Metacello] collecting all packages of a | | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Thu, Nov 17, 2011 at 6:57 PM, Dale Henrichs < | | | | | | [hidden email] | | | | | | > wrote: | | | | | | | | | | | | | | | | | | Jannik, | | | | | | | | | | | | There are two routes you can take to answer your question. | | | | | | Firstly, | | | | | | you can directly query the version itself: | | | | | | | | | | | | ((ConfigurationOfMetacello project currentVersion) | | | | | | allPackagesForSpecNamed: 'ALL') | | | | | | collect: [:spec | spec file ]. | | | | | | | | | | | | Or you can use #record: and then collect the information | | | | | | you | | | | | | want: | | | | | | | | | | | | | pkgs loader | | | | | | | loader := (ConfigurationOfMetacello project currentVersion) | | | | | | ignoreImage: true; | | | | | | record: 'ALL'. | | | | | | pkgs := OrderedCollection new. | | | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | | | add: | | | | | | directive spec file ]. | | | | | | pkgs. | | | | | | | | | | | | | | | | | | | | | | | | Hi Dale. I have notice that both ways are different. For | | | | | | example, | | | | | | the | | | | | | first one does not take into account those | | | | | | ConfigurationOfXXX | | | | | | packages, whereas the second one does. Moreoever, in the | | | | | | second | | | | | | one, | | | | | | I see that there are repetitions. For example: | | | | | | | | | | | | | pkgs loader | | | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) | | | | | | project | | | | | | version: | | | | | | ' 3.0.6.3 ') | | | | | | ignoreImage: true; | | | | | | record: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | | pkgs := OrderedCollection new. | | | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | | | add: | | | | | | directive spec file ]. | | | | | | pkgs. | | | | | | | | | | | | size gives me 127, but asSet size, 106. It seems some | | | | | | packages | | | | | | appear | | | | | | more than once like ConfigurationOfGrease. | | | | | | | | | | | | ConfigurationOfXXX do not have version number in their | | | | | | name, | | | | | | but | | | | | | the | | | | | | rest do have. | | | | | | | | | | | | Now, the main problem is that none of them is what I need: | | | | | | I | | | | | | need | | | | | | ALL | | | | | | the required packages that are needed to load such project | | | | | | with | | | | | | metacello. I want to capture the exact list of packages | | | | | | needed | | | | | | when | | | | | | I do, for example: | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | | | ' 3.0.6.3 ') | | | | | | load: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | | | | | | | | The first one doesn't even take into account | | | | | | ConfigurationOfXX, | | | | | | so | | | | | | it | | | | | | doesn't help me. The second one, not only has repetitions, | | | | | | but | | | | | | also | | | | | | it lists packages that I really don't need. For example, | | | | | | OB-Morphic-lr.164 and Seaside-Tools-OmniBrowser-lr.25. I | | | | | | don't | | | | | | understand how those packages arrived to the list. If I | | | | | | take | | | | | | a | | | | | | clean | | | | | | image, and install Seaside with the way I showed you, those | | | | | | packages | | | | | | are not even downloaded. So why do they appear here? | | | | | | | | | | | | So...all in all, what I need is a list of the exact | | | | | | packages | | | | | | I | | | | | | need | | | | | | to reproduce something I have loaded with Metacello. In | | | | | | other | | | | | | words, | | | | | | if I start an image with an empty package-cache, and | | | | | | execute | | | | | | the | | | | | | load of seaside, how can I know the list of packages that | | | | | | were | | | | | | downloaded? of course, not inspecting the package-cache ;) | | | | | | | | | | | | Thanks in advance Dale!!! | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Dale | | | | | | | | | | | | | | | | | | | | | | | | ----- Original Message ----- | | | | | | | From: "jannik.laval" < [hidden email] > | | | | | | | To: [hidden email] | | | | | | | Sent: Thursday, November 17, 2011 5:11:09 AM | | | | | | | Subject: [Metacello] collecting all packages of a | | | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi guys, | | | | | | | | | | | | | | | | | | | | | With mariano, we had a discussion about a problem I have: | | | | | | | How can I collect all packages from a configuration with | | | | | | | resolving | | | | | | | all sub projects ? | | | | | | | | | | | | | | | | | | | | | Thank you for your help. | | | | | | | Cheers, | | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | | | | | Begin forwarded message: | | | | | | | | | | | | | | | | | | | | | | | | | | | | From: Mariano Martinez Peck < [hidden email] > | | | | | | | | | | | | | | Subject: Re: Metacello question | | | | | | | | | | | | | | Date: November 16, 2011 4:09:38 PM GMT+01:00 | | | | | | | | | | | | | | To: "jannik.laval" < [hidden email] > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 11:57 AM, jannik.laval < | | | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | | | | | | | | | | | | | | | | I understand your code and It seems to be the same as | | | | | | | mine. | | | | | | | version40 make the same as "project version: '4.0'". | | | | | | | | | | | | | | | | | | | | | The problem is the resolution of internal projects. | | | | | | | We should collect the methods recursively... and possibly | | | | | | | with | | | | | | | circular dependencies. | | | | | | | So, Metacello can resolve them, but I do not know | | | | | | | Metacello | | | | | | | :( | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have no idea :( | | | | | | | Ask in metacello mailing list: [hidden email] | | | | | | | , | | | | | | | | | | | | | | good luck | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Nov 16, 2011, at 15:36 , Mariano Martinez Peck wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 6:59 AM, jannik.laval < | | | | | | | [hidden email] > wrote: | | | | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | | How are you ? | | | | | | | Here, at Bordeaux, I am fine, and all the family too :) | | | | | | | | | | | | | | | | | | | | | | | | | | | | Excellent, nice to hear that :) | | | | | | | I am in Argentina in holidays (after Smalltalks) and all | | | | | | | familiy | | | | | | | good | | | | | | | as well hahahahah | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have a question about Metacello, and you know well | | | | | | | Metacello | | | | | | | :) | | | | | | | I would like to collect all the files to load of a | | | | | | | Configuration | | | | | | | with | | | | | | | all dependencies already resolved. | | | | | | | | | | | | | | For now, I have this code in a transcript: | | | | | | | === | | | | | | | ConfigurationOfMoose version40 spec packages map | | | | | | | select:[:e | | | | | | | | | | | | | | | e | | | | | | | isKindOf: MetacelloPackageSpec ] | | | | | | | thenCollect: [:e | e repositories list isEmpty | | | | | | | ifTrue: [e file] | | | | | | | ifFalse: [e repositories list first name, '/' , e file]]. | | | | | | | === | | | | | | | It allows me to have all files in ConfigurationOfMoose, | | | | | | | but | | | | | | | I | | | | | | | have | | | | | | | two problems: | | | | | | | | | | | | | | - if I change version40 by version42, I have no more the | | | | | | | name | | | | | | | of | | | | | | | packages. | | | | | | | Here is an example: | | | | | | | with version40, the first value of my collection is: ' | | | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-tg.3 ' | | | | | | | with version42, it is: ' | | | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-Browser ' | | | | | | | ==> I have no more the versions to load. | | | | | | | | | | | | | | | | | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.0') packages | | | | | | | collect: | | | | | | | [ | | | | | | | :each | each name ] as: Set. | | | | | | | | | | | | | | or .. | | | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.2') packages | | | | | | | collect: | | | | | | | [ | | | | | | | :each | each name ] as: Set. | | | | | | | | | | | | | | does that help ? | | | | | | | | | | | | | | | | | | | | | | | | | | | | - the second problem is about depending project. Moose | | | | | | | load | | | | | | | other | | | | | | | projects, and there are some cyclic dependencies between | | | | | | | the | | | | | | | loads: | | | | | | | for example DSM needs Moose, and Moose loads DSM..... | | | | | | | I know that Metacello resolves this kind of problems. | | | | | | | | | | | | | | So, my question is: is it possible to obtain a list of | | | | | | | all | | | | | | | packages | | | | | | | of a configuration ? | | | | | | | | | | | | | | Thank you | | | | | | | --- | | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | | Mariano | | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | | Mariano | | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | Mariano | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | Mariano | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | |
Free forum by Nabble | Edit this page |