[squeak-dev] Re: [Pkg] FreeTypePlus

Keith Hodges keith_hodges at yahoo.co.uk
Sun May 18 12:18:45 UTC 2008


Hi Andrew,

Some good points...

> It might work with other images, but it might not.
> It might work with future releases of developer Squeak, but it might not.
>
> It solves the specific problem of - "FreeType Plus won't load into 
> sq3.10-7159dev08.04.1
> because MC1.5 doesn't run postscripts, initializes classes in a 
> different order, and fails to load FFI" .
>
MC1.5 does now run postscripts (it should have always run postscripts)

> I anticipate that that problem will be solved with future versions of 
> MC1.5 and/or FFI and/or FreeType Plus, at which point my script will 
> only be of historical interest.
agreed.

> I think something is missing here.
> How can the appropriate installer be found for a specific version, of 
> a particular fork/distribution, that is itself based upon some core 
> Squeak image?
> e.g.  sq3.10-7159dev08.04.1 is based upon  sq3.10-7159 .
> There are multiple version identifiers here...
>    distributionName=DeveloperSqueak
>    distributionVersion=08.04.01
>    coreImageName=Squeak
>    coreImageVersion=3.10
>    coreImageBuild=7159
>    coreImageReleaseStatus=beta

Which means to me that this is getting impossible, so we need to switch 
tactics. Perhaps it is time to start thinking about image "capabilities".

Plan A.

Let's note, if sq3.10-7159dev08.04.1 is based upon  sq3.10-7159, and is 
an assembly of packages, then it is simply a collection of packages with 
dependencies, and our package simply keeps up the tradition. If it 
doesn't have what it needs the dependency system takes care of that.

Plan B - Basic Capabilities

Each package nominates a "provides list". Normally a package provides 
"itself", however it can provide any "capability". So for example "Magma 
server" and "Magma client" both provide "Magma", an abstract capability. 
Packages that need "Magma" capability put "Magma" in their dependsOn: 
list and will not load unless "Magma" is provided. Which provider of 
"Magma" is left to the installers choice.

Plan C - Detailed Capabilities

We are using Sake as a basis for this whole system so we are not just 
limited to depending upon Sake/Packages tasks. We can specify 
dependencies upon the existence of a particular Class, Package, File or 
Method.

task dependsOn: { (SakeTask class: 'UUniverse') exists }.
> In the future, as the core image shrinks, I can imagine someone 
> creating a distribution based on another distribution based on some 
> fork and so on.
> So there would be a chain of version identifiers, e.g. ...
>
>    MyApplication.2.0.1alpha <- SpecialFork.1.0beta <- 
> DeveloperSqueak08.04.01 <- sq3.10-7159
>
> If this version chain was embedded in each image, could Installer use 
> it to find the most appropriate install script for each package?
Installer can. Its search path is fully configurable and is currently 
set to....

1. installer.pbwiki.com/ Page - Smalltalk version - author initials
2. installer.pbwiki.com/ Page - Smalltalk version
3. installer.pbwiki.com/ Page - SystemVersion current majorMinorVersion

Sake/Packages

The code "Packages current", is currently set to major-minor version. 
However I have changed it to try the following options:

'Packages' , SystemVersion current version asLegalSelector capitalized
'Packages' , SystemVersion current majorMinorVersion asLegalSelector 
capitalized
>> and we copy the definition of 'FreeType Plus' to 
>> PackagesSqueak39beta, and PackagesSqueak310beta but we change the 
>> load script to load whatever is the latest from squeaksource, rather 
>> than the package on SqueakMap.
>
> That's a bit dangerous.
> The latest on SqueakSource will almost certainly be full of bugs, and 
> might contain experimental code that does outrageous things.
> Like deleting all the font files from your disk, and installing a new 
> set from DodgyFreeFonts.org  .
> It doesn't, but you get my point :)
That is precisely the point...

Packages beta load: 'FreeTypePlus'.

Is specifically requesting the most recent and hence most dangerous 
version whatever it may be, (because I cant be bothered to go and look 
for it myself).

This provides package authors the easiest way of getting others on board 
with testing where they are at. The package author can say "Try the beta 
and see if it fixes your problem." The author is saved from having to 
update the "working" definitions until he his ready.

cheers

Keith










> Cheers,
> Andy
>
>
>





More information about the Squeak-dev mailing list