[Pkg] The Trunk: ReleaseBuilder-mt.132.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri May 13 12:29:07 UTC 2016
Marcel Taeumel uploaded a new version of ReleaseBuilder to project The Trunk:
http://source.squeak.org/trunk/ReleaseBuilder-mt.132.mcz
==================== Summary ====================
Name: ReleaseBuilder-mt.132
Author: mt
Time: 13 May 2016, 2:29:01.268213 pm
UUID: e0d68a5b-f098-b54f-9abb-b809062a0a07
Ancestors: ReleaseBuilder-mt.131
More refactoring. Separate image preparation into a) preparing source code and b) preparing environment. Seperating environment preparation into 1) clear caches, 2) configure tools, 3) set preferences, and 4) configure desktop/content. The steps 2) and 3) are somewhat similar. 3) means the (pragma) preferences mechanism only whereas 2) addresses configuration in other ways.
=============== Diff against ReleaseBuilder-mt.131 ===============
Item was changed:
+ ----- Method: ReleaseBuilder class>>checkForDirtyPackages (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>checkForDirtyPackages (in category 'scripts') -----
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 sortBy: [: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 sortBy: [:wc1 :wc2 | wc1 packageName <= wc2 packageName]) explore.
(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>>clearCaches (in category 'scripts') -----
+ clearCaches
+ "Clear caches, discard unused references, free space."
+
+ Smalltalk cleanUp: true.
+ Project current resourceManager reset. "Zap eventual resources"
+ self discardUserObjects.
+ MCFileBasedRepository flushAllCaches.
+
+ "Clear all user login data."
+ MCHttpRepository clearCredentials.
+ Utilities setAuthorInitials: String empty.
+
+ Environment allInstancesDo: [ : env | env purgeUndeclared ].
+ Undeclared removeUnreferencedKeys.
+
+ Smalltalk garbageCollect.!
Item was changed:
----- Method: ReleaseBuilder class>>configureDesktop (in category 'scripts') -----
configureDesktop
+ "Open tools, multimedia content, etc."
+
+ self setDisplayExtent: 800 @ 600.
+ self setProjectBackground: Color darkGray.
+
self deleteAllWindows.
+
- Project current resourceManager reset. "Zap eventual resources"
"Replace docking bar instance in case its code has changed."
Project current removeMainDockingBar.
+ TheWorldMainDockingBar updateInstances.
+
+ self openWelcomeWorkspaces.!
- TheWorldMainDockingBar updateInstances!
Item was added:
+ ----- Method: ReleaseBuilder class>>configureTools (in category 'scripts') -----
+ configureTools
+ "Initialize well-known tools and other resources."
+
+ TTCFont registerAll.
+ FileList initialize. "register file reader services"
+ RealEstateAgent standardSize: 600 @ 400.
+ SMLoaderPlus setDefaultFilters: #(filterSafelyAvailable).
+ !
Item was changed:
+ ----- Method: ReleaseBuilder class>>copyPackagesFrom:to:depth: (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>copyPackagesFrom:to:depth: (in category 'scripts') -----
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 changed:
+ ----- Method: ReleaseBuilder class>>copyUpdateMapTo: (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>copyUpdateMapTo: (in category 'scripts') -----
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 changed:
+ ----- Method: ReleaseBuilder class>>deleteAllWindows (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>deleteAllWindows (in category 'scripts') -----
deleteAllWindows
(SystemWindow
windowsIn: Project current world
satisfying:
[ : window | true ]) do:
[ : window | [ window makeClosable; delete ]
on: ProvideAnswerNotification
do: [ : noti | noti resume: true ] ]!
Item was changed:
+ ----- Method: ReleaseBuilder class>>discardUserObjects (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>discardUserObjects (in category 'scripts') -----
discardUserObjects
Player removeUninstantiatedSubclassesSilently.
+ MorphicModel removeUninstantiatedSubclassesSilently.
+
+ "Remove empty categories for user objects."
+ SystemOrganizer cleanUp: true.!
- MorphicModel removeUninstantiatedSubclassesSilently.!
Item was changed:
+ ----- Method: ReleaseBuilder class>>loadWellKnownPackages (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>loadWellKnownPackages (in category 'scripts') -----
loadWellKnownPackages
"Load into the release image those packages that have been stripped from Trunk, but still deemed necessary for a release artifact."
+
+ "Not ready yet."
+ "Installer new merge: #squeakRelease"!
- Installer new merge: #squeakRelease!
Item was changed:
+ ----- Method: ReleaseBuilder class>>openWelcomeWorkspaces (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>openWelcomeWorkspaces (in category 'scripts') -----
openWelcomeWorkspaces
|offset | offset:= 50 at 50.
#('License Information' 'The Squeak User Interface' 'Working With Squeak' 'Release Notes')
with: #(#licenseInformation #squeakUserInterface #workingWithSqueak #releaseNotes)
do: [ : eachLabel : eachAccessor |
TheWorldMainDockingBar instance
showWelcomeText: eachAccessor
label: eachLabel
in: (offset extent: 500 at 300).
offset := offset + (30 at 30)]!
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"
- TTCFont registerAll.
- FileList initialize.
- RealEstateAgent standardSize: 600 @ 400.
- SMLoaderPlus setDefaultFilters: (OrderedCollection with: #filterSafelyAvailable).
- " Preferences outOfTheBox." "<-- uncomment after #defaultValueTableForCurrentRelease is fixed up."
self
+ clearCaches;
+ configureTools;
+ setPreferences;
+ configureDesktop.!
- setDisplayExtent: 800 @ 600 ;
- setPreferences ; "<-- remove this after defaultValueTableForCurrentRelease is fixed up."
- discardUserObjects ;
- configureDesktop.
- Smalltalk cleanUp: true.
- MCFileBasedRepository flushAllCaches.
- MCHttpRepository clearCredentials.
- Utilities setAuthorInitials: String empty.
- Environment allInstancesDo: [ : env | env purgeUndeclared ].
- Undeclared removeUnreferencedKeys.
- Smalltalk garbageCollect.
- [ self loadWellKnownPackages "<-- 4.5 is not ready for unloaded / reloaded packages" ].
- Compiler recompileAll.
- self openWelcomeWorkspaces.!
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.
MCMcmUpdater default doUpdate: false. "non-interactive".
+ self
+ unloadForeignPackages;
+ checkForDirtyPackages;
+ loadWellKnownPackages.
+
+ Compiler recompileAll.!
- self unloadForeignPackages.
- self checkForDirtyPackages.!
Item was changed:
----- 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 saveAs: self versionString, '-', SystemVersion current highestUpdate asString.
Smalltalk snapshot: true "Important!!" andQuit: true.!
Item was changed:
----- 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 saveAs: self versionStringAlpha, '-', SystemVersion current highestUpdate asString.
Smalltalk snapshot: true "Important!!" andQuit: true.!
Item was changed:
+ ----- Method: ReleaseBuilder class>>setDisplayExtent: (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>setDisplayExtent: (in category 'scripts') -----
setDisplayExtent: extent
DisplayScreen
fullScreenOff;
setNewScreenSize: extent.
self assert: Display extent = extent.!
Item was changed:
----- Method: ReleaseBuilder class>>setPreferences (in category 'scripts') -----
setPreferences
"Preferences class defaultValueTableForCurrentRelease"
+ " Preferences outOfTheBox." "<-- uncomment after #defaultValueTableForCurrentRelease is fixed up."
- self setProjectBackground: Color darkGray.
"General User interaction"
Preferences
enable: #generalizedYellowButtonMenu ;
disable: #mouseOverForKeyboardFocus ;
enable: #swapMouseButtons.
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.
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.
Preferences disable: #roundedWindowCorners.
PluggableButtonMorph roundedButtonCorners: false.
FillInTheBlankMorph roundedDialogCorners: false.
MenuMorph roundedMenuCorners: false.
ScrollBar roundedScrollBarLook: false.
"Gradients."
Preferences disable: #gradientScrollBars.
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).
- BalloonMorph balloonColor:
- (TranslucentColor r: 0.92 g: 0.92 b: 0.706 alpha: 0.75).
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 changed:
+ ----- Method: ReleaseBuilder class>>setProjectBackground: (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>setProjectBackground: (in category 'scripts') -----
setProjectBackground: aFormOrColorOrFillStyle
MorphicProject defaultFill: (aFormOrColorOrFillStyle isForm
ifTrue: [InfiniteForm with: aFormOrColorOrFillStyle]
ifFalse: [aFormOrColorOrFillStyle isColor
ifTrue: [SolidFillStyle color: aFormOrColorOrFillStyle]
ifFalse: [aFormOrColorOrFillStyle]]).
ActiveWorld fillStyle: MorphicProject defaultFill.!
Item was changed:
+ ----- Method: ReleaseBuilder class>>setTopProject (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>setTopProject (in category 'scripts') -----
setTopProject
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"].
Project current removeAllOtherProjects.!
Item was changed:
+ ----- Method: ReleaseBuilder class>>switchToNewRepository: (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>switchToNewRepository: (in category 'scripts') -----
switchToNewRepository: anMCRepository
MCMcmUpdater defaultUpdateURL: anMCRepository description.
MCRepositoryGroup reset.
MCRepositoryGroup default addRepository: anMCRepository.
MCWorkingCopy allManagers do:
[ : each | each repositoryGroup:
(MCRepositoryGroup new
addRepository: anMCRepository ;
yourself) ]!
Item was changed:
+ ----- Method: ReleaseBuilder class>>unloadForeignPackages (in category 'scripts - support') -----
- ----- Method: ReleaseBuilder class>>unloadForeignPackages (in category 'scripts') -----
unloadForeignPackages
"Removes all packages that are not present in the build configuration."
self buildConfiguration in: [:config |
MCWorkingCopy allManagers
reject: [:wc | config dependencies anySatisfy: [:dep | dep package name = wc package name]]
thenDo: [:wc | wc unload]].!
More information about the Packages
mailing list