Merged 1216c6885589 and eaddf47af679 (branch default - CVS HEAD) jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Mon, 18 Mar 2013 22:12:08 +0000
branchjv
changeset 18033 c90d8fdd805d
parent 18032 1216c6885589 (current diff)
parent 14889 eaddf47af679 (diff)
child 18034 6700a674532f
child 18037 4cf874da38c9
Merged 1216c6885589 and eaddf47af679 (branch default - CVS HEAD)
AllocationFailure.st
AmbiguousMessage.st
ApplicationDefinition.st
ArithmeticError.st
CharacterArray.st
Collection.st
LibraryDefinition.st
MallocFailure.st
Method.st
MiniLogger.st
OverflowError.st
ProjectDefinition.st
RangeError.st
SystemChangeNotifier.st
UnderflowError.st
UnorderedNumbersError.st
Win32OperatingSystem.st
stx_libbasic.st
--- a/AllocationFailure.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/AllocationFailure.st	Mon Mar 18 22:12:08 2013 +0000
@@ -32,17 +32,22 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+    raised when an object allocation fails.
+"
 ! !
 
+
 !AllocationFailure class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AllocationFailure.st,v 1.5 2004/08/22 17:47:31 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AllocationFailure.st,v 1.6 2013-03-13 23:47:13 cg Exp $'
 !
 
 version_SVN
     ^ '$Id: AllocationFailure.st 10761 2012-01-19 11:46:00Z vranyj1 $'
 ! !
 
-
-
--- a/AmbiguousMessage.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/AmbiguousMessage.st	Mon Mar 18 22:12:08 2013 +0000
@@ -60,14 +60,25 @@
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 "
+!
+
+documentation
+"
+    raised by the VM when a message is sent to an object and 
+    is not clear which method to execute.
+    Such situation may occur when a current selector namespace
+    imports two namespaces and both define a method with the
+    requested selector.
+"
 ! !
 
 !AmbiguousMessage class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/AmbiguousMessage.st,v 1.2 2011-07-03 15:01:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AmbiguousMessage.st,v 1.3 2013-03-13 23:50:30 cg Exp $'
 !
 
 version_SVN
     ^ '§Id: AmbiguousMessage.st,v 1.1 2011/06/28 11:04:04 vrany Exp §'
 ! !
+
--- a/ApplicationDefinition.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/ApplicationDefinition.st	Mon Mar 18 22:12:08 2013 +0000
@@ -158,19 +158,17 @@
 forEachMethodsCodeToCompileDo:aTwoArgBlock ignoreOldDefinition:ignoreOldDefinition
     super forEachMethodsCodeToCompileDo:aTwoArgBlock ignoreOldDefinition:ignoreOldDefinition.
 
-    aTwoArgBlock 
-        value:self subProjects_code
-        value:'description'.
-
-    (self class includesSelector:#startupClassName) ifFalse:[
-        aTwoArgBlock 
-            value:self startupClassName_code
-            value:'description - startup'.
-    ].
-    (self class includesSelector:#startupSelector) ifFalse:[
-        aTwoArgBlock 
-            value:self startupSelector_code
-            value:'description - startup'.
+    #(
+        (subProjects subProjects_code 'description')
+        (productInstallDirBaseName productInstallDirBaseName_code 'description - project information')
+        (startupClassName startupClassName_code 'description - startup')
+        (startupSelector startupSelector_code 'description - startup')
+    ) triplesDo:[:selector :codeMethodSelector :category|
+        (self class includesSelector:selector) ifFalse:[
+            aTwoArgBlock
+                value: (self perform:codeMethodSelector)
+                value: category.
+        ].
     ].
 
     "Created: / 10-08-2006 / 16:35:47 / cg"
@@ -497,17 +495,17 @@
 
     ^ self isGUIApplication ifTrue:[
         #(
-            'stx:libcomp'   "/ to read the rc file
-            'stx:libbasic2' "/ UI framework
-            'stx:libview'   "/ UI framework
-            'stx:libview2'  "/ UI framework
-            'stx:libwidg'   "/ UI framework
-            'stx:libwidg2'  "/ UI framework
-            'stx:libui'     "/ UI framework
+            #'stx:libcomp'   "/ to read the rc file
+            #'stx:libbasic2' "/ UI framework
+            #'stx:libview'   "/ UI framework
+            #'stx:libview2'  "/ UI framework
+            #'stx:libwidg'   "/ UI framework
+            #'stx:libwidg2'  "/ UI framework
+            #'stx:libui'     "/ UI framework
         )
     ] ifFalse:[
         #(
-            'stx:libcomp'   "/ to read the rc file
+            #'stx:libcomp'   "/ to read the rc file
         )
     ].
 !
@@ -1610,6 +1608,11 @@
 
 TOP=%(TOP)       
 INCLUDE_TOP=$(TOP)\..
+# dummy target to force a build
+FORCE=FORCE_BUILD
+
+FORCE_BUILD:
+        @rem Dummy traget to force a build
 
 CFLAGS_LOCAL=$(CFLAGS_APPTYPE) \
  -DSTARTUP_CLASS="\"%(STARTUP_CLASS)\"" \
@@ -1660,12 +1663,13 @@
 target: %(BUILD_TARGET) postBuildCleanup 
 
 # the executable, all required files and a self-installing-installer-exe
-ALL:: prereq ALL2 
+ALL:: ALL2 
 
 # all, but no prereqs
-ALL_NP:: exe $(REQUIRED_SUPPORT_DIRS) %(ADDITIONAL_TARGETS) postBuildCleanup setup 
-
-exe:  newBuildDate %(NOCONSOLE_APPLICATION_OR_EMPTY) %(CONSOLE_APPLICATION_OR_EMPTY) 
+ALL_NP::
+    $(MAKE) FORCE= exe $(REQUIRED_SUPPORT_DIRS) %(ADDITIONAL_TARGETS) postBuildCleanup setup 
+
+exe:  newBuildDate $(REQUIRED_LIBOBJS) %(NOCONSOLE_APPLICATION_OR_EMPTY) %(CONSOLE_APPLICATION_OR_EMPTY) 
 
 # the executable only
 # with console
@@ -1691,10 +1695,14 @@
 # the executable only (internal target; needs some defines)
 theExe: $(OUTDIR) $(OBJS) $(REQUIRED_FILES) show $(PROJECT) 
 
