| loadedParcels requiredParcelSymbols directoryString separatorString junDirectoryString junInstallFilename parcelExtention availableParcels myParcels sources junSystem | (Parcel classPool size > 1 and: [(Parcel classPool at: #OptimizePostLoad) notNil and: [(Parcel classPool at: #SearchPath) notNil]]) ifFalse: [^Dialog warn: 'Requires VisualWorks® Non-Commercial, Release 3.0']. loadedParcels := (Parcel parcels collect: [:parcel | parcel parcelFilename tail asString]) collect: [:parcelName | parcelName copyUpTo: $.]. requiredParcelSymbols := #(#AllAdvancedTools #BOSS #ColorEditing #DLLCC #DLLCCTestSuite #UIMenuEditor #UIPainter). directoryString := Filename defaultDirectory asString. separatorString := String with: Filename separator. junDirectoryString := 'Jun306'. junInstallFilename := 'Install.st'. parcelExtention := Parcel fileExtension. availableParcels := OrderedCollection new. Transcript cr; show: 'it begins building from plain vanilla setup ...'. Transcript cr; show: 'Parcels in ...'; cr. Cursor execute showWhile: [Parcel searchPathModel value do: [:dirName | | dir | ((dir := dirName asLogicalFileSpecification) exists and: [dir isDirectory]) ifTrue: [availableParcels addAll: (dir filenamesMatching: '*' , Parcel fileExtension)]]]. myParcels := OrderedCollection new. availableParcels do: [:aParcel | requiredParcelSymbols do: [:requiredParcelSymbol | (aParcel tail match: requiredParcelSymbol , parcelExtention ignoreCase: true) ifTrue: [myParcels add: aParcel]]]. myParcels do: [:aParcel | | aParcelName | aParcelName := aParcel tail copyUpTo: $.. (loadedParcels includes: aParcelName) ifFalse: [Parcel loadParcelFrom: aParcel. Transcript cr; show: aParcel asString]]. Transcript cr; show: 'Files in ...'; cr. directoryString := directoryString last = Filename separator ifTrue: [directoryString] ifFalse: [directoryString , separatorString]. sources := OrderedCollection new. junSystem := Smalltalk at: #JunSystem. (junSystem isNil not and: [(junSystem class instVarAt: (junSystem class instVarNames indexOf: #soleJunSystem asString)) isNil not]) ifFalse: [sources add: junDirectoryString , separatorString , junInstallFilename]. sources do: [:aFilename | | fileInFilename | fileInFilename := directoryString , aFilename. Transcript cr; show: fileInFilename. (Filename named: fileInFilename) fileIn]. Transcript cr; show: 'build done.'