Today's Smalltalk Daily gives a practical development build example: how to build a BottomFeeder development image. To watch, click on the image below. To get the script, click here, or scroll down to the bottom for the full script text.

You can also watch it on Vimeo:
Build a BottomFeeder Dev Image from James Robertson on Vimeo.
Or on YouTube:
Here's the script:
"build a dev image. NOTE: If you aren't on Windows, do a global search/replace of the backslash with the appropriate character - a / on anything but Mac 8/9, which should be a : "
"To use this script, simply start your base image with this command line: visual visual.im -filein build-bf-dev.st"
| profile |
#(
'$(VISUALWORKS)/database/OracleThapiEXDI.pcl'
'$(VISUALWORKS)/contributed/PostgreSQL/StoreForPostgreSQL.pcl'
'$(VISUALWORKS)/store/StoreForOracle.pcl'
'$(VISUALWORKS)/contributed/LessProgress.pcl'
'$(VISUALWORKS)/parcels/RBSUnitExtensions.pcl'
'$(VISUALWORKS)/net/NetClients.pcl'
'$(VISUALWORKS)/contributed/Heeg/GHSpeedUpXMLParser.pcl'
'$(VISUALWORKS)/parcels/Model-Observables.pcl'
'$(VISUALWORKS)/parcels/CE.pcl'
'$(VISUALWORKS)/preview/Unicode/AllEncodings.pcl'
'$(VISUALWORKS)/preview/Unicode/UnicodeCharacterInput.pcl'
'$(VISUALWORKS)/dllcc/DLLCC.pcl'
'$(VISUALWORKS)/parcels/XSL.pcl'
'$(VISUALWORKS)/parcels/UIPainter.pcl'
'$(VISUALWORKS)/opentalk/Opentalk-STST.pcl'
'$(VISUALWORKS)/webservices/UDDIInquire.pcl'
'$(VISUALWORKS)/parcels/MacExtra.pcl'
'$(VISUALWORKS)/packaging/RuntimePackager.pcl'
'$(VISUALWORKS)/contributed/VRGoodies/VRFileReading.pcl'
'$(VISUALWORKS)/contributed/CraftedMemoryPolicy/CraftedMemoryPolicy.pcl'
'$(VISUALWORKS)/waveserver/Wave-Server-Base.pcl'
'$(VISUALWORKS)/waveserver/Wave-Server.pcl'
'$(VISUALWORKS)/obsolete/Tools-FlyByHelp.pcl'
) do: [:each |
Parcel loadParcelFrom: each].
"set space sizes to a bigger client state"
ObjectMemory sizesAtStartup: #(5.0 5.0 10.0 5.0 2.0 10.0 3.0).
"read in VW Settings - the next two sections assume that you have saved your settings for Store, and that you have a connection named cincomsmalltalk"
Store.RepositoryManager importRepositoriesFromStream: 'repositories.xml' asFilename readStream.
"load from Store - connect to public store first"
profile := Store.RepositoryManager repositories
detect: [:each | 'cincomsmalltalk' = each name]
ifNone: [nil].
profile ifNil: [^self].
Store.DbRegistry connectTo: profile.
"now load from store"
(Store.Bundle newestVersionWithName: 'SpellChecker') loadSrc.
versions := (Store.Package withName: 'ImageConfig' version: '7.10').
versions notEmpty
ifTrue: [versions first loadSrc].
(Store.Package newestVersionWithName: 'WinGDIPlusInterface') loadSrc.
(Store.Bundle newestVersionWithName: 'EpiWin32Folder') loadSrc.
(Store.Package newestVersionWithName: 'GIFSupport') loadSrc.
(Store.Package newestVersionWithName: 'Weaklings') loadSrc.
(Store.Package newestVersionWithName: 'Emote-Support') loadSrc.
(Store.Package newestVersionWithName: 'ExtraEmphases') loadSrc.
(Store.Package newestVersionWithName: 'ExtraActivity') loadSrc.
(Store.Package newestVersionWithName: 'VRCommonDialogs') loadSrc.
(Store.Package newestVersionWithName: 'XmlRpcClient') loadSrc.
(Store.Package newestVersionWithName: 'SubForkPreload') loadSrc.
(Store.Package newestVersionWithName: 'SubFork') loadSrc.
(Store.Package newestVersionWithName: 'Http-Overrides') loadSrc.
(Store.Package newestVersionWithName: 'NetResources') loadSrc.
(Store.Package newestVersionWithName: 'NetResourcesHTTP') loadSrc.
(Store.Package newestVersionWithName: 'NetResourcesHTML') loadSrc.
(Store.Package newestVersionWithName: 'LibTidy') loadSrc.
(Store.Package newestVersionWithName: 'Browsing-Assist') loadSrc.
versions := (Store.Package withName: 'TimeSoZone' version: '8').
versions notEmpty
ifTrue: [versions first loadSrc].
(Store.Package newestVersionWithName: 'XML Configuration Files') loadSrc.
(Store.Package newestVersionWithName: 'PatchFileDelivery') loadSrc.
(Store.Package newestVersionWithName: 'Twoflower') loadSrc.
(Store.Package newestVersionWithName: 'TwoflowerHTMLParser') loadSrc.
(Store.Package newestVersionWithName: 'Win32TaskbarSupport') loadSrc.
(Store.Package newestVersionWithName: 'Windows TrayIcons') loadSrc.
(Store.Package newestVersionWithName: 'SandboxedSmalltalk') loadSrc.
(Store.Package newestVersionWithName: 'RelativeURL') loadSrc.
(Store.Package newestVersionWithName: 'File Repository') loadSrc.
versions := (Store.Bundle withName: 'WSBundle' version: '2.41').
versions notEmpty
ifTrue: [versions first loadSrc].
(Store.Package newestVersionWithName: 'CommonTypeMappings') loadSrc.
(Store.Package newestVersionWithName: 'BtfNamespace') loadSrc.
"now load BottomFeeder"
(Store.Package newestVersionWithName: 'BFSharedicons') loadSrc.
versions := (Store.Bundle withName: 'Blog-Tools' version: '7.16').
versions notEmpty
ifTrue: [versions first loadSrc].
versions := (Store.Bundle withName: 'BottomFeeder' version: '18.29').
versions notEmpty
ifTrue: [versions first loadSrc].
"disconnect"
Store.DbRegistry disconnect.
"set version and release date info"
RSSPersistence.SystemStartup version: '4.6'.
RSSPersistence.SystemStartup releaseDate: (Date today printString).
RSSPersistence.SystemStartup logo: 'watermark.bmp'.
RSSPersistence.SystemStartup helpLogo: 'watermark.bmp'.
"save image"
ObjectMemory saveAs: 'btf-dev1' thenQuit: false.