--- a/ProjectDefinition.st Wed Nov 18 18:57:52 2009 +0100
+++ b/ProjectDefinition.st Wed Nov 18 19:09:22 2009 +0100
@@ -13,7 +13,8 @@
Object subclass:#ProjectDefinition
instanceVariableNames:''
- classVariableNames:'LibraryType GUIApplicationType NonGUIApplicationType'
+ classVariableNames:'LibraryType GUIApplicationType NonGUIApplicationType
+ PackagesBeingLoaded'
poolDictionaries:''
category:'System-Support-Projects'
!
@@ -4678,17 +4679,31 @@
"load some packages (at least the projectDefinitions and their extensions).
If asAutoloaded == true, classes will be only installed as autoloaded."
- Class withoutUpdatingChangesDo:[
- aListOfPackages do:[:aPackage |
- |def|
-
- "/ def := aPackage asPackageId projectDefinitionClass.
- (def notNil and:[def isFullyLoaded]) ifTrue:[
- "/ nothing to be done...
- ] ifFalse:[
- Smalltalk loadPackageWithId:aPackage asAutoloaded:asAutoloaded.
- ]
+ |packagesBefore|
+
+ packagesBefore := PackagesBeingLoaded copy.
+ PackagesBeingLoaded isNil ifTrue:[
+ PackagesBeingLoaded := Set new
+ ].
+ [
+ Class withoutUpdatingChangesDo:[
+ aListOfPackages do:[:aPackage |
+ |def|
+
+ (PackagesBeingLoaded includes:aPackage) ifFalse:[
+ PackagesBeingLoaded add:aPackage.
+
+ "/ def := aPackage asPackageId projectDefinitionClass.
+ (def notNil and:[def isFullyLoaded]) ifTrue:[
+ "/ nothing to be done...
+ ] ifFalse:[
+ Smalltalk loadPackageWithId:aPackage asAutoloaded:asAutoloaded.
+ ]
+ ]
+ ].
].
+ ] ensure:[
+ PackagesBeingLoaded := packagesBefore.
].
!
@@ -5188,11 +5203,11 @@
!ProjectDefinition class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.289 2009-11-18 15:46:05 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.290 2009-11-18 18:09:22 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.289 2009-11-18 15:46:05 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.290 2009-11-18 18:09:22 cg Exp $'
! !
ProjectDefinition initialize!