links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
SqueakMap Update Streams
Last updated at 1:10 am UTC on 17 January 2006
Posted on 15.05.2003 on SqueakDevList:

After some discussion with Göran, Avi, and Daniel about how to manage incremental development a little better, I've set up a small SM package which allows you to provide and receive update streams for any package hosted at SqueakMap (see http://map1.squeakfoundation.org/sm/package/6aa919cb-3b7c-4c4f-93de-ca90c612c6fe).

The essential idea here is to bring a well-known technology to SqueakMap (rather than inventing a whole new set of tools - this may be done in the context of Monticello). The update streams are intended for packages which rapidly change and where providing a 'full' package any time something changes is too bothersome or simply not possible.

It's pretty simple to use your own update stream, so here's the complete how-to:

Step 1: Define your update stream location.

You need a directory which is accessible via http for download and via ftp for upload. While not strictly necessary, I recommend having a separate directory for every package since it will simplify your work in the long-term.

Step 2: Annotate your SqueakMap package

I've been talking to Göran about including a few things in SM1.1 but as we are still at 1.0 you will need to use a specific kind of annotation in your package description (note: package DESCRIPTION not version comment). The annotation needs to look like:
        [loadUpdatesAt: http://my.place.here/somedir/mypackage] 
        [storeUpdatesAt: ftp://myName@my.place.here/upload-loc/mypackage] 
For an example, check out the package description for this package or Balloon3D.

Step 3: Update SM from the net

Since SM caches some things you will probably have to update SM so
that it sees the annotations above. (don't forget this - I've got bitten by this a couple of times!)

Step 4: Load the UpdateStreams package

If you haven't yet then now is the time ;-)

Step 5: Open the 'Update Loader' (from world menu/open)

Here you should see all the packages for which update streams have
defined. The package you annotated in step 2 should show up or else you've got something wrong (did you forget step 3? ;-)

Note from Tim Rowledge As currently setup you will only see update streams for package that you have loaded in the image.

Step 6: Choose 'create update stream' from the context menu

This will be the first real test of the upload url. NOTE: You may get an error saying that the server responded 'no such
file' which is perfectly reasonable. Just say 'OK' to proceed.

Step 7: Post a test update

Once the update stream has been initialized you will be asked if you
want to post a test update. Say yes. The update is an empty update and will ensure that all works just the way it should. You will be walked through the entire publishing process with a few additional warnings here and there. Once complete the update loader should indicate '1 new' update for you.

Step 8: Load updates

Select your package and choose 'load updates'. This will test the
download process. If everything works out you should get the info that '1 new update was loaded'.

Step 9: Posting 'real' updates

Make up a change set and, from the file list, choose 'broadcast as
update'. You will be prompted with the packages which have update streams (as well as all the server groups for the Squeak image updates). Select the package you want to send this update to and you will be taken through the update process.

Note from Tim Rowledge Your original file will be renamed; Fooble.cs will turn into 0003Fooble.cs and so on.

Step 10: Receiving 'real' updates

Choose 'update list' from the Update loader to see if there are any
new updates for the packages you have. Then choose 'load updates' for the package you want to update and you're all there.

Note from Tim Rowledge In Preferences you can choose to save copies of downloaded updates (why do we _down_load _up_dates?) which will be saved in {default directory}/updates/{package name}

That's really all there is to it. I've tested it with 3.4, 3.5, and 3.6 and it seems to work pretty well so far.