--- a/Smalltalk.st Fri Sep 14 22:44:58 2012 +0100
+++ b/Smalltalk.st Tue Sep 25 17:09:50 2012 +0100
@@ -6217,19 +6217,27 @@
"return a actual or expected (or most wanted) filename for aClassOrClassName
- only the base name (without directory part) and without suffix."
- |cls nonMetaclass nm nameWithPrefix nameWithoutPrefix|
+ |cls nonMetaclass nm nameWithPrefix nameWithoutPrefix compatQuery |
"/ This was added as an extension of libsvn - should be no longer needed
-"/ compatQuery := Smalltalk classNamed: 'SVN::CompatModeQuery'.
-"/ (compatQuery notNil
-"/ and:[compatQuery isLoaded
-"/ and:[compatQuery query not]]) ifTrue:[
-"/ nm := aClassOrClassName isBehavior
-"/ ifTrue:[aClassOrClassName name]
-"/ ifFalse:[aClassOrClassName].
-"/ nm := nm copyReplaceAll:$: with:$_.
-"/ ^nm
-"/ ].
+"/ JV@2012-09-25: but it actually is. The problem is that class filename
+"/ is stored in the class itself and used to generate abbrev.stc and
+"/ prerequisites in makefiles. But if you renamed such a stc-compiled class,
+"/ the filename remains the same, but SVN __ALWAYS__ keep container name
+"/ and class name in sync. Therefore build files gets messed up. Indeed, this
+"/ should be fixed in code that files-out the package and generates build files.
+"/ Certainly a hack, but do not remove this until fixed elsewhere
+
+ compatQuery := Smalltalk classNamed: 'SVN::CompatModeQuery'.
+ (compatQuery notNil
+ and:[compatQuery isLoaded
+ and:[compatQuery query not]]) ifTrue:[
+ nm := aClassOrClassName isBehavior
+ ifTrue:[aClassOrClassName name]
+ ifFalse:[aClassOrClassName].
+ nm := nm copyReplaceAll:$: with:$_.
+ ^nm
+ ].
aClassOrClassName isBehavior ifTrue:[
cls := aClassOrClassName.