-# build all prerequisite packages for this package
+# build all mandatory prerequisite packages (containing superclasses) for this package
 prereq:
 %(MAKE_PREREQUISITES)
 
+# build all prerequisite packages (containing referenced classes) for this package
+references:
+%(MAKE_REFERENCES)
+
 # a nullsoft installable delivery
 # This uses the Nullsoft Installer Package and works in Windows only
 setup: $(PROJECT) postBuildCleanup %(NSI_FILENAME)
@@ -2166,6 +2174,10 @@
 TOP=%(TOP)
 INCLUDE_TOP=$(TOP)/..
 
+# a dummy file name to force the build of subprojects
+FORCE=@@@FORCE-BUILD@@@
+.PHONY: $(FORCE)
+
 PACKAGE=%(APPLICATION_PACKAGE)
 SUBDIRS=
 SUPPRESS_LOCAL_ABBREVS="yes"
@@ -2184,7 +2196,7 @@
 
 target: %(BUILD_TARGET)
 
-all::   prereq exe
+all::   exe
 
 LIBNAME=%(LIBRARY_NAME)
 STCLOCALOPT=''-package=$(PACKAGE)'' -I. -headerDir=. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) %(HEADEROUTPUTARG) %(COMMONSYMFLAG) -varPrefix=$(LIBNAME)
@@ -2218,14 +2230,16 @@
 
 exe:    %(APPLICATION) $(REQUIRED_SUPPORT_DIRS)
 
-%(APPLICATION): $(APP_DIRS_TO_MAKE) $(APP_LIBOBJS) $(OBJS)
+%(APPLICATION): $(APP_DIRS_TO_MAKE) $(APP_LIBOBJS) $(REQUIRED_LIBOBJS) $(OBJS) $(FORCE)
         $(MAKE) link_%(APPLICATION)
 
 # like ALL, but not prereqs
-ALL_NP:: exe
+ALL_NP::
+        $(MAKE) exe FORCE=
 
 link_%(APPLICATION):
         $(MAKE) %(APPLICATION_TYPE) \
+                    FORCE= \
                     TARGET=%(APPLICATION) \
                     APPLICATION_CLASSES="$(COMMON_CLASSES) $(UNIX_CLASSES)" \
                     APPLICATION_OBJS="$(OBJS)" \
@@ -2236,10 +2250,15 @@
                     STARTUP_SELECTOR="%(STARTUP_SELECTOR)" \
                     MAIN_DEFINES="%(MAIN_DEFINES)"
 
-# build all prerequisite packages for this package
+# build all mandatory prerequisite packages (containing superclasses) for this package
 prereq:
 %(MAKE_PREREQUISITES)
 
+# build all prerequisite packages (containing referenced classes) for this package
+references:
+%(MAKE_REFERENCES)
+
+
 setup::
         @if test -d autoPackage; then \
             makepackage; \
@@ -2785,7 +2804,7 @@
 '%(FILE_NAME).dll: %(MODULE_DIRECTORY)\$(OBJDIR)\%(FILE_NAME).dll
         copy %(MODULE_DIRECTORY)\$(OBJDIR)\%(FILE_NAME).dll *.*
 
-%(MODULE_DIRECTORY)\$(OBJDIR)\%(FILE_NAME).dll:
+%(MODULE_DIRECTORY)\$(OBJDIR)\%(FILE_NAME).dll: $(FORCE)
         pushd %(MODULE_DIRECTORY) & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 '
 
@@ -2799,9 +2818,9 @@
 
     ^
 '%(FILE_NAME).so: %(MODULE_DIRECTORY)/%(FILE_NAME).so
-        cp %(MODULE_DIRECTORY)/%(FILE_NAME).so .
-
-%(MODULE_DIRECTORY)/%(FILE_NAME).so:
+        ln -sf %(MODULE_DIRECTORY)/%(FILE_NAME).so .
+
+%(MODULE_DIRECTORY)/%(FILE_NAME).so: $(FORCE)
         cd %(MODULE_DIRECTORY) && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 '
 
@@ -2921,11 +2940,11 @@
 !ApplicationDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.218 2013-03-11 20:18:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.223 2013-03-15 16:55:51 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.218 2013-03-11 20:18:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.223 2013-03-15 16:55:51 stefan Exp $'
 !
 
 version_SVN
--- a/ArithmeticError.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/ArithmeticError.st	Mon Mar 18 22:12:08 2013 +0000
@@ -32,17 +32,22 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+     common superclass for all arithmetic errors.
+"
 ! !
 
+
 !ArithmeticError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ArithmeticError.st,v 1.7 2005/02/16 15:31:43 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ArithmeticError.st,v 1.8 2013-03-13 23:44:07 cg Exp $'
 !
 
 version_SVN
     ^ '$Id: ArithmeticError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
 ! !
 
-
-
--- a/CharacterArray.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/CharacterArray.st	Mon Mar 18 22:12:08 2013 +0000
@@ -326,7 +326,6 @@
     "
 ! !
 
-
 !CharacterArray class methodsFor:'pattern matching'!
 
 matchEscapeCharacter
@@ -1108,14 +1107,11 @@
 withBlanksTrimmed
     "Return a copy of the receiver from which leading and trailing blanks have been trimmed."
 
-    ^ self withoutSpaces
+    ^ self withoutSeparators "withoutSpaces"    "/ cg: it seems that squeak cares for any whitespace
 
     "
      '  hello    world    ' withBlanksTrimmed
     "
-
-
-
 !
 
 withNoLineLongerThan: aNumber
@@ -1574,7 +1570,6 @@
 ! !
 
 
-
 !CharacterArray methodsFor:'character searching'!
 
 includesMatchCharacters
@@ -4388,7 +4383,6 @@
 ! !
 
 
-
 !CharacterArray methodsFor:'padded copying'!
 
 centerPaddedTo:newSize
@@ -4913,7 +4907,6 @@
     "Modified: 17.4.1997 / 12:50:23 / cg"
 ! !
 
-
 !CharacterArray methodsFor:'special string converting'!
 
 expandPlaceholders:escapeCharacter with:argArrayOrDictionary
@@ -5822,7 +5815,6 @@
     "
 ! !
 
-
 !CharacterArray methodsFor:'substring searching'!
 
 findString:subString
@@ -6314,11 +6306,11 @@
 !CharacterArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.494 2013-02-08 14:45:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.495 2013-03-13 14:04:42 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.494 2013-02-08 14:45:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.495 2013-03-13 14:04:42 cg Exp $'
 ! !
 
 
