[Glass] Problem with UTF8 encoding and Monticello after GLASS update

Dale Henrichs dale.henrichs at gemtalksystems.com
Tue Aug 26 09:29:21 PDT 2014

On Tue, Aug 26, 2014 at 7:55 AM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:

> On Tue, Aug 26, 2014 at 7:06 AM, Dale Henrichs <
> dale.henrichs at gemtalksystems.com> wrote:
>> Mariano,
>> After a couple of hours of sleep, I have realized a couple of things that
>> I should have mentioned earlier:
>>   - GLASS 1.0-beta.9.3 is a prerequisite to loading GLASS1.
>>   - 1.0-beta.9.3 loads the MetacelloPreview "in a single step" and
>> replaces the explicit (and ugly)
>>      multi-step MetacelloPreview load sequence
>>   - once the #stable version of MetacelloPreview is loaded projects may
>> directly depend upon GLASS1
>>     and it should become unnecessary to explicitly load GLASS1 as a
>> prerequisite for loading another
>>     project
>> The READMEs for both the Metacello[1] and GLASS1[2] projects are
>> currently out-of-date and need to be updated.
> OK, thanks Dale for taking care. I answer below.
>> The following script should be equivalent to upgrading to
>> GLASS1.0-beta9.3:
>> "Load the Preview version of Metacello from GitHub"
>>   | previewLoaded |
>>   previewLoaded := false.
>>   Smalltalk
>>     at: #'BaselineOfMetacello'
>>     ifPresent: [ :ignored |
>>       Smalltalk
>>         at: #'MetacelloProjectRegistration'
>>         ifPresent: [ :cls |
>>           (cls registrationForClassNamed: 'BaselineOfMetacello' ifAbsent:
>> [  ])
>>             ifNotNil: [ :registration | previewLoaded := registration
>> loadedInImage ] ] ].
>>   previewLoaded
>>     ifTrue: [
>>       (Smalltalk at: #'Metacello') new
>>         configuration: 'MetacelloPreview';
>>         version: #'stable';
>>         repository: 'github://dalehenrich/metacello-work:configuration';
>>         get ]
>>     ifFalse: [
>>       "Bootstrap Metacello Preview, using mcz files (#'previewBootstrap'
>> symbolic version"
>>       Gofer new
>>         gemsource: 'metacello';
>>         package: 'ConfigurationOfMetacello';
>>         load.
>>       GsDeployer
>>         deploy: [
>>           ((Smalltalk at: #'ConfigurationOfMetacello') project
>>             version: #'previewBootstrap') load ] ].
>>   GsDeployer
>>     deploy: [
>>       "load the Metacello Preview"
>>       (Smalltalk at: #'Metacello') new
>>         configuration: 'MetacelloPreview';
>>         version: #'stable';
>>         repository: 'github://dalehenrich/metacello-work:configuration';
>>         load ]
>> I've tested this script on a virgin extent and it loads cleanly
>> ... then a GLASS1 load using the following script:
>> GsDeployer deploy: [Metacello new
>>    baseline: 'GLASS1';
>>   repository: 'github://glassdb/glass:master/repository';
>>   onConflict: [ :ex | ex allow ];
>>   onWarning: [ :ex |
>>         Transcript
>>            cr;
>>           show: ex description.
>>         ex resume ];
>>   load: 'default'.]
>> also loads cleanly so with luck we should be out of the woods.
> OK, executing that I do get things updated and I can load my code. So it
> seems this fixes my problem. Now...from what I understand above, I am
> loading GLASS 1.0-beta.9.3  as a side effect of loading latest Metacello.

This script is only there to repair the missing step when you loaded GLASS1
without loading GLASS 1.0-beta.9.3 first. Once you've loaded GLASS1 (which
overlaps GLASS) you do not need nor want to load GLASS.

> For my stones, I don't want to rely on that. I want to load an explicit
> version of glass so that I know and control what do I load.
> So..for the moment, it's fine, the above script is OK.

If you are building a new stone from scratch, you should upgrade to
GLASS1.0-beta.9.3 before loading anything else ... that way you have the
proper GLASS/Metacello foundation for loading any other packages.

> But then, what I would appreciate the most, is an updated
> https://github.com/glassdb/glass#installation

Yes this is one of my mistakes ... this script needs to be updated.

> From what I understood from your words, using the script from that page
> but simply changing to GLASS 1.0-beta.9.3  would not have the same case as
> the lines provided above.

If you look at what GLASS 1.0-beta.9.3 (which is what I did after a couple
or hours of sleep:) you will see that the above script is exactly what is
done by the Metacello load script. With that said, the proper way thing to
do is to load GLASS 1.0-beta.9.3

> In fact, maybe tomorrow I re-run the lines provided above, and I may get
> GLASS 1.0-beta.9.4. And I don't want that. I want a script to load GLASS
> 1.0-beta.9.XXXX plus + Metacello + GLASS1.  :)

Agreed ... keep in mind that I don't intend to create a new version of
GLASS unless I find that there is bug fix needed all new bugfixes  are
being put into  the GLASS1 project.

As a technicality, my _plan_ is that you should only have to load GLASS
1.0-beta.9.3 and thenGLASS1 as I think that GLASS1 should have a dependency
on Metacello.

As a technicality for the previous technicality GLASS1 will be renamed
GsDevKit "real soon now".

As a final technicality. I expect that for production applications like
yours you should have a local clone of each github repository so that you
can control exactly what gets loaded into your system you may use the
public configurations to load projects and by using the `lock` command you
will guarantee that the local clones will always be used ...

You will update your application to use later versions of the cloned
repositories by merging updates in a separate sandboxed systems (with their
own clones) so that you can independently validate any and all changes that
are integrated into your system.

>> I'm still not quite sure what state your image is in,so if you still have
>> trouble loading GLASS1 then I'll probably need to need the detailed package
>> info to try to reproduce the problems myself ...
>> I'm sorry that I was so dense earlier ... I really shouldn't have tried
>> to answer any emails given how jet-lagged I was ....
> Np and thanks for answering. I was also very frustrated because I was not
> able to update my code and everything I tried ended up in another problem.

I completely understand.

I'm slowly returning back to normal and now that ESUG is behind me I plan
on making passes through the eco systems fixing things up as I go.

It will definitely help if you (and others) let me know where the most pain
is being felt.

I have a rich target environment of things to address, but I would prefer
to address immediate pain as a top priority.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20140826/9f3eca42/attachment-0001.html>

More information about the Glass mailing list