collecting all packages of a configuration

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
48 messages Options
123
Reply | Threaded
Open this post in threaded view
|

collecting all packages of a configuration

jannik laval
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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Dale Henrichs
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.

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
|
Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Mariano Martinez Peck
Dale, wouldn't make sense to put such helper methods in the version?

On Thu, Nov 17, 2011 at 2: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.

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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Dale Henrichs
Mariano,

Which methods were you thinking about?

Dale

----- Original Message -----
| From: "Mariano Martinez Peck" <[hidden email]>
| To: [hidden email]
| Sent: Thursday, November 17, 2011 10:04:21 AM
| Subject: Re: [Metacello] collecting all packages of a configuration
|
| Dale, wouldn't make sense to put such helper methods in the version?
|
|
| On Thu, Nov 17, 2011 at 2: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.
|
| 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
|
|
Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Mariano Martinez Peck


On Thu, Nov 17, 2011 at 3:06 PM, Dale Henrichs <[hidden email]> wrote:
Mariano,

Which methods were you thinking about?

I mean if we can have

MetacelloMCVersion >> allReferencedPackages

self allPackagesForSpecNamed: 'ALL') collect: [:spec | spec file ].
 
or something like that.... so that we can directly query:

ConfigurationOfMetacello project currentVersion allReferencedPackages

but of course, we have to find a better name for #allReferencedPackages


Dale

----- Original Message -----
| From: "Mariano Martinez Peck" <[hidden email]>
| To: [hidden email]
| Sent: Thursday, November 17, 2011 10:04:21 AM
| Subject: Re: [Metacello] collecting all packages of a configuration
|
| Dale, wouldn't make sense to put such helper methods in the version?
|
|
| On Thu, Nov 17, 2011 at 2: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.
|
| 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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

jannik laval
In reply to this post by Dale Henrichs
Thank you Dale,

That is exactly what I need !
Cheers,
Jannik

On Nov 17, 2011, at 18:57 , Dale Henrichs 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.
>
> 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
> |

---
Jannik Laval

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Mariano Martinez Peck
In reply to this post by Dale Henrichs


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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Mariano Martinez Peck
I didn't mention why I need this...but just in case... I want to load seaside, and then re-commit all those packages to another repo. #fetch and #push doesn't work because they do so with all versions/history. I just want to do this for a current version of seaside.  And I cannot do a copy, I do need to do a "commit".

thanks

On Sun, Dec 4, 2011 at 1:27 AM, Mariano Martinez Peck <[hidden email]> wrote:


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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Dale Henrichs
In reply to this post by Mariano Martinez Peck
Most directives variant is the one you should use when you want ALL of the packages to be loaded. If it doesn't give you the right answer, then there is a bug... duplicate entries are not a complete surprise, configurations can be "loaded" more than once because there is logic that will force load a configuration, packages might have more than one entry if early required configurations load different versions of a project/package...

`#ignoreImage: true` is the obvious difference between the two load expressions, but I don't think that OB should be brought in so it sounds like you have uncovered a bug.

Which version of Metacello are you using? Metacello 1.0-beta.31.1 is the latest version...

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
|
|
Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Mariano Martinez Peck


On Sun, Dec 4, 2011 at 1:46 AM, Dale Henrichs <[hidden email]> wrote:
Most directives variant is the one you should use when you want ALL of the packages to be loaded. If it doesn't give you the right answer, then there is a bug... duplicate entries are not a complete surprise, configurations can be "loaded" more than once because there is logic that will force load a configuration, packages might have more than one entry if early required configurations load different versions of a project/package...


Ok, I understand that. Nevertheless, I think they should be filtered in, for example, #allPackagesForSpecNamed:. It doesn't make sense to have duplicates there. Does it?
 
`#ignoreImage: true` is the obvious difference between the two load expressions, but I don't think that OB should be brought in so it sounds like you have uncovered a bug.


It is easy to reproduce. I took a Pharo 1.3 clean image, with an empty package cache and I evaluated:

