Actually there is something weird going on - as now I’m getting a complaint about "FLPharoPlatform had the subclass responsibility to implement #isBigEndian”, and that’s in the FuelPlatform-Pharo-06 which you said to include (and it looks like I am).
I need to double check this - as I must be making some trivial mistake. Tim
|
I’ve spotted something interesting in my logs - when I added one of the missing methods to ClassDescription - I see in the log the message:
Loaded -> Fuel-cypress.1 --- <a href="filetree:///builds/macta/PharoLambda/bootstrap" class="">filetree:///builds/macta/PharoLambda/bootstrap --- cache ...finished baseline Compiling missing traits... Evaluating post load initialization... Finished Script. However when I remove all the compiles I don’t see this message: Loaded -> Fuel-cypress.1 --- <a href="filetree:///builds/macta/PharoLambda/bootstrap" class="">filetree:///builds/macta/PharoLambda/bootstrap --- cache ...finished baseline Evaluating post load initialization... Finished Script. So I wonder if this is similar to the problem I had in the previous 6.0 image - where some things didn’t seem to compile properly (in that case, it was loading a missing class that didn’t seem to cause recompilation). Tim
|
Sadly - false call, that was my logging message - so I’m stumped why these traits aren’t being compiled when I load in Fuel?
However I have figured out why I get the BigEndian error - this is because the platform is now 7 and so the FlPharo06Platform is not being identified and the more generic FlPharoPlatform is then the default and it doesn’t implement #isBigEndian. Tim
|
On Fri, Aug 4, 2017 at 8:42 AM, Tim Mackinnon <[hidden email]> wrote:
Max, should we do something to the Fuel Platform for Pharo 7?
|
In reply to this post by Tim Mackinnon
Hmm, Pharo 7 has flattened traits in the kernel, but it still supports them. So probably because you are using vanilla Fuel packages, they extend traits that are not used for real. You should use packages from the Pharo repository. -- Pavel 2017-08-04 13:42 GMT+02:00 Tim Mackinnon <[hidden email]>:
|
In reply to this post by Mariano Martinez Peck
HURRAH - I got it to work, and Fuel out an error to S3 and read it back into a fat 6.1 image with a debug stack (which is so cool!).
My footprint size is still a bit larger than I would like (31mb - image of 22.7mb - of which 1mb if fuel and 7mb is S3 and XMLParser support) - so I guess I need to find ways to trim down some of the addons (and any additional image size reductions would be helpful - if there are any to be had). Is there any easy tools/scripts to explore a headless image and figure out what takes the most size (maybe at a package level?). But definitely this has got me into a good place for experimentation. For the record I had to do the following to get things working: Define a new baseline: baseline: spec Run the following script: Metacello new
|
On Fri, Aug 4, 2017 at 9:51 AM, Tim Mackinnon <[hidden email]> wrote:
COOOL!!! I want to see your blogpost once you make it!!! Congratulations, this was a very cool thread to follow :)
I know this is a bit offtopic... but maybe to give you some perspective... For my PhD, one of the things I did (lets say the closest to the PhD topic) was called Marea [1] (I can also send you the slides and the PhD defense video on youtube if you want). In Marea what I did was to modify the VM to implement a very basic (with lots of limitations) object usage tracking...I simply flagged when an object was used and cleared the flag every in a while. Then, at image side, I would find graphs of unused objects, and replaced the boundary objects with proxies using Ghost proxies (note that an anused object is not the same as unreferenced object,...GC does nothing here). The graphs where then serialized with Fuel. Finally, if those graphs happened to be needed, then the proxy would intercept the message, materialize from Fuel, and plug back the original graph. Anyway... all of what was to said that I some point I did an experiment. I was able to already proxify and serialize classes, methods, etc. So I took the whole image and I swapped out all classes and their instances (each class with its instances in a different graph) but only a really small core. This image was a Seaside image running DBX Pier website. So I swapped out everything, and then I lazily started to navigate DBX website, causing the needed graphs to be swapped in. I was able to naviagat all webapp and use it perfectly. I even saved the image. And all this email is to say that such an image was 3MB. Cheers,
|
Hi - I was actually reading those slides the other day, but hadn’t fully appreciated the consequences… that is very cool - and definitely something for me to put on the stack of things to try out I was going to say I could put the Fuel and S3 access into such a library - but then I would need them to load it from S3 - so catch 22 for that, but I’ll bet I come up with another usage.
Thanks to everyone for their help with this. Is there anything I need follow up on from this? I saw you asked Max about the Platform7 piece. I also don’t understand why I have problems with those missing fuel trait methods (so I’ll see what Pavel says about that). Tim
|
In reply to this post by Pavel Krivanek-3
Hi Pavel - When you say “packages from the Pharo repo” - I think I’m doing that - yesterday I cloned the Pharo repo and then I copied the Fuel packages you guys suggested over into my branch (not elegant, but simple).
So I should have the flattened versions then? (I have now managed to get the P7 image working - so thanks for all your help, but I’m curious about this part) Tim
|
It it were packages from the development branch then you do not need to flatten them. -- Pavel 2017-08-04 15:52 GMT+02:00 Tim Mackinnon <[hidden email]>:
|
Ah - I checked out master. So should I have checked out dev? Would this explain it? I've appreciated the help a lot by the way. Tim Sent from my iPhone
|
yes, because master branch contains code of Pharo 6. For Pharo 7 we have flattened the traits in the kernel, but this is probably the only difference that affects Fuel packages -- Pavel 2017-08-04 20:32 GMT+02:00 Tim Mackinnon <[hidden email]>:
|
I’ve just switched branches and diffed - and yep, those methods were the difference. Sorry about the extra noise on that - I should have read your instructions a bit better - still I’ve learned a lot doing this, and am really chuffed that I’ve managed to get something working.
I’m looking at how to get my image size down a bit more - and have another thread on how to properly remove packages. How stable do you think the minimal image will be? Should I try and snapshot it as a baseline - or do you think I can keep pulling safely from Jenkins for a while? Tim
|
2017-08-07 12:56 GMT+02:00 Tim Mackinnon <[hidden email]>:
Pharo 7 is not stable in principle. You should not depend on the latest version but of course you can take a particular build that is supposed to be quite solid. Now you should rather take builds before Hermes integration and related refactorings. -- Pavel
|
Thanks Pavel - as I’m downloading:
curl -L -o min.zip https://ci.inria.fr/pharo/job/70-Bootstrap-32bit-Conversion/lastSuccessfulBuild/artifact/latest-minimal-64.zip I noted that the last successful build of that asset was:
Should I peg myself to a specific version that is more or less compatible with Pharo 6.1? I can see builds 28 (Aug 4 11am) or 27 (July 31?) - or should I go earlier? Can I rely on those builds sticking around - or should I cache one somewhere? Tim
|
Unfortunately we store minimal versions only for the latest build and you should use older build with hash b1625bf32c6b2b6c6f8babb789e377af5132d740.
You can download this image here (I have found a random copy of it): Copy it to some public location you can reach. -- Pavel 2017-08-07 14:25 GMT+02:00 Tim Mackinnon <[hidden email]>:
|
Hey thanks again - it looks like that file is from Build #25 (I think Jenkins might cache the last 5 builds from the looks of it).
Interestingly that image is 2mb smaller than the later ones (which is helpful) - however when I try to use it, I get a walkback because Metacello wasn’t available in that build. (I then tried with build #29 the latest? and #28) - and then I get an error as it seems that the Locale class is not defined in that one? 'Errors in script loaded from minimal.st' MessageNotUnderstood: receiver of "currentPlatform" is nil UndefinedObject(Object)>>doesNotUnderstand: #currentPlatform LanguageEnvironment class>>currentPlatform LanguageEnvironment class>>defaultSystemConverter TextConverter class>>defaultSystemConverter MultiByteFileStream>>converter MultiByteFileStream>>nextPut: MultiByteFileStream(WriteStream)>>cr UndefinedObject>>DoIt So I guess the timing of my question was spot on as it looks like I’ve been running with build #27 for a few days (without realising I had cached it) and that one works. I would be interesting in working out how to get metacello in build #25 as its smaller size is attractive (assuming its not metacello support that adds 3mb to the image size), Do you think its worth it? Can I use the command line package loader to shoe-horn it in? Tim
|
Hi Tim, in the file server: You can get now latest 32 bit builds in many flavours: - compiler (basic pharo image with just a compiler) - core (compiler + package initialization) - monticello bootstrap (core + basic monticello packages -- no network here!) - monticello (monticello bootstrap + network support) - metacello (monticello + metacello) - default/full (image with everything loaded) If you check the built images you'll see that: - compiler is 4.7MB - core is 5.6MB - monticello bootstrap is 8.3MB - monticello is 9MB - metacello is 10MB - full pharo is 30MB However, metacello and monticello images could be cleaned up a bit, as they still have some monticello cache to flush. I'm working on uploading 64 bit images too now. On Mon, Aug 7, 2017 at 4:26 PM, Tim Mackinnon <[hidden email]> wrote:
|
Hi Guillermo - its 64bit I’m after for running AWS Lambda - the metacello version at 10mb looks very interesting (as the one I’m using from build #27 is 15mb). However, given I’m trying to find a stable place where I can develop on Pharo 6.1 and get a bit more experience - it looks like the latest post #27 images start breaking things for me with as I get weird errors (see below). But maybe your cleanup might resolve all of this.
I really appreciate the work you guys are putting into have some minimal images - its very cool seeing all of this come together. Tim
|
Free forum by Nabble | Edit this page |