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

commits at source.squeak.org commits at source.squeak.org
Fri Jul 29 13:50:13 UTC 2016


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

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

Name: ReleaseBuilder-mt.138
Author: mt
Time: 29 July 2016, 3:50:05.208103 pm
UUID: 3a79fdbe-4a63-c44d-84d2-561de7f32556
Ancestors: ReleaseBuilder-mt.137

Improve release building process. Some clean-up. Automate this and that. :-)

Add the "alpha" suffix for the current trunk version again.

=============== Diff against ReleaseBuilder-mt.137 ===============

Item was changed:
  Object subclass: #ReleaseBuilder
  	instanceVariableNames: ''
+ 	classVariableNames: 'DeferredTask NextMajorVersion NextMinorVersion NextTask'
- 	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'ReleaseBuilder'!
  
+ !ReleaseBuilder commentStamp: 'mt 6/22/2016 18:08' prior: 0!
+ I'm the script that prepares a trunk image for release.
- !ReleaseBuilder commentStamp: 'mt 5/12/2016 16:50' prior: 0!
- I'm the script that prepares a trunk image for release. For the next release version please update #releaseVersionMajor and #releaseVersionMinor.
  
+ Just do "ReleaseBuilder doNextStep" repeatedly until the next release is done.
- Prepare and save this image as a release image via "ReleaseBuilder saveAsNewRelease."
- If you want to save this image as the next alpha release, do: "ReleaseBuilder saveAsNextVersionAlpha."
  
+ 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.!
- 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>>assureReleaseRepositoryReadAccess: (in category 'manual') -----
+ assureReleaseRepositoryReadAccess: repo
+ 
+ 	self releaseLocally ifTrue: [
+ 		(FileDirectory on: repo description) assureExistence.
+ 		^ true].
+ 	
+ 	[repo allFileNames] on: NetworkError do: [
+ 		UserDialogBoxMorph
+ 			inform: ('Please create the release repository:\{1}\...and ensure that you have global read access to it.' withCRs
+ 				format: {repo description}) title: 'Release Builder - Manual Step Required'.
+ 		^ false].
+ 	^ true!

Item was added:
+ ----- Method: ReleaseBuilder class>>assureReleaseRepositoryWriteAccess: (in category 'manual') -----
+ assureReleaseRepositoryWriteAccess: repo
+ 
+ 	self releaseLocally ifTrue: [^ self].
+ 	
+ 	repo
+ 		user: (UIManager default
+ 			request: 'Enter user for ', repo description
+ 			initialAnswer: (repo user ifEmpty: [Utilities authorInitials]));
+ 		password: (UIManager default
+ 			requestPassword: 'Enter password for ' , repo description).!

Item was changed:
  ----- Method: ReleaseBuilder class>>configureTools (in category 'scripts') -----
  configureTools
  	"Initialize well-known tools and other resources."
  
  	TTCFont registerAll.
+ 	StrikeFont initialize.
  	FileList initialize. "register file reader services"
  	RealEstateAgent standardSize: 600 @ 400.
  	SMLoaderPlus setDefaultFilters: #(filterSafelyAvailable).
  !

Item was added:
+ ----- Method: ReleaseBuilder class>>copyPackages (in category 'manual') -----
+ copyPackages
+ 	"For bootstrapping the contents of the release repository."
+ 	
+ 	self copyPackagesFrom: self buildRepository to: self releaseRepository depth: 1.!

