[squeak-dev] The Trunk: ReleaseBuilder-mt.159.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Aug 17 10:23:23 UTC 2016


Marcel Taeumel uploaded a new version of ReleaseBuilder to project The Trunk:
http://source.squeak.org/trunk/ReleaseBuilder-mt.159.mcz

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

Name: ReleaseBuilder-mt.159
Author: mt
Time: 17 August 2016, 10:22:45.937517 am
UUID: 1920f248-643b-9a4a-b1c4-0affddce0911
Ancestors: ReleaseBuilder-mt.158

Clean-up in the release builder in preparation for the code freeze.

=============== Diff against ReleaseBuilder-mt.158 ===============

Item was added:
+ ----- Method: ReleaseBuilder class>>checkCurrentProjects (in category 'scripts - support') -----
+ checkCurrentProjects
+ 
+ 	Project current isMorphic ifFalse: [
+ 		Warning signal: 'The current project is not Morphic. Please create a new Morphic project, enter it, and restart the release building process.'].
+ 	
+ 	Project allProjects size = 1 ifFalse: [
+ 		Warning signal: 'There should only be one project.'].!

Item was changed:
+ ----- Method: ReleaseBuilder class>>doNextStep (in category 'manual - steps') -----
- ----- Method: ReleaseBuilder class>>doNextStep (in category 'manual') -----
  doNextStep
  	"Use this call to perform the manual steps in the release process."
  	
  	| versionString |
  	SystemVersion current isRelease ifTrue: [
  		^ self inform: 'This is a release image. Please use a trunk image to prepare the next release'].
  	
  	versionString := SystemVersion current version.
  	
  	SystemVersion current isAlpha ifTrue: [^ self step1FeatureFreeze].
  	SystemVersion current isFeatureFreeze ifTrue: [^ self step2CodeFreeze].
  	SystemVersion current isReleaseCandidate ifTrue: [
  		"Still code freeze and another RC? Or do the release?"
  		(UIManager default
  			chooseFrom: #('Create next release candidate' 'Create next release' 'Do nothing') lines: #(2)
  			title: versionString) in: [:answer |
  				answer = 1 ifTrue: [^ self step3NextReleaseCandidate].
  				answer = 2 ifTrue: [^ self step4Release]].
  		^ self].!

Item was added:
+ ----- Method: ReleaseBuilder class>>ensureMorphicTopProject (in category 'scripts - support') -----
+ ensureMorphicTopProject
+ 
+ 	Project current isMorphic ifFalse: [
+ 		Warning signal: 'The current project is not Morphic. A new Morphic project will be created and entered. Please restart the release building process after that.'.
+ 		MorphicProject new enter "current process terminates after this"].!

Item was changed:
  ----- Method: ReleaseBuilder class>>prepareEnvironment (in category 'preparing') -----
  prepareEnvironment
  	"Prepare everything that should be done for a new image build. Clear caches, passwords, etc."
  	"ReleaseBuilder prepareNewBuild"
  	
  	self
+ 		checkCurrentProjects;
  		clearCaches;
  		configureTools;
  		setPreferences;
  		configureDesktop.
  		
  	DeferredTask := [PreferenceWizardMorph new openInWorld].
  	
  	"If you save-and-quit the image after calling #prepareEnvironment, ensure that the next image startup will be fast."
  	Project current world doOneCycle.!

Item was changed:
  ----- Method: ReleaseBuilder class>>prepareSourceCode (in category 'preparing') -----
  prepareSourceCode
  	"Update code. Remove foreign packages."
  
  	MCMcmUpdater defaultUpdateURL: self buildRepository description.
  
  	MCMcmUpdater updateMissingPackages: true.
  	MCMcmUpdater enableUpdatesForAllPackages.
  
+ 	TestCase new ensureInternetConnectionTo: self buildRepository description.
+ 	
+ 	"Flush all caches. If a previous download failed this is often helpful"
+ 	MCFileBasedRepository flushAllCaches.
- 	MCMcmUpdater default doUpdate: false. "non-interactive".
  
+ 	[MCMcmUpdater default doUpdate: false. "non-interactive"]
+ 		on: MCEmptyVersion do: [:warning | warning resume].
+ 
  	self
  		unloadForeignPackages;
  		checkForDirtyPackages;
  		loadWellKnownPackages;
  		checkForUndeclaredSymbols.
  	
  	Compiler recompileAll.!

Item was changed:
+ ----- Method: ReleaseBuilder class>>requestNextReleaseVersion (in category 'manual') -----
- ----- Method: ReleaseBuilder class>>requestNextReleaseVersion (in category 'manual - steps') -----
  requestNextReleaseVersion
  	"self requestNextReleaseVersion"
  	
  	| nextMinor nextMajor current |
  	current := {
  		SystemVersion current majorVersionNumber.
  		SystemVersion current minorVersionNumber}.
  	nextMinor := {
  		current first.
  		current second + 1}.
  	nextMajor := {
  		current first + 1.
  		0}.
  
  	(UIManager default
  		chooseFrom: {
  			'{1}.{2}' format: {nextMinor first. nextMinor second}.
  			'{1}.{2}' format: {nextMajor first. nextMajor second}}
  		title: 'Please Choose Next Version') in: [:answer |
  			answer ifNil: [^ self requestNextReleaseVersion].
  			answer = 1 ifTrue: [
  				NextMinorVersion := nextMinor second].
  			answer = 2 ifTrue: [
  				NextMajorVersion := nextMajor first.
  				NextMinorVersion := 0]].!

