[Pkg] The Trunk: Installer-Core-cmm.414.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Jul 25 21:52:30 UTC 2016
Chris Muller uploaded a new version of Installer-Core to project The Trunk:
http://source.squeak.org/trunk/Installer-Core-cmm.414.mcz
==================== Summary ====================
Name: Installer-Core-cmm.414
Author: cmm
Time: 18 July 2016, 11:29:44.226614 am
UUID: c43c7349-b55d-41fa-a754-be8e8e21c683
Ancestors: Installer-Core-cmm.407
Support more configuration use-cases:
* Automatically addLocalRepositories and addRemoteRepositories to the MC browser when merging packages.
* Ability to #copyLocalVersionsToRemoteFor: a package. This can be used as a single 'commit' of all changes across multiple packages (which reside in their own repositories).
- Connectors was moved back to SqueakSource.
- webClientSsp seems to be just as current at SqueakSource as it does at SS3.
- Fixed some assumptions in the package-definitions that assumed they exist in their same repository as their prerequisite packages.
=============== Diff against Installer-Core-cmm.407 ===============
Item was changed:
Object subclass: #Installer
+ instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel'
- instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel currentRepository'
classVariableNames: 'InstallerBindings IsSetToTrapErrors Repositories SkipLoadingTests ValidationBlock'
poolDictionaries: ''
category: 'Installer-Core'!
Installer class
instanceVariableNames: 'localRepository'!
!Installer commentStamp: 'kph 3/30/2009 01:29' prior: 0!
Documentation now available at http://installer.pbwiki.com/Installer
useFileIn - flag to load source.st rather than using Monticello!
Installer class
instanceVariableNames: 'localRepository'!
Item was added:
+ ----- Method: Installer class>>suspendRepositoryOverridesWhile: (in category 'repository-overrides') -----
+ suspendRepositoryOverridesWhile: aBlock
+ | priorOverrides |
+ [ priorOverrides := Repositories.
+ self clearOverrides.
+ aBlock value ] ensure: [ Repositories := priorOverrides ]!
Item was added:
+ ----- Method: Installer class>>symbolicPackages (in category 'accessing') -----
+ symbolicPackages
+ ^ self methodsInCategory: 'package-definitions'!
Item was added:
+ ----- Method: Installer>>addLocalRepositories (in category 'configure') -----
+ addLocalRepositories
+ "For all MC packages defined in my 'package-definitions', add the local directory repository where they reside."
+ self allPackages do:
+ [ : each | self class suspendRepositoryOverridesWhile:
+ [ self class useLocalRepository.
+ self addRepositoryFor: each ] ]!
Item was added:
+ ----- Method: Installer>>addRemoteRepositories (in category 'configure') -----
+ addRemoteRepositories
+ "For all MC packages defined in my 'package-definitions', add the remote repository where they reside."
+ self allPackages do:
+ [ : each | self class suspendRepositoryOverridesWhile: [ self addRepositoryFor: each ] ]!
Item was added:
+ ----- Method: Installer>>addRepositoryFor: (in category 'configure') -----
+ addRepositoryFor: structureOrSymbol
+ self
+ packageDependenciesFor: structureOrSymbol
+ do:
+ [ : eachPackageName : eachRepositorySpec | MCWorkingCopy allManagers
+ detect: [ : eachWorkingCopy | eachWorkingCopy packageName = eachPackageName ]
+ ifFound: [ : foundWorkingCopy | foundWorkingCopy repositoryGroup addRepository: (self class repositoryFor: eachRepositorySpec) ]
+ ifNone: [ nil ] ]!
Item was changed:
----- Method: Installer>>allPackages (in category 'accessing') -----
allPackages
+ | installerClasses | installerClasses := self class withAllSuperclasses.
+ installerClasses := installerClasses copyFrom: 1 to: (installerClasses indexOf: Installer).
+ ^ (installerClasses
- ^ (self class withAllSuperclasses
inject: OrderedCollection new
into:
[ : coll : each | coll
+ addAll: each symbolicPackages ;
- addAll: (each methodsInCategory: 'package-definitions') ;
yourself ]) sort!
Item was changed:
----- Method: Installer>>broomMorphsBase (in category 'package-definitions') -----
broomMorphsBase
"Morph alignment user-interface tool."
+ ^ { #ss -> 'Connectors'.
- ^ { #ss3 -> 'Connectors'.
'BroomMorphs-Base' }!
Item was changed:
----- Method: Installer>>connectors (in category 'package-definitions') -----
connectors
"Connect Morphs together. Make diagrams."
+ ^ { self broomMorphsBase.
+ #ss -> 'Connectors'.
- ^ { self broomMorphsBase.
'CGPrereqs'.
'FSM'.
'Connectors'.
'ConnectorsText'.
'ConnectorsShapes'.
'ConnectorsTools'.
'ConnectorsGraphLayout'.
'BroomMorphs-Connectors' }!
Item was added:
+ ----- Method: Installer>>copyLocalVersionsToRemoteFor: (in category 'configure') -----
+ copyLocalVersionsToRemoteFor: structureOrSymbol
+ "Ensure the currently loaded MCVersion is present in each repository which holds the packages represented by structureOrSymbol. Use as a single 'commit' of all changes across multiple packages (which reside in their own repositories).
+ Make sure id's and passwords are already set up on your repositories. Recommend using the mcSettings file for doing this, see MCHttpRepository>>#userAndPasswordFromSettingsDo: for details."
+ (self remoteRepositoriesFor: structureOrSymbol) do:
+ [ : each | each copyImageVersions ]!
Item was changed:
----- Method: Installer>>curvedSpaceExplorer (in category 'package-definitions') -----
curvedSpaceExplorer
"Explore curved 3D spaces."
^ { self openGL.
+ #krestianstvo -> 'ccse'.
'CCSpaceExplorer' }!
Item was changed:
----- Method: Installer>>ffiTests (in category 'package-definitions') -----
ffiTests
"Tests for Foreign Function Interface."
^ { self ffi.
+ #squeak -> 'FFI'.
'FFI-Tests' }!
Item was changed:
----- Method: Installer>>mathMorphs (in category 'package-definitions') -----
mathMorphs
"MathMorphs is a project that combines mathematics and Smalltalk. See http://www.dm.uba.ar/MathMorphs/ and chapter 10 of the 'new blue book'."
^ { self morphicWrappers.
+ #ss -> 'MathMorphsRevival'.
'Functions' }!
Item was changed:
----- Method: Installer>>merge: (in category 'public interface') -----
merge: structureOrSymbol
| toUncache |
toUncache := Set new.
self
packageDependenciesFor: structureOrSymbol
do:
+ [ : eachPackageName : eachRepositorySpec | | repo version |
- [ : eachPackageName : eachRepositorySpec | | repo |
(repo := self class repositoryFor: eachRepositorySpec) cacheAllFilenames.
toUncache add: repo.
+ version := self
+ primMerge: eachPackageName
+ from: repo.
+ "Lazy code, polite MC won't add duplicates if they already exist."
+ version ifNotNil:
+ [ version workingCopy repositoryGroup
+ addRepository: repo ;
+ addRepository: (self class defaultRepositoryFor: eachRepositorySpec) ] ].
- self primMerge: eachPackageName ].
toUncache do: [ : each | each flushAllFilenames ]!
Item was changed:
----- Method: Installer>>packageDependenciesFor:do: (in category 'private') -----
packageDependenciesFor: structureOrSymbol do: twoArgBlock
"Value twoArgBlock with each package name and the currently-specified repository where that package resides."
+ | currentRepository |
structureOrSymbol isSymbol
ifTrue:
[ self
packageDependenciesFor: (self perform: structureOrSymbol)
do: twoArgBlock ]
ifFalse:
[ self
depthFirstOf: structureOrSymbol
do:
[ : each | each isVariableBinding
ifTrue: [ currentRepository := each ]
ifFalse:
[ each isString
ifTrue:
[ twoArgBlock
value: each
value: currentRepository ]
ifFalse: [ self error: 'invalid specification' ] ] ] ]!
Item was added:
+ ----- Method: Installer>>packagesFor: (in category 'configure') -----
+ packagesFor: structureOrSymbol
+ ^ Array streamContents:
+ [ : stream | self
+ packageDependenciesFor: structureOrSymbol
+ do:
+ [ : eachPackageName : eachRepositorySpec | stream nextPut: eachPackageName ] ]!
Item was removed:
- ----- Method: Installer>>primMerge: (in category 'private') -----
- primMerge: packageName
- | version repo |
- repo := self class repositoryFor: currentRepository.
- version := (repo includesVersionNamed: packageName)
- ifTrue: [ repo versionNamed: packageName ]
- ifFalse: [ repo highestNumberedVersionForPackageNamed: packageName ].
- [ version shouldMerge
- ifTrue: [ version merge ]
- ifFalse: [ version load ] ]
- on: MCNoChangesException
- do: [ : req | req resume ]
- on: MCMergeResolutionRequest
- do:
- [ : request | request merger conflicts isEmpty
- ifTrue: [ request resume: true ]
- ifFalse: [ request pass ] ].
- version workingCopy repositoryGroup addRepository: repo!
Item was added:
+ ----- Method: Installer>>primMerge:from: (in category 'private') -----
+ primMerge: packageName from: aMCRepository
+ | version |
+ version := (aMCRepository includesVersionNamed: packageName)
+ ifTrue: [ aMCRepository versionNamed: packageName ]
+ ifFalse: [ aMCRepository highestNumberedVersionForPackageNamed: packageName ].
+ [ version shouldMerge
+ ifTrue: [ version merge ]
+ ifFalse: [ version load ] ]
+ on: MCNoChangesException
+ do: [ : req | req resume ]
+ on: MCMergeResolutionRequest
+ do:
+ [ : request | request merger conflicts isEmpty
+ ifTrue: [ request resume: true ]
+ ifFalse: [ request pass ] ].
+ ^ version!
Item was added:
+ ----- Method: Installer>>remoteRepositoriesFor: (in category 'configure') -----
+ remoteRepositoriesFor: structureOrSymbol
+ | reps |
+ reps := Set new.
+ self class suspendRepositoryOverridesWhile:
+ [ self
+ packageDependenciesFor: structureOrSymbol
+ do:
+ [ : eachPackageName : eachRepositorySpec | | rep |
+ rep := self class repositoryFor: eachRepositorySpec.
+ "Collect up the repositories in the default MCRepositoryGroup, because those ones will have user and password specified."
+ reps add:
+ (MCRepositoryGroup default repositories
+ detect: [ : each | each = rep ]
+ ifNone: [ rep ]) ] ].
+ ^ reps!
Item was changed:
----- Method: Installer>>webClientSsp (in category 'package-definitions') -----
webClientSsp
"WebClient supports NTLM/SPNEGO authentication via the Microsoft SSP interface (Windows only)."
^ { self ffiTests.
+ #ss -> 'WebClient'.
- #ss3 -> 'WebClient'.
'WebClient-SSP' }!
More information about the Packages
mailing list