Hi!
I've downloaded version 3.8 of ConfigurationOfCog on Pharo 1.4, and when sending #topDir: to a CogWindowsConfig instance, I get a primitive failed error:
PrimitiveFailed: primitive #primCreateDirectory: in DosFileDirectory failed 25 January 2012 7:24:30 pm
VM: Win32 - IX86 - 5.1 - CoInterpreter VMMaker.oscog-eem.140 uuid: 2487009c-2c13-4609-b89e-77f0e195f433 Dec 12 2011, StackToRegisterMappingCogit VMMaker.oscog-eem.139 uuid: c2849383-9768-4948-b9b2-a5c22d482b07 Dec 12 2011, r2522 http://www.squeakvm.org/svn/squeak/branches/Cog Image: Pharo1.4a [Latest update: #14296]
DosFileDirectory(Object)>>primitiveFailed: Receiver: DosFileDirectory on '' Arguments and temporary variables: selector: #primCreateDirectory: Receiver's instance variables: pathName: FilePath('')
DosFileDirectory(Object)>>primitiveFailed Receiver: DosFileDirectory on '' Arguments and temporary variables:
Receiver's instance variables: pathName: FilePath('')
DosFileDirectory(FileDirectory)>>primCreateDirectory: Receiver: DosFileDirectory on '' Arguments and temporary variables: fullPath: '\MinGW' Receiver's instance variables: pathName: FilePath('')
DosFileDirectory(FileDirectory)>>createDirectory: Receiver: DosFileDirectory on '' Arguments and temporary variables: localFileName: '\MinGW' Receiver's instance variables: pathName: FilePath('')
DosFileDirectory(FileDirectory)>>assureExistenceOfPath: Receiver: DosFileDirectory on '' Arguments and temporary variables: lPath: '\MinGW' localPath: '\MinGW' Receiver's instance variables: pathName: FilePath('')
DosFileDirectory(FileDirectory)>>assureExistenceOfPath: Receiver: DosFileDirectory on '\MinGW' Arguments and temporary variables: lPath: 'msys' localPath: 'msys' Receiver's instance variables: pathName: FilePath('\MinGW')
DosFileDirectory(FileDirectory)>>assureExistenceOfPath: Receiver: DosFileDirectory on '\MinGW\msys' Arguments and temporary variables: lPath: '1.0' localPath: '1.0' Receiver's instance variables: pathName: FilePath('\MinGW\msys')
DosFileDirectory(FileDirectory)>>assureExistenceOfPath: Receiver: DosFileDirectory on '\MinGW\msys\1.0' Arguments and temporary variables: lPath: 'home' localPath: 'home' Receiver's instance variables: pathName: FilePath('\MinGW\msys\1.0')
DosFileDirectory(FileDirectory)>>assureExistenceOfPath: Receiver: DosFileDirectory on '\MinGW\msys\1.0\home' Arguments and temporary variables: lPath: 'Guille' localPath: 'Guille' Receiver's instance variables: pathName: FilePath('\MinGW\msys\1.0\home')
DosFileDirectory(FileDirectory)>>assureExistenceOfPath: Receiver: DosFileDirectory on '\MinGW\msys\1.0\home\Guille' Arguments and temporary variables: lPath: 'cog' localPath: 'cog' Receiver's instance variables: pathName: FilePath('\MinGW\msys\1.0\home\Guille')
DosFileDirectory(FileDirectory)>>assureExistenceOfPath: Receiver: DosFileDirectory on '\MinGW\msys\1.0\home\Guille\cog'
I followed the error up to:
DosFileDirectory class>>privateFullPathForURI: aURI | path | path := aURI path unescapePercents.
"Check for drive notation (a: etc)" path size > 1 ifTrue: [ ((path at: 3) = $:) ifTrue: [path := path copyFrom: 2 to: path size] ifFalse: [ "All other cases should be network path names (\xxx\sdsd etc)" path := '/' , path]].
^path copyReplaceAll: '/' with: self slash
Which seems not being resolving well a full path like 'c:\something\another\directory' and is answering something like
'\MinGW\msys\1.0\home\Guille\cog\gpolito-cogvm'
which then is treated as a relative path...
I've done a temporary fix like this in my image so I can continue, but maybe someone has a little more knowledge on this class:
DosFileDirectory class>>privateFullPathForURI: aURI | path | path := aURI asString unescapePercents.
"Check for drive notation (a: etc)" path size > 1 ifTrue: [ ((path at: 2) = $:) ifTrue: [path := path copyFrom: 1 to: path size] ifFalse: [ "All other cases should be network path names (\xxx\sdsd etc)" path := '/' , path]].
^path copyReplaceAll: '/' with: self slash
Guille
vm-dev@lists.squeakfoundation.org