A new version of Sake-Bob was added to project Sake : http://www.squeaksource.com/Sake/Sake-Bob-kph.21.mcz
==================== Summary ====================
Name: Sake-Bob-kph.21 Author: kph Time: 11 July 2009, 6:48:04 pm UUID: a534ade9-b5ba-460c-a130-6134d711f192 Ancestors: Sake-Bob-kph.20
Updated Scheduled tasks for latest Scheduler which supports Sake-SchedulerSeaside
=============== Diff against Sake-Bob-kph.20 ===============
Item was changed: ----- Method: BobBuildImage class>>taskBuild: (in category 'as yet unclassified') ----- taskBuild: metaSelector
| reason | ^ self define: [ :task | "obtain latest meta-data from instance side" (task infoFor: metaSelector) ifNil: [ ^ self noop ]. "we set our start time to the time of the build request, the actual action may take a while longer to actually happen, however this helps to give builds instancated together a similar start time" task info timeInitiated: DateAndTime now. task if: [ task timeStart. + reason := task isBuildWanted. + reason := reason ifNil: [ + task stepNeeded. + task isBuildNeeded. + ]. + "1. continue 2. symbol 3. msg" - reason := task isBuildNeeded. "1. continue 2. symbol 3. msg" self log info build: task info name isNeeded: reason first because: reason third. . task info reason: reason third. reason first ]. task action: [ task stepAction. task actionBuild. ] ]
!
Item was changed: ----- Method: BobConfig class>>configBaseDir (in category 'as yet unclassified') ----- configBaseDir
+ ^ Directory new parent! - ^ '/bob' asDirectory!
Item was changed: ----- Method: BobBuild>>infoFilePublishAlongside: (in category 'as yet unclassified') ----- infoFilePublishAlongside: aDir
"info file for alongside the published archive, (tidy it up first)" | i | (aDir parent / self stampedName + '.info') delete writer: [ :str | i := self info copy. i keys do: [ :k | (k beginsWith: 'step') ifTrue: [ i removeKey: k ] ]. + i keys do: [ :k | (k beginsWith: 'tmp') ifTrue: [ i removeKey: k ] ]. i storeOn: str ] !
Item was added: + ----- Method: BobPeriodicWatchSqueakMap class>>services (in category 'as yet unclassified') ----- + services + + ^ { ((self do: #doAllTasks every: 1 days) + noRunHistory; + name: 'watching-squeakmap'; + description: 'Updates Packages-SqueakMap daily'; + yourself) } + + !
Item was added: + ----- Method: BobPeriodicWatchRepositories class>>services (in category 'as yet unclassified') ----- + services + + ^ { ((self do: #doAllTasks every: 300 seconds) + noRunHistory; + name: 'watching-repos'; + description: 'Reads Bob and Packages when the rss feed indicates that an update has occurred' + yourself) } + + !
Item was changed: ----- Method: BobPeriodicWatchRepositories>>disaWatchBob (in category 'as yet unclassified') ----- disaWatchBob
^ SakeTask checkUrl: 'http://www.squeaksource.com/Bob/feed.rss' onChanged: [ + self log info: 'Bob Repository Has Changed'. - self log info: 'Bob Repository Updated'. Installer squeaksource project: 'Bob'; + + install: 'Bob-Releases'; + install: 'Tasks-Squeak310'; - install: 'Tasks-Common'; install: 'Tasks-Squeak311'; + yourself. - install: 'Tasks-Squeak310'; - install: 'Bob-Releases'. ]. !
Item was added: + ----- Method: BobPeriodicWatchUniverses class>>services (in category 'as yet unclassified') ----- + services + ^ { ((self do: #doAllTasks every: 15 minutes) + noRunHistory; + name: 'watching-universes'; + description: 'Updates Packages-Library from Universes every 15 minutes'; + yourself) } + + !
Item was added: + ----- Method: BobBuildImage>>isBuildWanted (in category 'as yet unclassified') ----- + isBuildWanted + | | + + "if the output directory doesnt exist then - dont build" + self outputDir asDirectory exists ifFalse: [ ^ { false. #notWanted. 'Output directory not present: ', self outputDir.}. ]. + + "if we have the don't flag - dont build" + #dont = info when ifTrue: [ ^ #(false #dont 'dont flag set') ]. + false = info when ifTrue: [ ^ #(false #dont 'dont flag false') ]. + + ^ nil!
Item was changed: ----- Method: BobBuildImage>>isBuildNeededForBuildNow (in category 'as yet unclassified') ----- isBuildNeededForBuildNow + - | | - - "if the output directory doesnt exist then - dont build" - self outputDir asDirectory exists ifFalse: [ 'no - ', self outputDir, ' not found' ]. - "if we have the don't flag - dont build" - info when = #dont ifTrue: [ ^ #(false #dont 'dont flag set') ]. - info when = false ifTrue: [ ^ #(false #dont 'dont flag false') ]. - - self stepNeeded. - - latest := self infoFileReadLatest. zipFile := self resolveFile: info image asFile ifNone: [:msg | ^ { false. #notFound. msg.} ]. ^ { true. #itsAnOrder. ('building ', self info name). }
!
Item was changed: ----- Method: BobBuildImage>>isBuildNeeded (in category 'as yet unclassified') ----- isBuildNeeded - - | wait dependentFile | - - "if the output directory doesnt exist then - dont build" - self outputDir asDirectory exists ifFalse: [ ^ { false. #notWanted. 'Output directory not present: ', self outputDir.}. ]. - "if we have the don't flag - dont build" - #dont = info when ifTrue: [ ^ #(false #dont 'dont flag set') ]. - false = info when ifTrue: [ ^ #(false #dont 'dont flag false') ]. - - self stepNeeded. - - "if an explicit build time has been set and not yet reached - dont build" + | dependentFile wait | + ((info when isKindOf: DateAndTime) and: [ info when > self timeStart ]) - ((info when isKindOf: DateAndTime) and: [ info when > info timeStart ]) ifTrue: [ ^ { false. #notYet. ('time is not yet ', info when asString). } ].
latest := self infoFileReadLatest. "if 'when' is set to a file obtain creation time, if not use info image" info when isFileOrDirectory ifTrue: [ dependentFile := self resolveFile: info when ifNone: [:msg | ^ { false. #notFound. msg.}]. self info dependentCreationTime: dependentFile creationTime. zipFile := self resolveFile: info image ifNone: [:msg | ^ { false. msg.} ]. ] ifFalse: [ dependentFile := zipFile := self resolveFile: info image asFile ifNone: [:msg | ^ { false. #notFound. msg.} ]. self info dependentCreationTime: (info imageCreationTime ifNil: [ zipFile creationTime ]). ].
"has our starting image changed? if so" (latest dependentCreationTime ~= self info dependentCreationTime) ifTrue: [ self dependentFileChanged: dependentFile. ^ { true. #dependentChanged. (dependentFile asString , ' has changed').} ] ifFalse: [ ((true = info when) or: [ info when isFileOrDirectory ]) ifTrue: [ ^ { false. #waitingForChange. ('waiting for ', dependentFile asString , ' to change').} ]]. "we have a new build id, so we build" latest build ~= info build ifTrue: [ ^ { true. #newBuildNumber. ('new build number ',info build).} ]. (info when isKindOf: Duration) ifTrue: [ wait := latest startTime + info when - TimeStamp now wait > 0 ifTrue: [ ^ { false. #waiting. (wait seconds asString, ' seconds to go').} ]. ].
"an explicit build time has been given, and this is present existing latest" ((info when isKindOf: DateAndTime) and: [ info when <= latest timeStart ]) ifTrue: [ ^ { false. #done. ((latest package ifNil: [ latest name ]) , ' already built'). } ]. ^ { true. #itsTime. ('building ', self info name). }.
!
Item was added: + ----- Method: BobPeriodicBuilds class>>services (in category 'as yet unclassified') ----- + services + ^ { + + (self do: #doAllTasks every: 600 seconds) + noRunHistory; + name: 'builder'; + description: 'The main Bob task for periodically building everything'; + yourself. + } + !
Item was changed: ----- Method: BobPeriodicWatchRepositories>>taskWatchPackages (in category 'as yet unclassified') ----- taskWatchPackages
| | ^ SakeTask checkUrl: 'http://www.squeaksource.com/Packages/feed.rss' onChanged: [ + self log info: 'Packages Library Has Changed'. - self log info: 'Packages Library Updated'.
Installer squeaksource project: 'Packages'; install: 'Packages-Library'. ]. !
Item was changed: ----- Method: BobBuildImage class>>taskBuildNow: (in category 'as yet unclassified') ----- taskBuildNow: metaSelector
| isNeeded | ^ self define: [ :task | "obtain latest meta-data from instance side" (task infoFor: metaSelector) ifNil: [ ^ self noop ]. task if: [ task timeStart. + isNeeded := task isBuildWanted. + isNeeded := isNeeded ifNil: [ + task stepNeeded. + task isBuildNeededForBuildNow. + ]. - isNeeded := task isBuildNeededForBuildNow. - self log info build: task info name isNeeded: isNeeded first because: isNeeded third. . task info reason: isNeeded third.
isNeeded first. ]. task action: [ task stepAction. task actionBuild. ] ]
!
Item was removed: - ----- Method: BobPeriodicWatchSqueakMap class>>initialize (in category 'as yet unclassified') ----- - initialize - super initialize. - self scheduler addTask: ((self do: #doAllTasks every: 1 days) - noRunHistory; - description: 'watching-squeakmap'; - yourself) - - !
Item was removed: - ----- Method: BobPeriodicWatchRepositories class>>initialize (in category 'as yet unclassified') ----- - initialize - super initialize. - self scheduler addTask: ((self do: #doAllTasks every: 300 seconds) - noRunHistory; - description: 'watching-repos'; - yourself) - - !
Item was removed: - ----- Method: BobPeriodicWatchUniverses class>>initialize (in category 'as yet unclassified') ----- - initialize - super initialize. - self scheduler addTask: ((self do: #doAllTasks every: 15 minutes) - noRunHistory; - description: 'watching-squeakmap'; - yourself) - - !
Item was removed: - ----- Method: BobPeriodicBuilds class>>start (in category 'as yet unclassified') ----- - start - super initialize. - self scheduler addTask: ((self do: #doAllTasks every: 600 seconds) - noRunHistory; - description: 'builder'; - yourself) - - !
packages@lists.squeakfoundation.org