Item was changed:
+ ----- Method: ReleaseBuilder class>>copyPackagesFrom:to:depth: (in category 'manual') -----
- ----- Method: ReleaseBuilder class>>copyPackagesFrom:to:depth: (in category 'scripts - support') -----
  copyPackagesFrom: sourceRepository to: targetRepository depth: historyDepth
  	"Copy the packages currently loaded in the image from the source repository to a target repository. Follow ancestry up to the depth specified."
  	
  	| currentDepth nextVersions currentVersions ignoredVersions |
  	currentDepth := 0.
  	nextVersions := (MCWorkingCopy allManagers gather: [:wc | wc ancestors]) asOrderedCollection.
  	ignoredVersions := OrderedCollection new.
  
  	[nextVersions notEmpty] whileTrue: [
  		currentVersions := nextVersions.
  		nextVersions := OrderedCollection new.
  		currentDepth := currentDepth + 1.
  		
  		currentVersions do: [:versionInfo | 
  			(targetRepository includesVersionNamed: versionInfo versionName)
  				ifTrue: [Transcript showln: ('[ReleaseBuilder] Version {1} already exists in {2}'
  					format: {versionInfo versionName. targetRepository description})]
  				ifFalse: [(sourceRepository versionWithInfo: versionInfo)
  					ifNil: [ignoredVersions add: versionInfo]
  					ifNotNil: [:version | targetRepository storeVersion: version ] ].
  			currentDepth < historyDepth ifTrue: [
  				nextVersions addAll: versionInfo ancestors]]].
  
  	ignoredVersions ifNotEmpty: [
  		ignoredVersions explore.
  		Warning signal: 'There were versions not found in the source repository.'].!

Item was added:
+ ----- Method: ReleaseBuilder class>>copyUpdateMap (in category 'manual') -----
+ copyUpdateMap
+ 	"For bootstrapping the contents of the release repository."
+ 	
+ 	self copyUpdateMap: self buildConfiguration to: self releaseRepository.!

Item was added:
+ ----- Method: ReleaseBuilder class>>copyUpdateMap:to: (in category 'manual') -----
+ copyUpdateMap: configuration to: targetRepository
+ 
+ 	| newConfig |
+ 	newConfig := MCConfiguration new.
+ 	newConfig repositories add: targetRepository.
+ 	newConfig dependencies addAll: configuration dependencies.
+ 	newConfig name: configuration name.
+ 	
+ 	targetRepository storeVersion: newConfig.!

Item was removed:
- ----- Method: ReleaseBuilder class>>copyUpdateMapTo: (in category 'scripts - support') -----
- copyUpdateMapTo: targetRepository
- 
- 	self buildConfiguration in: [:config |
- 		| newConfig |
- 		newConfig := MCConfiguration new.
- 		newConfig repositories add: targetRepository.
- 		newConfig dependencies addAll: config dependencies.
- 		newConfig name: config name.
- 		
- 		targetRepository storeVersion: newConfig].!

Item was added:
+ ----- 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>>initialize (in category 'class initialization') -----
+ initialize
+ 	Smalltalk addToStartUpList: self.
+ 	
+ 	SystemVersion newVersion: 'Squeak5.1alpha'.!

Item was removed:
- ----- Method: ReleaseBuilder class>>localBuild (in category 'accessing') -----
- localBuild
- 	"If true, use a local, directory-based repository. Usually in the working directory."
- 	
- 	^ true!

Item was removed:
- ----- Method: ReleaseBuilder class>>prepareNewRelease (in category 'preparing') -----
- prepareNewRelease
- 	"This method is run at time of release to transfer the top trunk versions into my releaseRepository, and produce a release image."
- 	
- 	| source target |
- 	source := self buildRepository.
- 	target := self releaseRepository.
- 	
- 	[ self
- 		setTopProject;
- 		prepareSourceCode;
- 		copyPackagesFrom: source to: target depth: 1;
- 		copyUpdateMapTo: target;
- 		prepareEnvironment;
- 		switchToNewRepository: target.
- 	] on: MCEmptyVersion do: [:warning | warning resume].
- 
- 	SystemVersion newVersion: self versionString.!

Item was removed:
- ----- Method: ReleaseBuilder class>>prepareNextVersionAlpha (in category 'preparing') -----
- prepareNextVersionAlpha
- 	"Prepare the first alpha image for next release."
- 
- 	self
- 		setTopProject;
- 		prepareSourceCode;
- 		prepareEnvironment;
- 		switchToNewRepository: self buildRepository.
- 
- 	SystemVersion newVersion: self versionStringAlpha.!