Item was added:
+ ----- Method: ReleaseBuilder class>>saveAsNewRelease (in category 'saving') -----
+ saveAsNewRelease
+ 	"Use this to create a new release image to be used in the automated release artifact building process on http://www.github.com/squeak-smalltalk/squeak-app."
+ 
+ 	| fileName |
+ 	self setNewSystemVersion: self versionString.
+ 	
+ 	fileName := ('squeak-{1}.{2}{3}' format: {
+ 		SystemVersion current majorVersionNumber.
+ 		SystemVersion current minorVersionNumber.
+ 		self releaseLocally ifTrue: ['-offline'] ifFalse: ['']}).
+ 	Smalltalk saveAs: fileName.
+ 
+ 	"Update the image state."
+ 	self
+ 		prepareSourceCode;
+ 		prepareEnvironment;
+ 		switchToNewRepository: self releaseRepository;
+ 		addAdditionalRepositories.
+ 	
+ 	Smalltalk condenseChanges.
+ 	Smalltalk snapshot: true "Important!!" andQuit: true.!

Item was changed:
  ----- Method: ReleaseBuilder class>>saveAsNewTrunk (in category 'saving') -----
  saveAsNewTrunk
+ 	"Use this to create a new release image to be used in the automated release artifact building process on http://www.github.com/squeak-smalltalk/squeak-app."
- 	"Use this to create a new trunk image to be used by smalltalkCI."
  
  	| fileName |	
  	fileName := ('squeak-trunk{1}' format: {
  		self releaseLocally ifTrue: ['-offline'] ifFalse: ['']}).
+ 	Smalltalk saveAs: fileName.
  	
+ 	self
- 	[ self
- 		setTopProject;
  		prepareSourceCode;
  		prepareEnvironment;
  		switchToNewRepository: self buildRepository.
- 	] on: MCEmptyVersion do: [:warning | warning resume].
- 
- 	Smalltalk saveAs: fileName.
  	
  	Smalltalk condenseChanges.
  	Smalltalk snapshot: true "Important!!" andQuit: true.!

Item was changed:
  ----- Method: ReleaseBuilder class>>setNewSystemVersion: (in category 'manual') -----
  setNewSystemVersion: version
  
  	self class
  		compile: (self initializeTemplate format: {version})
  		classified: 'class initialization'.
  
  	self initialize.
+ 	self assert: self versionString = SystemVersion current version.
  	
+ 	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})].!
- 	SystemVersion current isRelease
- 		ifFalse: [self uploadNewSystemVersion].!

Item was changed:
  ----- Method: ReleaseBuilder class>>setPreferences (in category 'scripts') -----
  setPreferences
  	"Preferences class defaultValueTableForCurrentRelease"
  
  "	Preferences outOfTheBox."  "<-- uncomment after #defaultValueTableForCurrentRelease is fixed up."
  
  	"General User interaction"
  	Preferences
  		enable: #generalizedYellowButtonMenu ;
  		enable: #swapMouseButtons;
  		disable: #mouseOverForKeyboardFocus.
  	Morph indicateKeyboardFocus: true.
  	Project uiManager openToolsAttachedToMouseCursor: false.
  	SearchBar useScratchPad: false.
  	
  	HandMorph sendMouseWheelToKeyboardFocus: false.
  	HandMorph synthesizeMouseWheelEvents: true.
  	
  	"Text input."
  	TextEditor
  		 autoEnclose: true ;
  		 autoIndent: true ;
  		 encloseSelection: false ;
  		 destructiveBackWord: false ;
  		 blinkingCursor: true ;
  		 dumbbellCursor: false.
  	PluggableTextMorph simpleFrameAdornments: false.
  	
  	"Windows"
  	SystemWindow reuseWindows: false.
  	SystemWindow windowsRaiseOnClick: true.
  	SystemWindow windowTitleActiveOnFirstClick: true.
  	Model windowActiveOnFirstClick: false. "Not good for little screen real estate."
  	Model useColorfulWindows: false. 
  
  	Preferences
  		disable: #showSplitterHandles;
  		disable: #fastDragWindowForMorphic.	
  	CornerGripMorph
  		drawCornerResizeHandles: false;
  		passiveColor: (Color gray: 0.85);
  		activeColor: (Color r: 1 g: 0.599 b: 0.0).
  	ProportionalSplitterMorph
  		 smartHorizontalSplitters: false ;
  		 smartVerticalSplitters: false.
  
  	"Scroll bars."
  	Preferences
  		enable: #scrollBarsNarrow;
  		enable: #scrollBarsOnRight;
  		enable: #alwaysHideHScrollbar;
  		disable: #alwaysShowHScrollbar;
  		disable: #alwaysShowVScrollbar.
  	ScrollBar
  		scrollBarsWithoutArrowButtons: true;
  		scrollBarsWithoutMenuButton: true.
  	ScrollPane
  		useRetractableScrollBars: false.
  
  	"Rounded corners."
  	Morph preferredCornerRadius: 8.
  	SystemWindow roundedWindowCorners: false.
  	DialogWindow roundedDialogCorners: false.
  	MenuMorph roundedMenuCorners: false.
  	PluggableButtonMorph roundedButtonCorners: false.
  	ScrollBar roundedScrollBarLook: false.
  	
  	"Gradients."
  	SystemWindow gradientWindow: false.
  	DialogWindow gradientDialog: false.
  	MenuMorph gradientMenu: false.
  	PluggableButtonMorph gradientButton: false.
  	ScrollBar gradientScrollBar: false.
  
  	"Shadows"
  	Preferences enable: #menuAppearance3d.
  	Morph useSoftDropShadow: true.
  	
  	"Lists and Trees"
  	PluggableListMorph
  		filterableLists: true;
  		clearFilterAutomatically: false;
  		highlightHoveredRow: true;
  		menuRequestUpdatesSelection: true.
  	PluggableTreeMorph
  		filterByLabelsOnly: false;
  		maximumSearchDepth: 1.
  	
  	"Standard Tools"
  	Workspace shouldStyle: false.
  	Browser
  		listClassesHierarchically: true;
  		showClassIcons: true;
  		showMessageIcons: true;
  		sortMessageCategoriesAlphabetically: true.
  	Preferences enable: #annotationPanes;
  		 enable: #optionalButtons;
