[squeak-dev] The Inbox: Installer-Core-tpr.434.mcz

Taeumel, Marcel Marcel.Taeumel at hpi.de
Thu Aug 29 07:28:19 UTC 2019


Deprecation first? 🙃 At least for the url methods...



On Tue, Aug 27, 2019 at 10:08 PM +0200, "commits at source.squeak.org" <commits at source.squeak.org<mailto:commits at source.squeak.org>> wrote:


tim Rowledge uploaded a new version of Installer-Core to project The Inbox:
http://source.squeak.org/inbox/Installer-Core-tpr.434.mcz

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

Name: Installer-Core-tpr.434
Author: tpr
Time: 27 August 2019, 1:08:05.39831 pm
UUID: c1ea7dcd-9b59-4796-b66a-0f558e074ec9
Ancestors: Installer-Core-mt.433

Some possible cleanups for Installer.

Make InstallerWeb behave more like the other installer classes.
Remove a couple of redundant installer types.
Start adding some up to date copmments and make the Installer class comment appear in a HelpBrowser - more needed. Subclasses should get more extensive class specific commentary and that should be made to appear in the help browser pages.

=============== Diff against Installer-Core-mt.433 ===============

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: '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 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'.
+
- !Installer commentStamp: 'kph 3/30/2009 01:29' prior: 0!
- Documentation now available at http://installer.pbwiki.com/Installer

  useFileIn - flag to load source.st rather than using Monticello!
  Installer class
        instanceVariableNames: 'localRepository'!

Item was added:
+ ----- Method: Installer class>>asHelpTopic (in category 'documentation') -----
+ asHelpTopic
+       ^HelpTopic
+               title: 'Installer'
+               contents: self class comment!

Item was removed:
- ----- Method: Installer class>>cobalt (in category 'repositories') -----
- cobalt
-
-       ^ self monticello http: 'http://croquet-src-01.oit.duke.edu:8886'!

Item was removed:
- ----- Method: Installer class>>goran (in category 'repositories') -----
- goran
-
-       ^ self monticello http: 'squeak.krampe.se'; project: ''!

Item was removed:
- ----- Method: Installer class>>impara (in category 'repositories') -----
- impara
-
-       ^ self monticello http: 'source.impara.de'!

Item was removed:
- ----- Method: Installer class>>install: (in category 'action report') -----
- install: scriptName
-
-       ^ (self scripts install: scriptName) ifNil:[ self web install: scriptName ]
- !

Item was removed:
- ----- Method: Installer class>>keith (in category 'repositories') -----
- keith
-
-       ^ self monticello ftp: 'squeak.warwick.st' directory: 'mc' user: 'squeak' password: 'viewpoints'!

Item was changed:
  ----- Method: Installer class>>remoteRepositories (in category 'repository-overrides') -----
  remoteRepositories
+       ^ #(#ss #ss3 #gemsource #gs #krestianstvo #lukas #squeak #squeakfoundation #squeaksource #squeaksource3 #ss #ss3 #swa #swasource #wiresong )!
-       ^ #(#ss #ss3 #cobalt #gemsource #goran #gs #impara #keith #krestianstvo #lukas #saltypickle #sophie #squeak #squeakfoundation #squeaksource #squeaksource3 #ss #ss3 #swa #swasource #wiresong )!

Item was removed:
- ----- Method: Installer class>>sake (in category 'sake') -----
- sake
-
-       ^ self sake: InstallerSake sake!

Item was removed:
- ----- Method: Installer class>>sake: (in category 'sake') -----
- sake: aSakePackagesClass
-
-       ^ InstallerSake new sake: aSakePackagesClass!

Item was removed:
- ----- Method: Installer class>>saltypickle (in category 'repositories') -----
- saltypickle
-
-       ^ self monticello http: 'squeak.saltypickle.com'!

Item was removed:
- ----- Method: Installer class>>setSakeToUse: (in category 'sake') -----
- setSakeToUse: aClass
-
-       InstallerSake sake: aClass!

Item was removed:
- ----- Method: Installer class>>sophie (in category 'repositories') -----
- sophie
-
-       ^ self monticello http: 'source.sophieproject.org'
-
- !

Item was removed:
- ----- Method: Installer class>>ssMirror (in category 'repositories') -----
- ssMirror
-       "The Chilean mirror for the original SqueakSource."
-       ^ self monticello http: 'http://dsal.cl/squeaksource/'!

Item was changed:
  ----- Method: Installer class>>web (in category 'web') -----
  web
+       ^ InstallerWeb new!
-       ^ InstallerWeb!

Item was removed:
- Installer subclass: #InstallerSake
-       instanceVariableNames: 'sake'
-       classVariableNames: 'Sake'
-       poolDictionaries: ''
-       category: 'Installer-Core'!

Item was removed:
- ----- Method: InstallerSake class>>classPackages (in category 'accessing system') -----
- classPackages
-
-       ^Smalltalk at: #Packages  ifAbsent: [ self error: 'Sake Packages code not present' ]!

Item was removed:
- ----- Method: InstallerSake class>>sake (in category 'accessing') -----
- sake
-
-       ^ Sake ifNil: [ self classPackages current ]!

Item was removed:
- ----- Method: InstallerSake class>>sake: (in category 'accessing') -----
- sake: aClass
-
-       Sake := aClass!