--- a/Collection.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/Collection.st	Mon Mar 18 22:12:08 2013 +0000
@@ -259,7 +259,6 @@
     ^ self withSize:n
 ! !
 
-
 !Collection class methodsFor:'Signal constants'!
 
 emptyCollectionSignal
@@ -328,6 +327,12 @@
     ^ self == Collection
 ! !
 
+!Collection methodsFor:'*ST2JS-compatibility'!
+
+inlineDo: aBlock
+	^ self do: aBlock
+! !
+
 !Collection methodsFor:'Compatibility-Dolphin'!
 
 identityIncludes:anObject
@@ -510,7 +515,6 @@
     ].
 ! !
 
-
 !Collection methodsFor:'accessing'!
 
 anElement
@@ -2753,6 +2757,21 @@
     "Modified: / 11-07-2010 / 17:04:07 / cg"
 !
 
+reject:selectBlock thenDo:doBlock
+    "combination of reject followed by do
+     Avoids the creation of intermediate garbage"
+
+    self do:[:eachElement |
+        (selectBlock value:eachElement) ifFalse:[
+            doBlock value:eachElement
+        ]
+    ].
+
+    "
+     #(1 2 3 4 5 6 7) reject:[:i | i even] thenDo:[:i | Transcript showCR:i]
+    "
+!
+
 reverseDo:aBlock
     "evaluate the argument, aBlock for each element in reverse order."
 
@@ -4103,18 +4122,17 @@
         |node1|
         node1 := eachTuple first.
         graph at:node1 ifAbsentPut:[OrderedCollection with:0].
-        1 to:(eachTuple size-1) do:[:i| 
+        2 to:(eachTuple size) do:[:i| 
             |node2 n2|
 
-            node1 := eachTuple at:i.
-            node2 := eachTuple at:i+1.
-            "add the node"
-            graph at:node2 ifAbsentPut:[OrderedCollection with:0].
+            node2 := eachTuple at:i.
             "add an arc from node1 to node2"
             (graph at:node1) add:node2.
+            "add the node"
+            n2 := graph at:node2 ifAbsentPut:[OrderedCollection with:0].
             "increment count on incoming arcs of node2"
-            n2 := graph at:node2.
             n2 at:1 put:(n2 first + 1).
+            node1 := node2.
         ].
     ]. 
 
@@ -4140,17 +4158,18 @@
             |eachChild eachChildGraph|
             eachChild := eachEntry at:i.
             eachChildGraph := graph at:eachChild.
-            count := eachChildGraph at:1.
-            eachChildGraph at:1 put:(count - 1).
-            count = 1 ifTrue:[
+            count := (eachChildGraph at:1) - 1.
+            eachChildGraph at:1 put:count.
+            count = 0 ifTrue:[
                 roots add:eachChild.
             ].
         ].
     ].
 
+    "if graph is empty, we are done. Otherwise there is a cycle"
     graph notEmpty ifTrue:[
         "search for cycle"
-        |startNode checkBlock|
+        |checkBlock|
 
         checkBlock := [:graphEntry :backTrace|
             2 to:graphEntry size do:[:i|
@@ -4158,16 +4177,16 @@
                 eachChild := graphEntry at:i.
                 (backTrace includesIdentical:eachChild) ifTrue:[
                     backTrace add:eachChild.
-                    self error:('cycle in ordering: %1 -> %2' bindWith:startNode with:backTrace reversed) mayProceed:true.
+                    self error:('cycle in ordering: %1' bindWith:backTrace reversed) mayProceed:true.
                 ].
                 eachChildGraph := graph at:eachChild.
                 checkBlock value:eachChildGraph value:(backTrace copyWith:eachChild).
             ].
         ].
         graph keysAndValuesDo:[:eachNode :eachGraph|
-            startNode := eachNode.
-            checkBlock value:eachGraph value:(OrderedCollection with:startNode).
+            checkBlock value:eachGraph value:(OrderedCollection with:eachNode).
         ].
+        "should not be reached"
         self error:'cycle in ordering' mayProceed:true.
     ].
 
@@ -4185,6 +4204,10 @@
 
      (Smalltalk allClasses collect:[:eachClass| 
         Array with:eachClass superclass with:eachClass
+     ]) topologicalSort.
+
+     ((Smalltalk allClasses asSortedCollection:[:a :b| a name < b name])collect:[:eachClass| 
+        Array with:eachClass superclass with:eachClass
      ]) topologicalSort
     "
 ! !
@@ -4480,11 +4503,11 @@
 !Collection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.289 2013-03-08 22:36:32 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.291 2013-03-15 10:41:31 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.289 2013-03-08 22:36:32 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.291 2013-03-15 10:41:31 stefan Exp $'
 ! !
 
 
--- a/LibraryDefinition.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/LibraryDefinition.st	Mon Mar 18 22:12:08 2013 +0000
@@ -37,12 +37,7 @@
 
 !LibraryDefinition class methodsFor:'code generation'!
 
-forEachMethodsCodeToCompileDo:aTwoArgBlock ignoreOldDefinition:ignoreOldDefinition
-    super forEachMethodsCodeToCompileDo:aTwoArgBlock ignoreOldDefinition:ignoreOldDefinition.
-
-    "Created: / 10-08-2006 / 16:35:47 / cg"
-    "Modified: / 18-08-2006 / 16:22:49 / cg"
-! !
+ !
 
 
 !LibraryDefinition class methodsFor:'description - compilation'!
@@ -324,10 +319,15 @@
 
 !!INCLUDE $(TOP)\rules\stdRules_bc
 
-# build all prerequisite packages for this package
+# build all mandatory prerequisite packages (containing superclasses) for this package
 prereq:
 %(MAKE_PREREQUISITES)
 
+# build all packages containing referenced classes for this package
+# they are nor needed to compile the package
+references:
+%(MAKE_REFERENCES)
+
 %(ADDITIONAL_RULES)
 
 %(ADDITIONAL_HEADERRULES)
@@ -499,9 +499,15 @@
 # add more postMake actions here
 postMake:: cleanjunk
 
-prereq: $(REQUIRED_SUPPORT_DIRS)
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
 %(MAKE_PREREQUISITES)
 
+# build all packages containing referenced classes for this package
+# they are nor needed to compile the package
+references:
+%(MAKE_REFERENCES)
+
 cleanjunk::
 %(TAB)-rm -f *.s *.s2
 
