pharo-spec / mars-gtk

The Gtk3 bindings for Pharo and Spec
14 stars 6 forks source link

Instruction for Linux and Examples #34

Open gavr123456789 opened 4 years ago

gavr123456789 commented 4 years ago

I come from gnome (Vala lang). So i dont know Smalltalk and i know gtk. I thought that I would get used to Smalltalk faster if I tried to write a couple of basic gtk applications. I found this repository, but I don't understand how to use it. Linux Arch.

gavr123456789 commented 4 years ago

Okey i got this image smalltalk concept, it looks like every project is a vm + IDE.
The command to run on linux is simular to windows but no back slashes

pharo 'Pharo.image' eval --save " Metacello new
              repository: 'github://pharo-spec/mars-gtk';
              baseline: 'Mars';
              onConflict: [ :e | e useIncoming ];
              onUpgrade: [ :e | e useIncoming ];
              ignoreImage;
              load"

PS watching this presentation now https://youtu.be/g6QVrbb-ZUc

gavr123456789 commented 4 years ago

Got PrimitiveFailed while setup
image Here last logs:

CurrentJob value: self during: [ ^ block cull: self ] ] in Job>>run in Block: [ self prepareForRunning....
BlockClosure>>ensure:
Job>>run
MorphicUIManager(UIManager)>>displayProgress:from:to:during:
ByteString(String)>>displayProgressFrom:to:during:
OrderedCollection(Collection)>>do:displayingProgress:every:
OrderedCollection(Collection)>>do:displayingProgress:
MCPackageLoader>>basicLoadDefinitions
[ self basicLoadDefinitions ] in MCPackageLoader>>basicLoad in Block: [ self basicLoadDefinitions ]
[ aBlock value ] in SourceFileArray>>deferFlushDuring: in Block: [ aBlock value ]
BlockClosure>>ensure:
SourceFileArray>>deferFlushDuring:
Окно или вкладка откроются в текущем сеансе браузера.
[127064:127077:0120/221455.388376:ERROR:browser_gpu_channel_host_factory.cc(138)] Failed to launch GPU process.

My GPU is Nvidia.

estebanlm commented 4 years ago

Yes, this is still a beta project using a beta version of the virtual machine. The regular VM will not work, but you should be able to get the VM here:

curl https://get.pharo.org/64/vmHeadlessLatest90 | bash

NOTE: I don't know how this will go with ArchLinux. But I will be happy to help you start it, since I am very interested on the feedback of someone with Vala experience.

Edit: if you don't know Smalltalk, I recommend you to take some time digging in the documentation. Also, I made a tech talk about this project last month you can check out (sorry for the accent :) ).

gavr123456789 commented 4 years ago

It's nice to hear that someone else knows about Vala. I executed this command but it seems I get the same error(I think i need to change the image in which I do it). There are currently 8 Pharo-related files in my directory: pharo-local and pharo-vm directories, Pharo files.changes, Pharo.image, Pharo8.0-32bit-bbcdf97.sources, PharoDebug.log, and 2 executive pharo and pharo-ui. When I deleted everything related to Pharo in the home directory, and tried to execute curl https://get.pharo.org/64/vmHeadlessLatest90 | bash i got error Could not open the Pharo image filePharo.image'.` So I restored all the files, and now I get the same error as before.

gavr123456789 commented 4 years ago

About learning Smalltalk, I read this.

estebanlm commented 4 years ago

hah, in Russian :) Anyway, to start from scratch in an empty directory:

curl https://get.pharo.org/64/90+vmHeadlessLatest | bash

This will download correct vm and a new image.

gavr123456789 commented 4 years ago

@estebanlm

in Russian :)

I think chrome auto translator should handle this) This is an article that explains all the Smalltalk syntax from that postcard. There also great aricle "How learning Smalltalk can improve your programming skills".

Okay, I finally realized that this command downloads not only the image but also the entire Pharo (it's not very common in the Linux world to run binaries from usual home directories), now I have the latest Pharo 9.0. By the way, its performance is noticeably worse.

Pharo

This is interesting because it has not yet been released, or because it is installed locally and not in the system.

Next, to install GTK, I should run the command that is described for windows in the README of this repository?

PS I was really surprised when you turned this app into a GTK without changing the syntax. It is not surprising that people in the audience clapped ^^

PSS In this presentation, I heard that you can broadcast Smalltalk in C. does this Mean that you can call Smallalk code from Vala, as happens with LuaVM or JSCore.
Here small example of pushing variables to luavm from vala instantly:
image

estebanlm commented 4 years ago

On 21 Jan 2020, at 11:13, gavr123456789 notifications@github.com wrote:

@estebanlm https://github.com/estebanlm in Russian :)

I think chrome auto translator should handle this) This is an article that explains all the Smalltalk syntax from that postcard. There https://habr.com/ru/post/328156/ also great aricle "How learning Smalltalk can improve your programming skills".

Okay, I finally realized that this command downloads not only the image but also the entire Pharo (it's not very common in the Linux world to run binaries from normal home directories), now I have the latest Pharo 9.0. By the way, its performance is noticeably worse.

Yes, it is still an experimental VM without much optimisation :)

https://user-images.githubusercontent.com/30507409/72794979-ea57ea80-3c4d-11ea-9295-81de6b2ffc3a.gif This is interesting because it has not yet been released, or because it is installed locally and not in the system.

Next, to install GTK, I should run the command that is described for windows in the README of this repository?

You can open a playground and execute this :

Metacello new
    repository: 'github://pharo-spec/mars-gtk';
    baseline: 'Mars';
    onConflict: [ :e | e useIncoming ];
    onUpgrade: [ :e | e useIncoming ];
    ignoreImage;
    load

PS I was really surprised when you turned this app into a GTK https://youtu.be/g6QVrbb-ZUc?t=423 without changing the syntax. It is not surprising that people in the audience clapped ^^

:) But remember is still beta (or less).

PSS In this https://youtu.be/2d2otdj66dw?t=245 presentation, I heard that you can broadcast Smalltalk in C. does this Mean that you can call Smallalk code from Vala, as happens with LuaVM https://valadoc.org/lua/Lua.LuaVM.html or JSCore https://valadoc.org/javascriptcoregtk-4.0/JSC.html.

You can do FFI calls, yes. And since Vala compiles to C, its functions will be callable.

Here small example of pushing variables to luavm from vala instantly: https://user-images.githubusercontent.com/30507409/72795996-9ea64080-3c4f-11ea-9b09-225ba9ffd946.png — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pharo-spec/mars-gtk/issues/34?email_source=notifications&email_token=AAD5MXTIKJ2X5ZQPAXWMWZDQ63DC5A5CNFSM4KJIR4WKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJPGH3Q#issuecomment-576611310, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAD5MXVCJ6XOYZYU3DMDHXLQ63DC5ANCNFSM4KJIR4WA.

gavr123456789 commented 4 years ago

image

Here's what happened after: image

I can't copy the error text from the left window. It looks like some things in the IDE are now broken xd.
Peek 2020-01-21 14-29 I wanted to change the theme to a light one so that the error code would be more visible.

pavel-krivanek commented 4 years ago

it is a known fresh issue: https://github.com/pharo-project/threadedFFI-Plugin/issues/20

gavr123456789 commented 4 years ago

Oh okey, so i will just wait now.

Ducasse commented 4 years ago

Thanks for the report. In particular the fact that Pharo 90 is slower. BTW you can check some videos at http://mooc.pharo.org and you (I imagine that you are a good dev) can get up to speed in one or two days.

pavel-krivanek commented 4 years ago

Guille fixed the ThreadedFFI bug so you can continue in your experiments

estebanlm commented 4 years ago

@Ducasse is not P9 who is slower, is the experimental headless vm (which we are not yet optimised)

gavr123456789 commented 4 years ago

@Ducasse Thanks for the link, I think it needs to be posted on YouTube so people can find it. Before that, I had already started watching this series of lessons.
@pavel-krivanek I will tell you how everything was in order, first of all now everything is installed without errors! BBut when I tried to make a gtk application based on the example(with label) that was at the beginning of the presentation I got the usual spec application (if I understood correctly that spec is the name of the current gui framework pharo)

~/b/Pharo ❯❯❯ ./pharo-ui  Pharo.image
pthread_setschedparam failed: Operation not permitted
This VM uses a separate heartbeat thread to update its internal clock
and handle events.  For best operation, this thread should run at a
higher priority, however the VM was unable to change the priority.  The
effect is that heavily loaded systems may experience some latency
issues.  If this occurs, please create the appropriate configuration
file in /etc/security/limits.d/ as shown below:

cat <<END | sudo tee /etc/security/limits.d/pharo.conf
*      hard    rtprio  2
*      soft    rtprio  2
END

and report to the pharo mailing list whether this improves behaviour.

You will need to log out and log back in for the limits to take effect.
For more information please see
https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/r3732#linux
primitive #loadSymbol:module: in ExternalAddress class failed
ExternalAddress class(ProtoObject)>>primitiveFailed:
ExternalAddress class(ProtoObject)>>primitiveFailed
ExternalAddress class>>loadSymbol:module:
TFExternalFunction>>validate
TFPooledExternalAsyncCall(TFExternalAsyncCall)>>validateFunction
TFPooledExternalAsyncCall(TFExternalAsyncCall)>>prepareExecution
[ semaphore := aRunner semaphorePool takeOne.
self prepareExecution.
self doExecuteOn: aRunner ] in TFPooledExternalAsyncCall>>executeOn: in Block: [ semaphore := aRunner semaphorePool takeOne....
BlockClosure>>ensure:
TFPooledExternalAsyncCall>>executeOn:
TFSameThreadRunner(TFRunner)>>invokeFunction:withArguments:
GtkApplication>>initArgC:argV:
TFCalloutAPI(FFICalloutAPI)>>function:library:
GtkApplication(Object)>>ffiCall:library:options:
GtkApplication(Object)>>ffiCall:library:
GtkApplication(Object)>>ffiCall:
GtkApplication>>initArgC:argV:
GtkApplication>>initGtk3
GtkApplication>>start
GtkApplication>>run
GtkApplication class>>ensureRunning
OSGtkDriver>>ensureGtkRunning
OSGtkDriver>>createWindowWithAttributes:osWindow:
OSWindowAttributes>>createWindowHandleFor:
OSWindow>>createWindow
OSWindow>>initWithAttributes:eventHandler:
OSWindow class>>createWithAttributes:eventHandler:
OSWorldRenderer>>doActivate
OSWorldRenderer(AbstractWorldRenderer)>>activate
WorldState>>worldRenderer:
MorphicUIManager>>activate
PrimitiveFailed: primitive #loadSymbol:module: in ExternalAddress class failed
ExternalAddress class(ProtoObject)>>primitiveFailed:
ExternalAddress class(ProtoObject)>>primitiveFailed
ExternalAddress class>>loadSymbol:module:
TFExternalFunction>>validate
TFPooledExternalAsyncCall(TFExternalAsyncCall)>>validateFunction
TFPooledExternalAsyncCall(TFExternalAsyncCall)>>prepareExecution
[ semaphore := aRunner semaphorePool takeOne.
self prepareExecution.
self doExecuteOn: aRunner ] in TFPooledExternalAsyncCall>>executeOn: in Block: [ semaphore := aRunner semaphorePool takeOne....
BlockClosure>>ensure:
TFPooledExternalAsyncCall>>executeOn:
TFSameThreadRunner(TFRunner)>>invokeFunction:withArguments:
GtkApplication>>initArgC:argV:
TFCalloutAPI(FFICalloutAPI)>>function:library:
GtkApplication(Object)>>ffiCall:library:options:
GtkApplication(Object)>>ffiCall:library:
GtkApplication(Object)>>ffiCall:
GtkApplication>>initArgC:argV:
GtkApplication>>initGtk3
GtkApplication>>start
GtkApplication>>run
GtkApplication class>>ensureRunning
OSGtkDriver>>ensureGtkRunning
OSGtkDriver>>createWindowWithAttributes:osWindow:
OSWindowAttributes>>createWindowHandleFor:
OSWindow>>createWindow
OSWindow>>initWithAttributes:eventHandler:
OSWindow class>>createWithAttributes:eventHandler:
OSWorldRenderer>>doActivate
OSWorldRenderer(AbstractWorldRenderer)>>activate
WorldState>>worldRenderer:
MorphicUIManager>>activate

#The app didn't crash or close, but nothing happens after this line.

Once again, this happened after I re-downloaded Pharo, launched this code in Playground

Metacello new
    repository: 'github://pharo-spec/mars-gtk';
    baseline: 'Mars';
    onConflict: [ :e | e useIncoming ];
    onUpgrade: [ :e | e useIncoming ];
    ignoreImage;
    load

And tried to run Pharo again.

gavr123456789 commented 4 years ago

Any ideas?

estebanlm commented 4 years ago

It is not finding GTK3.

Two ideas: 1) Are you sure you are using the vm downloaded with curl https://get.pharo.org/64/vmHeadlessLatest90 | bash ? 2) Do you have GTK3 (64bit) installed? If so, can you verify the path to it? (in GtkLibrary>>unix64LibraryName)

gavr123456789 commented 4 years ago

I don't really understand what you mean by Gtk Library> > unix64LibraryName
Here is a list of all files associated with gtk3 on my computer.
I'm pretty sure that GTK 3 is installed, at least because I use GNOME.

gavr123456789 commented 4 years ago

Here step by step what Im doing demo: https://youtu.be/rE9QxzIbeRg PS Glitches are only on video, I forgot to disable NVIDIA sync.

gavr123456789 commented 4 years ago

Wait, this is most likely due to the fact that Pharo is not installed in the system, but simply in a folder in the form of a binary.

estebanlm commented 4 years ago

heh. Which linux distro are you using? (are you sure is 64bit?) The problem is this: I have hardcoded the library path to: /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 and you have the library at: /usr/lib/libgtk-3.so

But real problem is that I am not looking at the LD_LIBRARY_PATH for it.

Anyway, I hacked a way to let you move on for the moment. If you try now, it should work :)

gavr123456789 commented 4 years ago

@estebanlm heh that was easy xd, thanks for ur time!
image

Which linux distro are you using? (are you sure is 64bit?)

Arch, Yes. Now for the second part of this issue, where can I get examples?

Ducasse commented 4 years ago

Check the class SpDemo or something like that.

voxkmp commented 4 years ago

Hi -

I've tried to get Pharo working with GTK on Xubuntu 19.10 and failed.

I followed the instructions on the Github page.

I downloaded the image and headless vm like this:

curl https://get.pharo.org/64/80+vmHeadlessLatest | bash

This doesn't work at all as opening the downloaded image just blanks out the entire screen (not just the pharo window)

So I tried with a Pharo 9 image:

curl https://get.pharo.org/64/90+vmHeadlessLatest | bash

This works in that I get a working pharo-ui. I can then download the Mars code as specified:

Metacello new repository: 'github://pharo-spec/mars-gtk'; baseline: 'Mars'; onConflict: [ :e | e useIncoming ]; onUpgrade: [ :e | e useIncoming ]; ignoreImage; load

I save the image but when I run pharo-ui again I get a blank pharo window.

In the termianl, there is this error message:

PrimitiveFailed: primitive #primCallbackReturn in TFCallbackInvocation failed TFCallbackInvocation(ProtoObject)>>primitiveFailed: TFCallbackInvocation(ProtoObject)>>primitiveFailed TFCallbackInvocation>>primCallbackReturn TFCallbackInvocation>>DoItIn: TFCallbackInvocation(ProtoObject)>>mustBeBooleanDeOptimizeIn: TFCallbackInvocation(ProtoObject)>>mustBeBoolean TFCallbackInvocation>>returnExecution [ (callbackInvocationStack top == aCallbackInvocation) ifTrue: [ aCallbackInvocation returnExecution ifTrue: [ "If we are starting a session and an execution was executed, it may happen that the stack is empty." callbackInvocationStack ifEmpty: [ ^ self ]. callbackInvocationStack pop. [ callbackReturnSemaphore signalAll ] valueUnpreemptively. ^ self ]] ] in TFSameThreadRunner(TFRunner)>>returnCallback: in Block: [... [ caught := true. self wait. blockValue := mutuallyExcludedBlock value ] in Semaphore>>critical: in Block: [... BlockClosure>>ensure: Semaphore>>critical: TFSameThreadRunner(TFRunner)>>returnCallback: TFCallbackInvocation>>execute [ aCallbackInvocation execute ] in [ aTFRunner handleExceptionDuring: [ aCallbackInvocation execute ] ] in TFCallbackForkRunStrategy>>executeCallback:on: in Block: [ aCallbackInvocation execute ] BlockClosure>>on:do: [ Processor terminateActive ] in [:ex | | copy onDoCtx process handler bottom thisCtx |

    onDoCtx := thisContext.
    thisCtx := onDoCtx home.

    "find the context on stack for which this method's is sender"

    [ onDoCtx sender == thisCtx] whileFalse: [ 
        onDoCtx := onDoCtx sender.
        onDoCtx ifNil: [ 
            "Can't find our home context. seems like we're already forked
            and handling another exception in new thread. In this case, just pass it through handler."
            ^ handlerAction cull: ex ]
     ].

    bottom := [ Processor terminateActive ] asContext.
    onDoCtx privSender: bottom.

    handler := [ handlerAction cull: ex ] asContext.
    handler privSender: thisContext sender.

    (Process forContext: handler priority: Processor activePriority) resume.

    "cut the stack of current process"
    thisContext privSender: thisCtx.
    nil
] in BlockClosure>>on:fork: in Block: [ Processor terminateActive ]

Any ideas what I'm doing wrong?

Thanks

Ken

Ducasse commented 4 years ago

Thanks a lot for the report!!!! I have no idea how to help you but I'm sure that esteban will :).

bill-auger commented 4 years ago

i had a different problem on parabola/arch - this probably should be a separate ticket; but it seems not clear that this software is known to work on any *nix yet, so i will just add to this one, to keep the momentum going

with both pharo 80 and 90, when the GUI starts, the debugger pops up immediately, complaining about the libgit.so

$ cat ../PharoDebug.log 
THERE_BE_DRAGONS_HERE
External module not found
23 May 2020 5:00:52.016506 pm

VM: unix - x86_64 - linux-gnu - CoInterpreterWithQueueFFI * VMMaker-CompatibleUserName.1576752507 uuid: 593ff3ea-b9b9-5c5e-9934-0deb7e847081 Dec 25 2019
StackToRegisterMappingCogit * VMMaker-CompatibleUserName.1576752507 uuid: 593ff3ea-b9b9-5c5e-9934-0deb7e847081 Dec 25 2019
e04812e - Commit: e04812e - Date: 2019-12-      module:     '/code/pharo/pharo64-linux-headless-latest/lib/libgit2.so.0.25.1'19 11:48:27 +0100

Image: Pharo9.0.0 [Build information: Pharo-9.0.0+build.308.sha.8ce6236be6057e5d33352dc1c0d52b713e962ab6 (64 Bit)]

ExternalLibraryFunction(Object)>>error:
    Receiver: <cdecl: long 'git_libgit2_init' () module: '/code/pharo/pharo64-linux-headless-latest/lib/...etc...
    Arguments and temporary variables: 
        aString:    'External module not found
    Receiver's instance variables:      module:     '/code/pharo/pharo64-linux-headless-latest/lib/libgit2.so.0.25.1'
        handle:     @ 16r00000000
        flags:  0
        argTypes:   an Array(long)
        name:   #git_libgit2_init
        module:     '/code/pharo/pharo64-linux-headless-latest/lib/libgit2.so.0.25.1'
        errorCodeName:  nil

ExternalLibraryFunction(Object)>>externalCallFailed
    Receiver: <cdecl: long 'git_libgit2_init' () module: '/code/pharo/pharo64-linux-headless-latest/lib/...etc...
    Arguments and temporary variables: 
        errCode:    1
    Receiver's instance variables: 
        handle:     @ 16r00000000
        flags:  0
        argTypes:   an Array(long)
        name:   #git_libgit2_init
        module:     '/code/pharo/pharo64-linux-headless-latest/lib/libgit2.so.0.25.1'
        errorCodeName:  nil

ExternalLibraryFunction(ExternalFunction)>>in       module:     '/code/pharo/pharo64-linux-headless-latest/lib/libgit2.so.0.25.1'vokeWithArguments:
    Receiver: <cdecl: long 'git_libgit2_init' () module: '/code/pharo/pharo64-linux-headless-latest/lib/...etc...
    Arguments and temporary variables: 
        argArray:   #()
        ec:     3
    Receiver's instance variables: 
        handle:     @ 16r00000000
        flags:  0
        argTypes:   an Array(long)
        name:   #git_libgit2_init
        module:     '/code/pharo/pharo64-linux-headless-latest/lib/libgit2.so.0.25.1'
        errorCodeName:  nil

LGitLibrary>>libgit2_init
    Receiver: a LGitLibrary
    Arguments and temporary variables: 
    Receiver's instance variables: 
        initialized:    false

the file looks fine

$ file lib/libgit2.so.0.25.1
lib/libgit2.so.0.25.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=bca31b8ef88a657faffdaa55c5960250ecbc7b9a, with debug_info, not stripped

i "fixed" that by deleting the libraries from the lib/ dir and adding symlinks to the system libgit2 libs - by "fixed", i mean that it allowed pharo to start without the FFI error

$ rm lib/libgit2.so*
$ ln -s /usr/lib/libgit2.so.1.0.0 lib/libgit2.so.1.0.0
$ ln -s /usr/lib/libgit2.so.1.0   lib/libgit2.so.1.0
$ ln -s /usr/lib/libgit2.so       lib/libgit2.so

however, upon loading 'mars-gtk' with metacello, pharo crashed with a segfault; so its not clear that my "fix" was an improvement

bill-auger commented 4 years ago

i got a bit further with this - i copied the system libgit2.so.1.0.0 into the lib/ dir and renamed it to the same as in the package (libgit2.so.0.25.1); and _ithink that avoided the segfault (something i did worked) - the back-trace showed libssh after libgit; so i also replaced the libssh lib - it was the same version (1.0.1) though

so what i found was that it was trying to use SSH to download 'mars-gtk' and could not find any credentials - i changed the setting of "iceberg" in its GUI to prefer HTTPS and that allowed the git clone to start - it chugged away for about a minute looking quite normal, presenting several progress-bar widgets to completion - then it eventually crashed with another segfault - the problem seems to be with libssl now

maybe it would help if i compiled the experimental VM from source - where are the sources for that?

voxkmp commented 4 years ago

Just in case it helps I've attached the PharoDebug.log for my PrimitiveFailed: primitive #primCallbackReturn in TFCallbackInvocation failed problem. PharoDebug.log

Ken

Ducasse commented 4 years ago

Thanks. We hope to get some time to come back to this issue.

bill-auger commented 4 years ago

FWIW, i tried the stable VM release today (pharo64-linux-stable 5.0-202002121043) - it also has the same problem loading the libgit2 library; so the problems identified in this ticket are more likely to be not peculiar to the experimental VM, but general problems with pharo on *nixes - upon launching pharo 90/stable, i get the same error as with the experimental VM (referring to libgit2):

External module not found

replacing libgit2 as i described previously, eliminates that initial error, as with the "latest" VM; but loading a package with metacello, fails immediately with this error:

Instance of Array did not understand #(#SqueakFFIPrims #primitiveCalloutWithArgs 4 13)
Array(Object)>>doesNotUnderstand: #(#SqueakFFIPrims #primitiveCalloutWithArgs 4 13)
Array(ExternalFunction)>>invokeWithArguments:
LGitRemote>>remote_fetch:refspecs:opts:reflog_message:
LGitSafeFFICalloutAPI(FFICalloutAPI)>>function:library:
LGitSafeFFICalloutAPI(FFICalloutAPI)>>function:module:
LGitRemote(LGitExternalObject)>>ffiCallSafely:options:
LGitRemote>>remote_fetch:refspecs:opts:reflog_message:

the call stack for "Array(ExternalFunction)>>invokeWithArguments:" show that 'nil' was passed in

i assume that the pharo-dev mailing list is the more appropriate venue to address these particular problems of this ticket, or the pharo-project/opensmalltalk-vm bug tracker

bill-auger commented 4 years ago

related: https://github.com/pharo-project/opensmalltalk-vm/issues/88

estebanlm commented 4 years ago

Hi, sorry for getting late to you. There is an ongoing error on libgit and ubuntu (and fedora) right now :( We hope to solve it soon (I was on it last week, but I didn't finish).

sapemo commented 4 years ago

Hi, sorry for getting late to you. There is an ongoing error on libgit and ubuntu (and fedora) right now :( We hope to solve it soon (I was on it last week, but I didn't finish).

Hi Esteban, a Fedora user here. I was able to fix the libgit2 issue by replacing the version shipped with Pharo with a symbolic link to system installed libgit2, i.e.:

yum install libgit2 cd ~/Pharo/vms/80-x64/lib/pharo/5.0-202002121043/ mv libgit2.so libgit2.so~ ln -s /usr/lib64/libgit2.so.26 libgit2.so

Hope this helps.

Pharo is impressive. A huge thank you to all of you working on it!

voxkmp commented 4 years ago

I thought I'd try again and see if my PrimitiveFailed: primitive #primCallbackReturn in TFCallbackInvocation failed was still occurring. After all, things move on and I hoped I might have better luck now using the latest image and vm. I followed the instructions on the Read Me. Everything goes OK until I try to launch pharo-ui after having installed Mars. Now I get a different error - the VM crashes on an illegal instruction.

I'm on Xubutunu 20.4 64 bit.

I've attached the crash dump. crash.dmp.txt

Ken

voxkmp commented 4 years ago

I've just tried again to get pharo-mars working on xubuntu. Now it doesn't crash the VM. This time it tells me it cannot find the GTK3 library. But the library is present here: /usr/lib/x86_64-linux-gnu/libgtk-3.so.0

I thought this was supposed to be the correct place. PharoDebug.log

Log attached.

estebanlm commented 4 years ago

it seems there is a path missing in the list. libgtk-3.so.0 ? there is no libgtk-3.so ?

voxkmp commented 4 years ago

As you suggested, there was no libgtk-3.so in /usr/lib/x86_64-linux-gnu/ so so I created a symbolic link.

Now I just get the VM crash again. Dump file attached. crashdump.txt

estebanlm commented 4 years ago

mmm... that's two problems then. First, I need to add libgtk-3.so.0 to the search path (since ubuntu does not seems to add that link by default). Later, I am currently working on several crashes on Linux (since I didn't tested it before there, curiously). I am working now on linux so I hope to fix this issues soon.

voxkmp commented 4 years ago

Thanks - that's really good to hear