Item was added:
+ ----- Method: ReleaseBuilder class>>releaseLocally (in category 'accessing') -----
+ releaseLocally
+ 	"If true, use a local, directory-based repository. Usually in the working directory."
+ 	
+ 	^ true!

Item was changed:
  ----- Method: ReleaseBuilder class>>releaseRepository (in category 'accessing') -----
  releaseRepository
  
+ 	(MCRepositoryGroup default repositories
+ 		detect: [:repo | repo description = self releaseRepositoryUrl]
+ 		ifNone: [MCRepository location: self releaseRepositoryUrl])
+ 			in: [:repo |
+ 				MCRepositoryGroup default addRepository: repo.
+ 				(self assureReleaseRepositoryReadAccess: repo)
+ 					ifFalse: [ReleaseBuilderFailed signal: 'Could not build the release.'].
+ 				^ repo]!
- 	^ (MCRepository location: self releaseRepositoryUrl) in: [:repo |
- 		self localBuild ifFalse: [
- 			repo
- 				user: (UIManager default
- 					request: 'Enter user for ', self releaseRepositoryUrl
- 					initialAnswer: Utilities authorInitials);
- 				password: (UIManager default
- 					requestPassword: 'Enter password for ' , self releaseRepositoryUrl)].
- 		repo].!

Item was added:
+ ----- Method: ReleaseBuilder class>>releaseRepositoryName (in category 'accessing') -----
+ releaseRepositoryName
+ 
+ 	^ (self versionString copyWithout: $.) asLowercase!

Item was changed:
  ----- Method: ReleaseBuilder class>>releaseRepositoryUrl (in category 'accessing') -----
  releaseRepositoryUrl
  
+ 	^ self releaseLocally
+ 		ifFalse: [self serverUrl, '/', self releaseRepositoryName]
+ 		ifTrue: [(FileDirectory default on: 'repositories', FileDirectory slash, self releaseRepositoryName) fullName]!
- 	^ self localBuild
- 		ifFalse: [(self serverUrl, '/', (self versionString copyWithout: $.)) asLowercase]
- 		ifTrue: [(FileDirectory default on: 'repositories', FileDirectory slash, (self versionString copyWithout: $.) asLowercase)
- 			assureExistence;
- 			fullName]!

Item was changed:
  ----- Method: ReleaseBuilder class>>releaseVersionMajor (in category 'accessing') -----
  releaseVersionMajor
  
+ 	^ NextMajorVersion ifNil: [5]!
- 	^ 5!

Item was changed:
  ----- Method: ReleaseBuilder class>>releaseVersionMinor (in category 'accessing') -----
  releaseVersionMinor
  
+ 	^ NextMinorVersion ifNil: [1]!
- 	^ 1!

Item was added:
+ ----- 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: [^ false].
+ 			answer = 1 ifTrue: [
+ 				NextMinorVersion := nextMinor second].
+ 			answer = 2 ifTrue: [
+ 				NextMajorVersion := nextMajor first.
+ 				NextMinorVersion := 0]].
+ 				
+ 	^ true!

Item was removed:
- ----- Method: ReleaseBuilder class>>saveAsNewRelease (in category 'saving') -----
- saveAsNewRelease
- 	"ReleaseManager saveAsNewRelease"
- 
- 	(Project current uiManager
- 		confirm: 'About to build new release', (self localBuild ifTrue: [' (locally!!)'] ifFalse: ['']),': ', self versionString, String cr, String cr, 'The VM will quit after that. Continue?'
- 		title: 'Release Builder') ifFalse: [^ self].
- 	
- 	self prepareNewRelease.
- 	Smalltalk saveAs: self versionString, '-', SystemVersion current highestUpdate asString, (self localBuild ifTrue: ['-offline'] ifFalse: ['']).
- 	Smalltalk condenseChanges.
- 	Smalltalk snapshot: true "Important!!" andQuit: true.!

