ScriptLoader

ScriptLoader
Pharo Process Description
To change the release stream
ScriptLoader toPharoOne
ScriptLoader toPharoOneDotOne
---
In the idea that more people will be able to integrate
Here is the pharo process.
An enhancement
- should be added to the bug tracker
- announced to the mailing-list
- asked for feedback
- results should be added to the BT entry
Fixed tag means ready for integration
Closed tag means integrated
A bug detected
- discuss via the mailing-list
- should be added to the bug tracker
- fix are considered as enh (see point above)
When a fix is fixed it should be either post as cs to the BT entry or in the PharoInbox
as a Slice (a slice is an emtpy package that has as requirement other package composing the fix).
We have three project:
Pharo
PharoInbox
PharoTreatedInbox
A fix goes either from inbox to treatedInbox or to Pharo.
If a fix does not work it is moved to the TreatedInbox.
If a fix works it is integrated as follow - it will be moved from the Inbox to the TreatedInbox
and integrated and published in the Pharo project
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Now the integration works as 4 steps which can be steered by the following
ScriptLoader releaseMenu
1.) Start up a recent and clean image
ScriptLoader new prepareNewUpdate

This step will
- load the latest updates
- load the latest ScriptLoader package from the Pharo repository.
Indeed when we work on improving the ScriptLoader it is useful to always have the last one
and new versions can be available on the server but not part of the latest updates.
- check that the update.list (which contains the cs to load the packages) is in sync
with the image current version.
scp -p LOGIN@scm.gforge.inria.fr:/home/groups/pharo/htdocs/updates/pharo1.0/updates.list .
or
scp -p LOGIN@scm.gforge.inria.fr:/home/groups/pharo/htdocs/updates/pharo1.1/updates.list .
- snapshot the package version to detect dirty or changed but non dirty packages.
2.) Apply changes
ScriptLoader new doneApplyingChanges

This step will
- create an update method with can trigger to load of the packages and some pre/post action
- create a script method with describes all the package versions and it used by the update
- save all the packages that are different (except some filtered packages)
into a local folder named package-to-be-tested.

3.) Verify changes
==> in a ***new*** image (in the current folder) execute:
ScriptLoader new verifyNewUpdate
This step will
- load in any order (so may break) the package previously saved
in the packages to be tested.

4.) If there are problems go to 2.) to fix them, else:
ScriptLoader new publishChanges
This step will
- generate a new cs whose purpose is to load the given version of the scriptloader and trigger the
correct update method.
- add the name of the cs file to the end of the updates.list file local to the disc
- copy all the package from the local directory to the Pharo

After the updates.list and the cs file should be manually uploaded to the ftp (see below)
scp "$1" LOGIN@scm.gforge.inria.fr:/home/groups/pharo/htdocs/updates/pharo1.0

