[squeak-dev] The Trunk: Installer-Core-cmm.377.mcz

Chris Muller asqueaker at gmail.com
Tue Aug 13 21:51:30 UTC 2013


On Tue, Aug 13, 2013 at 11:27 AM, Dale K. Henrichs
<dale.henrichs at gemtalksystems.com> 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" <frank.shearar at gmail.com>
> | To: "Chris Muller" <ma.chris.m at gmail.com>, "The general-purpose Squeak developers list"
> | <squeak-dev at lists.squeakfoundation.org>
> | 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 <asqueaker at gmail.com> 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,  <commits at source.squeak.org> 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' }!
> | >>
> | >>
> | >
> |
> |
>


More information about the Squeak-dev mailing list