[Pharo-project] DosFileDirectory class>>privateFullPathForURI: aURI [WAS] Re: [Vm-dev] Primitive failed when compiling Vm on Windows

7 views
Skip to first unread message

Mariano Martinez Peck

unread,
Jan 26, 2012, 3:52:37 AM1/26/12
to Pharo Development


On Thu, Jan 26, 2012 at 12:13 AM, Guillermo Polito <guiller...@gmail.com> wrote:
 
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:


Guille, if you see the family of Windows confs, regarding the file paths, they usually use #msysPathFor:
Check its senders as an example. Maybe we can adapt topDir to use that. But I am not sure if that's a good idea.
I think several months ago I was bitten but the same problem.
I would like if your change to:
DosFileDirectory class>>privateFullPathForURI: aURI

is correct. Because maybe we can just integerate that.
anyone?
 
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




--
Mariano
http://marianopeck.wordpress.com

Reply all
Reply to author
Forward
0 new messages