Gofer new
    squeaksource: 'MetacelloRepository';
    package: 'ConfigurationOfSeaside30';
    load.
    ((Smalltalk at: #ConfigurationOfSeaside30) project version: '3.0.6.3')
    load: #('Core' 'Tests' 'Zinc-Seaside' ).

Doing:

    (((Smalltalk at: #ConfigurationOfSeaside30) project version: '3.0.6.3') allPackagesForSpecNamed: #('Core' 'Tests' 'Zinc-Seaside'))    

I would expect to have the same list of packages that are in package-cache.

And yes, such list includes OmniBrowser for example.
 
Which version of Metacello are you using? Metacello 1.0-beta.31.1 is the latest version...


I was using an older version. I have just updated, but still see this problem. OmniBrowser is present, and ConfigurationOfXXX are missing.

Thanks.
 
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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Dale Henrichs
Now which expression is giving you the wrong answer? You mention only #allPackagesForSpecNamed:.

The expression that I think should duplicate the load: expression and the one that I recommend is:

 | 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.

The #allPackagesForSpecNamed: method does not follow the same execution path as #load: and can give different results ... I think the comment includes the words 'in essence' implying that it doesn't use the same algorithm ... If I'm not mistaken, #allPackagesForSpecNamed: was intended to support #isPossibleBaseline which is answering a different question than "what would be loaded?" ...

So which one (or both) are you getting the wrong results from?

It's not convenient for me to test things at the moment:)

Dale

----- Original Message -----
| From: "Mariano Martinez Peck" <[hidden email]>
| To: [hidden email]
| Sent: Saturday, December 3, 2011 4:59:51 PM
| Subject: Re: [Metacello] collecting all packages of a configuration
|
|
|
|
| On Sun, Dec 4, 2011 at 1:46 AM, Dale Henrichs < [hidden email] >
| wrote:
|
|
| Most directives variant is the one you should use when you want ALL
| of the packages to be loaded. If it doesn't give you the right
| answer, then there is a bug... duplicate entries are not a complete
| surprise, configurations can be "loaded" more than once because
| there is logic that will force load a configuration, packages might
| have more than one entry if early required configurations load
| different versions of a project/package...
|
|
|
| Ok, I understand that. Nevertheless, I think they should be filtered
| in, for example, #allPackagesForSpecNamed:. It doesn't make sense to
| have duplicates there. Does it?
|
|
| `#ignoreImage: true` is the obvious difference between the two load
| expressions, but I don't think that OB should be brought in so it
| sounds like you have uncovered a bug.
|
|
|
| It is easy to reproduce. I took a Pharo 1.3 clean image, with an
| empty package cache and I evaluated:
|
| Gofer new
| squeaksource: 'MetacelloRepository';
| package: 'ConfigurationOfSeaside30';
| load.
| ((Smalltalk at: #ConfigurationOfSeaside30) project version:
| '3.0.6.3')
| load: #('Core' 'Tests' 'Zinc-Seaside' ).
|
| Doing:
|
| (((Smalltalk at: #ConfigurationOfSeaside30) project version:
| '3.0.6.3') allPackagesForSpecNamed: #('Core' 'Tests'
| 'Zinc-Seaside'))
|
| I would expect to have the same list of packages that are in
| package-cache.
|
| And yes, such list includes OmniBrowser for example.
|
|
| Which version of Metacello are you using? Metacello 1.0-beta.31.1 is
| the latest version...
|
|
|
|
| I was using an older version. I have just updated, but still see this
| problem. OmniBrowser is present, and ConfigurationOfXXX are missing.
|
| Thanks.
|
|
|
| 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
|
|
Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Dale Henrichs
In reply to this post by Mariano Martinez Peck
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
|
|
Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Mariano Martinez Peck
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:
| '<a href="tel:3.0.6.3" value="+333063">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:
| '<a href="tel:3.0.6.3" value="+333063">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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Dale Henrichs
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
|
|
Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Mariano Martinez Peck


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...

hehehehehe interesting....you discovered a bad side effect of my experiment ;)  sorry, I though I was checking in a "clean" image but a bad side effect of my experiment changed the category for extension methods.  So...indeed, you are right and the method I have is that I need.

Thanks Dale and sorry for the noise.
 

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:
| '<a href="tel:3.0.6.3" value="+333063">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:
| | ' <a href="tel:3.0.6.3" value="+333063">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:
| | ' <a href="tel:3.0.6.3" value="+333063">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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Dale Henrichs
Mariano,

I've said it before and I'll say it again ... I'd rather have noise than real problems go unreported ...

Thanks for taking the time to characterize the problem in detail...

Dale

----- Original Message -----
| From: "Mariano Martinez Peck" <[hidden email]>
| To: [hidden email]
| Sent: Sunday, May 13, 2012 8:39:52 AM
| Subject: Re: [Metacello] collecting all packages of a configuration
|
|
|
|
| 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...
|
|
| hehehehehe interesting....you discovered a bad side effect of my
| experiment ;) sorry, I though I was checking in a "clean" image but
| a bad side effect of my experiment changed the category for
| extension methods. So...indeed, you are right and the method I have
| is that I need.
|
| Thanks Dale and sorry for the noise.
|
|
|
|
| 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
|
|
Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Mariano Martinez Peck
Hi Dale. Now I was a little bit more sucessful. But still, I have a problem during the initialization of classes. More precisily in:

WAWalkbackErrorHandler class >> initialize
    WAAdmin applicationExceptionHandlingDefaults at: #exceptionHandler put: self

I get a WAAttributeNotFound with #exceptionHandler ...  what I do is I follow the order of packages as Metacello answered me, and then I do something like:

(packageNames collect: [:each | PackageInfo named: each])
            do: [:aPackage |
                "We should not send #initialize to traits"
                ((aPackage classes select: [:each | each isBehavior])
                     sort: [:a :b | a allSuperclasses size < b allSuperclasses size ])
                         do: [:aClass |
                            Transcript show: 'Initializing class named: ', aClass name; cr.
                            aClass initializeOnLoad]
            ].   
        ]   


I have debugged a little bit and it looks like

WAAdmin applicationExceptionHandlingDefaults allAttributes -> an IdentityDictionary()
WAAdmin applicationExceptionHandlingDefaults ancestors -> an IdentitySet() 
 
so something is not good. I saw your issue http://code.google.com/p/seaside/issues/detail?id=643
but evaluating

(Smalltalk at: #WASystemConfiguration) allSubclasses do: [ :each |
        each instance perform: #clearSearchContexts.
        each instance perform: #clearDescription ].

did not help.

Any ideas?

thanks

On Sun, May 13, 2012 at 6:04 PM, Dale Henrichs <[hidden email]> wrote:
Mariano,

I've said it before and I'll say it again ... I'd rather have noise than real problems go unreported ...

Thanks for taking the time to characterize the problem in detail...

Dale

----- Original Message -----
| From: "Mariano Martinez Peck" <[hidden email]>
| To: [hidden email]
| Sent: Sunday, May 13, 2012 8:39:52 AM
| Subject: Re: [Metacello] collecting all packages of a configuration
|
|
|
|
| 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...
|
|
| hehehehehe interesting....you discovered a bad side effect of my
| experiment ;) sorry, I though I was checking in a "clean" image but
| a bad side effect of my experiment changed the category for
| extension methods. So...indeed, you are right and the method I have
| is that I need.
|
| Thanks Dale and sorry for the noise.
|
|
|
|
| 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:
| | ' <a href="tel:3.0.6.3" value="+333063">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:
| | | ' <a href="tel:3.0.6.3" value="+333063">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:
| | | ' <a href="tel:3.0.6.3" value="+333063">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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Dale Henrichs
Mariano,

I guess you are trying to upgrade an existing Seaside application?

Are you having trouble doing this upgrade using Metacello, or is this a problem trying to do the upgrade using the package order derived from the loadDirectives?

If the Metacello load works fine, then I would guess that you're not running your initializers in the right order at the right time. Your little loop over packageNames looks close to what Monticello does when it fires the initializers, but it's not quite the same ... for example Monticello only fires initializers for class initialization methods that are changed/new during the load.

Also, if I remember correctly Metacello fires the initializers for Seaside packages immediately after the package is loaded and does not wait until the end to fire initializers ...

I'd focus on duplicating the initialization pattern of Metacello (instrumenting the Monticello loader where the initializations are fired would give you that info).

Dale

----- Original Message -----
| From: "Mariano Martinez Peck" <[hidden email]>
| To: [hidden email]
| Cc: "Seaside - general discussion" <[hidden email]>
| Sent: Thursday, May 17, 2012 6:13:30 AM
| Subject: Re: [Metacello] collecting all packages of a configuration
|
| Hi Dale. Now I was a little bit more sucessful. But still, I have a
| problem during the initialization of classes. More precisily in:
|
| WAWalkbackErrorHandler class >> initialize
| WAAdmin applicationExceptionHandlingDefaults at: #exceptionHandler
| put: self
|
| I get a WAAttributeNotFound with #exceptionHandler ... what I do is I
| follow the order of packages as Metacello answered me, and then I do
| something like:
|
| (packageNames collect: [:each | PackageInfo named: each])
| do: [:aPackage |
| "We should not send #initialize to traits"
| ((aPackage classes select: [:each | each isBehavior])
| sort: [:a :b | a allSuperclasses size < b allSuperclasses size ])
| do: [:aClass |
| Transcript show: 'Initializing class named: ', aClass name; cr.
| aClass initializeOnLoad]
| ].
| ]
|
|
| I have debugged a little bit and it looks like
|
| WAAdmin applicationExceptionHandlingDefaults allAttributes -> an
| IdentityDictionary()
| WAAdmin applicationExceptionHandlingDefaults ancestors -> an
| IdentitySet()
|
| so something is not good. I saw your issue
| http://code.google.com/p/seaside/issues/detail?id=643
| but evaluating
|
| (Smalltalk at: #WASystemConfiguration) allSubclasses do: [ :each |
| each instance perform: #clearSearchContexts.
| each instance perform: #clearDescription ].
|
| did not help.
|
| Any ideas?
|
| thanks
|
|
| On Sun, May 13, 2012 at 6:04 PM, Dale Henrichs < [hidden email]
| > wrote:
|
|
| Mariano,
|
| I've said it before and I'll say it again ... I'd rather have noise
| than real problems go unreported ...
|
| Thanks for taking the time to characterize the problem in detail...
|
|
| Dale
|
| ----- Original Message -----
| | From: "Mariano Martinez Peck" < [hidden email] >
| | To: [hidden email]
|
|
| | Sent: Sunday, May 13, 2012 8:39:52 AM
| | Subject: Re: [Metacello] collecting all packages of a configuration
| |
| |
| |
| |
| | 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...
| |
| |
| | hehehehehe interesting....you discovered a bad side effect of my
| | experiment ;) sorry, I though I was checking in a "clean" image but
| | a bad side effect of my experiment changed the category for
| | extension methods. So...indeed, you are right and the method I have
| | is that I need.
| |
| | Thanks Dale and sorry for the noise.
| |
| |
| |
| |
| | 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
|
|
Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Mariano Martinez Peck


On Thu, May 17, 2012 at 7:37 PM, Dale Henrichs <[hidden email]> wrote:
Mariano,

I guess you are trying to upgrade an existing Seaside application?

Are you having trouble doing this upgrade using Metacello, or is this a problem trying to do the upgrade using the package order derived from the loadDirectives?


I should explain what I am doing. I am exporting packages using Fuel. What I do is to query Metacello to know which packages I need and the order (for the future load).
Then, during load, after having materialized all packages, I iterate over the packages (in the order I stored during the export), and I initialize the classes for each package.

In this example, I am NOT upgrading nothing. I am just trying to import seaside in a clean image using Fuel.

 
If the Metacello load works fine,

indeed, it works fine.
 
then I would guess that you're not running your initializers in the right order at the right time.

Indeed, I also thought that I have a problem with the initialization. I sent this mail because maybe this particular problem moves some bell ;)
 
Your little loop over packageNames looks close to what Monticello does when it fires the initializers,


You mean MCMethodDefinition >> postloadOver:  right?  
 
but it's not quite the same ... for example Monticello only fires initializers for class initialization methods that are changed/new during the load.

yes, you mean the if:    self source ~= aDefinition source   right? 
In my case, I am loading methods that DO NOT have source code. So..
 

Also, if I remember correctly Metacello fires the initializers for Seaside packages immediately after the package is loaded and does not wait until the end to fire initializers ...


mmmm #atomic  loader type?  where can I see more info about this?

 
I'd focus on duplicating the initialization pattern of Metacello (instrumenting the Monticello loader where the initializations are fired would give you that info).


where can I see this?

Thanks
 
Dale

----- Original Message -----
| From: "Mariano Martinez Peck" <[hidden email]>
| To: [hidden email]
| Cc: "Seaside - general discussion" <[hidden email]>
| Sent: Thursday, May 17, 2012 6:13:30 AM
| Subject: Re: [Metacello] collecting all packages of a configuration
|
| Hi Dale. Now I was a little bit more sucessful. But still, I have a
| problem during the initialization of classes. More precisily in:
|
| WAWalkbackErrorHandler class >> initialize
| WAAdmin applicationExceptionHandlingDefaults at: #exceptionHandler
| put: self
|
| I get a WAAttributeNotFound with #exceptionHandler ... what I do is I
| follow the order of packages as Metacello answered me, and then I do
| something like:
|
| (packageNames collect: [:each | PackageInfo named: each])
| do: [:aPackage |
| "We should not send #initialize to traits"
| ((aPackage classes select: [:each | each isBehavior])
| sort: [:a :b | a allSuperclasses size < b allSuperclasses size ])
| do: [:aClass |
| Transcript show: 'Initializing class named: ', aClass name; cr.
| aClass initializeOnLoad]
| ].
| ]
|
|
| I have debugged a little bit and it looks like
|
| WAAdmin applicationExceptionHandlingDefaults allAttributes -> an
| IdentityDictionary()
| WAAdmin applicationExceptionHandlingDefaults ancestors -> an
| IdentitySet()
|
| so something is not good. I saw your issue
| http://code.google.com/p/seaside/issues/detail?id=643
| but evaluating
|
| (Smalltalk at: #WASystemConfiguration) allSubclasses do: [ :each |
| each instance perform: #clearSearchContexts.
| each instance perform: #clearDescription ].
|
| did not help.
|
| Any ideas?
|
| thanks
|
|
| On Sun, May 13, 2012 at 6:04 PM, Dale Henrichs < [hidden email]
| > wrote:
|
|
| Mariano,
|
| I've said it before and I'll say it again ... I'd rather have noise
| than real problems go unreported ...
|
| Thanks for taking the time to characterize the problem in detail...
|
|
| Dale
|
| ----- Original Message -----
| | From: "Mariano Martinez Peck" < [hidden email] >
| | To: [hidden email]
|
|
| | Sent: Sunday, May 13, 2012 8:39:52 AM
| | Subject: Re: [Metacello] collecting all packages of a configuration
| |
| |
| |
| |
| | 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...
| |
| |
| | hehehehehe interesting....you discovered a bad side effect of my
| | experiment ;) sorry, I though I was checking in a "clean" image but
| | a bad side effect of my experiment changed the category for
| | extension methods. So...indeed, you are right and the method I have
| | is that I need.
| |
| | Thanks Dale and sorry for the noise.
| |
| |
| |
| |
| | 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:
| | | ' <a href="tel:3.0.6.3" value="+333063">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:
| | | | ' <a href="tel:3.0.6.3" value="+333063">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:
| | | | ' <a href="tel:3.0.6.3" value="+333063">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

