The Trunk: Installer-Core-cmm.377.mcz

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

The Trunk: Installer-Core-cmm.377.mcz

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

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

Name: Installer-Core-cmm.377
Author: cmm
Time: 9 August 2013, 9:51:53.931 am
UUID: 85dd5a14-e50a-482c-b9cb-f8971264f602
Ancestors: Installer-Core-fbs.373

Document externally-loadable Squeak packages as simple literal structures that can be merged via:

        Installer new merge: #thePackageName

=============== Diff against Installer-Core-fbs.373 ===============

Item was changed:
  Object subclass: #Installer
+ instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel currentRepository'
- instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel'
  classVariableNames: 'InstallerBindings IsSetToTrapErrors Remembered SkipLoadingTests ValidationBlock'
  poolDictionaries: ''
  category: '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!

Item was added:
+ ----- Method: Installer class>>krestianstvo (in category 'repositories') -----
+ krestianstvo
+ "Krestianstvo SDK code repository."
+ ^ self monticello http: 'http://sdk.krestianstvo.org/sdk/'!

Item was added:
+ ----- Method: Installer>>broomMorphsBase (in category 'external-packages') -----
+ broomMorphsBase
+ "Morph alignment user-interface tool."
+ ^ { #ss3 -> 'Connectors'.
+ 'BroomMorphs-Base' }!

Item was added:
+ ----- Method: Installer>>connectors (in category 'external-packages') -----
+ connectors
+ "Connect Morphs together.  Make diagrams."
+ ^ { self broomMorphsBase.
+ 'CGPrereqs'.
+ 'FSM'.
+ 'Connectors'.
+ 'ConnectorsText'.
+ 'ConnectorsShapes'.
+ 'ConnectorsTools'.
+ 'ConnectorsGraphLayout'.
+ 'BroomMorphs-Connectors' }!

Item was added:
+ ----- Method: Installer>>curvedSpaceExplorer (in category 'external-packages') -----
+ curvedSpaceExplorer
+ "Explore curved 3D spaces."
+ ^ { self openGL.
+ 'CCSpaceExplorer' }!

Item was added:
+ ----- Method: Installer>>depthFirstOf:do: (in category 'private') -----
+ depthFirstOf: structure do: oneArgBlock
+ self
+ depthFirstOf: structure
+ do: oneArgBlock
+ ifNotIn: Set new!

Item was added:
+ ----- Method: Installer>>depthFirstOf:do:ifNotIn: (in category 'private') -----
+ depthFirstOf: structure do: oneArgBlock ifNotIn: aSet
+ (aSet includes: structure) ifTrue: [ ^ self ].
+ aSet add: structure.
+ structure isArray
+ ifTrue:
+ [ structure do:
+ [ : each | self
+ depthFirstOf: each
+ do: oneArgBlock
+ ifNotIn: aSet ] ]
+ ifFalse: [ oneArgBlock value: structure ]!

Item was added:
+ ----- Method: Installer>>ffi (in category 'external-packages') -----
+ ffi
+ "Foreign Function Interface."
+ ^ { #squeak -> 'FFI'.
+ 'FFI-Pools'.
+ 'FFI-Kernel' }!

Item was added:
+ ----- Method: Installer>>ffiTests (in category 'external-packages') -----
+ ffiTests
+ "Tests for Foreign Function Interface."
+ ^ { self ffi.
+ 'FFI-Tests' }!

Item was added:
+ ----- Method: Installer>>fuel (in category 'external-packages') -----
+ fuel
+ "Serialization package."
+ ^ { #ss3 -> 'Fuel'.
+ 'ConfigurationOfFuel' }!

Item was added:
+ ----- Method: Installer>>htmlValidator (in category 'external-packages') -----
+ htmlValidator
+ "Validates HTML and CSS pages against W3C DTD."
+ ^ { #ss -> 'htmlcssparser'.
+ 'HTML-tb.37' }!

Item was added:
+ ----- Method: Installer>>merge: (in category 'public interface') -----
+ merge: structureOrSymbol
+ structureOrSymbol isSymbol
+ ifTrue: [ self merge: (self perform: structureOrSymbol) ]
+ ifFalse:
+ [ self
+ depthFirstOf: structureOrSymbol
+ do:
+ [ : each | each isVariableBinding
+ ifTrue: [ self setRepository: each ]
+ ifFalse:
+ [ each isString
+ ifTrue: [ self primMerge: each ]
+ ifFalse: [ self error: 'invalid specification' ] ] ] ]!

Item was added:
+ ----- Method: Installer>>openGL (in category 'external-packages') -----
+ openGL
+ "3D library."
+ ^ { self threeDtransform.
+ #krestianstvo -> 'ccse'.
+ 'OpenGL-Pools'.
+ 'OpenGL-Core'.
+ 'OpenGL-NameManager' }!

Item was added:
+ ----- Method: Installer>>osProcess (in category 'external-packages') -----
+ osProcess
+ "Launch external executable programs."
+ ^ { #ss -> 'OSProcess'.
+ 'OSProcess' }!

Item was added:
+ ----- Method: Installer>>primMerge: (in category 'private') -----
+ primMerge: packageName
+ [ | version |
+ version := (currentRepository includesVersionNamed: packageName)
+ ifTrue: [ currentRepository versionNamed: packageName ]
+ ifFalse: [ currentRepository highestNumberedVersionForPackageNamed: packageName ].
+ version shouldMerge
+ ifTrue: [ version merge ]
+ ifFalse: [ version load ] ]
+ on: MCNoChangesException
+ do: [ : req | req resume ]
+ on: MCMergeResolutionRequest
+ do:
+ [ : request | request merger conflicts isEmpty
+ ifTrue: [ request resume: true ]
+ ifFalse: [ request pass ] ]!

Item was added:
+ ----- Method: Installer>>setRepository: (in category 'private') -----
+ setRepository: anAssociation
+ currentRepository := (self class perform: anAssociation key)
+ project: anAssociation value ;
+ mc!

Item was added:
+ ----- Method: Installer>>threeDtransform (in category 'external-packages') -----
+ threeDtransform
+ ^ { self ffiTests.
+ #ss -> 'CroquetGL'.
+ '3DTransform' }!

Item was added:
+ ----- Method: Installer>>webClientCore (in category 'external-packages') -----
+ webClientCore
+ "Simple, compact, and easy to use HTTP client implementation from Andreas Raab."
+ ^ { #ss -> 'WebClient'.
+ 'WebClient-Core' }!

Item was added:
+ ----- Method: Installer>>webClientSsp (in category 'external-packages') -----
+ webClientSsp
+ "WebClient supports NTLM/SPNEGO authentication via the Microsoft SSP interface (Windows only)."
+ ^ { self ffiTests.
+ self webClientTests.
+ 'WebClient-SSP' }!

Item was added:
+ ----- Method: Installer>>webClientTests (in category 'external-packages') -----
+ webClientTests
+ "Help documentation and tests for Web Client."
+ ^ { self webClientCore.
+ 'WebClient-Tests'.
+ 'WebClient-Help' }!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Installer-Core-cmm.377.mcz

Chris Muller-3
As Frank works toward a smaller image where packages have been
unloaded, I want to establish the hierarchies for reloading them
directly into the image.  This approach utilizes simple Smalltalk
literal structures, suitable for making a core image expandable
without bloating it.

Since it is so little code (with good pop), and no disruption to
anything, I felt comfortable putting into trunk.

On Fri, Aug 9, 2013 at 5:21 PM,  <[hidden email]> wrote:

> Chris Muller uploaded a new version of Installer-Core to project The Trunk:
> http://source.squeak.org/trunk/Installer-Core-cmm.377.mcz
>
> ==================== Summary ====================
>
> Name: Installer-Core-cmm.377
> Author: cmm
> Time: 9 August 2013, 9:51:53.931 am
> UUID: 85dd5a14-e50a-482c-b9cb-f8971264f602
> Ancestors: Installer-Core-fbs.373
>
> Document externally-loadable Squeak packages as simple literal structures that can be merged via:
>
>         Installer new merge: #thePackageName
>
> =============== Diff against Installer-Core-fbs.373 ===============
>
> Item was changed:
>   Object subclass: #Installer
> +       instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel currentRepository'
> -       instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel'
>         classVariableNames: 'InstallerBindings IsSetToTrapErrors Remembered SkipLoadingTests ValidationBlock'
>         poolDictionaries: ''
>         category: '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!
>
> Item was added:
> + ----- Method: Installer class>>krestianstvo (in category 'repositories') -----
> + krestianstvo
> +       "Krestianstvo SDK code repository."
> +       ^ self monticello http: 'http://sdk.krestianstvo.org/sdk/'!
>
> Item was added:
> + ----- Method: Installer>>broomMorphsBase (in category 'external-packages') -----
> + broomMorphsBase
> +       "Morph alignment user-interface tool."
> +       ^ { #ss3 -> 'Connectors'.
> +       'BroomMorphs-Base' }!
>
> Item was added:
> + ----- Method: Installer>>connectors (in category 'external-packages') -----
> + connectors
> +       "Connect Morphs together.  Make diagrams."
> +       ^ { self broomMorphsBase.
> +       'CGPrereqs'.
> +       'FSM'.
> +       'Connectors'.
> +       'ConnectorsText'.
> +       'ConnectorsShapes'.
> +       'ConnectorsTools'.
> +       'ConnectorsGraphLayout'.
> +       'BroomMorphs-Connectors' }!
>
> Item was added:
> + ----- Method: Installer>>curvedSpaceExplorer (in category 'external-packages') -----
> + curvedSpaceExplorer
> +       "Explore curved 3D spaces."
> +       ^ { self openGL.
> +       'CCSpaceExplorer' }!
>
> Item was added:
> + ----- Method: Installer>>depthFirstOf:do: (in category 'private') -----
> + depthFirstOf: structure do: oneArgBlock
> +       self
> +               depthFirstOf: structure
> +               do: oneArgBlock
> +               ifNotIn: Set new!
>
> Item was added:
> + ----- Method: Installer>>depthFirstOf:do:ifNotIn: (in category 'private') -----
> + depthFirstOf: structure do: oneArgBlock ifNotIn: aSet
> +       (aSet includes: structure) ifTrue: [ ^ self ].
> +       aSet add: structure.
> +       structure isArray
> +               ifTrue:
> +                       [ structure do:
> +                               [ : each | self
> +                                       depthFirstOf: each
> +                                       do: oneArgBlock
> +                                       ifNotIn: aSet ] ]
> +               ifFalse: [ oneArgBlock value: structure ]!
>
> Item was added:
> + ----- Method: Installer>>ffi (in category 'external-packages') -----
> + ffi
> +       "Foreign Function Interface."
> +       ^ { #squeak -> 'FFI'.
> +       'FFI-Pools'.
> +       'FFI-Kernel' }!
>
> Item was added:
> + ----- Method: Installer>>ffiTests (in category 'external-packages') -----
> + ffiTests
> +       "Tests for Foreign Function Interface."
> +       ^ { self ffi.
> +       'FFI-Tests' }!
>
> Item was added:
> + ----- Method: Installer>>fuel (in category 'external-packages') -----
> + fuel
> +       "Serialization package."
> +       ^ { #ss3 -> 'Fuel'.
> +       'ConfigurationOfFuel' }!
>
> Item was added:
> + ----- Method: Installer>>htmlValidator (in category 'external-packages') -----
> + htmlValidator
> +       "Validates HTML and CSS pages against W3C DTD."
> +       ^ { #ss -> 'htmlcssparser'.
> +       'HTML-tb.37' }!
>
> Item was added:
> + ----- Method: Installer>>merge: (in category 'public interface') -----
> + merge: structureOrSymbol
> +       structureOrSymbol isSymbol
> +               ifTrue: [ self merge: (self perform: structureOrSymbol) ]
> +               ifFalse:
> +                       [ self
> +                               depthFirstOf: structureOrSymbol
> +                               do:
> +                                       [ : each | each isVariableBinding
> +                                               ifTrue: [ self setRepository: each ]
> +                                               ifFalse:
> +                                                       [ each isString
> +                                                               ifTrue: [ self primMerge: each ]
> +                                                               ifFalse: [ self error: 'invalid specification' ] ] ] ]!
>
> Item was added:
> + ----- Method: Installer>>openGL (in category 'external-packages') -----
> + openGL
> +       "3D library."
> +       ^ { self threeDtransform.
> +       #krestianstvo -> 'ccse'.
> +       'OpenGL-Pools'.
> +       'OpenGL-Core'.
> +       'OpenGL-NameManager' }!
>
> Item was added:
> + ----- Method: Installer>>osProcess (in category 'external-packages') -----
> + osProcess
> +       "Launch external executable programs."
> +       ^ { #ss -> 'OSProcess'.
> +       'OSProcess' }!
>
> Item was added:
> + ----- Method: Installer>>primMerge: (in category 'private') -----
> + primMerge: packageName
> +       [ | version |
> +       version := (currentRepository includesVersionNamed: packageName)
> +               ifTrue: [ currentRepository versionNamed: packageName ]
> +               ifFalse: [ currentRepository highestNumberedVersionForPackageNamed: packageName ].
> +       version shouldMerge
> +               ifTrue: [ version merge ]
> +               ifFalse: [ version load ] ]
> +               on: MCNoChangesException
> +               do: [ : req | req resume ]
> +               on: MCMergeResolutionRequest
> +               do:
> +                       [ : request | request merger conflicts isEmpty
> +                               ifTrue: [ request resume: true ]
> +                               ifFalse: [ request pass ] ]!
>
> Item was added:
> + ----- Method: Installer>>setRepository: (in category 'private') -----
> + setRepository: anAssociation
> +       currentRepository := (self class perform: anAssociation key)
> +                project: anAssociation value ;
> +                mc!
>
> Item was added:
> + ----- Method: Installer>>threeDtransform (in category 'external-packages') -----
> + threeDtransform
> +       ^ { self ffiTests.
> +       #ss -> 'CroquetGL'.
> +       '3DTransform' }!
>
> Item was added:
> + ----- Method: Installer>>webClientCore (in category 'external-packages') -----
> + webClientCore
> +       "Simple, compact, and easy to use HTTP client implementation from Andreas Raab."
> +       ^ { #ss -> 'WebClient'.
> +       'WebClient-Core' }!
>
> Item was added:
> + ----- Method: Installer>>webClientSsp (in category 'external-packages') -----
> + webClientSsp
> +       "WebClient supports NTLM/SPNEGO authentication via the Microsoft SSP interface (Windows only)."
> +       ^ { self ffiTests.
> +       self webClientTests.
> +       'WebClient-SSP' }!
>
> Item was added:
> + ----- Method: Installer>>webClientTests (in category 'external-packages') -----
> + webClientTests
> +       "Help documentation and tests for Web Client."
> +       ^ { self webClientCore.
> +       'WebClient-Tests'.
> +       'WebClient-Help' }!
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Installer-Core-cmm.377.mcz

