[squeak-dev] The Inbox: Installer-Core-cmm.428.mcz

Levente Uzonyi leves at caesar.elte.hu
Mon Apr 8 11:57:34 UTC 2019


On Mon, 8 Apr 2019, commits at source.squeak.org wrote:

> Chris Muller uploaded a new version of Installer-Core to project The Inbox:
> http://source.squeak.org/inbox/Installer-Core-cmm.428.mcz
>
> ==================== Summary ====================
>
> Name: Installer-Core-cmm.428
> Author: cmm
> Time: 8 April 2019, 12:28:03.307324 am
> UUID: 45c1899a-1b8e-42bf-9360-584797cf4a91
> Ancestors: Installer-Core-cmm.427, Installer-Core-tcj.426
>
> Allow installation of github projects via the scripts at the top in their readme files, without first having to manually ensure Metacello is installed.
>
> 	Metacello new
> 		baseline: 'NameOfTheProject';
> 		repository: 'github://...';
> 		load
>
> =============== Diff against Installer-Core-tcj.426 ===============
>
> Item was changed:
>  ----- Method: Installer class>>ensureRecentMetacello (in category 'scripts') -----
>  ensureRecentMetacello
>  	"Copied and adapted from https://github.com/Metacello/metacello/blob/master/README.md"
>
>  	| metacello |
>  	((Smalltalk classNamed: #WebClient)
>  		ifNil: [ false ]
>  		ifNotNil: [ :webClient |
>  			[ (webClient httpHead: 'https://github.com') isSuccess ]
>  				on: Error
>  				do: [ false ] ])
>  		ifFalse: [ ^self inform: 'Could not connect to "https://github.com".\\You need an internet connection and SSL support\to install (or update) Metacello.\\Please fix those issues and try again.' translated withCRs ].
> 
> + 	metacello := Smalltalk classNamed: #Metacello.
> + 	(metacello name = #Metacello) ifFalse: [
> - 	metacello := (Smalltalk classNamed: #Metacello) ifNil: [

This trick deserves a comment. It relies on the loose implementation of 
#classNamed: of Environment and existence of Object >> #name. Both of 
which I'd rather see changed.

Levente

P.S.: I also don't see why Git Infrastructure is installed along with 
Metacello. I use the latter but not the former (yet). I agree with Fabio's 
suggestion in his response.

>  		"Get the Metacello configuration (for Squeak users)"
>  		Installer gemsource
>  			project: 'metacello';
>  			addPackage: 'ConfigurationOfMetacello';
>  			install.
>
>  		"Bootstrap Metacello Preview, using mcz files (#'previewBootstrap' symbolic version"
>  		((Smalltalk classNamed: #ConfigurationOfMetacello) project
>  			version: #'previewBootstrap') load.
>
>  		Smalltalk classNamed: #Metacello ].
>
>  	"Now load latest version of Metacello"
>  	metacello new
>  		baseline: 'Metacello';
>  		repository: 'github://Metacello/metacello:master/repository';
>  		get.
>  	metacello new
>  		baseline: 'Metacello';
>  		repository: 'github://Metacello/metacello:master/repository';
>  		load: #('default' 'Metacello-Help').
>  !
>
> Item was added:
> + Object subclass: #MetacelloStub
> + 	instanceVariableNames: ''
> + 	classVariableNames: ''
> + 	poolDictionaries: ''
> + 	category: 'Installer-Core'!
> + 
> + !MetacelloStub commentStamp: 'cmm 4/8/2019 00:27' prior: 0!
> + MetacelloStub is a loose reference to Metacello.!
>
> Item was added:
> + ----- Method: MetacelloStub class>>doesNotUnderstand: (in category 'overriding') -----
> + doesNotUnderstand: aMessage
> + 	Installer ensureRecentMetacello.
> + 	Installer installGitInfrastructure.
> + 	^ aMessage sendTo: (Smalltalk classNamed: #Metacello)!
>
> Item was added:
> + ----- Method: MetacelloStub class>>initialize (in category 'initialize-release') -----
> + initialize
> + 	Smalltalk
> + 		at: #Metacello
> + 		ifAbsentPut: [ self ]!


More information about the Squeak-dev mailing list