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