[squeak-dev] The Trunk: ReleaseBuilder-eem.173.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Jan 14 17:41:04 UTC 2018


Eliot Miranda uploaded a new version of ReleaseBuilder to project The Trunk:
http://source.squeak.org/trunk/ReleaseBuilder-eem.173.mcz

==================== Summary ====================

Name: ReleaseBuilder-eem.173
Author: eem
Time: 14 January 2018, 9:41:01.742395 am
UUID: 28681eda-100f-47a1-bd88-9f1a3a767951
Ancestors: ReleaseBuilder-eem.172

Allow the user to answer questions up front, hence allowing running the release process without user intervention,.  This to debug the new bytecode set which looks to have a store check issue that is only seen long after the system is recompiied].

=============== Diff against ReleaseBuilder-eem.172 ===============

Item was changed:
  Object subclass: #ReleaseBuilder
  	instanceVariableNames: ''
+ 	classVariableNames: 'DeferredTask NextMajorVersion NextMinorVersion NextTask QAndA'
- 	classVariableNames: 'DeferredTask NextMajorVersion NextMinorVersion NextTask'
  	poolDictionaries: ''
  	category: 'ReleaseBuilder'!
  
  !ReleaseBuilder commentStamp: 'mt 6/22/2016 18:08' prior: 0!
  I'm the script that prepares a trunk image for release.
  
  Just do "ReleaseBuilder doNextStep" repeatedly until the next release is done.
  
  For the final release step:
  - If you want to try it locally, change #localBuild to return true.
  - Most of the code operates (read-only) on the build repository, which is usually the trunk. For releases, there is a release repository, to which some package versions will be copied from trunk.!

