[squeak-dev] The Trunk: Installer-Core-ct.447.mcz

commits at source.squeak.org commits at source.squeak.org
Mon May 30 18:29:34 UTC 2022

Christoph Thiede uploaded a new version of Installer-Core to project The Trunk:

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

Name: Installer-Core-ct.447
Author: ct
Time: 30 May 2022, 8:29:16.661662 pm
UUID: de20d79f-7397-a243-ab5a-a4712e237212
Ancestors: Installer-Core-cmm.446

Enables new bootstrapping process for Metacello and fixes dependencyWarning for Squeak 6.0beta.

With the new process, the first installation of Metacello does not require us to load an auxiliary gemsource package any longer, but we use a pre-generated SAR file instead that is hosted on files.squeak.org [2,3].

With this change, the dependency on the gemsource repository is eliminated. Additionally, the SAR includes a recent fix for Metacello which removes the dependency on BlockContext from the 60Deprecated package. [3] Last but not least, this improves the installation time signifcantly - on my machine, [Metacello new] timeToRun decreases from 119 seconds to 50 seconds. 

For more information and future plans, see:

* [1] https://github.com/Metacello/metacello/issues/524
* [2] https://github.com/Metacello/metacello/pull/553
* [3] https://github.com/Metacello/metacello/pull/552

Thanks to Tom (tobe) for designing and pushing this new process!

Revision to installation script:
	Handle networking errors gracefully.

=============== Diff against Installer-Core-cmm.446 ===============

Item was changed:
  ----- Method: Installer class>>ensureRecentMetacello (in category 'scripts') -----
  	"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 ].
  	self isMetacelloInstalled ifFalse: [
+ 		| response |
+ 		"Download base archive of Metacello."
+ 		response := WebClient httpGet: 'https://files.squeak.org/metacello/metacello-squeak60.sar'.
+ 		response isSuccess ifFalse: [
+ 			self error: ('Could not download Metacello archive: {1}' translated format: {response status})].
+ 		"Prepare a clean environment and install it."
- 		"Prepare a clean environment for it."
  		Smalltalk globals removeKey: #Metacello.
+ 		SARInstaller new fileInFrom: response content asByteArray readStream].
- 		"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].
  	metacello := Smalltalk classNamed: #Metacello.
  	"Now load latest version of Metacello"
  	metacello new
  		baseline: 'Metacello';
  		repository: 'github://Metacello/metacello:master/repository';
  	metacello new
  		baseline: 'Metacello';
  		repository: 'github://Metacello/metacello:master/repository';
+ 		load: #('default' 'Metacello-Help').!
- 		load: #('default' 'Metacello-Help').
- !

More information about the Squeak-dev mailing list