GoferRepositoryError: can''t find EOCD position

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

GoferRepositoryError: can''t find EOCD position

stes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


Hi,

As an experiment I'm trying to load Metacello/Seaside in Squeak 4.6.
(using the VM squeak 4.19.2) (image is 4.6 update #15117)

I'm following the instructions from
https://github.com/Metacello/metacello#squeak-older-than-squeak52

After

Loaded -> Metacello-FileTree-dkh.29 --- http://seaside.gemtalksystems.com/ss/metacello --- cache
Loaded -> Metacello-GitHub-dkh.29 --- http://smalltalkhub.com/mc/dkh/metacello/main --- cache
Evaluated -> 1.0-beta.32.3 [ConfigurationOfMetacello] >> metacelloPrimeRegistry
...finished 1.0-beta.32.3

I'm trying to evaluate the piece of code:

"Load the Preview version of Metacello from GitHub"
(Smalltalk at: #Metacello) new
  configuration: 'MetacelloPreview';
  version: #stable;
  repository: 'github://Metacello/metacello:configuration';
  load.

Unfortunately I get the following error:

Could not resolve: ConfigurationOfMetacelloPreview [ConfigurationOfMetacelloPreview] in ../squeak/package-cache github://Metacello/metacello:configuration ERROR: 'GoferRepositoryError: can''t find EOCD position'

Any idea please what this "can't find EOCD position' is about ?

Perhaps this is Squeak 4.6 specific, as in Squeak 6.0alpha it seems to work,
with the image

I get stuff like
Fetched -> Metacello-Core-EstebanLorenzano.833 --- github://Metacello/metacello:master/repository --- github://Metacello/metacello:master/repository

and I'm under the impression that the Squeak 6 step of

Installer ensureRecentMetacello.

is succesful for me in Squeak 6.0 alpha latest update: #20077

However from the docs at
https://github.com/Metacello/metacello#squeak-older-than-squeak52

I'm under the impression that it is supposed to work with Squeak < 5.2
(such as Squeak 4.6)

Thanks!
David Stes

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJfvoDrAAoJEAwpOKXMq1Ma3YYIAK2Pq83iMkVZGd1koVNEs8zm
2BXq11qpdameSQHCzchwcv6+9LNctIXPRFcwD0VY/K4aYE/+Or+5RsCM8KKpcbgp
C7gQ3b16qxhqaGKSBO9BkD86NDsF8tp3xLDdr1Zjziz2mHcNQSPMSTZei76cEKn0
/M/vZKwhFlOQ2g3nlKEPLkVOBwFkchh6Z0JWJrz3n9Lt6g3wnjpVX4s/3MwFZ0xH
6opsWqSmVT3lZBpc/o7tb0v4Frk5wcULNzBH4Tc3irwFcyWl0HEo6ITQM6YoGfJD
tlm4it5rlQAsDKCG3PklrM1ZqCuo4MztSEJrPWMQuNpHhhbGMgLqH7ZH/P9QOzU=
=ZGyt
-----END PGP SIGNATURE-----

Reply | Threaded
Open this post in threaded view
|

Re: GoferRepositoryError: can''t find EOCD position

David T. Lewis
On Wed, Nov 25, 2020 at 05:07:53PM +0100, [hidden email] wrote:

>
> Unfortunately I get the following error:
>
> Could not resolve: ConfigurationOfMetacelloPreview [ConfigurationOfMetacelloPreview] in ../squeak/package-cache github://Metacello/metacello:configuration ERROR: 'GoferRepositoryError: can''t find EOCD position'
>
> Any idea please what this "can't find EOCD position' is about ?
>
> Perhaps this is Squeak 4.6 specific, as in Squeak 6.0alpha it seems to work,
> with the image
>

It means that something went wrong trying to unpack a ZIP archive (such
as an MCZ file, which is in ZIP format). The error message is slightly
less horrible in images after 4.6.

Occasionally you may have an empty or corrupt file in your ./package-cache/
directory that leads to this error message. If so, you can just delete
the contents of your ./package-cache/ and things will return to normal.

If you happen to be running your 4.6 image in a different directory
than other images, then it may appear as if the error condition is
associated with that version of the image.

Dave

Reply | Threaded
Open this post in threaded view
|

Re: GoferRepositoryError: can''t find EOCD position

stes
In reply to this post by stes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


Thanks for your help.

I should mention that I'm doing this on a totally unsupported OS/Squeak version.

Obviously https://github.com/Metacello/metacello/blob/master/.travis.yml
mentions Linux and Squeak 5+ but I'm using Solaris 11 and Squeak 4.

I wasn't aware of the package-cache directory, I moved it and tried again.

But the same error ...

Despite the error I seem to be able to continue.

The encouraging thing is that the step

"Now load latest version of Metacello"
(Smalltalk at: #Metacello) new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  get.
(Smalltalk at: #Metacello) new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  load.

seems to work.   So I'll give it a try with Seaside and see how far I get.

Thanks,
David Stes

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJfv3K0AAoJEAwpOKXMq1MaH1MH/RcvZHDuWrJqiI0VHVL/kWwu
uoCxf5J0ioKwpv1KZPzFmKZEf3krwjPP77Jm3HoBIRcTzHWpzFNbymhSSKRUTt1N
ip6dqgNG7vxJvmtcFZ2xfkD1bG0Y2dxrw6CgD1F9AJNOTTh7YfRJAj3dJnA3CKdN
h1np1xwltZdTE/9Lkml/+IV80fjErJwt3ZDQjAzpn7TbXKKvK3UokGo0Y6EjlyDB
R3CiWYtiiKSgJG28Oii0/JCVrIQhQKbU3cFEFCOfo8wSZ32yc3yFiqhhMzN61AIf
172l8nTCokh28uJaVkfFabt4dvy0Pz/f45kgU32liIUOM1u/l0rzLHm1FmsBzmI=
=paQE
-----END PGP SIGNATURE-----

Reply | Threaded
Open this post in threaded view
|

Re: GoferRepositoryError: can''t find EOCD position

David T. Lewis
On Thu, Nov 26, 2020 at 10:19:16AM +0100, [hidden email] wrote:

>
> I should mention that I'm doing this on a totally unsupported OS/Squeak version.
>
> Obviously https://github.com/Metacello/metacello/blob/master/.travis.yml
> mentions Linux and Squeak 5+ but I'm using Solaris 11 and Squeak 4.
>
> I wasn't aware of the package-cache directory, I moved it and tried again.
>
> But the same error ...
>

It may help if you use the newer version of ZipArchive>>readFrom:
from newer Squeak images, and put that in your Squeak 4 image. This
will show (if possible) the name of the file or stream that had the
"cannot find EOCD position" problem.

Note, you can find this method by highlighting "EOCD position" in a
workspace, then search "method strings with it" which is hidden toward
the end of the menu options (so you may not have noticed it).

Dave
 

Reply | Threaded
Open this post in threaded view
|

Re: GoferRepositoryError: can''t find EOCD position

stes
In reply to this post by stes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


Thanks for the suggestion.

I will try a newer version of ZipArchive>>readFrom:

By the way, sorry to spam this list with Seaside questions,
but it's also a little bit of a Squeak question,
given the fact that I'm trying to load Seaside on Squeak 4.19.2

Note that I think that Metacello loaded (despite the error).

I can go ahead and do for example:

Metacello new
 configuration:'Seaside3';
 repository: 'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
 version: #'release3.1';
 load

I think the above succesfully loaded Seaside version 3.1.4.3
(after lots and lots loading messages).

The reason why I'm trying release3.1 is because with the default

Metacello new
 baseline:'Seaside3';
 repository: 'github://SeasideSt/Seaside:master/repository';
 load

I'm having some other errors:

Warning: This package depends on the following classes:
  GRDynamicVariable
You must resolve these dependencies before you will be able to load these definitions:
  WACurrentExceptionHandler
  WACurrentRequestContext
  WACurrentRequestContext class>>defaultValue
  WADynamicVariable

click on Proceed

MessageNotUnderstood: Character>>greaseInteger

I've done some research on "greaseInteger"  (funny name if you ask me)

http://forum.world.st/MNU-Character-gt-gt-greaseInteger-when-loading-Seaside-in-Squeak-Trunk-td4922096.html

So others have seen the greaseInteger error as well.

However when I load #'release 3.1' it seems to load nicely without errors ..

After loading I can find a method greaseInteger (which is something
of Seaside I think) under

Browser -> Character -> instance methods -> *grease-pharo-core

greaseInteger
        "Answer an unicode code point of the receiver."
        ^ self charCode

I'm a newbie in this but I think *grease-pharo-core looks like some sort
of category of messages that a package has been adding to the Character class.

So I suspect greaseInteger is some sort of message that loading Seaside,
added to the Character class.

What is the correct term in Smalltalk / Squeak to call the string
*grease-pharo-core ??  it's a set of messages .

For example under "accessing" you can find asciiValue,
charCode, codePoint, digitValue, encodedCharSet, leadingChar.

What is the correct term for "accessing" or "*grease-pharo-core"
? (set of messages that you can see in the Browser for that class)

Thanks,
David Stes


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJfv+ZhAAoJEAwpOKXMq1MaJ6EIAIXJlyqpWmi1nz/Q/snpYzQZ
l/G7SLqugzBR29xXj7GoMlHa674E7+BOPHtGONj+JxI8TtCbS7G27SZUV1gFlobC
AwliazW7qXChGrhfnMYTBkDRCXxxxRIhsaZUsNaI87rwpv6WkbR0EM1RBgOVNTva
7AT0mh3Yb8yTLF6aGquPzqWQ5bQCndGTBlgw+98HEJVf2dktOOfiRnbGVvj5QxrT
UFKB6KZlkr2iYGx/REk5WX0rQ8uFfdQCL2d0fWd5dCGzWhv6hM7KuDDmndx56+4h
RPbJfaDgq09q1SVX+a+5rvCu+SsRm1ao0qCiCBEkakVjVQ/kWzIF+rv+gmYrq00=
=KB/L
-----END PGP SIGNATURE-----

Reply | Threaded
Open this post in threaded view
|

Re: GoferRepositoryError: can''t find EOCD position

stes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


In the Squeak 4.5 #15117 image, under Browser->ZipArchive->readFrom:

        eocdPosition <= 0 ifTrue: [self error: 'can''t find EOCD position'].

Under "Versions" it is indicated:

        nk 12/06/2002 17:09 ZipArchive readFrom: {reading}

In the Squeak6.0alpha #20077 image, ZipArchive readFrom: has under "Versions":

        dtl 9/28/2017 20:31 ZipArchive readFrom: {reading}

So I just copy paste that implementation into the 4.6 image and accept it.

If there is a better way to do it, I would be interested to learn about it.
Perhaps there is a clever way to file in methods from a different image.

The 2017 version issues:

        eocdPosition <= 0 ifTrue: [self error: self class name, ' cannot find EOCD position in ', aStreamOrFileName name].

So after my change the "prettyDiffs" shows a difference for the error: line,
in the implementation of the readFrom: message.

Now -- using the new readFrom: implementation for ZipArchive --
to come back to the original problem when loading Metacello.

"Load the Preview version of Metacello from GitHub"
(Smalltalk at: #Metacello) new
  configuration: 'MetacelloPreview';
  version: #stable;
  repository: 'github://Metacello/metacello:configuration';
  load.

results in:

Could not resolve: ConfigurationOfMetacelloPreview [ConfigurationOfMetacelloPreview] in (..)/package-cache github://Metacello/metacello:configuration ERROR: 'GoferRepositoryError: ZipArchive cannot find EOCD position in /tmp/github-Metacellometacelloconfiguration.zip'

There is a file in /tmp that is probably corrupt:

bash-4.4$ ls -l /tmp/github-Metacellometacelloconfiguration.zip
- -rw-r--r--   1 stes     users        845 Nov 27 10:58 /tmp/github-Metacellometacelloconfiguration.zip

When trying to unzip that file from the UNIX command line:

bash-4.4$ unzip github-Metacellometacelloconfiguration.zip
Archive:  github-Metacellometacelloconfiguration.zip
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.


I'll have to give this issue a try under a different SqueakVM.

Perhaps it's just not working, I suspect issues as the gemsource method,
are crossplatform bugs.

Anyway - despite the above - I can continue, and I can load Metacello,
and even Seaside #release 3.1.  Loading Seaside #release 3.1 by Metacello works.

Remember that I had to fix the URL in the Installer gemsource method.

I changed the gemsource message to use the URL: gemsource.com
changed to gemtalksystems.com

I suspect such a change clearly must be indicating a cross-platform bug.

So perhaps it has not been tested for a long time with Squeak 4.
Or Squeak 4.6 is simply not supported by the Seaside folks.

They have an old Seaside 2.6, 2.7, 2.8 on their github site, but I don't
immediately see instructions for the 2.x, everything is about Seaside3.

Perhaps Seaside 2.x had better support for Squeak 4.

Regards,
David Stes

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJfwSY7AAoJEAwpOKXMq1MaoVwH/R8W0wNz0HE0hiJNW70/QzvG
KzliKzWWhneDbnoNpQwm4aNPbW8Vqv/DpEwGIIYGuhVceuspwzpXTqcyA0bJY55J
uVe5tAtVvM/FwDnZOQaPXlv4GhdjuLAVrGQ6PPNRL1auMR30gWTO/dq/ctoEycum
Iz62am1p9Gfe0kgsHUwzuO/r8ceg95EOfGEmdrkBxUJG6J6+2aZKqh8/zqUjYnVf
RvGHSSxmUk8MzYhFrPg4O9CADMDGG8569nY06IYFVwMv81uM7grlnrslGa5h8iDp
S7P8SQccUp37okG0Kc4tfrM9TwoQminBp0oocDIT9emCxCXVWxJ/K6SJ54V/49o=
=prFY
-----END PGP SIGNATURE-----

Reply | Threaded
Open this post in threaded view
|

Re: GoferRepositoryError: can''t find EOCD position

stes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


In the "Squeak-4.6-All-in-One.app" I can see the same problem on Microsoft Windows:

First it is necessary to change/update:

gemsource

        ^ self monticello http: 'http://seaside.gemtalksystems.com/ss'

This by itself is already extremely suspicious, as it shows that the Squeak4.6
image has an incorrect URL for gemstone (gemsource).

Next:

"Load the Preview version of Metacello from GitHub"
(Smalltalk at: #Metacello) new
  configuration: 'MetacelloPreview';
  version: #stable;
  repository: 'github://Metacello/metacello:configuration';
  load.

results also on Microsoft Windows in :

Could not resolve: ConfigurationOfMetacelloPreview [ConfigurationOfMetacelloPreview] in C:\Users\stes\squeak\Squeak-4.6-All-in-One\Squeak-4.6-All-in-One\Squeak-4.6-All-in-One.app\Contents\Resources\package-cache github://Metacello/metacello:configuration ERROR: 'GoferRepositoryError: can''t find EOCD position'

This is with the following VM:

Image
- -----
C:\Users\stes\squeak\Squeak-4.6-All-in-One\Squeak-4.6-All-in-One\Squeak-4.6-All-in-One.app\Contents\Resources\Squeak4.6-15102.image
Squeak4.6
latest update: #15117
Current Change Set: Unnamed1
Image format 6505 (32 bit)

Virtual Machine
- ---------------
C:\Users\stes\squeak\Squeak-4.6-All-in-One\Squeak-4.6-All-in-One\Squeak-4.6-All-in-One.app\Contents\LinuxAndWindows\Squeak.exe
Croquet Closure Cog[SqueakV3] VM [CoInterpreterPrimitives VMMaker.oscog-eem.1405]
Win32 built on Jul  6 2015 15:45:27 PDT Compiler: 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
platform sources revision VM: r3397 http://www.squeakvm.org/svn/squeak/branches/Cog Date: 2015-07-06 11:56:39 -0700 Plugins: r3347 http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins
CoInterpreter VMMaker.oscog-eem.1405 uuid: 7aff388a-73ba-4202-bb5a-72b0759ff46b Jul  6 2015
StackToRegisterMappingCogit VMMaker.oscog-eem.1401 uuid: 036f0933-639a-49dd-8a1d-a03bcdcb0a0a Jul  6 2015


So basically it seems the current Metacello *CAN* be used with Squeak4.6,
but there are some issues with it.

Perhaps an older Metacello should be used with Squeak 4.6 ...

However the instructions at

https://github.com/Metacello/metacello#squeak-older-than-squeak52

seem to imply that it should work on "older than Squeak 5.2",
unless the Metacello authors mean by that on Squeak 5.0 and 5.1
(excluding older than 5.0 for example).


David Stes


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJfwUYmAAoJEAwpOKXMq1MaJ68H/34grmdlZLGWdOkL4J35sOH7
xxbfpE5bU7X8uxYuzjh8AWgolrh+RzrrIHVy2IsiBvS0qIvxmB9sMGIzk7+3eyMU
ircVVA40LUWjTJHQY6iw2lDQUoxifxaUPG66zV+JjxcWA9G3hN+TP9dF0JygxJWA
xM5dbO/SRS8Ay43UBQQ4tTLasdekD55+I5+qcaX5WsV13gd7UGNYiB/WJiCt/9qn
RODu5eWYSHcEKzjyPBYbhd6phDtr/U1Vrv9TgJpda6kHumLSInIJEt++Gi4yPYz7
CFp9wfFYsgoXy3IMo+T0Pg3KEHbizdvdfQHsChi6yzo/v8Jfv4AxnrfOn7pzyug=
=Zfcd
-----END PGP SIGNATURE-----

Reply | Threaded
Open this post in threaded view
|

Re: GoferRepositoryError: can''t find EOCD position

David T. Lewis
In reply to this post by stes
On Fri, Nov 27, 2020 at 05:18:44PM +0100, [hidden email] wrote:

>
> In the Squeak 4.5 #15117 image, under Browser->ZipArchive->readFrom:
>
> eocdPosition <= 0 ifTrue: [self error: 'can''t find EOCD position'].
>
> Under "Versions" it is indicated:
>
> nk 12/06/2002 17:09 ZipArchive readFrom: {reading}
>
> In the Squeak6.0alpha #20077 image, ZipArchive readFrom: has under "Versions":
>
> dtl 9/28/2017 20:31 ZipArchive readFrom: {reading}
>
> So I just copy paste that implementation into the 4.6 image and accept it.
>
> If there is a better way to do it, I would be interested to learn about it.
> Perhaps there is a clever way to file in methods from a different image.
>

There are a few ways to move a method from one image to another.

One way is to file method out to disk, then file it back in to the
other image. If you highlight the method in a browser and right click
it, the menu will give you a fileOut option. Then, from the other image,
you can locate the file in a file list browser, highlight the file (look
for files ending in '.st'), and use the 'fileIn entire file" menu option
to load it.

If you are using Monticello, you can file in individual methods from
a package, which is often helpful if you are looking for a specific
version from some MC package. But for a simple approach that always
works for practically any image, it's hard to beat the old-fashioned
fileOut / fileIn approach.

HTH,
Dave