Hi Pavel,
I'd probably see some interest in building the GitFileTree-MergeDriver
with it. It only requires Monticello.
Thierry
Le 08/10/2017 à 12:41, Pavel Krivanek a écrit :
Hi Sven,
2017-10-07 16:18 GMT+02:00 Sven Van Caekenberghe <[email protected]
<mailto:[email protected]>>:
Hi,
What is the story around PharoMinimal and related images ?
Is there a writeup somewhere with instructions ?
Right now the minimal (Metacello) image based on Pharo 7 is used only as
intermediate step in building of the full Pharo and the only real
(successful) attempt to use it for something else is PharoLambda
(https://gitlab.com/macta/PharoLambda).
In general it can be used for building of own (server) applications.
E.g. this way you can install and run Teapot on it:
./pharo Pharo7.0-metacello-32bit-d13eed2.image config
http://smalltalkhub.com/mc/zeroflag/Teapot/main ConfigurationOfTeapot
--install=stable
./pharo Pharo7.0-metacello-32bit-d13eed2.image eval --no-quit "Teapot on
GET: '/welcome' -> 'Hello World'; start."
You can load baselines from the Git repositories too but we currently do
not have any command line handler for it so you need to do it using
"eval" command or *.st flile. Something like this:
Metacello new
baseline: 'Seaside3';
repository: 'github://SeasideSt/Seaside:master/repository';
load
To make it more usable we probably should extend it with SUnit and Fuel.
If you want to extend it with some packages from vanilla Pharo, you
should load them using FileTree from your local Pharo repository clone.
Gofer it
url: 'filetree:///path-to-my-pharo-repository-clone/pharo/src';
package: 'Multilingual-OtherLanguages';
package: 'Multilingual-TextConverterOtherLanguages';
load.
It still needs some care. E.g. some classes from Zinc are not properly
initialized (I know about DigitalSignatureAlgorithm MD5NonPrimitive
RxMatcher RxParser RxsPredicate SHA1 ZnByteEncoder ZnConstants
ZnMimeType ZnNetworkingUtils ZnServer ZnSingleThreadedServer
TextConstants TextAction TextStyle).
I tried to load Seaside into it today (from the example above) and it
failed (some strange error probalby related to Unicode processing). But
we will fix it. If you will tell me what exactly you need we can make it
work together as in case of PharoLambda.
I see that we get **FANTASTIC** startup speed with it:
$ cat /etc/issue
Ubuntu 16.04.3 LTS
$ ./pharo --version
5.0-201708271955 Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3 [Production
Spur VM]
CoInterpreter VMMaker.oscog-eem.2265 uuid:
76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid:
8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
VM: 201708271955
https://github.com/OpenSmalltalk/opensmalltalk-vm.git
<https://github.com/OpenSmalltalk/opensmalltalk-vm.git> $ Date: Sun
Aug 27 21:55:26 2017 +0200 $
Plugins: 201708271955
https://github.com/OpenSmalltalk/opensmalltalk-vm.git
<https://github.com/OpenSmalltalk/opensmalltalk-vm.git> $
Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4
3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC
2017 i686 i686 i386 GNU/Linux
plugin path:
/home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955 [default:
/home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]
$ curl get.pharo.org/70-minimal <http://get.pharo.org/70-minimal> | bash
...
$ ./pharo Pharo.image printVersion
[version] 'Pharo7.0'
'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f
(32 Bit)'
$ time ./pharo Pharo.image eval '5 factorial'
120
real 0m0.083s
user 0m0.034s
sys 0m0.042s
That is less than 1/10 of a second on a simple server ! Wow.
Loading new code in that image seem hard though.
I see that in http://files.pharo.org/image/70/
<http://files.pharo.org/image/70/> there are Pharomonticello &
Pharometacello variants.
Any pointers on usage/meaning ?
Monticello is bootstrapped Pharo image with Monticello loaded. This
image then loads Metacello and the generated image is the image that we
call "minimal". It is minimal in sense minimal for common usage.
During Pharo building process we generate:
- bootstrapped image
- image with Opal that is loaded as binary packages using Hermes
- Monticello with only local repositories support
- Monticello with network and remote repositories support
- Metacello
- full Pharo IDE (which is loaded as sequence of several standalone
baselines)
Cheers,
-- Pavel
Thx,
Sven