can not install Chronos

Alan Lovejoy squeak-dev.sourcery at forum-mail.net
Tue Jul 11 22:21:43 UTC 2006


Phillipe,

Thanks for the info.  I'll work on a solution.

As for SocketStream>>peek and SocketStream>>skip:, I now notice that the
superclass of SocketStream in 3.7 is different than the superclass in 3.8.
In 3.7, the superclass is simply Stream, and so neither #peek nor #skip: are
overrides.  However, in 3.8, SocketStream is a sublcass of
PositionableStream, and so SocketStream>>peek and SocketStream>>skip: are
both overrides.

Passport just needs to be able to use a "SocketStream-like" class that
responds to #peek and #skip: with the canonical semantics of those messages
when sent to a Stream.

I generally use 3.7 for Chronos development work, because I have had
backward compatibility problems with the format of file-outs produced from
3.8.  My goal is for "the same" Chronos package to work across as wide a
range of Squeak versions as possible.  However, since 3.9 is not yet
officially released, I have yet to research whatever issues may be involved
in porting to 3.9.  It appears I now need to do that.

--Alan

-----Original Message-----
From: squeak-dev-bounces at lists.squeakfoundation.org
[mailto:squeak-dev-bounces at lists.squeakfoundation.org] On Behalf Of Philippe
Marschall
Sent: Tuesday, July 11, 2006 10:54 AM
To: The general-purpose Squeak developers list
Subject: Re: can not install Chronos

As it turns out, the problems only occur in 3.9 and not 3.8.

2006/7/11, Alan Lovejoy <squeak-dev.sourcery at forum-mail.net>:
> Phillipe,
>
> The overrides of <HTTPSocket class >> #httpProxyServer> and
> <HTTPSocket class >> #httpProxyPort> are .... b) bytecode-identical to
> the originals in any case.

Not in 3.9. There they break Monticello.

> As I use the term, neither <SocketStream >> #skip:> nor <SocketStream
> >> #peek> qualify as "overrides," since SocketStream does not inherit
> either message, and since they are additions, not modificiations of
> existing methods (as of Squeak 3.8.)

Again this is not the case for 3.9 where they replace existing methods.

Looking at the inherited #peek and #skip: in SocketStream 3.8 I have my
doubts that they actually work for SocketStreams. So they are basically
bugfixes, right?

This is of course a problem if you want to be compatible with 3.8 and
3.9 at the same time. Conditionally load code?

> Is that why you refer
> to them as "overrides"?

Yes, basically a class extension that replaces an existing method.

> I can test that
> hypothesis, if you will tell me where to find the conflicting versions
> of those methods.

If you have a 3.8 image, the FastSocketStream class from SqueakMap is what
is the SocketStream class in 3.9. Great effort has been put into this class
to make in perform well (or work at all).

peek
	"Return next byte, if inBuffer is empty
	we recieve some more data and try again.
	Do not consume the byte."

	self atEnd ifTrue: [^nil].
	self isInBufferEmpty ifTrue:
		[self receiveData.
		self atEnd ifTrue: [^nil]].
	^inBuffer at: lastRead

skip: anInteger
	"Skip a number of bytes.
	This is faster than #next: since it does not
	have to copy and return a new String or ByteArray.

	NOTE: This method doesn't honor timeouts if shouldSignal is false!"

	self receiveData: anInteger.
	lastRead _ (lastRead + anInteger) min: inNextToWrite - 1

Philippe


