[squeak-dev] The Inbox: Installer-Core-fbs.362.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Jan 25 12:02:34 UTC 2013


Frank Shearar uploaded a new version of Installer-Core to project The Inbox:
http://source.squeak.org/inbox/Installer-Core-fbs.362.mcz

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

Name: Installer-Core-fbs.362
Author: fbs
Time: 25 January 2013, 12:02:28.537 pm
UUID: 4e06221a-c7a6-4d1b-9d72-8cbff6d105e2
Ancestors: Installer-Core-bp.360

Installer repository failover #2 of 2: InstallerMonticello uses an MCRepositoryGroup, so that attempting to load a particular version will try each repository in turn. #basicView will open _all_ the InstallerMonticello's repositories.

=============== Diff against Installer-Core-bp.360 ===============

Item was changed:
  ----- Method: InstallerMonticello>>cache (in category 'instance creation') -----
  cache
+ 	| cache |
+ 	cache := self classMCCacheRepository default.
+ 	mc addRepository: cache.
+ 	root := cache directory localName.!
- 	
- 	mc := self classMCCacheRepository default.
- 	root := mc directory localName
-  !

Item was changed:
  ----- Method: InstallerMonticello>>directory: (in category 'instance creation') -----
  directory: dir
- 
  	| directory |
  	directory := dir isString 
  		ifTrue: [  FileDirectory on: (FileDirectory default fullNameFor: dir) ]
  		ifFalse: [ dir ].
  		
+ 	mc addRepository: (self classMCDirectoryRepository new directory: directory; yourself).
- 	mc := self classMCDirectoryRepository new directory: directory; yourself.
   	root := dir
  	
   !

Item was changed:
  ----- Method: InstallerMonticello>>ftp:directory:user:password: (in category 'instance creation') -----
  ftp: host directory: dir user: name password: secret
  	"Installer mc ftp: 'mc.gjallar.se' directory: '' user: 'gjallar' password: secret."
  	
+ 	mc addRepository: (self classMCFtpRepository host: host directory: dir user: name password: secret; yourself).
- 	mc := self classMCFtpRepository host: host directory: dir user: name password: secret.
  	root :=  dir.	
   !

Item was changed:
  ----- Method: InstallerMonticello>>goods:port: (in category 'instance creation') -----
  goods: host port: aport
  	
+ 	mc addRepository: ((self classMCGOODSRepository new) host: host port: aport; yourself)
- 	mc := (self classMCGOODSRepository new) host: host port: aport; yourself
   !

Item was changed:
  ----- Method: InstallerMonticello>>http:user:password: (in category 'instance creation') -----
  http: aUrl user: name password: secret
+ 	| url http |
- 	| url |
  	url := (aUrl includesSubString: '://')
  		ifTrue: [aUrl]
  		ifFalse: ['http://', aUrl].
+ 	http := self classMCHttpRepository location: url user: name password: secret.
+ 	mc addRepository: http.
+ 	root := http locationWithTrailingSlash	
- 	mc := self classMCHttpRepository location: url user: name password: secret.
- 	root := mc locationWithTrailingSlash	
   !

Item was added:
+ ----- Method: InstallerMonticello>>initialize (in category 'public interface') -----
+ initialize
+ 	super initialize.
+ 	mc := MCRepositoryGroup new.!

Item was changed:
  ----- Method: InstallerMonticello>>label (in category 'accessing') -----
  label
