[squeak-dev] The Trunk: Installer-Core-mt.448.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Jun 2 14:46:58 UTC 2022


Marcel Taeumel uploaded a new version of Installer-Core to project The Trunk:
http://source.squeak.org/trunk/Installer-Core-mt.448.mcz

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

Name: Installer-Core-mt.448
Author: mt
Time: 2 June 2022, 4:46:57.950188 pm
UUID: f96d06a4-61c9-5442-b7de-7f6b52079900
Ancestors: Installer-Core-ct.447, Installer-Core-ct.441

Merge Installer-Core-ct.441. Cherry pick fixes from tcj.440 (from 2020) and lrnp.447.

=============== Diff against Installer-Core-ct.447 ===============

Item was changed:
  Object subclass: #Installer
  	instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel'
  	classVariableNames: 'InstallerBindings IsSetToTrapErrors Repositories SkipLoadingTests ValidationBlock'
  	poolDictionaries: ''
  	category: 'Installer-Core'!
  Installer class
  	instanceVariableNames: 'localRepository'!
  
+ !Installer commentStamp: 'ct 10/3/2021 15:45' prior: 0!
- !Installer commentStamp: 'tpr 8/25/2019 18:37' prior: 0!
  Installer is a mechanism for listing, examining and installing software from a variety of sources. It is intended to help in building install scripts for package setups etc.
  
  Currently it can use
  	- files; a file specified by a filename. Relative filenames will be treated as based form the current default directory. See InstallerFile.
  	- urls; a file specified by a url or a script embedded in a webpage. See InstallerWeb.
  	- squeakmap; see InstallerSqueakMap
  	- monticello;  by ftp or http access, or a local directory, or a Magma or GOODS database. There is a list of shortcuts to popular repositories in this class protocol 'repositories'. See InstallerMonticello.
  	- mantis; accessing code attached to a mantis bug report. See InstallerMantis.
  
  Simple example usages - 
+ Installer new merge: #osProcess.
  Installer squeakmap install: 'DynamicBindings'.
  Installer squeakmap search: '*scratch'.
  Installer squeakmap search: 'author:*rowledge'.
  Installer squeaksource project: 'ss2'; install: 'TinyWiki'.
  Installer ss project: 'Installer'; browse: 'Installer-Core'.
  
   
  useFileIn - flag to load source.st rather than using Monticello!
  Installer class
  	instanceVariableNames: 'localRepository'!

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 ].
  	
  	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."
+ 		Smalltalk globals removeKey: #Metacello ifAbsent: ["Ignore prior attempts."].
- 		Smalltalk globals removeKey: #Metacello.
  		SARInstaller new fileInFrom: response content asByteArray readStream].
  
  	metacello := 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 changed:
  ----- Method: Installer class>>isMetacelloInstalled (in category 'scripts') -----
  isMetacelloInstalled
  	"Squeak is shipped with the global #Metacello referring to lightweight MetacelloStub.  After the first message is sent, the latest Metacello is installed, replacing the stub."
+ 
+ 	^ (Smalltalk at: #Metacello ifAbsent: nil)
+ 		ifNil: [false "Installation was interrupted."]
+ 		ifNotNil: [:mcClass | mcClass ~= MetacelloStub]!
- 	^ (Smalltalk at: #Metacello) ~= MetacelloStub!



More information about the Squeak-dev mailing list