#REFACTORING by cg
class: ObjectFileLoader
changed: #binaryClassFilenameForPackage:inDirectory:
class lib searching refactored;
if an explicit dir is given, do NOT search
in binDir (which it did).
--- a/ObjectFileLoader.st Tue Oct 11 01:47:04 2016 +0200
+++ b/ObjectFileLoader.st Tue Oct 11 17:50:50 2016 +0200
@@ -3752,58 +3752,48 @@
!ObjectFileLoader class methodsFor:'queries'!
binaryClassFilenameForPackage:aPackageId inDirectory:packageDirOrNil
- |shLibName exeDir binaryClassLibraryFilename|
+ |tryAction shLibName exePath exeDir|
"Is there a shared library (.dll or .so) ?"
shLibName := aPackageId asPackageId libraryName asFilename
- withSuffix:self sharedLibrarySuffix.
-
- exeDir := OperatingSystem pathOfSTXExecutable asFilename directory.
- binaryClassLibraryFilename := exeDir / shLibName.
- binaryClassLibraryFilename exists ifFalse:[
- exeDir baseName = 'bin' ifTrue:[
- binaryClassLibraryFilename := exeDir directory / 'lib' / shLibName.
- ].
- binaryClassLibraryFilename exists ifFalse:[
- binaryClassLibraryFilename := exeDir directory / 'plugin' / shLibName.
- binaryClassLibraryFilename exists ifFalse:[
-"/ binaryClassLibraryFilename := Filename currentDirectory / shLibName.
-"/ binaryClassLibraryFilename exists ifFalse:[
- packageDirOrNil notNil ifTrue:[
- binaryClassLibraryFilename := packageDirOrNil / shLibName.
- binaryClassLibraryFilename exists ifFalse:[
- "/ mhmh - is this a good idea ? (temporary kludge)
- ExternalAddress pointerSize == 4 ifTrue:[
- binaryClassLibraryFilename := packageDirOrNil / 'objbc' / shLibName.
- binaryClassLibraryFilename exists ifFalse:[
- binaryClassLibraryFilename := packageDirOrNil / 'objvc' / shLibName.
- ]
- ] ifFalse:[
- binaryClassLibraryFilename := packageDirOrNil / 'objmingw' / shLibName.
- ].
- ]
- ]
-"/ ].
- ].
- ].
- packageDirOrNil notNil ifTrue:[
- binaryClassLibraryFilename exists ifFalse:[
- "/ look in package directory
- binaryClassLibraryFilename := packageDirOrNil / shLibName.
- binaryClassLibraryFilename exists ifFalse:[
- ExternalAddress pointerSize == 4 ifTrue:[
- binaryClassLibraryFilename := packageDirOrNil / 'objbc' / shLibName.
- binaryClassLibraryFilename exists ifFalse:[
- binaryClassLibraryFilename := packageDirOrNil / 'objvc' / shLibName.
- ]
- ] ifFalse:[
- binaryClassLibraryFilename := packageDirOrNil / 'objmingw' / shLibName.
- ].
- ].
- ].
- ].
+ withSuffix:(self sharedLibrarySuffix).
+
+ tryAction :=
+ [:dir |
+ |binaryClassLibraryFilename|
+
+ binaryClassLibraryFilename := dir / shLibName.
+ binaryClassLibraryFilename exists ifFalse:[
+ "/ mhmh - is this a good idea ? (temporary kludge)
+ ExternalAddress pointerSize == 4 ifTrue:[
+ binaryClassLibraryFilename := dir / 'objbc' / shLibName.
+ binaryClassLibraryFilename exists ifFalse:[
+ binaryClassLibraryFilename := dir / 'objvc' / shLibName.
+ ]
+ ] ifFalse:[
+ binaryClassLibraryFilename := dir / 'objmingw' / shLibName.
+ ].
+ ].
+ (binaryClassLibraryFilename notNil and:[binaryClassLibraryFilename exists]) ifTrue:[
+ ^ binaryClassLibraryFilename
+ ].
+ ].
+
+ packageDirOrNil notNil ifTrue:[
+ tryAction value:packageDirOrNil.
+ ^ nil
].
- ^ binaryClassLibraryFilename
+
+ exePath := OperatingSystem pathOfSTXExecutable.
+ exePath notNil ifTrue:[
+ exeDir := exePath asFilename directory.
+ tryAction value:exeDir.
+ exeDir baseName = 'bin' ifTrue:[
+ tryAction value:(exeDir directory / 'lib').
+ ].
+ tryAction value:(exeDir directory / 'plugin').
+ ].
+ ^ nil
!
canLoadObjectFiles