[Pharo-dev] Creating the smallest server runtime footprint

Pavel Krivanek pavel.krivanek at gmail.com
Thu Aug 3 04:14:21 EDT 2017


The easiest think you can do is to copy to your repository (or some other)
related packages from the Pharo repository (to do not have to clone it all):

Metacello-GitBasedRepository.package
Metacello-GitHub.package
SUnit-Core.package

and create baseline to load them. I already tried it so you can test it:
https://drive.google.com/open?id=0BzSsmZhqtUTeMVJacTZtdW5UQW8

Then you will do something like:



2017-08-02 15:18 GMT+02:00 Tim Mackinnon <tim at testit.works>:

> Ah, I think I’m starting to get closer to what I need…
>
> So if I want to load in that last piece to enable more general remote
> loading - how do I figure out how to do that? I’m trying to work out where
> the build steps for building up the image (can I see them in Jenkins? It
> wasn’t clear to me if I can look it up? Or the BaselineOfIDE was mentioned
> - looking there I can see a few metacello and gofer packages - but then I
> guess I’m looking for an easy Mcz I can use with the example below?
>
> Or do I just load Metacello as a git submodule and then it will be on my
> local filesystem to then bootstrap up?
>
> I guess I’m trying to work out the best sustainable approach to getting to
> a good server based image that has minimal tools and the ability to easily
> load remote code for pre-req projects.
>
> Tim
>
> On 2 Aug 2017, at 07:05, Guillermo Polito <guillermopolito at gmail.com>
> wrote:
>
> Yes, you should be able to load an mcz in that image by doing:
>
> (MCDirectoryRepository new directory: 'where-your-mcz-is')
>     loadVersionFromFileNamed: 'Metacello-GitBasedRepository-Author.1.mcz')
> load.
>
> Guille
>
> On Wed, Aug 2, 2017 at 7:57 AM, Pavel Krivanek <pavel.krivanek at gmail.com>
> wrote:
>
>>
>> 2017-08-01 23:13 GMT+02:00 Tim Mackinnon <tim at testit.works>:
>>
>>> Hi Pavel - I tried it again and the problem is do with Metacello
>>> dependencies in your baseline.
>>>
>>> The SUnit baseline doesn’t specify any additional dependencies to load
>>> (it just loads local packages), whereas my baseline that fails looks like
>>> this:
>>>
>>> baseline: spec
>>> <baseline>
>>>
>>> spec for: #common do: [
>>> spec configuration: 'ZTimestamp' with: [
>>> spec
>>> versionString: #stable;
>>> repository: 'http://mc.stfx.eu/Neo' ].
>>> spec baseline: 'AWS' with: [
>>> spec repository: 'github://newapplesho/aws-sdk-
>>> smalltalk:v1.10/pharo-repository' ].
>>> spec
>>> package: 'Lambda' with: [ spec requires: {'ZTimestamp'. 'AWS'}].
>>> ].
>>>
>>>
>>> The “spec configuration: ….” Specifications cause the error:
>>>
>>> 25 UndefinedObject(Object)>>*doesNotUnderstand: #addTo:*
>>> 26 MCRepositoryGroup>>addRepository:
>>>
>>> If I remove those lines from my baseline above (as well the requires:
>>> reference to them) I can then successfully load my packages.
>>>
>>> So is this something the minimal image should support (otherwise how do
>>> you load external packages into your image without checking them in
>>> locally?) OR is there something simple I can checkin and load locally to
>>> return that behaviour? (Personally I think it would make sense to allow
>>> remote loading - I’m guessing Pharo itself as a core has everything it
>>> needs - but if you want to do any experimentation on the core and need
>>> remote packages, you would hit this too - so it feels a bit limiting).
>>>
>>
>> The dependencies in th baseline are supported but the support for most of
>> external repositories (like package Metacello-GitBasedRepository) is loaded
>> at the end of bootstrapping process in BaselineOfIDE. We should check/solve
>> dependencies and move it into the minimal Pharo. For now you can try to
>> load it by yourself or work with already prepared local clones of required
>> repositories.
>>
>> -- Pavel
>>
>>
>>
>>
>>>
>>> Tim
>>>
>>> On 1 Aug 2017, at 10:06, Pavel Krivanek <pavel.krivanek at gmail.com>
>>> wrote:
>>>
>>>
>>>
>>> 2017-07-31 22:51 GMT+02:00 Tim Mackinnon <tim at testit.works>:
>>>
>>>> I wasn’t clear on which image to retry - the https://ci.inria.fr/pharo/
>>>> job/Pharo-6.0-Update-Step-3.2-Minimal/lastSuccessfulBuild/ar
>>>> tifact/Pharo-minimal-64.zip one still shows as being last updated 7
>>>> days ago.
>>>>
>>>> The https://ci.inria.fr/pharo/view/6.0-SysConf/job/Pharo-6.0
>>>> -Step-04-01-ConfigurationOfMinimalPharo/ one gives me a mismatch
>>>> error: This interpreter (vers. 68021) cannot read image file (vers. 6521).
>>>>
>>>> The https://ci.inria.fr/pharo/view/7.0/job/70-Bootstrap-32bi
>>>> t-Conversion/lastSuccessfulBuild/artifact/latest-minimal-64.zip one
>>>> gives me a walkback when trying to run my install script :
>>>>
>>>> 25 UndefinedObject(Object)>>*doesNotUnderstand: #addTo:*
>>>> 26 MCRepositoryGroup>>addRepository:
>>>> 27 createRepository
>>>>   | repo |
>>>>   repo := self project createRepository: self.
>>>>   ^ MCRepositoryGroup default repositories
>>>>     detect: [ :each | each = repo ]
>>>>     ifNone: [
>>>>       MCRepositoryGroup default addRepository: repo.
>>>>       repo ] in MetacelloRepositorySpec>>createRepository
>>>>
>>>> I think this is because the image doesn’t support Metacello? As in:
>>>>
>>>> Metacello new
>>>>     repository: 'filetree://../src';
>>>>     baseline: 'Lambda';
>>>>     load.
>>>>
>>>>
>>>> How do you guys load things into the minimal images (I thought you used
>>>> Metacello - but maybe you do it some other way?)
>>>>
>>>> I can use a big 6.1 image fine (as it has Metacello loaded) but I’d
>>>> really like a minimal solution - that can load in libraries like AWS S3, or
>>>> XML parsing etc. and it seems like I should be a good customer for kicking
>>>> the tires on all of this.
>>>>
>>>> Tim
>>>>
>>>>
>>> I checked the 64-bit Pharo 7 minimal image and loading of baseline (of
>>> SUnit from pharo-project/pharo) works:
>>>
>>> ./pharo Pharo7.0-minimal-64bit-b1625bf.image eval --save "Metacello new
>>> baseline: 'SUnit'; repository: 'filetree://./pharo-core/src'; load."
>>>
>>> ./pharo Pharo7.0-minimal-64bit-b1625bf.image eval "TestCase suite run"
>>>
>>> Can you test it too?
>>>
>>> -- Pavel
>>>
>>>
>>>
>>
>
>
> --
>
> Guille Polito
>
> Research Engineer
> French National Center for Scientific Research - *http://www.cnrs.fr*
> <http://www.cnrs.fr/>
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io/>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20170803/250fab78/attachment.html>


More information about the Pharo-dev mailing list