CurrentMajorVersionNumber should contains a string '1.0', '1.1'....
This string will determine on which folder on the server the updates.list should be loaded.
i.e., updates/pharo1.0, updates/pharo1.1 ....
CSForLastUpdate:
ScriptLoader new CSForLastUpdate: 'cleanUpMethods'
CSForLastUpdateAndPatchUpdatesList:
ScriptLoader new CSForLastUpdateAndPatchUpdatesList: 'cleanUpMethods'
addExtraRepositories
self new addExtraRepositories
addHomeRepositoryToAllPackages
self new removeAllRepositories: #('http://www.squeaksource.com/Sapphire/' 'http://www.squeaksource.com/SapphireInbox/')
addHomeRepositoryToPackageNamed:
addPackage:
to be tested
addRepository310ToAllPackages
self new addRepository310ToAllPackages
addRepository39ToAllPackages
self new removeAllRepositories: #('http://www.squeaksource.com/Sapphire/' 'http://www.squeaksource.com/SapphireInbox/')
addRepositoryMCToAllPackages
self new addRepositoryMCToAllPackages
addRepositorySqueakTrunkToAllPackages
self new removeAllRepositories: #('http://www.squeaksource.com/Sapphire/' 'http://www.squeaksource.com/SapphireInbox/')
addRepositoryTaskForcesToAllPackages
self new addRepositoryTaskForcesToAllPackages
addRepositoryToPackageNamed:
addRepositoryTreatedToAllPackages
self new addRepositoryTreatedToAllPackages
allCurrentDirtyPackages
ScriptLoader new allCurrentDirtyPackages
allCurrentPackages
ScriptLoader new allCurrentPackages
allCurrentVersions
self new allCurrentVersions
announceOnMailingList
self new announceOnMailingList
buildConfigurationMapFor:
checkImageIsUptodate
cleanUpChanges
Clean up the change sets
cleanUpForProduction
trim MC ancestory information
cleanUpForRelease
self new cleanUpForRelease
cleanUpMethods
Make sure that all methods in use are restarted
commentForCurrentUpdate
compileNewUpdateMethod
Use me to create a new update method with the next update number
compileScriptMethodWithCurrentPackages:
ScriptLoader new compileScriptMethodWithCurrentPackages: 9999
copyDiffPackagesToPharo
Copy the clean packages that may have been loaded by a slice but are not yet in pharo repository
copyPackagesFromWaitingFolderToHomeRepository
self defaultMCWaitingFolder allFileNames
currentChangedPackages
self new currentChangedPackages
currentMajorVersionNumber
currentMajorVersionNumber:
currentPackages
self new currentPackages
currentScriptVersionNumber
currentUpdateVersionNumber
currentVersions
ScriptLoader new currentVersions
currentVersionsToBeSaved
self new currentVersionsToBeSaved
defaultMCWaitingFolder
deletePackage:
diffPackages
return a list of packages that are new. They can be dirty or not.
doneApplyingChanges
fixObsoleteReferences
self new fixObsoleteReferences
flushCaches
generateCS:fromUpdate:on:
generateCompleteFixList
generateCompleteFixList
generateNewUpdateMethod
ScriptLoader new generateNewUpdateMethod
generateScriptAndUpdateMethodForNewVersion
Use me to generate the script and update method
generateScriptTemplateWithAllCurrentPackages
ScriptLoader new generateScriptTemplateWithAllCurrentPackages
generateScriptTemplateWithCurrentPackages:
ScriptLoader new generateScriptTemplateWithCurrentPackages
getLatestScriptNumber
self new getLatestScriptNumber
getLatestUpdateNumber
self new getLatestUpdateNumber
gofer
inboxRepository
initialize
Subclasses should redefine this method to perform initializations on instance creation
installGofer
self new installGofer
installRepository:for:
installVersionInfo
self new installVersionInfo
installer
installingInstaller
self new installingInstaller
installingRBEngine
| `@temps |
``@.BeforeStatements.
`f := ImporterFacade forVisualWorks.
`f inModel: `@m.
`f importingContext importMaximum.
`f importNameSpaceFromBinding: `@n.
``@.AfterStatements
->
| `@temps |
``@.BeforeStatements.
ImporterFacade importNameSpaceFromVWBinding: `@n inModel: `@m.
``@.AfterStatements
installingUniverse
latestScriptLoaderPackageIdentificationString
ScriptLoader new latestScriptLoaderPackageIdentificationString
launchUpdate
loadFFI
loadLatestPackage:from:
loadLatestPackage:fromRepository:
loadLatestPackage:fromSqueaksource:
loadLatestScriptloader
self new loadLatestScriptloader
loadOneAfterTheOther:merge:
loadOneAfterTheOther:merge:silently:
loadPackageFromWaitingFolder
self defaultMCWaitingFolder allFileNames
loadSeaside30
loadTogether:merge:
loadTogether:merge:silently:
loadVersionFromFileNamed:
log:
logContents
logStream
markPackagesBeforeNewCodeIsLoaded
Use this method to keep a log of all the packages that were loaded before loading new code. This will help the system to perform a diff and know after what to publish.
mergePackageFromWaitingFolder
self defaultMCWaitingFolder allFileNames
newerVersionsIn:
openWindow:label:
packageToBeTestedFolderName
packagesNotToSavePatternNames
prepareNewUpdate
publishChanges
releaseMenu
removeAllRepositories:
self new removeAllRepositories:
#('http://source.squeakfoundation.org/inbox/'
'http://source.squeakfoundation.org/39a/'
'http://source.squeakfoundation.org/Balloon/'
'http://source.squeakfoundation.org/Compression/'
'http://source.squeakfoundation.org/Graphics/'
'http://source.wiresong.ca/mc/')
removeScriptMethods
self new removeScriptMethods
removeUpdateMethods
repository
repository310
repository39
repository:
repositoryMC
repositorySqueakTrunk
repositoryTaskForces
repositoryTreated
resetLogStream
resetPackagesBeforeLastLoad
sapphireToPharoRepository
self new sapphireToPharoRepository
saveAsNewImageWithCurrentReleaseName
saveChangedPackagesIntoWaitingFolder
saveInToReloadCachePackage:with:
saveLatestScriptLoaderToHome
self new saveLatestScriptLoaderToHome
saveLatestScriptLoaderToWaitingFolder
self new saveLatestScriptLoaderToWaitingFolder
savePackage:in:with:
| sc |
sc := self new.
sc savePackage: (self new workingCopyFromPackageName: 'ScriptLoader')
in: MCCacheRepository default
with: 'this is test to automate dirty package saving in cache'
script553
script554
script555
script556
script557
script558
script559
script560
script561
script562
script563
script564
script565
script566
script567
script568
script569
script570
script571
script572
script573
script574
script575
script576
script577
script578
script579
script580
script581
script582
script583
script584
script585
setToRepositoriesPassword:to:
self new setToRepositoriesPassword: '' to: ''
setUpdateAndScriptVersionNumbers
toPharoOne
toPharoOneDotOne
universalInstaller
unloadPackage:
self new unloadPackage: 'Sixx'
unloadPackageNamed:
self new workingCopyFromPackageName: 'CollectionExtensions'
unloadPackages
ScriptLoader new unloadPackages
update10477
self new update10477
update10478
self new update10478
update10479
self new update10479
update10480
self new update10480
update10481
self new update10481
update10482
self new update10482
update10483
self new update10483
update10484
self new update10484
update10485
self new update10485
update10486
self new update10486
update10487
self new update10487
update10488
self new update10488
update10489
self new update10489
update10490
self new update10490
update10491
self new update10491
update10492
self new update10492
update10493
self new update10493
update10494
self new update10494
update10495
self new update10495
update10496
self new update10496
update10497
empty
update10498
self new update10498
update10499
self new update10499
update10500
self new update10500
update10501
self new update10501
update10502
self new update10502
update10503
self new update10503
update10504
self new update10504
update10505
self new update10505
update10506
self new update10506
update10507
self new update10507
update10508
self new update10508
updateUpdatesList:
ScriptLoader new updateUpdatesList: 'cleanUpMethods'
verifyNewUpdate
waitingCacheFolder
waitingFolderMCZFiles
withUdpateLog:
self deprecated
withUpdateLog:
workingCopyFromPackageName:
self new workingCopyFromPackageName: '39Deprecated'
writeCS:forUpdate:
ScriptLoader new writeCS: '-sd.210' forUpdate: 7037
writeCS:forUpdate:withName:
ScriptLoader new writeCS: '-md.2929' forUpdate: 7049 withName: 'cleanUpMethods'