Metacello / metacello

Metacello is a package management system for Smalltalk
MIT License
87 stars 43 forks source link

File removal issue on Squeak 5.1 on Windows #409

Closed codeZeilen closed 8 years ago

codeZeilen commented 8 years ago

On Squeak 5.1 on Windows 10, when loading a baseline for the second time, an exception occurs stating that: "Fully qualified path expected"

So far, we have debugged the issue to the following factors:

The issue arises in MCGithubRepository class>>#projectDirectoryFrom:version: in the following section:

directory exists
    ifTrue: [ MetacelloPlatform current deleteFileNamed: zipFileName ]
    ifFalse: [ MetacelloPlatform current
            extractRepositoryFrom: zipFileName
            to: theCacheDirectory fullName ].

The directory is the path to the github-cache folder and the zipFileName is a absolute Unix-style path to a temp zip File (on all platforms /tmp/[zipFileName]). As the package was already loaded the directory does exist and the newly introduced true branch is executed. Now when trying to delete the zip file on Windows the Unix-style temp file path is used which leads to an error in DosFileDirectory>>#setPathName:.

I would like to fix it, however I am wondering how I could do it so it fits within the module boundaries of Metacello?

dalehenrich commented 8 years ago

@codeZeilen thanks for the report. This particular problem is showing up as a side effect of the recent fix for Issue #406 ... so the file deletion is not correct for windows ... at worst you can remove the ifTrue: branch until a better solution (for windows) is reached) ...

It seems to me that the real issue is that on Squeak, the crosss platform method MetacelloPlatform>>tempFileFor:suggix: does not produce a properly formed temp file name for windows ... I would think that the solution would be to implement a method in MetacelloSqueakPlatform that produces a properly formed filename for windows...

I'm not that familiar with Windows nor the Squeak protocol for supporting Windows, so if you could provide a proper implementation for Squeak (bonus points for a pull request) ... we could address this problem

j4yk commented 8 years ago

This also broke installing packages for the first time for me. I submitted a pull request #410 to address this. Please let me know if the fix is what you had in mind.

dalehenrich commented 8 years ago

Cool ... this looks like exactly what I was looking for ...