+ 	^ 'repositories: #(',
+ 	((mc repositories allButFirst
+ 		collect: [:repo | repo description surroundedBySingleQuotes])
+ 			reduce: [:acc :each | acc, ' ', each]),
+ 	');'.!
- 	^ 'repository:''', mc description, ''''!

Item was changed:
  ----- Method: InstallerMonticello>>magma:port: (in category 'instance creation') -----
  magma: host port: aport
  	
+ 	mc addRepository: ((self classMCMagmaRepository new) host: host port: aport; yourself)
- 	mc := (self classMCMagmaRepository new) host: host port: aport; yourself
   !

Item was changed:
  ----- Method: InstallerMonticello>>mc (in category 'accessing') -----
  mc
+ 	"Return the GROUP of Monticello repositories."
- 
  	^ mc!

Item was changed:
  ----- Method: InstallerMonticello>>mc: (in category 'accessing') -----
  mc: aRepo
+ 	mc addRepository: aRepo!
- 
- 	mc := aRepo!

Item was changed:
  ----- Method: InstallerMonticello>>mcThing (in category 'monticello') -----
  mcThing
  	| loader |
  	loader := self classMCVersionLoader new.
+ 
- 	self logCR: 'reading ' , mc description , '...'.
  	"several attempts to read files - repository readableFileNames
  	sometimes fails"
  	self packages
  		do: [:pkg | 
  			| versionNames fileToLoad version |
  			versionNames := mc versionNamesForPackageNamed:
  				(pkg asMCVersionName versionNumber = 0 
  					ifTrue: [ "Just a package name specified, use it whole." pkg ] 
  					ifFalse: [pkg asMCVersionName packageName]).
  			versionNames sort: self mcSortFileBlock.
  			fileToLoad := versionNames
  						detect: (self mcDetectFileBlock: pkg)
  						ifNone: [ nil ].
  			fileToLoad
  				ifNotNil: [version := mc versionNamed: fileToLoad.
  					(version isKindOf: MCConfiguration)
  						ifTrue: [^ version]
+ 						ifFalse: [self normalizedRepositories do: [:repo |
+ 								MCRepositoryGroup default addRepository: repo].
+ 							self normalizedRepositories do: [:repo |
+ 								version workingCopy repositoryGroup addRepository: repo].
- 						ifFalse: [MCRepositoryGroup default addRepository: self normalizedRepository.
- 							version workingCopy repositoryGroup addRepository: self normalizedRepository.
  							loader addVersion: version].
  					self logCR: ' found ' , version fileName , '...']].
  	^ loader!

Item was added:
+ ----- Method: InstallerMonticello>>normalizedRepositories (in category 'monticello') -----
+ normalizedRepositories
+ "Find an existing instance of any active repository so that we use whatever name and password the user usually uses. If not found, answer a copy"
+ 	^ mc repositories replace: [:repo |
+ 		(self classMCRepositoryGroup default repositories includes: repo)
+ 			ifTrue: [repo]
+ 			ifFalse: [repo copy]]!

Item was removed:
- ----- Method: InstallerMonticello>>normalizedRepository (in category 'monticello') -----
- normalizedRepository
- "Find an existing instance of the active repository so that we use whatever name and password the user usually uses. If not found, answer a copy"
- 
- 	self classMCRepositoryGroup default repositoriesDo: [:ea |
- 		mc = ea ifTrue: [^ ea]].
- 	^ mc copy!

Item was changed:
  ----- Method: InstallerMonticello>>project: (in category 'accessing') -----
  project: name
+ 	| locs dirs all |
- 
  	project := name.
  	packages := nil.
+ 	"mc repositories is a collection of repositories created on the fly. Store a reference to it so we have a stable working set."
+ 	all := mc repositories.
+ 	"Some repositories point to more specific parts within their structures when given a project name. An HTTP repository adds the project name to its path, for instance. A cache repository, despite being directory based, does not."
+ 	locs := all select: [:repo | repo respondsTo: #location:].
+ 	dirs := all select: [:repo | (repo respondsTo: #directory:) and: [(repo respondsTo: #cacheForPackage:) not]].
+ 	locs do: [:repo |
+ 		mc removeRepository: repo.
+ 		mc addRepository: (repo copy location: root , name)].
+ 	dirs do: [:repo |
+ 		mc removeRepository: repo.
+ 		mc addRepository: (repo copy directory: root ,'/', name)].
- 	
- 	(mc respondsTo: #location:) ifTrue:[ mc := mc copy location: root , name ].
- 	(mc respondsTo: #directory:) ifTrue: [ mc := mc copy directory: root ,'/', name ].
  		
  	^self copy.!



More information about the Squeak-dev mailing list