Reply | Threaded
Open this post in threaded view
|

Re: collecting all packages of a configuration

Dale Henrichs
Mariano,

Metacello let's Monticello do the initialization, but decides which sets of packages to load at the same time ... #atomic projects load all of the packages at once, then initialize. While #linear projects load and initialize each package individually ... I believe that Seaside is #linear.

Things can get a bit complicated when #atomic and #linear projects are intermixed (via dependencies)

If you throw a `Transcript show` into the postLoadOver: method (at least that seems like the right one) and run Metacello, you'll have a record of when each package was initialiazed during the load.

You should be able to tell from loadDirective structure what's going to happen...oh wait there are preload and postload doits besides the standard initialization stuff ... but that too is in the loadDirective structure ... typically the ExplicitLoadDirective is used to get a Configuration loaded "right now" during fetch, so focus on the AtomicLoadDirective and LinearLoadDiretives...

If you want to duplicate what Metacello does, you should consider serializing the loadDirectives (in some fashion) so that you can guarantee that you track any behavior changes that I might introduce into Metacello ... I don't have any planned, but you never know when some changes will be called for ...

Dale


----- Original Message -----
| From: "Mariano Martinez Peck" <[hidden email]>
| To: [hidden email]
| Cc: "Seaside - general discussion" <[hidden email]>
| Sent: Thursday, May 17, 2012 11:13:41 AM
| Subject: Re: [Metacello] collecting all packages of a configuration
|
|
|
|
| On Thu, May 17, 2012 at 7:37 PM, Dale Henrichs < [hidden email]
| > wrote:
|
|
| Mariano,
|
| I guess you are trying to upgrade an existing Seaside application?
|
| Are you having trouble doing this upgrade using Metacello, or is this
| a problem trying to do the upgrade using the package order derived
| from the loadDirectives?
|
|
|
| I should explain what I am doing. I am exporting packages using Fuel.
| What I do is to query Metacello to know which packages I need and
| the order (for the future load).
| Then, during load, after having materialized all packages, I iterate
| over the packages (in the order I stored during the export), and I
| initialize the classes for each package.
|
| In this example, I am NOT upgrading nothing. I am just trying to
| import seaside in a clean image using Fuel.
|
|
|
| If the Metacello load works fine,
|
| indeed, it works fine.
|
|
| then I would guess that you're not running your initializers in the
| right order at the right time.
|
| Indeed, I also thought that I have a problem with the initialization.
| I sent this mail because maybe this particular problem moves some
| bell ;)
|
|
| Your little loop over packageNames looks close to what Monticello
| does when it fires the initializers,
|
|
| You mean MCMethodDefinition >> postloadOver: right?
|
|
| but it's not quite the same ... for example Monticello only fires
| initializers for class initialization methods that are changed/new
| during the load.
|
|
| yes, you mean the if: self source ~= aDefinition source right?
| In my case, I am loading methods that DO NOT have source code. So..
|
|
|
| Also, if I remember correctly Metacello fires the initializers for
| Seaside packages immediately after the package is loaded and does
| not wait until the end to fire initializers ...
|
|
|
| mmmm #atomic loader type? where can I see more info about this?
|
|
|
| I'd focus on duplicating the initialization pattern of Metacello
| (instrumenting the Monticello loader where the initializations are
| fired would give you that info).
|
|
|
|
| where can I see this?
|
| Thanks
|
|
|
| Dale
|
| ----- Original Message -----
| | From: "Mariano Martinez Peck" < [hidden email] >
| | To: [hidden email]
|
|
| | Cc: "Seaside - general discussion" <
| | [hidden email] >
| | Sent: Thursday, May 17, 2012 6:13:30 AM
| | Subject: Re: [Metacello] collecting all packages of a configuration
| |
| | Hi Dale. Now I was a little bit more sucessful. But still, I have a
| | problem during the initialization of classes. More precisily in:
| |
| | WAWalkbackErrorHandler class >> initialize
| | WAAdmin applicationExceptionHandlingDefaults at: #exceptionHandler
| | put: self
| |
| | I get a WAAttributeNotFound with #exceptionHandler ... what I do is
| | I
| | follow the order of packages as Metacello answered me, and then I
| | do
| | something like:
| |
| | (packageNames collect: [:each | PackageInfo named: each])
| | do: [:aPackage |
| | "We should not send #initialize to traits"
| | ((aPackage classes select: [:each | each isBehavior])
| | sort: [:a :b | a allSuperclasses size < b allSuperclasses size ])
| | do: [:aClass |
| | Transcript show: 'Initializing class named: ', aClass name; cr.
| | aClass initializeOnLoad]
| | ].
| | ]
| |
| |
| | I have debugged a little bit and it looks like
| |
| | WAAdmin applicationExceptionHandlingDefaults allAttributes -> an
| | IdentityDictionary()
| | WAAdmin applicationExceptionHandlingDefaults ancestors -> an
| | IdentitySet()
| |
| | so something is not good. I saw your issue
| | http://code.google.com/p/seaside/issues/detail?id=643
| | but evaluating
| |
| | (Smalltalk at: #WASystemConfiguration) allSubclasses do: [ :each |
| | each instance perform: #clearSearchContexts.
| | each instance perform: #clearDescription ].
| |
| | did not help.
| |
| | Any ideas?
| |
| | thanks
| |
| |
| | On Sun, May 13, 2012 at 6:04 PM, Dale Henrichs <
| | [hidden email]
| | > wrote:
| |
| |
| | Mariano,
| |
| | I've said it before and I'll say it again ... I'd rather have noise
| | than real problems go unreported ...
| |
| | Thanks for taking the time to characterize the problem in detail...
| |
| |
| | Dale
| |
| | ----- Original Message -----
| | | From: "Mariano Martinez Peck" < [hidden email] >
| | | To: [hidden email]
| |
| |
| | | Sent: Sunday, May 13, 2012 8:39:52 AM
| | | Subject: Re: [Metacello] collecting all packages of a
| | | configuration
| | |
| | |
| | |
| | |
| | | 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...
| | |
| | |
| | | hehehehehe interesting....you discovered a bad side effect of my
| | | experiment ;) sorry, I though I was checking in a "clean" image
| | | but
| | | a bad side effect of my experiment changed the category for
| | | extension methods. So...indeed, you are right and the method I
| | | have
| | | is that I need.
| | |
| | | Thanks Dale and sorry for the noise.
| | |
| | |
| | |
| | |
| | | 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
|
|
123