[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
|