@@ -735,10 +741,10 @@
 !LibraryDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.113 2013-03-11 20:49:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.115 2013-03-15 13:40:33 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.113 2013-03-11 20:49:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.115 2013-03-15 13:40:33 stefan Exp $'
 ! !
 
--- a/MallocFailure.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/MallocFailure.st	Mon Mar 18 22:12:08 2013 +0000
@@ -32,17 +32,23 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+    raised when a malloc (non-object memory allocation) fails.
+    Typically by ExternalBytes and similar classes.
+"
 ! !
 
+
 !MallocFailure class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MallocFailure.st,v 1.2 2003/08/30 12:33:56 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MallocFailure.st,v 1.3 2013-03-13 23:47:08 cg Exp $'
 !
 
 version_SVN
     ^ '$Id: MallocFailure.st 10761 2012-01-19 11:46:00Z vranyj1 $'
 ! !
 
-
-
--- a/Method.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/Method.st	Mon Mar 18 22:12:08 2013 +0000
@@ -3579,6 +3579,17 @@
     "Created: / 23-07-2012 / 11:16:36 / cg"
 ! !
 
+!Method methodsFor:'source management'!
+
+revisionInfo
+    "cg: is this correct for extensions? (shouldn't this be the revisionInfo from the extensions container)"
+
+    ^self containingClass theNonMetaclass revisionInfo
+
+    "Created: / 28-08-2010 / 22:43:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 12-09-2010 / 16:38:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !Method methodsFor:'trap methods'!
 
 makeInvalid
@@ -3815,15 +3826,16 @@
 !Method class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.405 2012-12-17 10:49:26 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.407 2013-03-13 14:01:11 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.405 2012-12-17 10:49:26 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.407 2013-03-13 14:01:11 cg Exp $'
 !
 
 version_SVN
     ^ '§ Id: Method.st 10648 2011-06-23 15:55:10Z vranyj1 §'
 ! !
 
+
 Method initialize!
--- a/MiniLogger.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/MiniLogger.st	Mon Mar 18 22:12:08 2013 +0000
@@ -34,6 +34,7 @@
 "
 ! !
 
+
 !MiniLogger class methodsFor:'instance creation'!
 
 instance
@@ -52,6 +53,7 @@
     "Created: / 14-09-2011 / 21:27:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !MiniLogger class methodsFor:'class initialization'!
 
 initialize
@@ -61,6 +63,7 @@
     "Created: / 01-09-2011 / 12:26:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !MiniLogger methodsFor:'logging'!
 
 facilityOf: originator
@@ -165,19 +168,20 @@
     "Modified: / 15-03-2013 / 11:20:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !MiniLogger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MiniLogger.st,v 1.2 2013-03-15 11:21:39 +0000 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniLogger.st,v 1.2 2013-03-15 11:21:39 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/MiniLogger.st,v 1.2 2013-03-15 11:21:39 +0000 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniLogger.st,v 1.2 2013-03-15 11:21:39 vrany Exp $'
 !
 
 version_HG
 
-    ^ '$Changeset: <not expanded> $'
+    ^ '§Changeset: <not expanded> §'
 !
 
 version_SVN
--- a/OverflowError.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/OverflowError.st	Mon Mar 18 22:12:08 2013 +0000
@@ -32,25 +32,32 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+    raised when the function-result overflows the allowed range.
+    (Float overflow)
+"
 ! !
 
+
 !OverflowError class methodsFor:'initialization'!
 
 initialize
     NotifierString := 'overflow'.
 ! !
 
+
 !OverflowError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/OverflowError.st,v 1.3 2003/08/29 19:14:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/OverflowError.st,v 1.4 2013-03-13 23:43:48 cg Exp $'
 !
 
 version_SVN
     ^ '$Id: OverflowError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
 ! !
 
+
 OverflowError initialize!
-
-
-
--- a/ProjectDefinition.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/ProjectDefinition.st	Mon Mar 18 22:12:08 2013 +0000
@@ -90,6 +90,7 @@
 "
 ! !
 
+
 !ProjectDefinition class methodsFor:'instance creation'!
 
 definitionClassForMonticelloPackage:aMonicelloPackagename
@@ -223,6 +224,7 @@
     "Modified: / 17-08-2006 / 17:24:23 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'accessing'!
 
 directory
@@ -998,6 +1000,7 @@
     "Modified: / 08-08-2011 / 14:59:45 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'class initialization'!
 
 initialize
@@ -1119,6 +1122,7 @@
     "Modified: / 20-08-2011 / 23:32:32 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'code generation'!
 
 applicationIconFileName_code
@@ -1490,7 +1494,6 @@
         (companyName companyName_code)
         (legalCopyright legalCopyright_code)
         (applicationIconFileName applicationIconFileName_code)