Frank Shearar-3
Specifically, these are recipes for building up a fatter Squeak from a
leaner one, so we don't have to worry about cross-platform issues.
It's exactly those kinds of issues that cause people to invent things
like Metacello.

frank

On 9 August 2013 23:30, Chris Muller <[hidden email]> wrote:

> As Frank works toward a smaller image where packages have been
> unloaded, I want to establish the hierarchies for reloading them
> directly into the image.  This approach utilizes simple Smalltalk
> literal structures, suitable for making a core image expandable
> without bloating it.
>
> Since it is so little code (with good pop), and no disruption to
> anything, I felt comfortable putting into trunk.
>
> On Fri, Aug 9, 2013 at 5:21 PM,  <[hidden email]> wrote:
>> Chris Muller uploaded a new version of Installer-Core to project The Trunk:
>> http://source.squeak.org/trunk/Installer-Core-cmm.377.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Installer-Core-cmm.377
>> Author: cmm
>> Time: 9 August 2013, 9:51:53.931 am
>> UUID: 85dd5a14-e50a-482c-b9cb-f8971264f602
>> Ancestors: Installer-Core-fbs.373
>>
>> Document externally-loadable Squeak packages as simple literal structures that can be merged via:
>>
>>         Installer new merge: #thePackageName
>>
>> =============== Diff against Installer-Core-fbs.373 ===============
>>
>> Item was changed:
>>   Object subclass: #Installer
>> +       instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel currentRepository'
>> -       instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel'
>>         classVariableNames: 'InstallerBindings IsSetToTrapErrors Remembered SkipLoadingTests ValidationBlock'
>>         poolDictionaries: ''
>>         category: '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!
>>
>> Item was added:
>> + ----- Method: Installer class>>krestianstvo (in category 'repositories') -----
>> + krestianstvo
>> +       "Krestianstvo SDK code repository."
>> +       ^ self monticello http: 'http://sdk.krestianstvo.org/sdk/'!
>>
>> Item was added:
>> + ----- Method: Installer>>broomMorphsBase (in category 'external-packages') -----
>> + broomMorphsBase
>> +       "Morph alignment user-interface tool."
>> +       ^ { #ss3 -> 'Connectors'.
>> +       'BroomMorphs-Base' }!
>>
>> Item was added:
>> + ----- Method: Installer>>connectors (in category 'external-packages') -----
>> + connectors
>> +       "Connect Morphs together.  Make diagrams."
>> +       ^ { self broomMorphsBase.
>> +       'CGPrereqs'.
>> +       'FSM'.
>> +       'Connectors'.
>> +       'ConnectorsText'.
>> +       'ConnectorsShapes'.
>> +       'ConnectorsTools'.
>> +       'ConnectorsGraphLayout'.
>> +       'BroomMorphs-Connectors' }!
>>
>> Item was added:
>> + ----- Method: Installer>>curvedSpaceExplorer (in category 'external-packages') -----
>> + curvedSpaceExplorer
>> +       "Explore curved 3D spaces."
>> +       ^ { self openGL.
>> +       'CCSpaceExplorer' }!
>>
>> Item was added:
>> + ----- Method: Installer>>depthFirstOf:do: (in category 'private') -----
>> + depthFirstOf: structure do: oneArgBlock
>> +       self
>> +               depthFirstOf: structure
>> +               do: oneArgBlock
>> +               ifNotIn: Set new!
>>
>> Item was added:
>> + ----- Method: Installer>>depthFirstOf:do:ifNotIn: (in category 'private') -----
>> + depthFirstOf: structure do: oneArgBlock ifNotIn: aSet
>> +       (aSet includes: structure) ifTrue: [ ^ self ].
>> +       aSet add: structure.
>> +       structure isArray
>> +               ifTrue:
>> +                       [ structure do:
>> +                               [ : each | self
>> +                                       depthFirstOf: each
>> +                                       do: oneArgBlock
>> +                                       ifNotIn: aSet ] ]
>> +               ifFalse: [ oneArgBlock value: structure ]!
>>
>> Item was added:
>> + ----- Method: Installer>>ffi (in category 'external-packages') -----
>> + ffi
>> +       "Foreign Function Interface."
>> +       ^ { #squeak -> 'FFI'.
>> +       'FFI-Pools'.
>> +       'FFI-Kernel' }!
>>
>> Item was added:
>> + ----- Method: Installer>>ffiTests (in category 'external-packages') -----
>> + ffiTests
>> +       "Tests for Foreign Function Interface."
>> +       ^ { self ffi.
>> +       'FFI-Tests' }!
>>
>> Item was added:
>> + ----- Method: Installer>>fuel (in category 'external-packages') -----
>> + fuel
>> +       "Serialization package."
>> +       ^ { #ss3 -> 'Fuel'.
>> +       'ConfigurationOfFuel' }!
>>
>> Item was added:
>> + ----- Method: Installer>>htmlValidator (in category 'external-packages') -----
>> + htmlValidator
>> +       "Validates HTML and CSS pages against W3C DTD."
>> +       ^ { #ss -> 'htmlcssparser'.
>> +       'HTML-tb.37' }!
>>
>> Item was added:
>> + ----- Method: Installer>>merge: (in category 'public interface') -----
>> + merge: structureOrSymbol
>> +       structureOrSymbol isSymbol
>> +               ifTrue: [ self merge: (self perform: structureOrSymbol) ]
>> +               ifFalse:
>> +                       [ self
>> +                               depthFirstOf: structureOrSymbol
>> +                               do:
>> +                                       [ : each | each isVariableBinding
>> +                                               ifTrue: [ self setRepository: each ]
>> +                                               ifFalse:
>> +                                                       [ each isString
>> +                                                               ifTrue: [ self primMerge: each ]
>> +                                                               ifFalse: [ self error: 'invalid specification' ] ] ] ]!
>>
>> Item was added:
>> + ----- Method: Installer>>openGL (in category 'external-packages') -----
>> + openGL
>> +       "3D library."
>> +       ^ { self threeDtransform.
>> +       #krestianstvo -> 'ccse'.
>> +       'OpenGL-Pools'.
>> +       'OpenGL-Core'.
>> +       'OpenGL-NameManager' }!
>>
>> Item was added:
>> + ----- Method: Installer>>osProcess (in category 'external-packages') -----
>> + osProcess
>> +       "Launch external executable programs."
>> +       ^ { #ss -> 'OSProcess'.
>> +       'OSProcess' }!
>>
>> Item was added:
>> + ----- Method: Installer>>primMerge: (in category 'private') -----
>> + primMerge: packageName
>> +       [ | version |
>> +       version := (currentRepository includesVersionNamed: packageName)
>> +               ifTrue: [ currentRepository versionNamed: packageName ]
>> +               ifFalse: [ currentRepository highestNumberedVersionForPackageNamed: packageName ].
>> +       version shouldMerge
>> +               ifTrue: [ version merge ]
>> +               ifFalse: [ version load ] ]
>> +               on: MCNoChangesException
>> +               do: [ : req | req resume ]
>> +               on: MCMergeResolutionRequest
>> +               do:
>> +                       [ : request | request merger conflicts isEmpty
>> +                               ifTrue: [ request resume: true ]
>> +                               ifFalse: [ request pass ] ]!
>>
>> Item was added:
>> + ----- Method: Installer>>setRepository: (in category 'private') -----
>> + setRepository: anAssociation
>> +       currentRepository := (self class perform: anAssociation key)
>> +                project: anAssociation value ;
>> +                mc!
>>
>> Item was added:
>> + ----- Method: Installer>>threeDtransform (in category 'external-packages') -----
>> + threeDtransform
>> +       ^ { self ffiTests.
>> +       #ss -> 'CroquetGL'.
>> +       '3DTransform' }!
>>
>> Item was added:
>> + ----- Method: Installer>>webClientCore (in category 'external-packages') -----
>> + webClientCore
>> +       "Simple, compact, and easy to use HTTP client implementation from Andreas Raab."
>> +       ^ { #ss -> 'WebClient'.
>> +       'WebClient-Core' }!
>>
>> Item was added:
>> + ----- Method: Installer>>webClientSsp (in category 'external-packages') -----
>> + webClientSsp
>> +       "WebClient supports NTLM/SPNEGO authentication via the Microsoft SSP interface (Windows only)."
>> +       ^ { self ffiTests.
>> +       self webClientTests.
>> +       'WebClient-SSP' }!
>>
>> Item was added:
>> + ----- Method: Installer>>webClientTests (in category 'external-packages') -----
>> + webClientTests
>> +       "Help documentation and tests for Web Client."
>> +       ^ { self webClientCore.
>> +       'WebClient-Tests'.
>> +       'WebClient-Help' }!
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Installer-Core-cmm.377.mcz