Item was added:
+ ----- Method: ReleaseBuilder class>>askInAdvance (in category 'preparing') -----
+ askInAdvance
+ 	"Preload QAndA with answers to any questions that will be asked during saving."
+ 	"ReleaseBuilder askInAdvance"
+ 	(self systemNavigation allCallsOn: #confirm:orCancel:title: localTo: self class) do:
+ 		[:methodRef|
+ 		 methodRef compiledMethod methodNode nodesDo:
+ 			[:node|
+ 			 (node isMessage
+ 			  and: [node selector key == #confirm:orCancel:title:
+ 			  and: [node receiver isVariableNode
+ 			  and: [node receiver key = 'self']]]) ifTrue:
+ 				[[:questionNode :ingored :titleNode|
+ 				  QAndA
+ 					at: titleNode key
+ 					put: (Project uiManager
+ 							confirm: questionNode key translated
+ 							orCancel: [^self]
+ 							title: titleNode key translated)]
+ 								valueWithArguments: node arguments asArray]]]!

Item was changed:
  ----- Method: ReleaseBuilder class>>checkForDirtyPackages (in category 'scripts - support') -----
  checkForDirtyPackages
  
  	| modifiedWorkingCopies unmergedWorkingCopies |
  	MCWorkingCopy checkModified: true.
  	modifiedWorkingCopies := MCWorkingCopy allManagers
  		select: [:wc | wc ancestors size = 1 and: [wc modified] ].
  	unmergedWorkingCopies := MCWorkingCopy allManagers
  		select: [:wc | (wc ancestors size = 1) not ].
  
  	unmergedWorkingCopies ifNotEmpty: [
  		"Sort to simplify exploration. MC browser does also show packages sorted."
  		(modifiedWorkingCopies sorted: [:wc1 :wc2 | wc1 packageName <= wc2 packageName]) explore.
  		Warning signal: 'There are unmerged packages.'].
  
  	modifiedWorkingCopies ifNotEmpty: [
  		"Sort to simplify exploration. MC browser does also show packages sorted."
  		(modifiedWorkingCopies sorted: [:wc1 :wc2 | wc1 packageName <= wc2 packageName]) explore.
  		
+ 		(self
- 		(Project current uiManager
  			confirm: 'Do you want to discard all local changes?'
  			orCancel: [^ Error signal: 'Release building canceled.']
  			title: 'Dirty Packages Found')
  				ifTrue: [modifiedWorkingCopies do: [:wc |
  					[(self buildRepository versionWithInfo: wc ancestors first) load]
  						on: Warning do: [:warning | warning resume]]]].!

Item was added:
+ ----- Method: ReleaseBuilder class>>clearQAndA (in category 'preparing') -----
+ clearQAndA
+ 	"Get rid of any previous answers to questions"
+ 	QAndA := Dictionary new!

Item was added:
+ ----- Method: ReleaseBuilder class>>confirm:orCancel:title: (in category 'preparing') -----
+ confirm: aString orCancel: cancelBlock title: titleString
+ 	"Allow questions to be answered in advance."
+ 	^QAndA
+ 		at: titleString
+ 		ifAbsent:
+ 			[Project uiManager
+ 				confirm: aString translated
+ 				orCancel: cancelBlock
+ 				title: titleString translated]!

Item was changed:
  ----- Method: ReleaseBuilder class>>initialize (in category 'class initialization') -----
  initialize
+ 
+ 	QAndA ifNil: [self clearQAndA].
+ 
  	"We have to be after AutoStart so that Morphic is up and running."
  	Smalltalk addToStartUpList: ReleaseBuilder after: AutoStart.
+ 
+ 	SystemVersion newVersion: 'Squeak6.0alpha'!
- 	
- 	SystemVersion newVersion: 'Squeak6.0alpha'.!

Item was changed:
  ----- Method: ReleaseBuilder class>>initializeTemplate (in category 'class initialization') -----
  initializeTemplate
  	
  	^ 'initialize
+ 
+ 	QAndA ifNil: [self clearQAndA].
+ 
  	"We have to be after AutoStart so that Morphic is up and running."
  	Smalltalk addToStartUpList: ReleaseBuilder after: AutoStart.
+ 
+ 	SystemVersion newVersion: ''{1}'''!
- 	
- 	SystemVersion newVersion: ''{1}''.'!

Item was changed:
  ----- Method: ReleaseBuilder class>>recompileAll (in category 'scripts - support') -----
  recompileAll
  
  	(Smalltalk classNamed: #EncoderForSistaV1) ifNotNil:
  		[:sistaBytecodeSet|
  		 CompiledCode preferredBytecodeSetEncoderClass ~~ sistaBytecodeSet ifTrue:
+ 			[(self
- 			[(Project uiManager
  				confirm: 'Do you want to make it the default in this release?'
  				orCancel: [false]
  				title: 'The SistaV1 Bytecode Set Is Available') ifTrue:
  					[CompiledCode
  						installSecondaryBytecodeSet: sistaBytecodeSet;
  						preferredBytecodeSetEncoderClass: sistaBytecodeSet]]].
  
  	Compiler recompileAll!

Item was changed:
  ----- Method: ReleaseBuilder class>>setNewSystemVersion: (in category 'manual') -----
  setNewSystemVersion: version
  
+ 	| initializeMethodSource |
+ 	initializeMethodSource := self initializeTemplate format: {version}.
+ 	(self class >> #initialize) getSource asString ~= initializeMethodSource ifTrue:
+ 		[self class
+ 			compile: initializeMethodSource
+ 			classified: 'class initialization'].
- 	self class
- 		compile: (self initializeTemplate format: {version})
- 		classified: 'class initialization'.
  
  	self initialize.
  	self assert: (SystemVersion current version beginsWith: self versionString).
  	
  	SystemVersion current isRelease ifFalse: [
+ 		self inform: ('You just changed the system version to {1}.\Please upload the changed ''ReleaseBuilder'' package to\\   {2}\\so that this version change will be official.' translated withCRs format: {SystemVersion current version. self buildRepository description})]!
- 		self inform: ('You just changed the system version to {1}.\Please upload the changed ''ReleaseBuilder'' package to\\   {2}\\so that this version change will be official.' translated withCRs format: {SystemVersion current version. self buildRepository description})].!



More information about the Squeak-dev mailing list