I’m having trouble  reading files with the most recent “stable” versions of 
Pharo.  

Today, I downloaded Pharo (32-bit), loaded my code into the image using git and 
Iceberg, and half of my tests failed because Pharo claimed that the files that 
are on my disk are in a directory that does not exist.   If I go back to an 
older image, everything works fine.

I’m seeing a similar thing on Travis-CI: the build under Pharo 6 works fine, 
and all the tests are green, but the build under Pharo 7 fails:

> Loaded -> SmalltalkCI-Coverage-Core-fn.5 --- 
> filetree:///home/travis/smalltalkCI-master/repository [:] --- cache
> SmalltalkCIPharo class>>deprecationWarning (TestCoverage is Undeclared) 
> SmalltalkCIPharo7 class>>stdout (ZnCrPortableWriteStream is Undeclared) 
> Loaded -> SmalltalkCI-Pharo-Core-fn.62 --- 
> filetree:///home/travis/smalltalkCI-master/repository [:] --- cache
> ...finished baselineMessageNotUnderstood: receiver of "on:" is nil
> UndefinedObject(Object)>>doesNotUnderstand: #on:
> SmalltalkCIPharo7 class>>stdout
> SmalltalkCIPharo7 class(SmalltalkCI class)>>travisFold:id:block:
> SmalltalkCIPharo7 class(SmalltalkCI class)>>stage:id:block:
> SmalltalkCIPharo7(SmalltalkCI)>>reportImageInfo
> SmalltalkCIPharo7(SmalltalkCI)>>basicLoad
> [ super basicLoad ] in [ [ super basicLoad ]
>       on: (Smalltalk at: #MCMergeOrLoadWarning)
>       do: [ :ex | ex resume: true ] ] in 
> SmalltalkCIPharo7(SmalltalkCIPharo)>>basicLoad in Block: [ super basicLoad ]

(The logs are here: https://travis-ci.org/apblack/GraceInPharo.  Look at build 
#83.  I’m not sure if they are public — I think that they are!)

What’s weird is that my co-worker, who I was introducing to Pharo, was able to 
download a Pharo distribution and install and run the same git commit with no 
problems.

So I decided that maybe my launcher was out of date.   I just downloaded and 
installed a new version of the launcher.  When I use it to create a new image, 
it is unable to launch it, because it can’t find the VM.  (The VM package was 
there, but with a “no entry” sign across it.)

I eventually patch up the launcher by hand, and load my code into a new image.  
Half of my tests fail once again.  There are two issues.

First, file streams are now ZnCharacterReadStreams instead of 
MultiByteFileStreams.  Ok, that’s a change that I had been expecting.  But  
ZnCharacterReadStreams don’t understand readStream, whereas 
MultiByteFileStreams did (and returned self).  I can code around that.

The second issue is one that I can’t code around.  I’m getting a "directory 
does not exist” error from DiskStore>>#basicEntry:path:nodesDo:, even though 
the sending method, FileSystemStore>>#directoryAt:ifAbsent:nodesDo: has just 
correctly verified that the directory does exist.  Looking at the offending 
method, I think that the problem is that 

        Primitives lookupEntryIn: encodedPathString index: index.

always returns #badDirectoryPath.    Since this method contains a call to a 
primitive, followed by ^ #badDirectoryPath if the primitive fails, I’m guessing 
that either I don’t have the primitive installed, or I have an old version of 
the primitive.

How do I fix this?   More interesting in some ways: if I download a new copy of 
the launcher, and then use the launcher to install a new copy of the 
development image, shouldn’t all of the necessary files be installed along with 
it.

From the fact that this isn’t working on Travis either, I’m guessing that there 
might be a problem with the distribution.

        Andrew



Reply via email to