The Inbox: Installer-Core-cmm.430.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Installer-Core-cmm.430.mcz

commits-2
Chris Muller uploaded a new version of Installer-Core to project The Inbox:
http://source.squeak.org/inbox/Installer-Core-cmm.430.mcz

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

Name: Installer-Core-cmm.430
Author: cmm
Time: 10 April 2019, 11:23:30.85688 pm
UUID: cb5b16dd-ba30-4ca0-8293-a58f16759490
Ancestors: Installer-Core-tcj.426

Allow installation of github projects via the scripts at the top of their readme files, without first having to manually ensure Metacello is installed.

=============== 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 ].
 
+ self isMetacelloInstalled ifFalse: [
+ "Prepare a clean environment for it."
+ Smalltalk globals removeKey: #Metacello.
- metacello := (Smalltalk classNamed: #Metacello) ifNil: [
  "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 ].
- 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:
+ ----- Method: Installer class>>installAndOpenGitBrowser (in category 'scripts') -----
+ installAndOpenGitBrowser
+ self installGitInfrastructure.
+ (Smalltalk at: #SquitBrowser) open.!

Item was changed:
  ----- Method: Installer class>>installGitInfrastructure (in category 'scripts') -----
  installGitInfrastructure
+ "for INIFileTest>>#testComplexRead"
+ Scanner allowUnderscoreAsAssignment: true.
-
- self ensureRecentMetacello.
-
  (Smalltalk at: #Metacello) new
   baseline: 'Squot';
   repository: 'github://hpi-swa/Squot:master/src';
   load.!

Item was added:
+ ----- 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) ~= MetacelloStub!

Item was added:
+ Object subclass: #MetacelloStub
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Installer-Core'!
+
+ !MetacelloStub commentStamp: 'cmm 4/8/2019 14:00' prior: 0!
+ MetacelloStub is a loose reference to the class Metacello in its host repository.  It's kept at both its real name, #MetacelloStub, as well as the name #Metacello.  This is done to allow Squeak to respond to messages sent to Metacello (e.g., as referenced in external installation scripts), without the need to ship with Metacello pre-installed.!

Item was added:
+ ----- Method: MetacelloStub class>>confirmMetacello (in category 'overriding') -----
+ confirmMetacello
+ Installer isMetacelloInstalled ifFalse:
+ [ (UIManager confirm: 'This action requires Metacello, but it''s not installed.  Download and install it now?') ifTrue: [ Installer ensureRecentMetacello ] ]!

Item was added:
+ ----- Method: MetacelloStub class>>doesNotUnderstand: (in category 'overriding') -----
+ doesNotUnderstand: aMessage
+ "Handle any messages sent to Metacello class, too."
+ self confirmMetacello.
+ ^ aMessage sendTo: (Smalltalk classNamed: #Metacello)!

Item was added:
+ ----- Method: MetacelloStub class>>initialize (in category 'initialize-release') -----
+ initialize
+ Smalltalk
+ at: #Metacello
+ ifAbsentPut: [ self ]!

Item was added:
+ ----- Method: MetacelloStub class>>isMetacelloConfig (in category 'overriding') -----
+ isMetacelloConfig
+ "Sent during Metacello's bootstrap initialization to all classes in the system.  Respond false."
+ ^ false!

Item was added:
+ ----- Method: MetacelloStub class>>new (in category 'overriding') -----
+ new
+ self confirmMetacello.
+ ^ (Smalltalk at: #Metacello) new!


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-cmm.430.mcz

Chris Muller-3
Thanks for that change to #installGitInfrastructure Jakob, it opened
my eyes to an easy way to test this.  I think this is the one.

There was an underscore assignment in one of the loaded packages of
GitInfrastructure, that's why the Scanner allowUnderscoreAssignment:.

Best,
  Chris

PS -- I've updated the Tools menu from "GitInfrastructure" to "Git
Browser", but will wait to commit that until after we're sure this is good.




On Wed, Apr 10, 2019 at 11:23 PM <[hidden email]> wrote:

>
> Chris Muller uploaded a new version of Installer-Core to project The Inbox:
> http://source.squeak.org/inbox/Installer-Core-cmm.430.mcz
>
> ==================== Summary ====================
>
> Name: Installer-Core-cmm.430
> Author: cmm
> Time: 10 April 2019, 11:23:30.85688 pm
> UUID: cb5b16dd-ba30-4ca0-8293-a58f16759490
> Ancestors: Installer-Core-tcj.426
>
> Allow installation of github projects via the scripts at the top of their readme files, without first having to manually ensure Metacello is installed.
>
> =============== 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 ].
>
> +       self isMetacelloInstalled ifFalse: [
> +               "Prepare a clean environment for it."
> +               Smalltalk globals removeKey: #Metacello.
> -       metacello := (Smalltalk classNamed: #Metacello) ifNil: [
>                 "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 ].
> -               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:
> + ----- Method: Installer class>>installAndOpenGitBrowser (in category 'scripts') -----
> + installAndOpenGitBrowser
> +       self installGitInfrastructure.
> +       (Smalltalk at: #SquitBrowser) open.!
>
> Item was changed:
>   ----- Method: Installer class>>installGitInfrastructure (in category 'scripts') -----
>   installGitInfrastructure
> + "for INIFileTest>>#testComplexRead"
> + Scanner allowUnderscoreAsAssignment: true.
> -
> -       self ensureRecentMetacello.
> -
>         (Smalltalk at: #Metacello) new
>                   baseline: 'Squot';
>                   repository: 'github://hpi-swa/Squot:master/src';
>                   load.!
>
> Item was added:
> + ----- 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) ~= MetacelloStub!
>
> Item was added:
> + Object subclass: #MetacelloStub
> +       instanceVariableNames: ''
> +       classVariableNames: ''
> +       poolDictionaries: ''
> +       category: 'Installer-Core'!
> +
> + !MetacelloStub commentStamp: 'cmm 4/8/2019 14:00' prior: 0!
> + MetacelloStub is a loose reference to the class Metacello in its host repository.  It's kept at both its real name, #MetacelloStub, as well as the name #Metacello.  This is done to allow Squeak to respond to messages sent to Metacello (e.g., as referenced in external installation scripts), without the need to ship with Metacello pre-installed.!
>
> Item was added:
> + ----- Method: MetacelloStub class>>confirmMetacello (in category 'overriding') -----
> + confirmMetacello
> +       Installer isMetacelloInstalled ifFalse:
> +               [ (UIManager confirm: 'This action requires Metacello, but it''s not installed.  Download and install it now?') ifTrue: [ Installer ensureRecentMetacello ] ]!
>
> Item was added:
> + ----- Method: MetacelloStub class>>doesNotUnderstand: (in category 'overriding') -----
> + doesNotUnderstand: aMessage
> +       "Handle any messages sent to Metacello class, too."
> +       self confirmMetacello.
> +       ^ aMessage sendTo: (Smalltalk classNamed: #Metacello)!
>
> Item was added:
> + ----- Method: MetacelloStub class>>initialize (in category 'initialize-release') -----
> + initialize
> +       Smalltalk
> +               at: #Metacello
> +               ifAbsentPut: [ self ]!
>
> Item was added:
> + ----- Method: MetacelloStub class>>isMetacelloConfig (in category 'overriding') -----
> + isMetacelloConfig
> +       "Sent during Metacello's bootstrap initialization to all classes in the system.  Respond false."
> +       ^ false!
>
> Item was added:
> + ----- Method: MetacelloStub class>>new (in category 'overriding') -----
> + new
> +       self confirmMetacello.
> +       ^ (Smalltalk at: #Metacello) new!
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-cmm.430.mcz

Jakob Reschke-2
Am Do., 11. Apr. 2019 um 06:32 Uhr schrieb Chris Muller <[hidden email]>:
There was an underscore assignment in one of the loaded packages of
GitInfrastructure, that's why the Scanner allowUnderscoreAssignment:.

Should this be reset after the load is complete? 


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-cmm.430.mcz

Chris Muller-4
What about running FixUnderscores on the affected package?

On Thu, Apr 11, 2019 at 12:28 AM Jakob Reschke <[hidden email]> wrote:
>
> Am Do., 11. Apr. 2019 um 06:32 Uhr schrieb Chris Muller <[hidden email]>:
>>
>> There was an underscore assignment in one of the loaded packages of
>> GitInfrastructure, that's why the Scanner allowUnderscoreAssignment:.
>
>
> Should this be reset after the load is complete?

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-cmm.430.mcz

Jakob Reschke-2
Am Fr., 12. Apr. 2019 um 03:31 Uhr schrieb Chris Muller <[hidden email]>:
What about running FixUnderscores on the affected package?

I wouldn't mind if anybody did that. Not sure who is able to put the fixed version in the upstream Monticello repository.