-        (productInstallDirBaseName productInstallDirBaseName_code)
     ) pairsDo:[:selector :codeMethodSelector |
         (self class includesSelector:selector) ifFalse:[
             aTwoArgBlock
@@ -1570,58 +1573,7 @@
     "Modified: / 09-10-2006 / 14:27:20 / cg"
 !
 
-preRequisites_code
-    "generate the code of the #preRequisites method"
-
-    |preRequisites searchedPreRequisites importantReason|
-
-    searchedPreRequisites := self searchForPreRequisites.
-    preRequisites := Set new
-        addAll: searchedPreRequisites keys;
-        removeAllFoundIn:self excludedFromPreRequisites;
-        remove:self package ifAbsent:[];
-        yourself.
-
-    ^ String streamContents:[:s |
-        s nextPutLine:'preRequisites'.
-        s nextPutLine:'    "list all required packages.'.
-        s nextPutLine:'     This list can be maintained manually or (better) generated and'.
-        s nextPutLine:'     updated by scanning the superclass hierarchies and looking for'.
-        s nextPutLine:'     global variable accesses. (the browser has a menu function for that)'.
-        s nextPutLine:'     However, often too much is found, and you may want to explicitely'.
-        s nextPutLine:'     exclude individual packages in the #excludedFromPreRequisites method.'.
-        s nextPutLine:'     If you have explicit preqrequisites, define them in the #includedInPreRequisites method."'.
-        s nextPutLine:''.
-        s nextPutLine:'    ^ #('.
-        preRequisites asSortedCollection do:[:eachPackageID |
-            |reason|
-
-            s spaces:8.
-            eachPackageID asSymbol storeOn:s.
-            reason := searchedPreRequisites at:eachPackageID ifAbsent:nil.
-            reason notEmptyOrNil ifTrue:[
-                "superclasses are really important"
-                importantReason := reason detect:[:eachReasonString|
-                    eachReasonString includesString:' superclass '
-                ] ifNone:[reason anElement].
-                s nextPutAll:'    "'; nextPutAll:importantReason; nextPutAll:' "'.
-            ].
-            s cr.
-        ].
-        s nextPutLine:'    )'
-    ].
-
-    "
-     bosch_dapasx_application preRequisites_code
-     demo_demoApp1 preRequisites_code
-     stx_libbasic3 preRequisites_code
-     stx_libtool2 preRequisites_code
-    "
-
-    "Modified: / 08-08-2006 / 19:24:34 / fm"
-    "Created: / 17-08-2006 / 21:28:09 / cg"
-    "Modified: / 09-10-2006 / 14:27:20 / cg"
-!
+
 
 productInstallDirBaseName_code
     ^ String streamContents:[:s |
@@ -1673,7 +1625,7 @@
     |preRequisitesColl preRequisites|
 
     preRequisitesColl := self searchForPreRequisites.
-    preRequisites := self searchForPreRequisites second.
+    preRequisites := preRequisitesColl second.
     preRequisites 
         removeAllKeys:self excludedFromPreRequisites ifAbsent:[];
         removeAllKeys:preRequisitesColl first keys ifAbsent:[].  "remove the mandatory prerequisites"
@@ -1812,6 +1764,7 @@
     "Created: / 23-08-2006 / 14:27:32 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'description'!
 
 excludedFromPreRequisites
@@ -1882,7 +1835,8 @@
         ifTrue:[
             "Still no project definition - maybe it does not exist?"
             Transcript showCR:'Warning: no definition class for package: ', packageId.
-            (ProjectDefinition searchForPreRequisites:packageId) keys
+            ((self searchForPreRequisites:packageId) 
+                fold:[:d1 :d2| d1 addAll:d2; yourself]) keys
         ]
         ifFalse:[ def effectivePreRequisites ]
 
@@ -1926,6 +1880,7 @@
     "Modified: / 17-08-2006 / 19:57:46 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'description - actions'!
 
 postLoadAction
@@ -1989,6 +1944,7 @@
     "Created: / 23-01-2007 / 19:08:27 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'description - compilation'!
 
 additionalBaseAddressDefinition_bc_dot_mak
@@ -2802,6 +2758,7 @@
     "Modified: / 17-08-2006 / 19:46:29 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'file generation'!
 
 apspecFilename
@@ -3304,6 +3261,7 @@
     "Created: / 07-09-2006 / 17:07:00 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'file mappings'!
 
 autopackage_default_dot_apspec_mappings
@@ -3591,6 +3549,7 @@
                 replaceAny:':' with:$_
 ! !
 
+
 !ProjectDefinition class methodsFor:'file mappings support'!
 
 classNamesByCategory
@@ -4129,6 +4088,59 @@
     "
 !
 
+generateRequiredMakeReferences_bc_dot_mak
+    |myProjectId preRequisites|
+
+    myProjectId := self package.
+    "Note: the trailing blank in 'CFLAGS_LOCAL=$(GLOBALDEFINES) '
+     is required!!
+     Use 'pushd' instead of 'cd', since cd is executed by borland make directly.
+     'popd' is not needed, since each line is executed in
+            an own cmd.exe process.
+     'popd' is not desierable, since it masks a possible
+            error return from the 'bmake'.
+    "
+
+    preRequisites := self allPreRequisitesSorted:#effectivePreRequisites.
+    "these have been already built in preReq"
+    preRequisites removeAllFoundIn:(self allPreRequisites:#mandatoryPreRequisites).
+
+    ^ String streamContents:[:s |
+        preRequisites do:[:eachProjectId |
+            s tab; nextPutAll:'pushd ';
+                   nextPutAll:(self msdosPathToPackage:eachProjectId from:myProjectId);
+                   nextPutLine:' & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "'.
+        ].
+    ].
+
+    "
+     exept_expecco_application generateRequiredMakeReferences_bc_dot_mak
+     alspa_batch_application generateRequiredMakeReferences_bc_dot_mak
+    "
+!
+
+generateRequiredMakeReferences_make_dot_proto
+    |libPath preRequisites|
+
+    preRequisites := self allPreRequisitesSorted:#effectivePreRequisites.
+    "these have been already built in preReq"
+    preRequisites removeAllFoundIn:(self allPreRequisites:#mandatoryPreRequisites).
+
+    ^ String streamContents:[:s |
+        preRequisites do:[:projectID |
+            libPath := self pathToPackage_unix:projectID.
+            s tab; nextPutAll: 'cd ', libPath; nextPutLine:' && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"'.
+        ].
+
+        s cr.
+    ].
+
+    "
+     exept_expecco_application generateRequiredMakeReferences_make_dot_proto
+     alspa_batch_application generateRequiredMakeReferences_make_dot_proto
+    "
+!
+
 generateSubDirectories
     ^ String streamContents:[:s |
         self subProjects
@@ -4242,6 +4254,7 @@
     ^ self subProjectMakeCallsUsing:'call vcmake %1 %2'.
 ! !
 
+
 !ProjectDefinition class methodsFor:'file templates'!
 
 autopackage_default_dot_apspec
@@ -4680,6 +4693,7 @@
     "Modified: / 04-09-2012 / 11:45:49 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'loading'!
 
 ensureFullyLoaded
@@ -4846,6 +4860,7 @@
     "Modified: / 20-11-2012 / 23:06:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ProjectDefinition class methodsFor:'misc ui support'!
 
 iconInBrowserSymbol
@@ -4860,6 +4875,7 @@
     ^ super iconInBrowserSymbol
 ! !
 
+
 !ProjectDefinition class methodsFor:'private'!
 
 abbrevs
@@ -5317,7 +5333,7 @@
         ].
 
     "/ need them also...
-    self effectivePreRequisites do:[:eachPreRequisitePackage |
+    self mandatoryPreRequisites do:[:eachPreRequisitePackage |
         addPackage value:eachPreRequisitePackage
     ].
 
@@ -5463,6 +5479,7 @@
     "Created: / 03-06-2011 / 17:01:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ProjectDefinition class methodsFor:'private-extension handling'!
 
 hasSavedOverwrittenMethods
@@ -5577,6 +5594,7 @@
     ^ safeForOverwrittenMethods at:(aClass name,'>>',aSelector) ifAbsent:nil
 ! !
 
+
 !ProjectDefinition class methodsFor:'private-loading'!
 
 checkPrerequisitesForLoading
@@ -6111,6 +6129,7 @@
     ]
 ! !
 
+
 !ProjectDefinition class methodsFor:'private-prerequisites'!
 
 addReferencesToClassesFromGlobalsIn:aSetOfClasses to:usedClassReasons
@@ -6168,12 +6187,7 @@
 allPreRequisites
     "answer all (recursive) prerequisite project ids of myself - in random order."
     
-    ^ self 
-        allPreRequisitesWithParentDo:[:parent :prereq | 
-            prereq = self package ifTrue:[
-                Transcript showCR:('oops: %1 depends on itself' bindWith:prereq)
-            ].
-        ]
+    ^ self allPreRequisites:#effectivePreRequisites.
 
     "
      stx_libbasic allPreRequisites
@@ -6188,59 +6202,34 @@
     "Modified (comment): / 06-09-2011 / 08:26:06 / cg"
 !
 
-allPreRequisitesSorted
-    "answer all the prerequisites of this projects sorted in
-     the order they are needed.
-     Use this to e.g. compile packages in the dependency order"
-
-    |allPreRequisites orderedTuples effective sortedPackages|
-
-    orderedTuples := OrderedCollection new.
-    allPreRequisites := self allPreRequisites.
-
-    "/JV@2013-03-13: Added asSortedCollection to make the order of packages
-    "/as stable as possible. Makes merging of makefiles a lot easier.
-    allPreRequisites asSortedCollection do:[:eachPackageID |
-        |def|
-
-        self assert:(eachPackageID ~= self package).
-        orderedTuples add:(Array with:eachPackageID with:self package).
-
-        def := self definitionClassForPackage:eachPackageID.
-        def isNil ifTrue:[
-            Transcript showCR:'Warning: no definition class for package: ', eachPackageID.
-            effective := (self searchForPreRequisites: eachPackageID) keys.
-        ] ifFalse:[
-            "extensionPackages should alread be in the #mandatoryPreRequisites"
-            effective := def effectivePreRequisites union:def extensionPackages.
-            effective do:[:eachPrerequisitePackageID|
-                self assert:(eachPrerequisitePackageID ~= eachPackageID).
-                orderedTuples add:(Array with:eachPrerequisitePackageID with:eachPackageID).
+allPreRequisites:aSelector
+    "answer all (recursive) prerequisite project ids of myself - in random order."
+
+    |result|
+
+    result := self 
+        allPreRequisites:aSelector withParentDo:[:parent :prereq | 
+            prereq = self package ifTrue:[
+                Transcript showCR:('oops: %1 depends on itself' bindWith:prereq)
             ].
         ].
-    ].
-
-    (orderedTuples detect:[:el | el first = el second] ifNone:nil) notNil ifTrue:[self halt].
-    sortedPackages := orderedTuples topologicalSort.
-
-    "packages which only result from extension methods are used for computing the sort order,
-     but they are not added, if not present in the first place"
-    ^ sortedPackages select:[:eachProject| allPreRequisites includes:eachProject]
-
-    "
-     stx_libbasic allPreRequisitesSorted
-     stx_libbasic2 allPreRequisitesSorted
-     stx_libwidg2 allPreRequisitesSorted
-     exept_expecco allPreRequisitesSorted
-     alspa_batch_application allPreRequisitesSorted
+    result remove:self package ifAbsent:[].
+    ^ result.
+
+    "
+     stx_libbasic allPreRequisites
+     stx_libbasic2 allPreRequisites
+     stx_libview2 allPreRequisites
+     ubs_application allPreRequisites
      ubs_application allPreRequisitesSorted
-    "
-
-    "Modified: / 13-04-2011 / 15:19:13 / sr"
-    "Modified (comment): / 13-03-2013 / 00:40:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-allPreRequisitesWithParentDo:aBlock
+     exept_expecco_application allPreRequisites
+     exept_expeccoNET_application allPreRequisites
+     alspa_batch_application allPreRequisites"
+    "Modified: / 13-04-2011 / 15:30:45 / sr"
+    "Modified (comment): / 06-09-2011 / 08:26:06 / cg"
+!
+
+allPreRequisites:aSelector withParentDo:aBlock
     "answer all (recursive) prerequisite project ids of myself - in random order.
      If we exclude a project, but one of our prerequisite projects depends on it,
      then what ????"
@@ -6248,7 +6237,7 @@
     |setOfAllPreRequisites toAdd|
 
     setOfAllPreRequisites := Set new.
-    toAdd := Set withAll:self effectivePreRequisites.
+    toAdd := Set withAll:(self perform:aSelector).
 
     "is a subproject really a prerequisite??
      No, it works the other way: parent projects are prerequisites of sub projects,
@@ -6267,7 +6256,7 @@
             def isNil ifTrue:[
                 Transcript showCR:'ProjectDefinition ', aPreRequisiteProjectID, ' is missing - cannot find its preRequisites.'.
             ] ifFalse:[
-                def effectivePreRequisites
+                (def perform:aSelector)
                     select:[:eachSubPreRequisite | (setOfAllPreRequisites includes:eachSubPreRequisite) not]
                     thenDo:[:eachSubPreRequisite |
                                 Verbose == true ifTrue:[
@@ -6307,6 +6296,93 @@
     "Modified: / 20-07-2012 / 18:29:31 / cg"
 !
 
+allPreRequisitesSorted
+    ^ self allPreRequisitesSorted:#effectivePreRequisites
+!
+
+allPreRequisitesSorted:aSelector
+    "answer all the prerequisites of this projects sorted in
+     the order they are needed.
+     Use this to e.g. compile packages in the dependency order"
+
+    |allPreRequisites orderedTuples sortedPackages|
+
+    orderedTuples := OrderedCollection new.
+    allPreRequisites := self allPreRequisites:aSelector.
+
+    "/JV@2013-03-13: Added asSortedCollection to make the order of packages
+    "/as stable as possible. Makes merging of makefiles a lot easier.
+    allPreRequisites asSortedCollection do:[:eachPackageID |
+        |def preRequisites|
+
+        self assert:(eachPackageID ~= self package).
+        orderedTuples add:(Array with:eachPackageID with:self package).
+
+        def := self definitionClassForPackage:eachPackageID.
+        def isNil ifTrue:[
+            Transcript showCR:'Warning: no definition class for package: ', eachPackageID.
+            ((self searchForPreRequisites: eachPackageID) 
+                fold:[:d1 :d2| d1 addAll:d2; yourself]) keys
+        ] ifFalse:[
+            preRequisites := def perform:aSelector.
+            preRequisites removeAllFoundIn:def excludedFromPreRequisites.
+            preRequisites do:[:eachPrerequisitePackageID|
+                self assert:(eachPrerequisitePackageID ~= eachPackageID).
+                orderedTuples add:(Array with:eachPrerequisitePackageID with:eachPackageID).
+            ].
+        ].
+    ].
+
+    (orderedTuples includes:[:el | el first = el second]) ifTrue:[
+        self halt
+    ].
+    sortedPackages := orderedTuples topologicalSort.
+
+    "packages which only result from extension methods are used for computing the sort order,
+     but they are not added, if not present in the first place"
+    ^ sortedPackages select:[:eachProject| allPreRequisites includes:eachProject]
+
+    "
+     stx_libbasic allPreRequisitesSorted
+     stx_libbasic2 allPreRequisitesSorted
+     stx_libwidg2 allPreRequisitesSorted
+     exept_expecco allPreRequisitesSorted
+     alspa_batch_application allPreRequisitesSorted
+     ubs_application allPreRequisitesSorted
+    "
+
+    "Modified: / 13-04-2011 / 15:19:13 / sr"
+    "Modified (comment): / 13-03-2013 / 00:40:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+
+
+allReferences
+    "answer all (recursive) projects to which I refer - in random order."
+
+    |result|
+
+    result := self 
+        allPreRequisites:#referencedPreRequisites withParentDo:[:parent :prereq | 
+            prereq = self package ifTrue:[
+                Transcript showCR:('oops: %1 depends on itself' bindWith:prereq)
+            ].
+        ].
+    result remove:self package ifAbsent:[].
+    ^ result.
+
+    "
+     stx_libbasic allReferences
+     stx_libbasic2 allReferences
+     stx_libview2 allReferences
+     ubs_application allReferences
+     ubs_application allReferences
+     exept_expecco_application allReferences
+     exept_expeccoNET_application allReferences
+     alspa_batch_application allReferences
+    "
+!
+
 effectivePreRequisites
     "get the preRequisites, that are not excluded.
      This method appears to be obsolete, because its functionality
@@ -6347,14 +6423,18 @@
 !
 
 searchForPreRequisites: packageId
-    "answer a Dictionary where the keys are the prerequisite package for this package
-     and the values are a Set of reasons, why each package is required"
+    "answer an array containing two Dictionaries where the keys are the prerequisite package for the given package
+     and the values are a Set of reasons, why each key package is required.
+     The first entry in the array are the mandatory prereqs (required for compilation),
+     the second entry are the referenced prereqs (required for loading).
+     Referenced prereqs are due to elements accessed at execution time (such as globals)"
 
     ^ self searchForPreRequisites: packageId withSubProjects:false
 
     "
      self searchForPreRequisites
      self searchForPreRequisites:#'stx:libwidg3'
+     self searchForPreRequisites:#'stx:libtool'
      bosch_dapasx_Application searchForPreRequisites
      bosch_dapasx_pav_browser searchForPreRequisites
     "
@@ -6365,10 +6445,14 @@
 !
 
 searchForPreRequisites:packageId withSubProjects:withSubProjectsBoolean
-    "answer a Dictionary where the keys are the prerequisite package for this package
-     and the values are a Set of reasons, why each package is required"
-
-    |requiredClasses mandatoryClassesForLoadingWithReasons referencedClassesWithReasons ignoredPackages packageExtractionBlock|
+    "answer an array containing two Dictionaries where the keys are the prerequisite package for the given package
+     and the values are a Set of reasons, why each key package is required.
+     The first entry in the array are the mandatory prereqs (required for compilation),
+     the second entry are the referenced prereqs (required for loading).
+     Referenced prereqs are due to elements accessed at execution time (such as globals)"
+
+    |requiredClasses mandatoryClassesForLoadingWithReasons referencedClassesWithReasons 
+     ignoredPackages packageExtractionBlock mandatoryPackages referencedPackages|
 
     mandatoryClassesForLoadingWithReasons := Dictionary new.
     referencedClassesWithReasons := Dictionary new.
@@ -6408,39 +6492,38 @@
     self addReferencesToClassesFromGlobalsIn:requiredClasses to:referencedClassesWithReasons.
     self addReferencesToClassesFromGlobalsInMethods:(self searchForExtensionsWithProject:self package) to:referencedClassesWithReasons.
 
-
-    "don't put classes from subProjects into the required list"
-    ignoredPackages := (self siblingsAreSubProjects
-                                ifTrue:[ self searchForSiblingProjects ]
-                                ifFalse:[ self searchForSubProjects ]) asSet.
-
-    ignoredPackages 
-        add:packageId;
-        add:PackageId noProjectID.
-
     "now map classes to packages and collect the reasons"
     packageExtractionBlock := [:classesWithReasons|
             |requiredPackageReasons|
             requiredPackageReasons := Dictionary new.
             classesWithReasons keysAndValuesDo:[:usedClass :reasonsPerClass| 
-                |usedClassPackage|
-
-                usedClassPackage := usedClass package.
-                (ignoredPackages includes:usedClassPackage) ifFalse:[
-                    (requiredPackageReasons at:usedClassPackage ifAbsentPut:[OrderedSet new])
-                                    addAll:reasonsPerClass.
-                ].
+                (requiredPackageReasons at:usedClass package ifAbsentPut:[OrderedSet new])
+                                addAll:reasonsPerClass.
             ].
             requiredPackageReasons
         ].
 
+    mandatoryPackages := packageExtractionBlock value:mandatoryClassesForLoadingWithReasons.
+    referencedPackages := packageExtractionBlock value:referencedClassesWithReasons.
+
+    ignoredPackages := Set 
+        with:packageId
+        with:PackageId noProjectID.
+
+    referencedPackages removeAllKeys:ignoredPackages ifAbsent:[].
+
+    "don't put classes from subProjects into the required list"
+    ignoredPackages addAll:(self siblingsAreSubProjects
+                                ifTrue:[ self searchForSiblingProjects ]
+                                ifFalse:[ self searchForSubProjects ]) asSet.
+
+    mandatoryPackages removeAllKeys:ignoredPackages ifAbsent:[].
 
     ^ Array 
-        with:(packageExtractionBlock value:mandatoryClassesForLoadingWithReasons)
-        with:(packageExtractionBlock value:referencedClassesWithReasons)
-
-    "
-     self searchForPreRequisites
+        with:mandatoryPackages
+        with:referencedPackages.
+
+    "
      self searchForPreRequisites:#'stx:libwidg3'
      bosch_dapasx_Application searchForPreRequisites
      bosch_dapasx_pav_browser searchForPreRequisites
@@ -6451,6 +6534,7 @@
     "Created: / 06-09-2011 / 08:29:37 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'queries'!
 
 allClassNames
@@ -6821,6 +6905,7 @@
     ^ self subclassResponsibility
 ! !
 
+
 !ProjectDefinition class methodsFor:'queries-privacy'!
 
 showClassDocumentationOf:aClass
@@ -6834,6 +6919,7 @@
     "Created: / 05-11-2007 / 16:44:16 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'sanity checks'!
 
 validateDescription
@@ -6991,6 +7077,7 @@
     "Created: / 05-03-2012 / 12:18:45 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'testing'!
 
 isApplicationDefinition
@@ -7028,6 +7115,7 @@
     "Modified: / 08-02-2011 / 10:03:49 / cg"
 ! !
 
+
 !ProjectDefinition::AbbrevEntry methodsFor:'accessing'!
 
 category
@@ -7057,14 +7145,15 @@
     "Created: / 18-08-2011 / 14:18:37 / cg"
 ! !
 
+
 !ProjectDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.424 2013-03-11 12:47:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.431 2013-03-15 15:49:12 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.424 2013-03-11 12:47:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.431 2013-03-15 15:49:12 stefan Exp $'
 !
 
 version_HG
--- a/RangeError.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/RangeError.st	Mon Mar 18 22:12:08 2013 +0000
@@ -32,25 +32,32 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+    abstract superclass for errors raised when the function-result
+    is not within the allowed range.
+"
 ! !
 
+
 !RangeError class methodsFor:'initialization'!
 
 initialize
     NotifierString := 'numeric range error'.
 ! !
 
+
 !RangeError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/RangeError.st,v 1.4 2003/08/29 19:15:21 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/RangeError.st,v 1.5 2013-03-13 23:43:54 cg Exp $'
 !
 
 version_SVN
     ^ '$Id: RangeError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
 ! !
 
+
 RangeError initialize!
-
-
-
--- a/SystemChangeNotifier.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/SystemChangeNotifier.st	Mon Mar 18 22:12:08 2013 +0000
@@ -12,7 +12,7 @@
 documentation
 "
     For now, this implementation is mostly for squeak compatibility.
-    However, over time, we will move the change notification code from ClassDescription to here,
+    However, in the future, we may move the change notification code from ClassDescription to here,
     to make things easier to understand, and classDescription a little bit more lightweight.
 "
 ! !
@@ -88,5 +88,6 @@
 !SystemChangeNotifier class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/SystemChangeNotifier.st,v 1.4 2010-04-14 16:13:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SystemChangeNotifier.st,v 1.5 2013-03-13 13:32:10 cg Exp $'
 ! !
+
--- a/UnderflowError.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/UnderflowError.st	Mon Mar 18 22:12:08 2013 +0000
@@ -32,25 +32,32 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+    raised when the function-result underflows the allowed range.
+    (Float underflow)
+"
 ! !
 
+
 !UnderflowError class methodsFor:'initialization'!
 
 initialize
     NotifierString := 'underflow'.
 ! !
 
+
 !UnderflowError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnderflowError.st,v 1.3 2003/08/29 19:14:51 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnderflowError.st,v 1.4 2013-03-13 23:43:59 cg Exp $'
 !
 
 version_SVN
     ^ '$Id: UnderflowError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
 ! !
 
+
 UnderflowError initialize!
-
-
-
--- a/UnorderedNumbersError.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/UnorderedNumbersError.st	Mon Mar 18 22:12:08 2013 +0000
@@ -32,25 +32,31 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+    raised when unordered numbers are compared (i.e. complex number comparison)
+"
 ! !
 
+
 !UnorderedNumbersError class methodsFor:'initialization'!
 
 initialize
     NotifierString := 'unordered'.
 ! !
 
+
 !UnorderedNumbersError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnorderedNumbersError.st,v 1.4 2003/08/29 19:10:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnorderedNumbersError.st,v 1.5 2013-03-13 23:44:03 cg Exp $'
 !
 
 version_SVN
     ^ '$Id: UnorderedNumbersError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
 ! !
 
+
 UnorderedNumbersError initialize!
-
-
-
--- a/Win32OperatingSystem.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/Win32OperatingSystem.st	Mon Mar 18 22:12:08 2013 +0000
@@ -15839,6 +15839,7 @@
     anInteger isNil ifTrue:[^ nil].
     anInteger isSymbol ifTrue:[^ anInteger].
 
+    anInteger ==   0 ifTrue:[ ^ #ip ].
     anInteger ==   6 ifTrue:[ ^ #tcp ].
     anInteger ==  17 ifTrue:[ ^ #udp ].
     anInteger == 255 ifTrue:[ ^ #raw ].
@@ -16520,11 +16521,11 @@
 !Win32OperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.456 2013-03-11 16:00:39 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.457 2013-03-15 18:56:04 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.456 2013-03-11 16:00:39 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.457 2013-03-15 18:56:04 cg Exp $'
 !
 
 version_SVN
--- a/stx_libbasic.st	Mon Mar 18 17:55:24 2013 +0000
+++ b/stx_libbasic.st	Mon Mar 18 22:12:08 2013 +0000
@@ -569,13 +569,6 @@
     "Modified: / 18-07-2012 / 19:10:19 / cg"
 !
 
-productInstallDirBaseName
-    "Returns a default installDir which will appear in <app>.nsi.
-     This is usually not the one you want to keep"
-
-    ^ (self package asCollectionOfSubstringsSeparatedByAny:':/') last
-!
-
 productName
     "Return a product name which will appear in <lib>.rc"
 
@@ -596,11 +589,11 @@
 !stx_libbasic class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.111 2013-03-08 23:54:15 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.112 2013-03-13 16:05:29 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.111 2013-03-08 23:54:15 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.112 2013-03-13 16:05:29 cg Exp $'
 !
 
 version_SVN