Magma on 3.10

Chris Muller asqueaker at gmail.com
Fri Feb 8 04:00:49 UTC 2008


> Hi,
> I just installed magma on a squeak-dev image (from Damien Cassou) based
> on build 7159 (latest 3.10 image)

My, that image sure is gettin' pretty these days..

> I load packages "magma client 1.0 (r40)", "magma server 1.0 (r40)" and

You don't need to load them all.  Server includes client.  Tester
includes server includes client.

> "magma tester 1.0 (r40)" from universes and executed first "getting
> started" code, with a very simple modification:
>
>  MagmaRepositoryController
>     create: (FileDirectory default directoryNamed: 'repository') fullName
>     root: Dictionary new

Great, thanks for the code.

> executing this code throws a doesNotUnderstood: #open on ByteString.
> The message call comes from MaFileStreamPool>>renewAccess:

Note for the future, stack traces are useful.

> Same code executed on a 3.9 image (from Damien Cassou, too) works fine.
> Is there a possible solution for this? i really need to run magma on
> 3.10 images.

Well, the problem is caused by the Rio package overriding Object>>#in:
with Stream>>#in:.  I recommend deleting Stream>>#in: from Rio
because:

  - It violates Smalltalk best-practices by overriding #in: with
something of different semantics.
  - The semantics are different because it answers the FILENAME
string, of all things, instead of the value of the block.  So it is
less useful too.
  - Further, closing the file with such basic method as #in: is too
presumtious.  We already have FileStream>>#detectFile:do: to serve the
intended purpose, but with even more power and flexibility.

The #yourself you added is an incorrect fix, since it will leave the
file closed instead of open.  It probably only worked for you out of
luck and the resilience of the surrounding code..

Regards,
 Chris


More information about the Magma mailing list