[squeak-dev] Forking

Keith Hodges keith_hodges at yahoo.co.uk
Mon Dec 8 20:32:19 UTC 2008


I was asked for a clearer explanation... :-) so here goes...

=========
SakeTasks - The shortest summary I could come up with.

A package inspired by Make and ruby's Rake.

It runs tasks. Tasks consist of actions (blocks or tasks), in an order
as defined by dependencies (blocks or tasks), if the "ifs" (blocks
returning true/false, or tasks which succeed or fail), indicate that the
task is necessary.

Images can be updated, and new releases generated via
TasksRelease-c-#task* methods in which bug fixes held on mantis are
called up as dependencies..

==============
Here is an example:

ReleaseAfterSqueak310-#taskLoadSomething

^ self define: [ :task |

    task dependsOn: {

          self fixOneDay: '0000 Some bug not included, placeholder only'.

          self fixUnstable: '1111 Some bug to be included in the
Unstable Build of the next Release'.

          self fix: '2222 Some bug fix to be included in Next Release'.

          self fixEssential: '3333 Some bug to be included in any future
Updates'.
      
    }.

    task action: { Packages current load: 'Something' }
]

============

In the example, a package is to be loaded:

"Packages" contains every Package in Universes, every Package in
SqueakMap, and it can automatically attempt to find the latest code for
packages that are defined in Universes.

Packages also contains sets of packages like Damien's dev image, as
maintained by Damien himself.  So derived images (e.g. -fun -full -max
-test -seaside -dev and -web) can all be generated from package lists
maintained by (insert your name here) in Universes &/ Sake/Packages. e.g.

Packages current load: 'Squeak-dev image',

To use the feature that hunts down the very latest code available for
all the packages in Damiens image use #beta instead of #current.

Packages beta load: 'Squeak-dev image',
(similarly for -funbeta -fullbeta -maxbeta -testbeta -seasidebeta
-devbeta and -webbeta)
============

In our example, this action has a list of tasks that it depends upon,
and these call up fixes from mantis. This fix tasks will apply
themselves if they feel that they are contributing to the desired image.

          self fixOneDay: '0000 Some bug not included, placeholder only'.

In this dummy example bug fix 0000 will never be loaded.

          self fixUnstable: '1111 Some bug to be included in the
Unstable Build of the next Release'.

Here 1111 will be loaded in tasks on "Unstable" classes e.g.
ReleaseAfterSqueak310Unstable-c-taskTESTCANDIDATE

          self fix: '2222 Some bug fix to be included in Next Release'.

Here 2222 will be loaded in tasks on "Unstable" classes e.g.
ReleaseAfterSqueak310-c-taskTESTCANDIDATE

          self fixEssential: '3333 Some bug to be included in any future
Updates'.

Here 3333 will be loaded in tasks "Release" classes e.g.
ReleaseSqueak310-c-taskUPDATE3 or
ReleaseSqueak310-c-taskUPDATE1

====
dare I ask any questions?

Keith




More information about the Squeak-dev mailing list