Closed dalehenrich closed 10 years ago
I think that GsUpgrader should address this problem ...
I setup you test configuration and promptly failed simply running your setup script during the Seaside load in a fresh 3.1.0.6 extent:
topaz 1> list
"Load the MetacelloPreview bleeding edge master"
(Smalltalk at: #Metacello) new
baseline: 'Metacello';
repository: 'github://dalehenrich/metacello-work:master/repository';
load.
"Load Seaside 3.0.13"
Metacello new
configuration: 'Seaside3';
repository: 'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
version: '3.0.13';
load.
* ^11 *******
"Load My project, prevent upgrades of referenced projects"
Metacello new
configuration: 'Test';
repository: 'server:/opt/git/gsUpgrader/monticello';
get.
Metacello new
configuration: 'Test';
version: '1.0-baseline';
onConflict:[:ex | Transcript show: 'CONFLICT: ',ex description, ' ', ex existingProjectRegistration baseName,' (',ex existingProjectRegistration version,')->', ex newProjectRegistration baseName,' (',ex newProjectRegistration version,')'. ex disallow.];
onUpgrade: [:ex | Transcript show: 'UPGRADE: ',ex description, ' ', ex existingProjectRegistration baseName,' (',ex existingProjectRegistration version,')->', ex newProjectRegistration baseName,' (',ex newProjectRegistration version,')'. ex disallow. ];
load
the error is:
ERROR 2010 , a MessageNotUnderstood occurred (error 2010), a MetacelloProjectRegistration does not understand #'projectSpec' (MessageNotUnderstood)
topaz 1> where
==> 1 MessageNotUnderstood >> defaultAction (envId 0) @2 line 3
2 AbstractException >> _signalWith: (envId 0) @5 line 25
3 AbstractException >> signal (envId 0) @2 line 47
4 Object >> doesNotUnderstand: (envId 0) @9 line 10
5 Object >> _doesNotUnderstand:args:envId:reason: (envId 0) @7 line 12
6 MetacelloScriptEngine >> lookupProjectSpecFor: (envId 0) @4 line 21
and is due to the fact that auto migration is disabled in topaz runs ...
I'm going to change your script to use GsDeployer (which sets autoMigrate):
GsDepoyer deploy: [
"Load the MetacelloPreview bleeding edge master"
(Smalltalk at: #Metacello) new
baseline: 'Metacello';
repository: 'github://dalehenrich/metacello-work:master/repository';
load.
"Load Seaside 3.0.13"
Metacello new
configuration: 'Seaside3';
repository: 'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
version: '3.0.13';
load.
"Load My project, prevent upgrades of referenced projects"
Metacello new
configuration: 'Test';
version: '1.0-baseline';
onConflict:[:ex | Transcript show: 'CONFLICT: ',ex description, ' ', ex existingProjectRegistration baseName,' (',ex existingProjectRegistration version,')->', ex newProjectRegistration baseName,' (',ex newProjectRegistration version,')'. ex disallow.];
onUpgrade: [:ex | Transcript show: 'UPGRADE: ',ex description, ' ', ex existingProjectRegistration baseName,' (',ex existingProjectRegistration version,')->', ex newProjectRegistration baseName,' (',ex newProjectRegistration version,')'. ex disallow. ];
load.
]
and see what happens ... on reflection the dependence upon ConfigurationOfGLASS is the weak link in the ConfigurationOfTest, I think that moving forward we should only have dependencies on GLASS1 ... (and soonly GsDevKit) ... but I am still interested in seeing how things go ... I will probably want to replace things with GsUpdater, but first things first ...
Okay the following script loaded into virgin 3.1.0.6 does go haywire:
GsDeployer
deploy: [
"Load the MetacelloPreview bleeding edge master"
(Smalltalk at: #'Metacello') new
baseline: 'Metacello';
repository: 'github://dalehenrich/metacello-work:master/repository';
load. "Load Seaside 3.0.13"
Metacello new
configuration: 'Seaside3';
repository:
'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
version: '3.0.13';
load. "Load My project, prevent upgrades of referenced projects"
Metacello new
configuration: 'Test';
version: '1.0.0';
repository: 'server:///opt/git/gsUpgrader/monticello';
get.
Metacello new
configuration: 'Test';
version: '1.0.0';
onConflict: [ :ex |
Transcript
show:
'CONFLICT: ' , ex description , ' ' , ex existingProjectRegistration baseName
, ' (' , ex existingProjectRegistration version , ')->'
, ex newProjectRegistration baseName , ' ('
, ex newProjectRegistration version , ')'.
ex disallow ];
onUpgrade: [ :ex |
Transcript
show:
'UPGRADE: ' , ex description , ' ' , ex existingProjectRegistration baseName
, ' (' , ex existingProjectRegistration version , ')->'
, ex newProjectRegistration baseName , ' ('
, ex newProjectRegistration version , ')'.
ex disallow ];
load ]
In my case, I see configurations being loaded that are from that very ancient version of glass:
--transcript--'Fetched -> ConfigurationOfGsSeaside28-DaleHenrichs.22 --- http://seaside.gemstone.com/ss/seaside --- http://seaside.gemstone.com/ss/seaside'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/seaside/ConfigurationOfGsSeaside28-DaleHenrichs.22.mcz'
--transcript--'Loaded -> ConfigurationOfGsSeaside28-DaleHenrichs.22 --- http://seaside.gemstone.com/ss/seaside --- http://seaside.gemstone.com/ss/seaside'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/ScaffoldingGS/?C=M;O=D'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/ScaffoldingGS/ConfigurationOfGsScaffolding-DaleHenrichs.10.mcz'
--transcript--'Fetched -> ConfigurationOfGsScaffolding-DaleHenrichs.10 --- http://seaside.gemstone.com/ss/ScaffoldingGS --- http://seaside.gemstone.com/ss/ScaffoldingGS'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/ScaffoldingGS/ConfigurationOfGsScaffolding-DaleHenrichs.10.mcz'
--transcript--'Loaded -> ConfigurationOfGsScaffolding-DaleHenrichs.10 --- http://seaside.gemstone.com/ss/ScaffoldingGS --- http://seaside.gemstone.com/ss/ScaffoldingGS'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/hyper/?C=M;O=D'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/hyper/ConfigurationOfGsHyper-DaleHenrichs.6.mcz'
--transcript--'Fetched -> ConfigurationOfGsHyper-DaleHenrichs.6 --- http://seaside.gemstone.com/ss/hyper --- http://seaside.gemstone.com/ss/hyper'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/hyper/ConfigurationOfGsHyper-DaleHenrichs.6.mcz'
--transcript--'Loaded -> ConfigurationOfGsHyper-DaleHenrichs.6 --- http://seaside.gemstone.com/ss/hyper --- http://seaside.gemstone.com/ss/hyper'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/magritte/?C=M;O=D'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/magritte/ConfigurationOfGsMagritte-dkh.11.mcz'
--transcript--'Fetched -> ConfigurationOfGsMagritte-dkh.11 --- http://seaside.gemstone.com/ss/magritte --- http://seaside.gemstone.com/ss/magritte'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/magritte/ConfigurationOfGsMagritte-dkh.11.mcz'
--transcript--'Loaded -> ConfigurationOfGsMagritte-dkh.11 --- http://seaside.gemstone.com/ss/magritte --- http://seaside.gemstone.com/ss/magritte'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/pier/?C=M;O=D'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/pier/ConfigurationOfGsPier-dkh.14.mcz'
--transcript--'Fetched -> ConfigurationOfGsPier-dkh.14 --- http://seaside.gemstone.com/ss/pier --- http://seaside.gemstone.com/ss/pier'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/pier/ConfigurationOfGsPier-dkh.14.mcz'
--transcript--'Loaded -> ConfigurationOfGsPier-dkh.14 --- http://seaside.gemstone.com/ss/pier --- http://seaside.gemstone.com/ss/pier'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/SeasideTesting/?C=M;O=D'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/SeasideTesting/ConfigurationOfGsSeasideTesting28-DaleHenrichs.13.mcz'
--transcript--'Fetched -> ConfigurationOfGsSeasideTesting28-DaleHenrichs.13 --- http://seaside.gemstone.com/ss/SeasideTesting --- http://seaside.gemstone.com/ss/SeasideTesting'
--transcript--'redirecting to http://seaside.gemtalksystems.com/ss/SeasideTesting/ConfigurationOfGsSeasideTesting28-DaleHenrichs.13.mcz'
--transcript--'Loaded -> ConfigurationOfGsSeasideTesting28-DaleHenrichs.13 --- http://seaside.gemstone.com/ss/SeasideTesting --- http://seaside.gemstone
GsMagritte, GsPier, etc. pretty crazy!!!!
You are right that things are coming in because it thinks that the old version of GLASS is loaded because currentVersion is broken ..
Now I'll try things with GsUpgrader
This script (which is not quite what you had):
login
run
GsDeployer deploy: [
Gofer new
package: 'GsUpgrader-Core';
url: 'http://ss3.gemtalksystems.com/ss/gsUpgrader';
load.
(Smalltalk at: #GsUpgrader) upgradeGrease.
"Load Seaside 3.0.13"
Metacello new
configuration: 'Seaside3';
repository:
'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
version: '3.0.13';
load.
Gofer new
package: 'GsUpgrader-Core';
url: 'http://ss3.gemtalksystems.com/ss/gsUpgrader';
load.
(Smalltalk at: #GsUpgrader) upgradeGLASS1.
"Load Seaside 3.0.13 AGAIN"
Metacello new
configuration: 'Seaside3';
repository:
'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
version: '3.0.13';
onConflict:[:ex | Transcript show: 'CONFLICT: ',ex description, ' ', ex existingProjectRegistration baseName,' (',ex existingProjectRegistration version,')->', ex newProjectRegistration baseName,' (',ex newProjectRegistration version,')'. ex disallow.];
onUpgrade: [:ex | Transcript show: 'UPGRADE: ',ex description, ' ', ex existingProjectRegistration baseName,' (',ex existingProjectRegistration version,')->', ex newProjectRegistration baseName,' (',ex newProjectRegistration version,')'. ex disallow. ];
load: 'Core'.
]
ends up producing this output during the second load of Seaside3.0.13:
--transcript--'Loading 3.0.13 of ConfigurationOfSeaside3...'
--transcript--'CONFLICT: a MetacelloAllowConflictingProjectUpgrade occurred (notification 2741) Grease (baseline)->Grease (1.0.9)'
--transcript--'CONFLICT: a MetacelloAllowConflictingProjectUpgrade occurred (notification 2741) Grease (baseline)->Grease (1.0.9)'
--transcript--'CONFLICT: a MetacelloAllowConflictingProjectUpgrade occurred (notification 2741) Grease (baseline)->Grease (1.0.9)'
--transcript--'CONFLICT: a MetacelloAllowConflictingProjectUpgrade occurred (notification 2741) Grease (baseline)->Grease (1.0.9)'
--transcript--'CONFLICT: a MetacelloAllowConflictingProjectUpgrade occurred (notification 2741) Grease (baseline)->Grease (1.0.9)'
--transcript--'Project: Grease Core 1.0.9'
--transcript--'Project: System-Digital-Signatures stable'
--transcript--'Project: SMTPMail stable'
--transcript--'Project: UTF8 stable'
--transcript--'CONFLICT: a MetacelloAllowConflictingProjectUpgrade occurred (notification 2741) Grease (baseline)->Grease (1.0.9)'
--transcript--'Project: Grease Core Tests 1.0.9'
--transcript--'Project: System-Digital-Signatures stable'
--transcript--'Project: SMTPMail stable'
--transcript--'Project: UTF8 stable'
--transcript--'Project: Swazoo2 2.2.0.4'
--transcript--'CONFLICT: a MetacelloAllowConflictingProjectUpgrade occurred (notification 2741) Grease (baseline)->Grease (1.0.5.1)'
--transcript--'UPGRADE: a MetacelloAllowProjectUpgrade occurred (notification 2741) Grease (baseline)->Grease (1.0.5.1)'
--transcript--'Project: FastCGI 0.235'
--transcript--'Project: OB stable'
--transcript--' [0.242.1]'
--transcript--'Project: Announcements 0.240.1'
--transcript--'...finished 3.0.13'
--transcript--'No instance migrations performed.'
Of course there is no GLASS being loaded so no surprises ... I suppose I should actually upgrade to GLASS1 and then reload and try this experiment with Seaside3.1.3? since it already depends upon GLASS1 ...
I've run out of time tonight so I will try something along those lines tomorrow to see what's up ...
I did reproduce your problem tho:)
With this load script:
GsDeployer deploy: [
Gofer new
package: 'GsUpgrader-Core';
url: 'http://ss3.gemtalksystems.com/ss/gsUpgrader';
load.
(Smalltalk at: #GsUpgrader) upgradeGrease.
"Load Seaside 3.0.13"
Metacello new
configuration: 'Seaside3';
repository:
'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
version: '3.1.3';
load.
"Load Seaside 3.0.13 AGAIN"
Metacello new
configuration: 'Seaside3';
repository:
'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
version: '3.1.3';
onConflict:[:ex | Transcript show: 'CONFLICT: ',ex description, ' ', ex existingProjectRegistration baseName,' (',ex existingProjectRegistration version,')->', ex newProjectRegistration baseName,' (',ex newProjectRegistration version,')'. ex disallow.];
onUpgrade: [:ex | Transcript show: 'UPGRADE: ',ex description, ' ', ex existingProjectRegistration baseName,' (',ex existingProjectRegistration version,')->', ex newProjectRegistration baseName,' (',ex newProjectRegistration version,')'. ex disallow. ];
load: 'Core'.
]
The second load of Seaside produces this:
--transcript--'Loading 3.1.3 of ConfigurationOfSeaside3...'
--transcript--'Fetched -> Seaside-REST-Core-dkh.39 --- http://www.smalltalkhub.com/mc/Seaside/Seaside30Addons/main --- http://www.smalltalkhub.com/mc/Seaside/Seaside30Addons/main'
--transcript--'Fetched -> Seaside-Tests-REST-Core-JohanBrichau.23 --- http://www.smalltalkhub.com/mc/Seaside/Seaside30Addons/main --- http://www.smalltalkhub.com/mc/Seaside/Seaside30Addons/main'
--transcript--'Project: Gettext-Project'
--transcript--' [1.3]'
--transcript--'Project: Seaside3 baseline'
--transcript--'Project: GLASS1 baseline'
--transcript--'Project: Gofer stable'
--transcript--' [1.0.5.1]'
--transcript--'Project: Grease baseline'
--transcript--'Project: System-Digital-Signatures stable'
--transcript--'Project: SMTPMail stable'
--transcript--'Project: UTF8 stable'
--transcript--'Project: Metacello baseline'
--transcript--'Project: FileTree baseline'
--transcript--'Project: Gofer stable'
--transcript--'Project: GsCore 0.247'
--transcript--'Fetched -> GsSqueakCommon-Core-dkh.11 --- github://glassdb/glass:master/repository [ccbdf4c:master] --- github://glassdb/glass:master/repository'
--transcript--'Project: Gettext-Project'
--transcript--' [1.3]'
--transcript--'Project: Grease baseline'
--transcript--'Project: System-Digital-Signatures stable'
--transcript--'Project: SMTPMail stable'
--transcript--'Project: UTF8 stable'
--transcript--'Project: Grease Core Tests baseline'
--transcript--'Project: System-Digital-Signatures stable'
--transcript--'Project: SMTPMail stable'
--transcript--'Project: UTF8 stable'
--transcript--'Fetched -> Seaside-REST-Core-pmm.57 --- github://GsDevKit/Seaside31:v3.1.3-gs/repository [29bf7bd:v3.1.3-gs] --- github://GsDevKit/Seaside31:v3.1.3-gs/repository'
--transcript--'Fetched -> Seaside-Tests-REST-Core-jok.33 --- github://GsDevKit/Seaside31:v3.1.3-gs/repository [29bf7bd:v3.1.3-gs] --- github://GsDevKit/Seaside31:v3.1.3-gs/repository'
--transcript--'Evaluated -> baseline [BaselineOfMetacello] >> reprimeRegistryIssue197'
--transcript--'Loaded -> GsSqueakCommon-Core-dkh.11 --- github://glassdb/glass:master/repository [ccbdf4c:master] --- cache'
--transcript--'...finished 3.1.3'
--transcript--'Migrated 0 instances for 3 classes.'
aGsDeployer
I understand why GsSqueakCommon-Core-dkh.11 (it's actually reloading the same package - a benign bug that is the side effect of how Metacello works and is due to the existence of GsSqueakCommon-Core.3x package in image while baseline is loading GsSqueakCommon-Core).
BUT I don't understand why the REST packages come in the second time around ... I think that is a Metacello bug ... the good news is that I think modulo the rest thing the behavior is what you are looking for?
Loading GLASS after loading GLASS1 was the root cause of the pile of pacakges getting loaded/re-loaded ... opened Issue #276 for the REST package mystery