[squeak-dev] GoferRepositoryError: can''t find EOCD position

stes@PANDORA.BE stes at telenet.be
Fri Nov 27 16:18:44 UTC 2020

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';

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.

David Stes

Version: GnuPG v2


More information about the Squeak-dev mailing list