[Pkg] Sake : Sake-Bob-kph.21.mcz
squeak-dev-noreply at lists.squeakfoundation.org
squeak-dev-noreply at lists.squeakfoundation.org
Sat Jul 11 17:48:06 UTC 2009
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)
-
- !
More information about the Packages
mailing list