Item was removed:
- ----- Method: InstallerSake>>basicInstall (in category 'basic interface') -----
- basicInstall
-
-       self withAnswersDo: [ (self packages collect: [ :packageName | sake named: packageName ]) asTask run ].
-       !

Item was removed:
- ----- Method: InstallerSake>>sake (in category 'websqueakmap') -----
- sake
-
-       ^ sake  !

Item was removed:
- ----- Method: InstallerSake>>sake: (in category 'websqueakmap') -----
- sake: aSakePackagesClass
-
-       sake := aSakePackagesClass!

Item was removed:
- Installer subclass: #InstallerUniverse
-       instanceVariableNames: 'universe'
-       classVariableNames: 'LastUniUpdate'
-       poolDictionaries: ''
-       category: 'Installer-Core'!

Item was removed:
- ----- Method: InstallerUniverse class>>classUGlobalInstaller (in category 'accessing system') -----
- classUGlobalInstaller
-
-       ^Smalltalk at: #UGlobalInstaller  ifAbsent: [ self error: 'Universes code not present' ]!

Item was removed:
- ----- Method: InstallerUniverse class>>classUUniverse (in category 'accessing system') -----
- classUUniverse
-
-       ^Smalltalk at: #UUniverse  ifAbsent: [ self error: 'Universes code not present' ]!

Item was removed:
- ----- Method: InstallerUniverse class>>default (in category 'instance creation') -----
- default
-
-       ^ self universe: (self classUGlobalInstaller universe: self classUUniverse systemUniverse)!

Item was removed:
- ----- Method: InstallerUniverse class>>universe: (in category 'instance creation') -----
- universe: u
-
-       ^ self new universe: u!

Item was removed:
- ----- Method: InstallerUniverse>>basicInstall (in category 'basic interface') -----
- basicInstall
-       self packages do: [ :packageName |
-               | potentials pkg pkgAndVersion version |
-
-               pkgAndVersion := self packageAndVersionFrom: packageName.
-               pkg := pkgAndVersion first.
-               version := pkgAndVersion last.
-
-               potentials := universe packageVersionsForPackage: pkg.
-
-               pkg := version isEmpty
-                       ifTrue: [ potentials last ]
-                       ifFalse: [
-                               version := self classUVersion readFrom: version readStream.
-                               (potentials anySatisfy: [ :p | p version = version]) ifFalse: [ ^ self error: 'version not found']
-                       ].
-               universe planToInstallPackage: pkg.
-       ].
-       self uniDoInstall!

Item was removed:
- ----- Method: InstallerUniverse>>classUVersion (in category 'class references') -----
- classUVersion
-
-       ^Smalltalk at: #UVersion  ifAbsent: [ self error: 'Universes code not present' ]!

Item was removed:
- ----- Method: InstallerUniverse>>uniDoInstall (in category 'universes') -----
- uniDoInstall
-
-       self withAnswersDo: [ self universe doInstall ] !

Item was removed:
- ----- Method: InstallerUniverse>>universe (in category 'universes') -----
- universe
-
-       ^ universe!

Item was removed:
- ----- Method: InstallerUniverse>>universe: (in category 'universes') -----
- universe: u
-
-       universe := u.
-       self update.!

Item was removed:
- ----- Method: InstallerUniverse>>update (in category 'public interface') -----
- update
-
-       (LastUniUpdate isNil or:[ (DateAndTime now - LastUniUpdate) > 600 seconds  ])
-               ifTrue: [universe requestPackageList.
-                               LastUniUpdate := DateAndTime now]!

Item was removed:
- ----- Method: InstallerWeb class>>install: (in category 'compatability') -----
- install: webPageName
- "This keeps the syntax Installer web install: working"
-       ^ self new install: webPageName!

Item was removed:
- ----- Method: InstallerWeb class>>searchPath (in category 'accessing') -----
- searchPath
-       "a search path item, has the following format. prefix*suffix"
-
-       ^ WebSearchPath ifNil: [ WebSearchPath := OrderedCollection new ].!

Item was added:
+ ----- Method: InstallerWeb>>searchPath (in category 'web install') -----
+ searchPath
+       "a search path item has the following format. prefix*suffix"
+
+       ^ WebSearchPath ifNil: [ WebSearchPath := OrderedCollection new ].!

Item was changed:
  ----- Method: InstallerWeb>>urlToDownload (in category 'web install') -----
  urlToDownload
        "while we look for a url which returns what we are looking for, we get the data anyway"

        | delay |
        delay := 0.
+       self searchPath do: [ :pathSpec |
-       self class webSearchPath do: [ :pathSpec |
                | potentialUrl readPathSpec retry |
                readPathSpec := pathSpec value readStream.
                potentialUrl := (readPathSpec upTo: $*), self package, (readPathSpec upToEnd ifNil: [ '' ]).
                [retry := false.
                pageDataStream := self urlGet: potentialUrl.
                self wasPbwikiSpeedWarning
                        ifTrue: [
                                retry := true.
                                delay := delay + 5.
                                self logCR: 'PBWiki speed warning. Retrying in ', delay printString, ' seconds'.
                                (Delay forSeconds: delay) wait]
                        ifFalse: [ self hasPage ifTrue: [ pageDataStream reset. ^ potentialUrl ] ].
                retry ] whileTrue
        ].
        ^nil
  !



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190829/649bbda1/attachment-0001.html>


More information about the Squeak-dev mailing list