> --Alan
>
> -----Original Message-----
> From: squeak-dev-bounces at lists.squeakfoundation.org
> [mailto:squeak-dev-bounces at lists.squeakfoundation.org] On Behalf Of
> Philippe Marschall
> Sent: Tuesday, July 11, 2006 9:00 AM
> To: The general-purpose Squeak developers list
> Subject: Re: can not install Chronos
>
> Ok, this worked so far. I think I'll have to run some of your snippets
> to make sure.
>
> But I found some other problem. The sar contains four overrides. I
> don't think they are neccessary (some break stuff like Monticello
> others are quite likely to slow down the system) so I think it's best to
remove them.
>
> In detail they are:
>
> HTTPSocket class >> #httpProxyServer
> HTTPSocket class >> #httpProxyPort
> SocketStream >> #skip:
> SocketStream >> #peek
>
> Philippe
>
> 2006/7/11, Alan Lovejoy <squeak-dev.sourcery at forum-mail.net>:
> > Phillipe: "It loads!"
> >
> > C'est formidable!
> >
> > Phillipe: "So do I have to copy the time-zones folder to the image
> > directory or should that have been done automatically?"
> >
> > I'd like to make that happen automatically, but I haven't figured
> > out a way to do that using .sar files yet.  If anyone would like to
> > help, let
> me know.
> >
> > The "time-zones" folder is actually in the Chronos.sar archive file.
> > If you're on Windows, just change the extension from .sar to .zip,
> > and then your favorite zip archive app will be able to open the archive.
> > Extract the "time-zones" folder.
> >
> > You can also download the Chronos Time Zone Repository (the contents
> > of the "time-zones" folder) directly, by itself, from the Chronos
> > web site using the following link:
> http://www.chronos-st.org/downloads/time-zones.zip .
> > Extract the "time-zones" folder from the "time-zones.zip" archive file.
> >
> > By default, Chronos expects to find the "time-zones" folder in the
> > same directory as the one from which you run your Squeak image.  You
> > can change the default location programmatically.  Ask me, if you'd
> > like
> to know how.
> >
> > --Alan
> >
> >
> > -----Original Message-----
> > From: squeak-dev-bounces at lists.squeakfoundation.org
> > [mailto:squeak-dev-bounces at lists.squeakfoundation.org] On Behalf Of
> > Philippe Marschall
> > Sent: Monday, July 10, 2006 9:54 PM
> > To: The general-purpose Squeak developers list
> > Subject: Re: can not install Chronos
> >
> > It loads!
> > But
> > Timezone allCanonicalKeys
> > gives me an empty IdentitySet
> > In the transcript I see
> > Olson timezone keys was not accessible at the path
> > ./time-zones/foreign-keys So do I have to copy the time-zones folder
> > to the image directory or should that have been done automatically?
> >
> > Philippe
> >
> > 2006/7/10, Alan Lovejoy <squeak-dev.sourcery at forum-mail.net>:
> > > Phillippe,
> > >
> > > Apparently, the Squeak changeset logic isn't smart enough to
> > > realize that when a class is added, then renamed, it's neither
> > > necessary nor advisable to include a class renaming doIt in the
changeset fileout.
> > > Since I wasn't aware of this deficiency, I didn't correct for it.
> > >
> > > But now that I know, I have removed the class rename doIt "by hand,"
> > > and have uploaded new versions of the .sar and .zip files.  Try it
> again.
> > > Hopefully, there won't be any more such issues.
> > >
> > > --Alan
> > >
> > > -----Original Message-----
> > > From: squeak-dev-bounces at lists.squeakfoundation.org
> > > [mailto:squeak-dev-bounces at lists.squeakfoundation.org] On Behalf
> > > Of Philippe Marschall
> > > Sent: Monday, July 10, 2006 2:44 AM
> > > To: The general-purpose Squeak developers list
> > > Subject: Re: can not install Chronos
> > >
> > > 2006/7/10, Alan Lovejoy <squeak-dev.sourcery at forum-mail.net>:
> > > > Phillipe,
> > > >
> > > > There is no such method "parseCookies:" anywhere in either the
> > > > Passport or Chronos codebases.  Nor is there any protocol named
> > > > "KomHttpServer-Protocol."
> > > >
> > > > I'd check that you didn't rename Seaside's HttpRequest, instead
> > > > of Passport's. I'd also try a "virgin" Squeak image, with
> > > > nothing else installed.
> > >
> > > What I did is:
> > > - "virgin" 3.9 beta 7038
> > > - DynamicBindings 1.2
> > > - KomServices 1.1.2
> > > - KomHttpServer 7.0.3
> > > - Seaside2.6b1-lr.53
> > > Standard Seaside setup. No renaming, no nothing.
> > >
> > > The I filed in Chronos.sar
> > >
> > > What I observed is that PPHttpRequest ends up in the category
> > > 'KomHttpServer-Protocol' so it rather looks like Chronos.sar
> > > renames HttpRequest (of Kom which also has #parseCookies:) to
> > > PPHttpRequest
> > >
> > > Philippe
> > >
> > >
> > >
> > >
> >
> >
> >
> >
>
>
>
>





More information about the Squeak-dev mailing list