--- a/ProjectDefinition.st Wed Oct 25 15:40:20 2006 +0200
+++ b/ProjectDefinition.st Wed Oct 25 16:17:49 2006 +0200
@@ -2524,7 +2524,9 @@
generateDependencies:whichArchitecture
^ String
streamContents:[:s |
- |classNames classesLoaded classesSorted classNamesSorted putDependencyForClass archClassNames archClassesLoaded putSingleClassDependencyEntry putDependencyForExtensions|
+ |classNames classesPresent classesLoaded classesSorted classNamesSorted putDependencyForClass
+ archClassNames archClassesLoaded
+ putSingleClassDependencyEntry putDependencyForExtensions|
putSingleClassDependencyEntry := [:cls |
|sclsBaseName|
@@ -2538,6 +2540,7 @@
architecture:whichArchitecture).
s nextPutAll:'.$(H)'.
].
+
putDependencyForClass := [:cls |
|clsBaseName already|
@@ -2551,31 +2554,33 @@
s nextPutAll:': '.
s nextPutAll:clsBaseName.
s nextPutAll:'.st'.
- already := Set new.
- cls
- allSuperclassesDo:[:scls |
- putSingleClassDependencyEntry value:scls.
- already add:scls.
- ].
- cls
- privateClassesDo:[:eachPrivateClass |
- eachPrivateClass
- allSuperclassesDo:[:scls |
- |sclsBaseName|
-
- scls ~~ cls ifTrue:[
- scls isPrivate ifFalse:[
- (already includes:scls) ifFalse:[
- putSingleClassDependencyEntry value:scls.
- already add:scls.
+ cls isLoaded ifTrue:[
+ already := Set new.
+ cls
+ allSuperclassesDo:[:scls |
+ putSingleClassDependencyEntry value:scls.
+ already add:scls.
+ ].
+ cls
+ privateClassesDo:[:eachPrivateClass |
+ eachPrivateClass
+ allSuperclassesDo:[:scls |
+ |sclsBaseName|
+
+ scls ~~ cls ifTrue:[
+ scls isPrivate ifFalse:[
+ (already includes:scls) ifFalse:[
+ putSingleClassDependencyEntry value:scls.
+ already add:scls.
+ ].
].
].
- ].
- ]
- ].
- s nextPutAll:' $(STCHDR)'.
- s cr.
+ ]
+ ].
+ ].
+ s nextPutLine:' $(STCHDR)'.
].
+
putDependencyForExtensions := [
|already|
@@ -2600,16 +2605,20 @@
].
].
].
- s nextPutAll:' $(STCHDR)'.
- s cr.
+ s nextPutLine:' $(STCHDR)'.
].
+
classNames := self compiled_classNames_common.
- classesLoaded := classNames
+ classesPresent := classNames
collect:[:className | Smalltalk classNamed:className]
- thenSelect:[:cls | cls notNil and:[cls isLoaded]].
+ thenSelect:[:cls | cls notNil].
+ classesLoaded := classesPresent
+ select:[:cls | cls isLoaded].
classesSorted := Class classesSortedByLoadOrder:classesLoaded.
classesSorted do:putDependencyForClass.
+ (classesPresent select:[:cls | cls isLoaded not]) do:putDependencyForClass.
+
self namesAndAttributesIn:(self additionalClassNamesAndAttributes)
do:[:className :attr |
|cls|
@@ -2638,7 +2647,7 @@
"Modified: / 16-08-2006 / 18:52:10 / User"
"Created: / 14-09-2006 / 12:38:57 / cg"
- "Modified: / 09-10-2006 / 14:23:16 / cg"
+ "Modified: / 25-10-2006 / 16:01:13 / cg"
!
generateDependencies_unix
@@ -3356,7 +3365,23 @@
"Modified: / 23-08-2006 / 13:49:27 / cg"
!
+hasAllClassesFullyLoaded
+ "return true, if all classes are present and loaded"
+
+ ^ self hasAllClassesLoaded:true
+
+ "Created: / 25-10-2006 / 16:08:25 / cg"
+!
+
hasAllClassesLoaded
+ "return true, if all classes are present (athough, some might be autoloaded)"
+
+ ^ self hasAllClassesLoaded:false
+
+ "Modified: / 25-10-2006 / 16:08:11 / cg"
+!
+
+hasAllClassesLoaded:checkIfFullyLoaded
|checkLoaded|
checkLoaded := [:eachClassName |
@@ -3367,6 +3392,12 @@
Transcript showCR:(self name,' missing class: "',eachClassName,'".').
^ false
].
+ checkIfFullyLoaded ifTrue:[
+ cls isLoaded ifFalse:[
+ Transcript showCR:(self name,' unloaded class: "',eachClassName,'".').
+ ^ false
+ ]
+ ].
].
(self classNamesForWhich:[:nm :attr | (attr includes:#autoload)
@@ -3375,8 +3406,7 @@
^ true.
- "Created: / 17-08-2006 / 00:50:01 / cg"
- "Modified: / 25-10-2006 / 00:04:06 / cg"
+ "Created: / 25-10-2006 / 16:06:05 / cg"
!
hasAllExtensionsLoaded
@@ -3488,7 +3518,7 @@
!ProjectDefinition class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.111 2006-10-24 22:04:24 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.112 2006-10-25 14:17:49 cg Exp $'
! !
ProjectDefinition initialize!