[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