Fuel version

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

Fuel version

Johannes Rasche Kreuzberg
Hi folks,

I'm just migrating to Pharo 4.0

On materialization of objects serialized under Pharo 3
an error was raised: different versions numbers ( 194 required ).

Where does version 194 come from ?
Monticello from Pharo 3 offers 193

Johannes


Reply | Threaded
Open this post in threaded view
|

Re: Fuel version

NorbertHartl

Am 30.04.2015 um 14:08 schrieb Johannes Rasche Kreuzberg <[hidden email]>:

Hi folks,

I'm just migrating to Pharo 4.0

On materialization of objects serialized under Pharo 3
an error was raised: different versions numbers ( 194 required ).

Where does version 194 come from ?
Monticello from Pharo 3 offers 193

Johannes

You need to add the repository of Fuel, load the ConfigurationOf from there and you can upgrade to 1.9.4

The repository to add is


Norbert

Reply | Threaded
Open this post in threaded view
|

Re: Fuel version

Mariano Martinez Peck
Johannes, 

The simples approach is that you materialize your object in 3.0, then load the same version as fuel from pharo 4.0 and then serialize again in 3.0. After that, you can materialize in 4.0.
The other alternative is that in 4.0 you load older version of Fuel (the one in 3.0), then import, the expert, then load new fuel again. 

I have been doing this since Pharo 1.4 until 4.0 since my client's app also uses Fuel. And the process was always quite simple and only once per release.

Migration is something we miss in Fuel..and even if we have promised to keep format unchanged, sometimes the evolution of Pharo itself (not the internal Fuel format representation) makes the format to be broken from one version to the other. So until we have a better automagic migration tool, the above trick should work. 



Btw...here is the scrip I used to migrate from 1.8 to 1.9... this is just an EXAMPLE of how you can do it..but do not copy it becuase it uses old version of the code repositories, etc...



| oldVersion newVersion fileNames objectsByFileName materializerClass |

oldVersion := '1.8'.
 newVersion := '1.9'.
 fileNames := #(

'/Users/mariano/XXX/aaaaDB.fdb'
'/Users/mariano/XXX/bbbbDB.fdb'
'/Users/mariano/XXX/ccccDB.fdb'
'/Users/mariano/XXX/ddddDB.fdb'
'/Users/mariano/XXX/eeeeDB.fdb'
'/Users/mariano/XXX/ffffDB.fdb'
).
 objectsByFileName := Dictionary new.

 materializerClass := Smalltalk at: #FLMaterializer.
 
 fileNames do: [ :fileName | 
  objectsByFileName 
  at: fileName 
  put: (materializerClass materializeFromFileNamed: fileName).
FileDirectory default copyFileNamed: fileName toFileNamed: fileName, '-', oldVersion asString ].

Gofer it 
squeaksource3: 'Fuel';
package: 'ConfigurationOfFuel';
load. 
 (ConfigurationOfFuel project version: newVersion) load.
 
 objectsByFileName keysAndValuesDo: [ :fileName :objects |
FLSerializer 
  serialize: objects  
  toFileNamed: fileName.
FileDirectory default copyFileNamed: fileName toFileNamed: fileName, '-', newVersion asString
   ].



On Thu, Apr 30, 2015 at 9:19 AM, Norbert Hartl <[hidden email]> wrote:

Am 30.04.2015 um 14:08 schrieb Johannes Rasche Kreuzberg <[hidden email]>:

Hi folks,

I'm just migrating to Pharo 4.0

On materialization of objects serialized under Pharo 3
an error was raised: different versions numbers ( 194 required ).

Where does version 194 come from ?
Monticello from Pharo 3 offers 193

Johannes

You need to add the repository of Fuel, load the ConfigurationOf from there and you can upgrade to 1.9.4

The repository to add is


Norbert




--
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-dev] Fuel version

Max Leske

On 30 Apr 2015, at 14:40, Mariano Martinez Peck <[hidden email]> wrote:

Johannes, 

The simples approach is that you materialize your object in 3.0, then load the same version as fuel from pharo 4.0 and then serialize again in 3.0.

That should work without problems now. Just be aware that some things have changed dramatically (e.g. MethodContext no longer exists, instead there is now Context). For most of the objects however, migration should work fine when you use the Pharo 4 version (1.9.4) in Pharo 3.

After that, you can materialize in 4.0.
The other alternative is that in 4.0 you load older version of Fuel (the one in 3.0), then import, the expert, then load new fuel again. 

I have been doing this since Pharo 1.4 until 4.0 since my client's app also uses Fuel. And the process was always quite simple and only once per release.

Migration is something we miss in Fuel..and even if we have promised to keep format unchanged, sometimes the evolution of Pharo itself (not the internal Fuel format representation) makes the format to be broken from one version to the other. So until we have a better automagic migration tool, the above trick should work. 



Btw...here is the scrip I used to migrate from 1.8 to 1.9... this is just an EXAMPLE of how you can do it..but do not copy it becuase it uses old version of the code repositories, etc...



| oldVersion newVersion fileNames objectsByFileName materializerClass |

oldVersion := '1.8'.
 newVersion := '1.9'.
 fileNames := #(

'/Users/mariano/XXX/aaaaDB.fdb'
'/Users/mariano/XXX/bbbbDB.fdb'
'/Users/mariano/XXX/ccccDB.fdb'
'/Users/mariano/XXX/ddddDB.fdb'
'/Users/mariano/XXX/eeeeDB.fdb'
'/Users/mariano/XXX/ffffDB.fdb'
).
 objectsByFileName := Dictionary new.

 materializerClass := Smalltalk at: #FLMaterializer.
 
 fileNames do: [ :fileName | 
  objectsByFileName 
  at: fileName 
  put: (materializerClass materializeFromFileNamed: fileName).
FileDirectory default copyFileNamed: fileName toFileNamed: fileName, '-', oldVersion asString ].

Gofer it 
squeaksource3: 'Fuel';
package: 'ConfigurationOfFuel';
load. 

This is the old repository. You should use 

Gofer it
    package: 'ConfigurationOfFuel';
    load.
((Smalltalk at: #ConfigurationOfFuel) project version: ‘1.9.4') 
    load.




 (ConfigurationOfFuel project version: newVersion) load.
 
 objectsByFileName keysAndValuesDo: [ :fileName :objects |
FLSerializer 
  serialize: objects  
  toFileNamed: fileName.
FileDirectory default copyFileNamed: fileName toFileNamed: fileName, '-', newVersion asString
   ].



On Thu, Apr 30, 2015 at 9:19 AM, Norbert Hartl <[hidden email]> wrote:

Am 30.04.2015 um 14:08 schrieb Johannes Rasche Kreuzberg <[hidden email]>:

Hi folks,

I'm just migrating to Pharo 4.0

On materialization of objects serialized under Pharo 3
an error was raised: different versions numbers ( 194 required ).

Where does version 194 come from ?
Monticello from Pharo 3 offers 193

Johannes

You need to add the repository of Fuel, load the ConfigurationOf from there and you can upgrade to 1.9.4

The repository to add is


Norbert




--

Reply | Threaded
Open this post in threaded view
|

Re: Fuel version

Johannes Rasche Kreuzberg
In reply to this post by Johannes Rasche Kreuzberg
Max,

well the ConfigurationOfFuel in Pharo 3 does not know Fuel 1.9.4

and in Pharo 4 there is no ConfigurationOfFuel
neither in the image (ConfigBrowser)
nor on http://smalltalkhub.mc/Pharo/MetaRepoForPharo40/main

what's up? do I oversee somthing relevant ?

Johannes