+ 		 disable: #diffsWithPrettyPrint;
- 		 enable: #diffsWithPrettyPrint;
  		 enable: #traceMessages;
  		 enable: #alternativeBrowseIt;
  		 enable: #menuWithIcons;
  		 enable: #visualExplorer.
  	SystemNavigation thoroughSenders: true.
  	Preferences disable: #debugLogTimestamp.
  
  	"Halo"
  	Preferences
  		enable: #showBoundsInHalo ;
  		disable: #alternateHandlesLook.
  
  	"System"
  	NetNameResolver enableIPv6: false.
  	Scanner
  		allowUnderscoreAsAssignment: true;
  		prefAllowUnderscoreSelectors: true.
  
  	"that's all, folks"!

Item was changed:
  ----- Method: ReleaseBuilder class>>step4Release (in category 'manual - steps') -----
  step4Release
  	"Creates the release. New file, clean-ed up."
  	
  	(UIManager default
  		confirm: ('Do you want release {1}{2}?' withCRs format: {
  						self versionString.
  						(self releaseLocally ifTrue: [' locally'] ifFalse: [''])})
  		title: 'Release Builder Step 4 of 4: The Release')
  		 ifFalse: [^ self].
  	
  	"If you re-open the current trunk image again, it will be an alpha version for the next release."
  	DeferredTask := [self step0AssureAlpha].
  	
  	"We continue with preparing the release image."
+ 	NextTask := [self saveAsNewRelease].
- 	NextTask := [self step5DoRelease].
  	
  	"Now save it but do not quit."
  	Smalltalk snapshot: true andQuit: false.!

Item was removed:
- ----- Method: ReleaseBuilder class>>step5DoRelease (in category 'manual - steps') -----
- step5DoRelease
- 	"Creates the release. New file, clean-ed up."
- 	
- 	| fileName |
- 
- 	"Create new .image and .changes files for the release image."
- 	self setNewSystemVersion: self versionString.
- 	fileName := ('squeak-{1}.{2}{3}' format: {
- 		SystemVersion current majorVersionNumber.
- 		SystemVersion current minorVersionNumber.
- 		self releaseLocally ifTrue: ['-offline'] ifFalse: ['']}).
- 	Smalltalk saveAs: fileName.
- 
- 	"Update the image state."
- 	[ self
- 		setTopProject;
- 		prepareSourceCode;
- 		prepareEnvironment;
- 		switchToNewRepository: self releaseRepository.
- 	] on: MCEmptyVersion do: [:warning | warning resume].
- 	
- 	NextTask := [self uploadForSmalltalkCI: fileName.].
- 	
- 	Smalltalk condenseChanges.
- 	Smalltalk snapshot: true "Important!!" andQuit: false.
- 	"Finished. See NextTask."!

Item was removed:
- ----- Method: ReleaseBuilder class>>uploadForSmalltalkCI: (in category 'manual') -----
- uploadForSmalltalkCI: fileName
- 	"TODO Automate upload."
- 	
- 	self releaseLocally ifTrue: [
- 		^ UserDialogBoxMorph
- 		inform: ('Please do never upload images that are meant to be used locally.')
- 		title: 'Release Builder - Local Release Finished'.].
- 	
- 	UserDialogBoxMorph
- 		inform: ('Please upload {1] and {2} to files.squeak.org/smalltalkCI' format: {fileName, '.image'. fileName, '.changes'})
- 		title: 'Release Builder - Almost Done'.!



More information about the Squeak-dev mailing list