Dale Henrichs-3
It's not just cross-platform issues that caused Metacello to be invented:)

Metacello allows you to decouple the dependency graphs at the project level ...

What happens to the literal array that is baked into your image, when the formula for one of the components you are using changes the day after you ship the image?

Metacello was invented to address this problem as well:)

Dale

----- Original Message -----
| From: "Frank Shearar" <[hidden email]>
| To: "Chris Muller" <[hidden email]>, "The general-purpose Squeak developers list"
| <[hidden email]>
| Sent: Tuesday, August 13, 2013 9:08:16 AM
| Subject: Re: [squeak-dev] The Trunk: Installer-Core-cmm.377.mcz
|
| Specifically, these are recipes for building up a fatter Squeak from
| a
| leaner one, so we don't have to worry about cross-platform issues.
| It's exactly those kinds of issues that cause people to invent things
| like Metacello.
|
| frank
|
| On 9 August 2013 23:30, Chris Muller <[hidden email]> wrote:
| > As Frank works toward a smaller image where packages have been
| > unloaded, I want to establish the hierarchies for reloading them
| > directly into the image.  This approach utilizes simple Smalltalk
| > literal structures, suitable for making a core image expandable
| > without bloating it.
| >
| > Since it is so little code (with good pop), and no disruption to
| > anything, I felt comfortable putting into trunk.
| >
| > On Fri, Aug 9, 2013 at 5:21 PM,  <[hidden email]> wrote:
| >> Chris Muller uploaded a new version of Installer-Core to project
| >> The Trunk:
| >> http://source.squeak.org/trunk/Installer-Core-cmm.377.mcz
| >>
| >> ==================== Summary ====================
| >>
| >> Name: Installer-Core-cmm.377
| >> Author: cmm
| >> Time: 9 August 2013, 9:51:53.931 am
| >> UUID: 85dd5a14-e50a-482c-b9cb-f8971264f602
| >> Ancestors: Installer-Core-fbs.373
| >>
| >> Document externally-loadable Squeak packages as simple literal
| >> structures that can be merged via:
| >>
| >>         Installer new merge: #thePackageName
| >>
| >> =============== Diff against Installer-Core-fbs.373
| >> ===============
| >>
| >> Item was changed:
| >>   Object subclass: #Installer
| >> +       instanceVariableNames: 'answers packages
| >> messagesToSuppress useFileIn noiseLevel currentRepository'
| >> -       instanceVariableNames: 'answers packages
| >> messagesToSuppress useFileIn noiseLevel'
| >>         classVariableNames: 'InstallerBindings IsSetToTrapErrors
| >>         Remembered SkipLoadingTests ValidationBlock'
| >>         poolDictionaries: ''
| >>         category: '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!
| >>
| >> Item was added:
| >> + ----- Method: Installer class>>krestianstvo (in category
| >> 'repositories') -----
| >> + krestianstvo
| >> +       "Krestianstvo SDK code repository."
| >> +       ^ self monticello http:
| >> 'http://sdk.krestianstvo.org/sdk/'!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>broomMorphsBase (in category
| >> 'external-packages') -----
| >> + broomMorphsBase
| >> +       "Morph alignment user-interface tool."
| >> +       ^ { #ss3 -> 'Connectors'.
| >> +       'BroomMorphs-Base' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>connectors (in category
| >> 'external-packages') -----
| >> + connectors
| >> +       "Connect Morphs together.  Make diagrams."
| >> +       ^ { self broomMorphsBase.
| >> +       'CGPrereqs'.
| >> +       'FSM'.
| >> +       'Connectors'.
| >> +       'ConnectorsText'.
| >> +       'ConnectorsShapes'.
| >> +       'ConnectorsTools'.
| >> +       'ConnectorsGraphLayout'.
| >> +       'BroomMorphs-Connectors' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>curvedSpaceExplorer (in category
| >> 'external-packages') -----
| >> + curvedSpaceExplorer
| >> +       "Explore curved 3D spaces."
| >> +       ^ { self openGL.
| >> +       'CCSpaceExplorer' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>depthFirstOf:do: (in category
| >> 'private') -----
| >> + depthFirstOf: structure do: oneArgBlock
| >> +       self
| >> +               depthFirstOf: structure
| >> +               do: oneArgBlock
| >> +               ifNotIn: Set new!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>depthFirstOf:do:ifNotIn: (in category
| >> 'private') -----
| >> + depthFirstOf: structure do: oneArgBlock ifNotIn: aSet
| >> +       (aSet includes: structure) ifTrue: [ ^ self ].
| >> +       aSet add: structure.
| >> +       structure isArray
| >> +               ifTrue:
| >> +                       [ structure do:
| >> +                               [ : each | self
| >> +                                       depthFirstOf: each
| >> +                                       do: oneArgBlock
| >> +                                       ifNotIn: aSet ] ]
| >> +               ifFalse: [ oneArgBlock value: structure ]!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>ffi (in category 'external-packages')
| >> -----
| >> + ffi
| >> +       "Foreign Function Interface."
| >> +       ^ { #squeak -> 'FFI'.
| >> +       'FFI-Pools'.
| >> +       'FFI-Kernel' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>ffiTests (in category
| >> 'external-packages') -----
| >> + ffiTests
| >> +       "Tests for Foreign Function Interface."
| >> +       ^ { self ffi.
| >> +       'FFI-Tests' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>fuel (in category 'external-packages')
| >> -----
| >> + fuel
| >> +       "Serialization package."
| >> +       ^ { #ss3 -> 'Fuel'.
| >> +       'ConfigurationOfFuel' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>htmlValidator (in category
| >> 'external-packages') -----
| >> + htmlValidator
| >> +       "Validates HTML and CSS pages against W3C DTD."
| >> +       ^ { #ss -> 'htmlcssparser'.
| >> +       'HTML-tb.37' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>merge: (in category 'public interface')
| >> -----
| >> + merge: structureOrSymbol
| >> +       structureOrSymbol isSymbol
| >> +               ifTrue: [ self merge: (self perform:
| >> structureOrSymbol) ]
| >> +               ifFalse:
| >> +                       [ self
| >> +                               depthFirstOf: structureOrSymbol
| >> +                               do:
| >> +                                       [ : each | each
| >> isVariableBinding
| >> +                                               ifTrue: [ self
| >> setRepository: each ]
| >> +                                               ifFalse:
| >> +                                                       [ each
| >> isString
| >> +
| >>                                                               ifTrue:
| >> [ self primMerge: each ]
| >> +
| >>                                                               ifFalse:
| >> [ self error: 'invalid specification' ] ] ] ]!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>openGL (in category
| >> 'external-packages') -----
| >> + openGL
| >> +       "3D library."
| >> +       ^ { self threeDtransform.
| >> +       #krestianstvo -> 'ccse'.
| >> +       'OpenGL-Pools'.
| >> +       'OpenGL-Core'.
| >> +       'OpenGL-NameManager' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>osProcess (in category
| >> 'external-packages') -----
| >> + osProcess
| >> +       "Launch external executable programs."
| >> +       ^ { #ss -> 'OSProcess'.
| >> +       'OSProcess' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>primMerge: (in category 'private')
| >> -----
| >> + primMerge: packageName
| >> +       [ | version |
| >> +       version := (currentRepository includesVersionNamed:
| >> packageName)
| >> +               ifTrue: [ currentRepository versionNamed:
| >> packageName ]
| >> +               ifFalse: [ currentRepository
| >> highestNumberedVersionForPackageNamed: packageName ].
| >> +       version shouldMerge
| >> +               ifTrue: [ version merge ]
| >> +               ifFalse: [ version load ] ]
| >> +               on: MCNoChangesException
| >> +               do: [ : req | req resume ]
| >> +               on: MCMergeResolutionRequest
| >> +               do:
| >> +                       [ : request | request merger conflicts
| >> isEmpty
| >> +                               ifTrue: [ request resume: true ]
| >> +                               ifFalse: [ request pass ] ]!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>setRepository: (in category 'private')
| >> -----
| >> + setRepository: anAssociation
| >> +       currentRepository := (self class perform: anAssociation
| >> key)
| >> +                project: anAssociation value ;
| >> +                mc!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>threeDtransform (in category
| >> 'external-packages') -----
| >> + threeDtransform
| >> +       ^ { self ffiTests.
| >> +       #ss -> 'CroquetGL'.
| >> +       '3DTransform' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>webClientCore (in category
| >> 'external-packages') -----
| >> + webClientCore
| >> +       "Simple, compact, and easy to use HTTP client
| >> implementation from Andreas Raab."
| >> +       ^ { #ss -> 'WebClient'.
| >> +       'WebClient-Core' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>webClientSsp (in category
| >> 'external-packages') -----
| >> + webClientSsp
| >> +       "WebClient supports NTLM/SPNEGO authentication via the
| >> Microsoft SSP interface (Windows only)."
| >> +       ^ { self ffiTests.
| >> +       self webClientTests.
| >> +       'WebClient-SSP' }!
| >>
| >> Item was added:
| >> + ----- Method: Installer>>webClientTests (in category
| >> 'external-packages') -----
| >> + webClientTests
| >> +       "Help documentation and tests for Web Client."
| >> +       ^ { self webClientCore.
| >> +       'WebClient-Tests'.
| >> +       'WebClient-Help' }!
| >>
| >>
| >
|
|

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Installer-Core-cmm.377.mcz

Edgar De Cleene
In reply to this post by Frank Shearar-3
El 13/08/2013, a las 13:08, Frank Shearar <[hidden email]> escribió:

> Specifically, these are recipes for building up a fatter Squeak from a
> leaner one, so we don't have to worry about cross-platform issues.
> It's exactly those kinds of issues that cause people to invent things
> like Metacello.
>
> frank

We could use github with Installer?

Envíado desde Edgar's iPad mini


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Installer-Core-cmm.377.mcz

Frank Shearar-3
On 13 August 2013 20:20, Edgar J De Cleene <[hidden email]> wrote:

> El 13/08/2013, a las 13:08, Frank Shearar <[hidden email]> escribió:
>
>> Specifically, these are recipes for building up a fatter Squeak from a
>> leaner one, so we don't have to worry about cross-platform issues.
>> It's exactly those kinds of issues that cause people to invent things
>> like Metacello.
>>
>> frank
>
> We could use github with Installer?

I did try such a thing. I submitted an experimental version to the
Inbox a good few months ago. I could not get SSL working on my Linux
laptop though, and you simply have to use SSL to do anything on
GitHub.

My approach was to download a zipball of the desired repository (using
a commit ID, a tag, a branch name, or similar), and use parts of
Monticello to turn the source code into something loadable. It worked,
and then the SSL plugin stopped working and I could not get it working
again. (I can't get it working on build.squeak.org, which is (partly)
why the ExternalPackages build has so many failing tests.

frank

> Envíado desde Edgar's iPad mini
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Installer-Core-cmm.377.mcz

Edgar De Cleene



On 8/13/13 5:01 PM, "Frank Shearar" <[hidden email]> wrote:

> I did try such a thing. I submitted an experimental version to the
> Inbox a good few months ago. I could not get SSL working on my Linux
> laptop though, and you simply have to use SSL to do anything on
> GitHub.
>
> My approach was to download a zipball of the desired repository (using
> a commit ID, a tag, a branch name, or similar), and use parts of
> Monticello to turn the source code into something loadable. It worked,
> and then the SSL plugin stopped working and I could not get it working
> again. (I can't get it working on build.squeak.org, which is (partly)
> why the ExternalPackages build has so many failing tests.
>
> frank


In this image
http://dl.dropbox.com/u/16235440/Pharo-1.3-Zodiac-OneClick.app.zip

You could do

ZnClient new get:  
'https://raw.github.com/edgardec/Cuis-CompatibilityWithOtherSmalltalks/maste
r/Cuis-CompatibilityWithOtherSmalltalks.pck.st'

So I port DependencyBrowser to it

And add some like

fileOutcomputePackageDependencies: pkgName
computePackageDependencies: pkgName on: aStream

Modify computePackageDependencies: pkgName

And gives me 20 .cs of other packages Zinc-HTTP uses.
So the port of the minimal code for doing same in Squeak take a time to
discover and test

Juan approach in Cuis is a local GitHub , maybe is a shorter and wise way.

Edgar



Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Installer-Core-cmm.377.mcz

Edgar De Cleene
In reply to this post by Frank Shearar-3

Forget the mandatory picture

http://img546.imageshack.us/img546/2846/vqzo.jpg

Edgar



Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Installer-Core-cmm.377.mcz

Chris Muller-3
In reply to this post by Dale Henrichs-3
On Tue, Aug 13, 2013 at 11:27 AM, Dale K. Henrichs
<[hidden email]> wrote:
> It's not just cross-platform issues that caused Metacello to be invented:)
>
> Metacello allows you to decouple the dependency graphs at the project level ...

This is just a small and simple utility to address the chicken-and-egg
problem, not a replacement for Metacello.  We need a core loader
utility to "bootstrap" the Core image back up to a full trunk
development image.  The Core should be small and devoid of as many
tools domains as possible.

For several projects (see #fuel), Metacello will be one of the very
first packages loaded and used to finish configuration.

We need a structure for installing #metacello too.

> What happens to the literal array that is baked into your image, when the formula for one of the components you are using changes the day after you ship the image?

The release image will include two fixed-configuration structures, one
for Metacello and one for SqueakMap.  That will ensure the
configurator can arrive at a platform baseline from which any other
Metacello-based or SM package can be installed.

> Metacello was invented to address this problem as well:)

Now, we _could_ actually include fixed-configuration (where the
version #'s are specified) for other packages specified by these
literal-arrays if we want.  But for now I want this to simply help
manage the on-going trunk modularization effort with Frank.  IOW, I
want to add scripts for the *internal* packages so that the dependency
hierarchy of Core packages ends up tersely codified in the image and
easily reinstalled back to full trunk using clean, minimal code.


>
> Dale
>
> ----- Original Message -----
> | From: "Frank Shearar" <[hidden email]>
> | To: "Chris Muller" <[hidden email]>, "The general-purpose Squeak developers list"
> | <[hidden email]>
> | Sent: Tuesday, August 13, 2013 9:08:16 AM
> | Subject: Re: [squeak-dev] The Trunk: Installer-Core-cmm.377.mcz
> |
> | Specifically, these are recipes for building up a fatter Squeak from
> | a
> | leaner one, so we don't have to worry about cross-platform issues.
> | It's exactly those kinds of issues that cause people to invent things
> | like Metacello.
> |
> | frank
> |
> | On 9 August 2013 23:30, Chris Muller <[hidden email]> wrote:
> | > As Frank works toward a smaller image where packages have been
> | > unloaded, I want to establish the hierarchies for reloading them
> | > directly into the image.  This approach utilizes simple Smalltalk
> | > literal structures, suitable for making a core image expandable
> | > without bloating it.
> | >
> | > Since it is so little code (with good pop), and no disruption to
> | > anything, I felt comfortable putting into trunk.
> | >
> | > On Fri, Aug 9, 2013 at 5:21 PM,  <[hidden email]> wrote:
> | >> Chris Muller uploaded a new version of Installer-Core to project
> | >> The Trunk:
> | >> http://source.squeak.org/trunk/Installer-Core-cmm.377.mcz
> | >>
> | >> ==================== Summary ====================
> | >>
> | >> Name: Installer-Core-cmm.377
> | >> Author: cmm
> | >> Time: 9 August 2013, 9:51:53.931 am
> | >> UUID: 85dd5a14-e50a-482c-b9cb-f8971264f602
> | >> Ancestors: Installer-Core-fbs.373
> | >>
> | >> Document externally-loadable Squeak packages as simple literal
> | >> structures that can be merged via:
> | >>
> | >>         Installer new merge: #thePackageName
> | >>
> | >> =============== Diff against Installer-Core-fbs.373
> | >> ===============
> | >>
> | >> Item was changed:
> | >>   Object subclass: #Installer
> | >> +       instanceVariableNames: 'answers packages
> | >> messagesToSuppress useFileIn noiseLevel currentRepository'
> | >> -       instanceVariableNames: 'answers packages
> | >> messagesToSuppress useFileIn noiseLevel'
> | >>         classVariableNames: 'InstallerBindings IsSetToTrapErrors
> | >>         Remembered SkipLoadingTests ValidationBlock'
> | >>         poolDictionaries: ''
> | >>         category: '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!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer class>>krestianstvo (in category
> | >> 'repositories') -----
> | >> + krestianstvo
> | >> +       "Krestianstvo SDK code repository."
> | >> +       ^ self monticello http:
> | >> 'http://sdk.krestianstvo.org/sdk/'!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>broomMorphsBase (in category
> | >> 'external-packages') -----
> | >> + broomMorphsBase
> | >> +       "Morph alignment user-interface tool."
> | >> +       ^ { #ss3 -> 'Connectors'.
> | >> +       'BroomMorphs-Base' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>connectors (in category
> | >> 'external-packages') -----
> | >> + connectors
> | >> +       "Connect Morphs together.  Make diagrams."
> | >> +       ^ { self broomMorphsBase.
> | >> +       'CGPrereqs'.
> | >> +       'FSM'.
> | >> +       'Connectors'.
> | >> +       'ConnectorsText'.
> | >> +       'ConnectorsShapes'.
> | >> +       'ConnectorsTools'.
> | >> +       'ConnectorsGraphLayout'.
> | >> +       'BroomMorphs-Connectors' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>curvedSpaceExplorer (in category
> | >> 'external-packages') -----
> | >> + curvedSpaceExplorer
> | >> +       "Explore curved 3D spaces."
> | >> +       ^ { self openGL.
> | >> +       'CCSpaceExplorer' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>depthFirstOf:do: (in category
> | >> 'private') -----
> | >> + depthFirstOf: structure do: oneArgBlock
> | >> +       self
> | >> +               depthFirstOf: structure
> | >> +               do: oneArgBlock
> | >> +               ifNotIn: Set new!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>depthFirstOf:do:ifNotIn: (in category
> | >> 'private') -----
> | >> + depthFirstOf: structure do: oneArgBlock ifNotIn: aSet
> | >> +       (aSet includes: structure) ifTrue: [ ^ self ].
> | >> +       aSet add: structure.
> | >> +       structure isArray
> | >> +               ifTrue:
> | >> +                       [ structure do:
> | >> +                               [ : each | self
> | >> +                                       depthFirstOf: each
> | >> +                                       do: oneArgBlock
> | >> +                                       ifNotIn: aSet ] ]
> | >> +               ifFalse: [ oneArgBlock value: structure ]!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>ffi (in category 'external-packages')
> | >> -----
> | >> + ffi
> | >> +       "Foreign Function Interface."
> | >> +       ^ { #squeak -> 'FFI'.
> | >> +       'FFI-Pools'.
> | >> +       'FFI-Kernel' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>ffiTests (in category
> | >> 'external-packages') -----
> | >> + ffiTests
> | >> +       "Tests for Foreign Function Interface."
> | >> +       ^ { self ffi.
> | >> +       'FFI-Tests' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>fuel (in category 'external-packages')
> | >> -----
> | >> + fuel
> | >> +       "Serialization package."
> | >> +       ^ { #ss3 -> 'Fuel'.
> | >> +       'ConfigurationOfFuel' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>htmlValidator (in category
> | >> 'external-packages') -----
> | >> + htmlValidator
> | >> +       "Validates HTML and CSS pages against W3C DTD."
> | >> +       ^ { #ss -> 'htmlcssparser'.
> | >> +       'HTML-tb.37' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>merge: (in category 'public interface')
> | >> -----
> | >> + merge: structureOrSymbol
> | >> +       structureOrSymbol isSymbol
> | >> +               ifTrue: [ self merge: (self perform:
> | >> structureOrSymbol) ]
> | >> +               ifFalse:
> | >> +                       [ self
> | >> +                               depthFirstOf: structureOrSymbol
> | >> +                               do:
> | >> +                                       [ : each | each
> | >> isVariableBinding
> | >> +                                               ifTrue: [ self
> | >> setRepository: each ]
> | >> +                                               ifFalse:
> | >> +                                                       [ each
> | >> isString
> | >> +
> | >>                                                               ifTrue:
> | >> [ self primMerge: each ]
> | >> +
> | >>                                                               ifFalse:
> | >> [ self error: 'invalid specification' ] ] ] ]!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>openGL (in category
> | >> 'external-packages') -----
> | >> + openGL
> | >> +       "3D library."
> | >> +       ^ { self threeDtransform.
> | >> +       #krestianstvo -> 'ccse'.
> | >> +       'OpenGL-Pools'.
> | >> +       'OpenGL-Core'.
> | >> +       'OpenGL-NameManager' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>osProcess (in category
> | >> 'external-packages') -----
> | >> + osProcess
> | >> +       "Launch external executable programs."
> | >> +       ^ { #ss -> 'OSProcess'.
> | >> +       'OSProcess' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>primMerge: (in category 'private')
> | >> -----
> | >> + primMerge: packageName
> | >> +       [ | version |
> | >> +       version := (currentRepository includesVersionNamed:
> | >> packageName)
> | >> +               ifTrue: [ currentRepository versionNamed:
> | >> packageName ]
> | >> +               ifFalse: [ currentRepository
> | >> highestNumberedVersionForPackageNamed: packageName ].
> | >> +       version shouldMerge
> | >> +               ifTrue: [ version merge ]
> | >> +               ifFalse: [ version load ] ]
> | >> +               on: MCNoChangesException
> | >> +               do: [ : req | req resume ]
> | >> +               on: MCMergeResolutionRequest
> | >> +               do:
> | >> +                       [ : request | request merger conflicts
> | >> isEmpty
> | >> +                               ifTrue: [ request resume: true ]
> | >> +                               ifFalse: [ request pass ] ]!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>setRepository: (in category 'private')
> | >> -----
> | >> + setRepository: anAssociation
> | >> +       currentRepository := (self class perform: anAssociation
> | >> key)
> | >> +                project: anAssociation value ;
> | >> +                mc!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>threeDtransform (in category
> | >> 'external-packages') -----
> | >> + threeDtransform
> | >> +       ^ { self ffiTests.
> | >> +       #ss -> 'CroquetGL'.
> | >> +       '3DTransform' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>webClientCore (in category
> | >> 'external-packages') -----
> | >> + webClientCore
> | >> +       "Simple, compact, and easy to use HTTP client
> | >> implementation from Andreas Raab."
> | >> +       ^ { #ss -> 'WebClient'.
> | >> +       'WebClient-Core' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>webClientSsp (in category
> | >> 'external-packages') -----
> | >> + webClientSsp
> | >> +       "WebClient supports NTLM/SPNEGO authentication via the
> | >> Microsoft SSP interface (Windows only)."
> | >> +       ^ { self ffiTests.
> | >> +       self webClientTests.
> | >> +       'WebClient-SSP' }!
> | >>
> | >> Item was added:
> | >> + ----- Method: Installer>>webClientTests (in category
> | >> 'external-packages') -----
> | >> + webClientTests
> | >> +       "Help documentation and tests for Web Client."
> | >> +       ^ { self webClientCore.
> | >> +       'WebClient-Tests'.
> | >> +       'WebClient-Help' }!
> | >>
> | >>
> | >
> |
> |
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Installer-Core-cmm.377.mcz

Dale Henrichs-3


----- Original Message -----
| From: "Chris Muller" <[hidden email]>
| To: "The general-purpose Squeak developers list" <[hidden email]>, "Dale Henrichs"
| <[hidden email]>, "Frank Shearar" <[hidden email]>
| Sent: Tuesday, August 13, 2013 2:51:30 PM
| Subject: Re: [squeak-dev] The Trunk: Installer-Core-cmm.377.mcz
|
| On Tue, Aug 13, 2013 at 11:27 AM, Dale K. Henrichs
| <[hidden email]> wrote:
| > It's not just cross-platform issues that caused Metacello to be
| > invented:)
| >
| > Metacello allows you to decouple the dependency graphs at the
| > project level ...
|
| This is just a small and simple utility to address the
| chicken-and-egg
| problem, not a replacement for Metacello.  We need a core loader
| utility to "bootstrap" the Core image back up to a full trunk
| development image.  The Core should be small and devoid of as many
| tools domains as possible.
|
| For several projects (see #fuel), Metacello will be one of the very
| first packages loaded and used to finish configuration.
|
| We need a structure for installing #metacello too.

A clean bootstrapping scheme is definitely required ... My main point was that Metacello is more than a cross-platform tool.
 
|
| > What happens to the literal array that is baked into your image,
| > when the formula for one of the components you are using changes
| > the day after you ship the image?
|
| The release image will include two fixed-configuration structures,
| one
| for Metacello and one for SqueakMap.  That will ensure the
| configurator can arrive at a platform baseline from which any other
| Metacello-based or SM package can be installed.

That sounds good ... I do look forward to the day when Metacello no longer has to boot itself on demand:)
 
|
| > Metacello was invented to address this problem as well:)
|
| Now, we _could_ actually include fixed-configuration (where the
| version #'s are specified) for other packages specified by these
| literal-arrays if we want.  But for now I want this to simply help
| manage the on-going trunk modularization effort with Frank.  IOW, I
| want to add scripts for the *internal* packages so that the
| dependency
| hierarchy of Core packages ends up tersely codified in the image and
| easily reinstalled back to full trunk using clean, minimal code.

Yes there are trade-offs to be made.

If you bootstrap Metacello and/or SqueakMap then you could use Metacello and/or Squeakmap to load the rest of the packages beyond the minimal core and make it possible for folks to completely customize their image, if they desire to do so. But then you will "always have Metacello and/or SqueakMap loaded" in any version of the image beyond the minimal.

If having Metacello and/or SqueakMap always "loaded" is not desirable, then the bootstrapper _can_ be used to bootstrap sets of packages beyond Metacello and/or SqueakMap.

|
|
| >
| > Dale
| >
| > ----- Original Message -----
| > | From: "Frank Shearar" <[hidden email]>
| > | To: "Chris Muller" <[hidden email]>, "The general-purpose
| > | Squeak developers list"
| > | <[hidden email]>
| > | Sent: Tuesday, August 13, 2013 9:08:16 AM
| > | Subject: Re: [squeak-dev] The Trunk: Installer-Core-cmm.377.mcz
| > |
| > | Specifically, these are recipes for building up a fatter Squeak
| > | from
| > | a
| > | leaner one, so we don't have to worry about cross-platform
| > | issues.
| > | It's exactly those kinds of issues that cause people to invent
| > | things
| > | like Metacello.
| > |
| > | frank
| > |
| > | On 9 August 2013 23:30, Chris Muller <[hidden email]> wrote:
| > | > As Frank works toward a smaller image where packages have been
| > | > unloaded, I want to establish the hierarchies for reloading
| > | > them
| > | > directly into the image.  This approach utilizes simple
| > | > Smalltalk
| > | > literal structures, suitable for making a core image expandable
| > | > without bloating it.
| > | >
| > | > Since it is so little code (with good pop), and no disruption
| > | > to
| > | > anything, I felt comfortable putting into trunk.
| > | >
| > | > On Fri, Aug 9, 2013 at 5:21 PM,  <[hidden email]>
| > | > wrote:
| > | >> Chris Muller uploaded a new version of Installer-Core to
| > | >> project
| > | >> The Trunk:
| > | >> http://source.squeak.org/trunk/Installer-Core-cmm.377.mcz
| > | >>
| > | >> ==================== Summary ====================
| > | >>
| > | >> Name: Installer-Core-cmm.377
| > | >> Author: cmm
| > | >> Time: 9 August 2013, 9:51:53.931 am
| > | >> UUID: 85dd5a14-e50a-482c-b9cb-f8971264f602
| > | >> Ancestors: Installer-Core-fbs.373
| > | >>
| > | >> Document externally-loadable Squeak packages as simple literal
| > | >> structures that can be merged via:
| > | >>
| > | >>         Installer new merge: #thePackageName
| > | >>
| > | >> =============== Diff against Installer-Core-fbs.373
| > | >> ===============
| > | >>
| > | >> Item was changed:
| > | >>   Object subclass: #Installer
| > | >> +       instanceVariableNames: 'answers packages
| > | >> messagesToSuppress useFileIn noiseLevel currentRepository'
| > | >> -       instanceVariableNames: 'answers packages
| > | >> messagesToSuppress useFileIn noiseLevel'
| > | >>         classVariableNames: 'InstallerBindings
| > | >>         IsSetToTrapErrors
| > | >>         Remembered SkipLoadingTests ValidationBlock'
| > | >>         poolDictionaries: ''
| > | >>         category: '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!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer class>>krestianstvo (in category
| > | >> 'repositories') -----
| > | >> + krestianstvo
| > | >> +       "Krestianstvo SDK code repository."
| > | >> +       ^ self monticello http:
| > | >> 'http://sdk.krestianstvo.org/sdk/'!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>broomMorphsBase (in category
| > | >> 'external-packages') -----
| > | >> + broomMorphsBase
| > | >> +       "Morph alignment user-interface tool."
| > | >> +       ^ { #ss3 -> 'Connectors'.
| > | >> +       'BroomMorphs-Base' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>connectors (in category
| > | >> 'external-packages') -----
| > | >> + connectors
| > | >> +       "Connect Morphs together.  Make diagrams."
| > | >> +       ^ { self broomMorphsBase.
| > | >> +       'CGPrereqs'.
| > | >> +       'FSM'.
| > | >> +       'Connectors'.
| > | >> +       'ConnectorsText'.
| > | >> +       'ConnectorsShapes'.
| > | >> +       'ConnectorsTools'.
| > | >> +       'ConnectorsGraphLayout'.
| > | >> +       'BroomMorphs-Connectors' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>curvedSpaceExplorer (in category
| > | >> 'external-packages') -----
| > | >> + curvedSpaceExplorer
| > | >> +       "Explore curved 3D spaces."
| > | >> +       ^ { self openGL.
| > | >> +       'CCSpaceExplorer' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>depthFirstOf:do: (in category
| > | >> 'private') -----
| > | >> + depthFirstOf: structure do: oneArgBlock
| > | >> +       self
| > | >> +               depthFirstOf: structure
| > | >> +               do: oneArgBlock
| > | >> +               ifNotIn: Set new!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>depthFirstOf:do:ifNotIn: (in
| > | >> category
| > | >> 'private') -----
| > | >> + depthFirstOf: structure do: oneArgBlock ifNotIn: aSet
| > | >> +       (aSet includes: structure) ifTrue: [ ^ self ].
| > | >> +       aSet add: structure.
| > | >> +       structure isArray
| > | >> +               ifTrue:
| > | >> +                       [ structure do:
| > | >> +                               [ : each | self
| > | >> +                                       depthFirstOf: each
| > | >> +                                       do: oneArgBlock
| > | >> +                                       ifNotIn: aSet ] ]
| > | >> +               ifFalse: [ oneArgBlock value: structure ]!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>ffi (in category
| > | >> 'external-packages')
| > | >> -----
| > | >> + ffi
| > | >> +       "Foreign Function Interface."
| > | >> +       ^ { #squeak -> 'FFI'.
| > | >> +       'FFI-Pools'.
| > | >> +       'FFI-Kernel' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>ffiTests (in category
| > | >> 'external-packages') -----
| > | >> + ffiTests
| > | >> +       "Tests for Foreign Function Interface."
| > | >> +       ^ { self ffi.
| > | >> +       'FFI-Tests' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>fuel (in category
| > | >> 'external-packages')
| > | >> -----
| > | >> + fuel
| > | >> +       "Serialization package."
| > | >> +       ^ { #ss3 -> 'Fuel'.
| > | >> +       'ConfigurationOfFuel' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>htmlValidator (in category
| > | >> 'external-packages') -----
| > | >> + htmlValidator
| > | >> +       "Validates HTML and CSS pages against W3C DTD."
| > | >> +       ^ { #ss -> 'htmlcssparser'.
| > | >> +       'HTML-tb.37' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>merge: (in category 'public
| > | >> interface')
| > | >> -----
| > | >> + merge: structureOrSymbol
| > | >> +       structureOrSymbol isSymbol
| > | >> +               ifTrue: [ self merge: (self perform:
| > | >> structureOrSymbol) ]
| > | >> +               ifFalse:
| > | >> +                       [ self
| > | >> +                               depthFirstOf:
| > | >> structureOrSymbol
| > | >> +                               do:
| > | >> +                                       [ : each | each
| > | >> isVariableBinding
| > | >> +                                               ifTrue: [ self
| > | >> setRepository: each ]
| > | >> +                                               ifFalse:
| > | >> +                                                       [ each
| > | >> isString
| > | >> +
| > | >>                                                               ifTrue:
| > | >> [ self primMerge: each ]
| > | >> +
| > | >>                                                               ifFalse:
| > | >> [ self error: 'invalid specification' ] ] ] ]!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>openGL (in category
| > | >> 'external-packages') -----
| > | >> + openGL
| > | >> +       "3D library."
| > | >> +       ^ { self threeDtransform.
| > | >> +       #krestianstvo -> 'ccse'.
| > | >> +       'OpenGL-Pools'.
| > | >> +       'OpenGL-Core'.
| > | >> +       'OpenGL-NameManager' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>osProcess (in category
| > | >> 'external-packages') -----
| > | >> + osProcess
| > | >> +       "Launch external executable programs."
| > | >> +       ^ { #ss -> 'OSProcess'.
| > | >> +       'OSProcess' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>primMerge: (in category 'private')
| > | >> -----
| > | >> + primMerge: packageName
| > | >> +       [ | version |
| > | >> +       version := (currentRepository includesVersionNamed:
| > | >> packageName)
| > | >> +               ifTrue: [ currentRepository versionNamed:
| > | >> packageName ]
| > | >> +               ifFalse: [ currentRepository
| > | >> highestNumberedVersionForPackageNamed: packageName ].
| > | >> +       version shouldMerge
| > | >> +               ifTrue: [ version merge ]
| > | >> +               ifFalse: [ version load ] ]
| > | >> +               on: MCNoChangesException
| > | >> +               do: [ : req | req resume ]
| > | >> +               on: MCMergeResolutionRequest
| > | >> +               do:
| > | >> +                       [ : request | request merger conflicts
| > | >> isEmpty
| > | >> +                               ifTrue: [ request resume: true
| > | >> ]
| > | >> +                               ifFalse: [ request pass ] ]!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>setRepository: (in category
| > | >> 'private')
| > | >> -----
| > | >> + setRepository: anAssociation
| > | >> +       currentRepository := (self class perform:
| > | >> anAssociation
| > | >> key)
| > | >> +                project: anAssociation value ;
| > | >> +                mc!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>threeDtransform (in category
| > | >> 'external-packages') -----
| > | >> + threeDtransform
| > | >> +       ^ { self ffiTests.
| > | >> +       #ss -> 'CroquetGL'.
| > | >> +       '3DTransform' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>webClientCore (in category
| > | >> 'external-packages') -----
| > | >> + webClientCore
| > | >> +       "Simple, compact, and easy to use HTTP client
| > | >> implementation from Andreas Raab."
| > | >> +       ^ { #ss -> 'WebClient'.
| > | >> +       'WebClient-Core' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>webClientSsp (in category
| > | >> 'external-packages') -----
| > | >> + webClientSsp
| > | >> +       "WebClient supports NTLM/SPNEGO authentication via the
| > | >> Microsoft SSP interface (Windows only)."
| > | >> +       ^ { self ffiTests.
| > | >> +       self webClientTests.
| > | >> +       'WebClient-SSP' }!
| > | >>
| > | >> Item was added:
| > | >> + ----- Method: Installer>>webClientTests (in category
| > | >> 'external-packages') -----
| > | >> + webClientTests
| > | >> +       "Help documentation and tests for Web Client."
| > | >> +       ^ { self webClientCore.
| > | >> +       'WebClient-Tests'.
| > | >> +       'WebClient-Help' }!
| > | >>
| > | >>
| > | >
| > |
| > |
| >
|