Item was added:
+ ----- Method: ReleaseBuilder class>>saveAsNewTrunk (in category 'saving') -----
+ saveAsNewTrunk
+ 	"Use this to create a new trunk image to be used by smalltalkCI."
+ 
+ 	| fileName |	
+ 	fileName := ('squeak-trunk{1}' format: {
+ 		self releaseLocally ifTrue: ['-offline'] ifFalse: ['']}).
+ 	
+ 	[ 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 removed:
- ----- Method: ReleaseBuilder class>>saveAsNextVersionAlpha (in category 'saving') -----
- saveAsNextVersionAlpha
- 	"ReleaseBuilder saveNextVersionAlpha."
- 
- 	(Project current uiManager
- 		confirm: 'About to build new release', (self localBuild ifTrue: [' (locally!!)'] ifFalse: ['']),': ', self versionStringAlpha, String cr, String cr, 'The VM will quit after that. Continue?'
- 		title: 'Release Builder') ifFalse: [^ self].
- 	
- 	self prepareNextVersionAlpha.
- 	Smalltalk saveAs: self versionStringAlpha, '-', SystemVersion current highestUpdate asString, (self localBuild ifTrue: ['-offline'] ifFalse: ['']).
- 	Smalltalk condenseChanges.
- 	Smalltalk snapshot: true "Important!!" andQuit: true.!

Item was added:
+ ----- Method: ReleaseBuilder class>>setNewSystemVersion: (in category 'manual') -----
+ setNewSystemVersion: version
+ 
+ 	self class
+ 		compile: ('initialize
+ 	Smalltalk addToStartUpList: self.
+ 	
+ 	SystemVersion newVersion: ''{1}''.' format: {version})
+ 		classified: 'class initialization'.
+ 
+ 	self initialize.!

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.
  	ToolBuilder openToolsAttachedToMouseCursor: false.
  	SearchBar useScratchPad: false.
  		
  	"Text input."
  	TextEditor
  		 autoEnclose: true ;
  		 autoIndent: true ;
  		 destructiveBackWord: false ;
  		 blinkingCursor: true ;
  		 dumbbellCursor: false.
  	Preferences
  		 insertionPointColor: Color red.
  	PluggableTextMorph simpleFrameAdornments: false.
  	
  	"Windows"
- 	Preferences installUniformWindowColors.
  	SystemWindow reuseWindows: false.
  	SystemWindow windowsActiveOnlyOnTop: true.
  	Model windowActiveOnFirstClick: false. "Not good for 800x600"
  
  	Preferences
  		disable: #showSplitterHandles;
  		enable: #fastDragWindowForMorphic.	
  	CornerGripMorph drawCornerResizeHandles: false.
  	ProportionalSplitterMorph
  		 smartHorizontalSplitters: false ;
  		 smartVerticalSplitters: false.
  
  	"Scroll bars."
  	Preferences
  		enable: #scrollBarsNarrow;
  		enable: #scrollBarsOnRight;
  		disable: #alwaysHideHScrollbar;
  		disable: #alwaysShowHScrollbar;
  		disable: #alwaysShowVScrollbar.
  	ScrollBar
  		scrollBarsWithoutArrowButtons: true;
  		scrollBarsWithoutMenuButton: true.
  	ScrollPane
  		useRetractableScrollBars: false.
  
  	"Rounded corners."
  	Morph preferredCornerRadius: 6.
  	SystemWindow roundedWindowCorners: false.
  	PluggableButtonMorph roundedButtonCorners: false.
  	FillInTheBlankMorph roundedDialogCorners: false.
  	MenuMorph roundedMenuCorners: false.
  	ScrollBar roundedScrollBarLook: false.
  	
  	"Gradients."
  	ScrollBar gradientScrollBar: false.
  	SystemWindow gradientWindow: false.
  	MenuMorph gradientMenu: false.
  	PluggableButtonMorph gradientButton: false.
  
  	"Shadows"
  	Preferences enable: #menuAppearance3d.
- 	MenuMorph
- 		menuBorderWidth: 1;
- 		menuBorderColor: Color lightGray;
- 		menuLineColor: Color lightGray.
  	Morph useSoftDropShadow: true..
  	
  	"Lists and Trees"
  	PluggableListMorph
  		filterableLists: true;
  		clearFilterAutomatically: false;
  		highlightHoveredRow: true;
  		menuRequestUpdatesSelection: true.
  	PluggableTreeMorph
  		filterByLabelsOnly: false;
  		maximumSearchDepth: 1.
- 	LazyListMorph
- 		listSelectionTextColor: Color black;
- 		listSelectionColor: (Color r: 0.72 g: 0.72 b: 0.9).
  	
  	"Standard Tools"
- 	BalloonMorph balloonColor: (Color r: 0.92 g: 0.92 b: 0.706).
  	Workspace shouldStyle: false.
  	Browser
  		listClassesHierarchically: true;
  		showClassIcons: true;
  		showMessageIcons: true;
  		sortMessageCategoriesAlphabetically: true.
  	Preferences enable: #annotationPanes;
  		 enable: #optionalButtons;
  		 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 added:
+ ----- Method: ReleaseBuilder class>>startUp: (in category 'class initialization') -----
+ startUp: resuming
+ 	resuming
+ 		ifTrue: [DeferredTask ifNotNil: [:task | DeferredTask := nil. task value]. NextTask := nil]
+ 		ifFalse: [NextTask ifNotNil: [:task | NextTask := nil. task value]. DeferredTask := nil].!

Item was added:
+ ----- Method: ReleaseBuilder class>>step0AssureAlpha (in category 'manual - steps') -----
+ step0AssureAlpha
+ 
+ 	self requestNextReleaseVersion ifFalse: [^ self].
+ 	self setNewSystemVersion: self versionString, 'alpha'.!

Item was added:
+ ----- Method: ReleaseBuilder class>>step1FeatureFreeze (in category 'manual - steps') -----
+ step1FeatureFreeze
+ 
+ 	(UIManager default
+ 		confirm: ('Do you really want to feature-freeze the trunk\in preparation for the next release {1}?\Bugfixes only after this.' withCRs format: {self versionString})
+ 		title: 'Release Builder Step 1 of 4: Feature Freeze') ifFalse: [^ self].
+ 
+ 	self setNewSystemVersion: self versionString, 'beta'.!

Item was added:
+ ----- Method: ReleaseBuilder class>>step2CodeFreeze (in category 'manual - steps') -----
+ step2CodeFreeze
+ 	"Creates the first release candidate."
+ 	
+ 	(UIManager default
+ 		confirm: ('Do you really want to code-freeze the trunk\in preparation for the next release {1}?\Urgent fixes only after this.' withCRs format: {self versionString})
+ 		title: 'Release Builder Step 2 of 4: Code Freeze') ifFalse: [^ self].
+ 	
+ 	self setNewSystemVersion: self versionString, 'rc', (SystemVersion current releaseCandidateNumber + 1) asString.!

Item was added:
+ ----- Method: ReleaseBuilder class>>step3NextReleaseCandidate (in category 'manual - steps') -----
+ step3NextReleaseCandidate
+ 	"Creates additional release candidates."
+ 	"update version, update post load script, add stuff commit"
+ 	
+ 	(UIManager default
+ 		confirm: ('Do you want create another release candidate\for the next release {1}?\Urgent fixes still possible.' withCRs format: {self versionString})
+ 		title: 'Release Builder Step 3 of 4: Release Candidate') ifFalse: [^ self].
+ 	
+ 	self setNewSystemVersion: self versionString, 'rc', (SystemVersion current releaseCandidateNumber + 1) asString.!

Item was added:
+ ----- Method: ReleaseBuilder class>>step4Release (in category 'manual - steps') -----
+ step4Release
+ 	"Creates the release. New file, clean-ed up."
+ 	
+ 	| fileName |
+ 	(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].
+ 	Smalltalk snapshot: true andQuit: false.
+ 	
+ 	"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.!

Item was added:
+ ----- 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'.!

Item was added:
+ Error subclass: #ReleaseBuilderFailed
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'ReleaseBuilder'!



More information about the Squeak-dev mailing list