Open despairblue opened 2 years ago
I tried to build it manually, which failed for, I think, a different reason:
I think the build error was fixed in revery here: https://github.com/revery-ui/revery/pull/1033
I upgraded revery in the resolutions of the package.json to 14402ad200a6c659afa67315b7fe36cdb1c5ef3c but it still fails with the same errors.
Can you try this branch https://github.com/revery-ui/esy-skia/tree/fix-oni2-3824
Just tried only with overriding esy-skia like this:
"esy-skia": "revery-ui/esy-skia#a1c5de7b1a1bc0a6eadabdefc7cee338d29748e8",
Which still failed, now I try overriding revery and esy-skia like this:
"revery": "revery-ui/revery#14402ad200a6c659afa67315b7fe36cdb1c5ef3c",
"esy-skia": "revery-ui/esy-skia#a1c5de7b1a1bc0a6eadabdefc7cee338d29748e8",
Same, I think I have to go into esy_libjpeg_turbo and have to fix it there too. I'll try that.
So I still get this:
I cloned https://github.com/revery-ui/libjpeg-turbo/ now and try to find the file GrTextureProxy.h
, but can't find it. I'm probably looking in the wrong place 🤔
Is it possible this error comes from code generation and I would need to understand skia or libjpeg to figure out where the error comes from in the source?
Oh, the error is actually different, before it was complaining about it overriding the other thing without being marked as such, now it complains about overriding the other thing but not overriding member functions...
I didn't see a way to fix this now without learning C++ and rewriting parts of skia 😄
So I forked esy-skia removed -Werror
from the cflags.
Actually disregard everything I said so far (except the binaries not working). I wasn't on the current master, my local oni repo was probably out of date for a couple of months...
With current master everything works actually.
So I guess we just need to recreate the binaries in CI with a newer glibc version installed?
I'll try the docker build instructions to see if they produce broken binaries on my arch system. If so, I'll try to use a more recent version of centos and see if that fixes it.
Oh, the error is actually different, before it was complaining about it overriding the other thing without being marked as such, now it complains about overriding the other thing but not overriding member functions...
I have done a monkey patch but not compiled myself mb. I expected the change to be small and pass directly. But this seem like a clang bug because now he want to remove it. Clang13 is around the corner so it might be fixed.
For another CI build maybe ask @zbaylin why do you need the docker build building directly on your arch doesn't work ?
For another CI build maybe ask @zbaylin why do you need the docker build building directly on your arch doesn't work ?
It does, I want to check though if building it on centos and running it on Arch works. If that would not work then retriggering CI to create a new nightly won't fix it, right?
My goal is to be able to run the nightlies on Arch again.
Yeah, using the docker build process still creates a binary having this error:
/tmp/.mount_OnivimaqTmiB/usr/bin/Oni2_editor: symbol lookup error: /usr/lib/libgio-2.0.so.0: undefined symbol: g_module_open_full
I'll check if upgrading to centos 8 helps.
Ok, no idea how to do that, install centos-release-scl
is not available or not necessary anymore unter centos 8 and yum-config-manager
does not exist anymore.
Would it be easier to take a newer ubuntu and compile on that one? What was the reason for choosing centos?
What was the reason for choosing centos?
Believe it or not, there are still quite a few people stuck using CentOS 7. Some of us like to to be able to use OniVim on such systems.
I believe that the thought is that picking the oldest supported RedHat release provides a good base to cover pretty much any other distro.
What was the reason for choosing centos?
Believe it or not, there are still quite a few people stuck using CentOS 7. Some of us like to to be able to use OniVim on such systems.
I believe that the thought is that picking the oldest supported RedHat release provides a good base to cover pretty much any other distro.
I guess we can have our cake and eat it too, just need to run 2 Linux pipelines, right?
Currently when trying to compile oni in a docker container with ubuntu 20.04 I get a lot of those
relocation R_X86_64_32S against symbol `caml_data_segments' can not be used when making a PIE object; recompile with -fPIE
Anybody knows what that means?
Nevermind that, I was sharing the build cache of my system with the docker image and that caused the issue.
out of subject:
But this seem like a clang bug because now he want to remove it. Clang13 is around the corner so it might be fixed.
I compiled with apple clang 12 no warning and with clang quite recent (compiled from main a month ago) I can reproduce the warning. I have also removed flags: -Wno-suggest-destructor-override -Wno-suggest-override
and added -Weverything
So I don't know how arch linux package clang 🤷
out of subject:
But this seem like a clang bug because now he want to remove it. Clang13 is around the corner so it might be fixed.
I compiled with apple clang 12 no warning and with clang quite recent (compiled from main a month ago) I can reproduce the warning. I have also removed flags:
-Wno-suggest-destructor-override -Wno-suggest-override
and added-Weverything
So I don't know how arch linux package clang 🤷
I'll check that out today.
@Et7f3 yeah so basically what I said there is correct:
https://github.com/onivim/oni2/issues/3824#issuecomment-927273111
Everything I said about the errors related to esy-skia and clang was wrong. I just didn't git pull
before building.
Sorry about the confusion.
What remains though is that the binaries generated on CentOS do not work on Arch Linux at the moment.
Can you grep g_module_open_full in .esy to detect which dependencies require this symbol (and need to be updated)
I'll let you know when it finds something, has been running for 20 minutes now 😄
I tried ag g_module_open_full
and it could not find anything. grep g_module_open_full
is still running.
If you don't find something it means a dependencies on host library so you might also look in /lib /usr/lib /usr/local/lib* ...
Ah I have other idea in man ld.so I see LD_DEBUG try to export as libs and run your binary. 🤦🏻libgio require this symbol and it is absent of your machine hence the error. You can cancel.
https://forum.manjaro.org/t/vscodium-appimage-wont-launch-symbol-lookup-error-libgio/84462/3 Seem to be glibc issue 😬
forum.manjaro.org/t/vscodium-appimage-wont-launch-symbol-lookup-error-libgio/84462/3 Seem to be glibc issue grimacing
Yeah, that was my first thought since this happens from time to time with arch.
I supposed glib2 has been upgraded and is not not compatible anymore.
Having 2 binaries, one for old linux systems and one for newer systems, would solve this, right?
Ah I have other idea in man ld.so I see LD_DEBUG try to export as libs and run your binary. 🤦🏻libgio require this symbol and it is absent of your machine hence the error. You can cancel.
Should I still do that? If yes, what exactly should I do? I feel a bit lost with the instructions 😬
I'm currently having the same error, also on arch. Here's the output with LD_DEBUG=libs
set
Sorry if it was unclear (it was late in my timezone).
so you tried to build with docker centos7
Yeah, using the docker build process still creates a binary having this error
in dockerfile I see hardcoded version https://github.com/onivim/oni2/blob/fda6bf7f3bb8caa6bc66225d36886a07a7a1579a/scripts/docker/centos/Dockerfile#L20 but no version on lib so they should be most up to date version precompiled.
what I was trying to test with LD_DEBUG allow to identify wich lib require this symbol. If we identify this lib we can try to vendor a more up to date version. Here is a tuto http://www.bnikolic.co.uk/blog/linux-ld-debug.html
if we don't manage to vendor it then craft a new dockerfile can help.
thanks @DJNighswander
@DJNighswander I don't see which lib import g_module_open_full can you try other option of LD_DEBUG ?
@Et7f3 does this help?
[I] ✘ ~ LD_DEBUG=all Downloads/Onivim2-x86_64-master.AppImage . -f &| grep g_module_open_full
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/bin/Oni2_editor [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libstdc++.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libX11.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libxkbfile.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libacl.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libICE.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libSM.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libncurses.so.5 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libtinfo.so.5 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXt.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libharfbuzz.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libgtk-3.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libgdk-3.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libpangocairo-1.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libpango-1.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libatk-1.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libcairo-gobject.so.2 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libcairo.so.2 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libgdk_pixbuf-2.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libgio-2.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libgobject-2.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libglib-2.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libfreetype.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libfontconfig.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libz.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libbz2.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libjpeg.so.62 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libpthread.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libGL.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libGLU.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXxf86vm.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXrandr.so.2 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXinerama.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXcursor.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXi.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libm.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libdl.so.2 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libgcc_s.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libc.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/lib64/ld-linux-x86-64.so.2 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libxcb.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libattr.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libuuid.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libgraphite2.so.3 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libgmodule-2.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXfixes.so.3 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libatk-bridge-2.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libwayland-client.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libepoxy.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libpangoft2-1.0.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXcomposite.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXdamage.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libxkbcommon.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libwayland-cursor.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libwayland-egl.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXext.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/librt.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libfribidi.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libthai.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libpixman-1.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libEGL.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libpng15.so.15 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libxcb-shm.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libxcb-render.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXrender.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libmount.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libresolv.so.2 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libffi.so.7 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libpcre.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libbz2.so.1.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libpng16.so.16 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libbrotlidec.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libexpat.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libGLdispatch.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libGLX.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libXau.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libXdmcp.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libatspi.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libdbus-1.so.3 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libffi.so.6 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libdatrie.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libblkid.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libselinux.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libbrotlicommon.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libsystemd.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libcap.so.2 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/liblzma.so.5 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/liblz4.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libgcrypt.so.11 [0]
1993666: symbol=g_module_open_full; lookup in file=/usr/lib/libgpg-error.so.0 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libdw.so.1 [0]
1993666: symbol=g_module_open_full; lookup in file=/tmp/.mount_Onivim47iS2N/usr/lib/libelf.so.1 [0]
1993666: /usr/lib/libgio-2.0.so.0: error: symbol lookup error: undefined symbol: g_module_open_full (fatal)
/tmp/.mount_Onivim47iS2N/usr/bin/Oni2_editor: symbol lookup error: /usr/lib/libgio-2.0.so.0: undefined symbol: g_module_open_full
I don't think it actually does help, because it points to /usr/lib/libgio-2.0.so.0
just like the initial error 🤔
Can you send the full log because here we only see where this symbol is searched not which originate this research
Ok I read the logs: Just to be sure I read the log correctly I taken two small example
2007826: symbol=stderr; lookup in file=Downloads/Onivim2-x86_64-master.AppImage [0]
2007826: binding file /usr/lib/libc.so.6 [0] to Downloads/Onivim2-x86_64-master.AppImage [0]: normal symbol `stderr' [GLIBC_2.2.5]
I read ld is searching stderr that is undefined in libc and found inside Onivim2-x86_64-master.AppImage
2007826: symbol=strlen; lookup in file=Downloads/Onivim2-x86_64-master.AppImage [0]
2007826: symbol=strlen; lookup in file=/usr/lib/libdl.so.2 [0]
2007826: symbol=strlen; lookup in file=/usr/lib/libpthread.so.0 [0]
2007826: symbol=strlen; lookup in file=/usr/lib/libz.so.1 [0]
2007826: symbol=strlen; lookup in file=/usr/lib/libc.so.6 [0]
2007826: binding file /usr/lib/libz.so.1 [0] to /usr/lib/libc.so.6 [0]: normal symbol `strlen' [GLIBC_2.2.5]
And here we seek strlen for libz and we have found it in libc.
when we see the undefined symbol we see this line before So for me it is a internal relocation (wtf I though it did at link time for inter so symbol)
2007836: relocation processing: /usr/lib/libgio-2.0.so.0
From here I see these solutions:
Given your solutions, I think I can only help with the last one. I don't think I understand enough about native development to help with the other two. 😞
I'm currently trying to create a docker build based on ubuntu 20.04, but I hit some compilation errors:
You miss this dependencies /usr/bin/ld: cannot find -lXrandr /usr/bin/ld: cannot find -lXinerama /usr/bin/ld: cannot find -lXcursor /usr/bin/ld: cannot find -lXi In revery wiki we list of pkg to install
Hi.
I use a docker image to build onivim2 using an ubuntu:focal
image https://github.com/marcinkoziej/onivim2-builder
I think You could try to convert the Dockerfile to use archlinux
image instead. Find the package name counterparts and replace "apt" with arch package manager, and check if you need the patch - i used it to alter the things packed into the AppImage.
@despairblue Hey! I found a way to make Onivim2 work on an Arch based system. It's not a permanent fix but rather a shortcut way. I'm not a dev, so idk much about the way I made Onivim2 work on an Arch based system :)
What the problem could be here: it seems that glib version >= 2.70 gives an error and doesn't work on Arch based systems, so this is what i did to make it work by using the glib version 2.68.4 (the version with which Onivim2 still worked).
Solution: Patch glib2 version 2.68.4 into Onivim2 AppImage and the method is what I followed -
ARCH=x86_64 ./appimagetool-x86_64.AppImage squashfs-root Onivim2-x86_64.AppImage
where the appimagetool was downloaded from github in the same directory../Onivim2-x86_64.AppImage
or double click on it by using a GUI based file manager.@despairblue Hey! I found a way to make Onivim2 work on an Arch based system. It's not a permanent fix but rather a shortcut way. I'm not a dev, so idk much about the way I made Onivim2 work on an Arch based system :)
What the problem could be here: it seems that glib version >= 2.70 gives an error and doesn't work on Arch based systems, so this is what i did to make it work by using the glib version 2.68.4 (the version with which Onivim2 still worked).
Solution: Patch glib2 version 2.68.4 into Onivim2 AppImage and the method is what I followed -
- Check out this patching technique: Arch Forum
- Downloaded the AppImageTool from its Github release page
- In the last step where it says to repack the squashfs-root along with the AppImage (in the forum), I used this command
ARCH=x86_64 ./appimagetool-x86_64.AppImage squashfs-root Onivim2-x86_64.AppImage
where the appimagetool was downloaded from github in the same directory.- Tadaah! Onivim2 now runs on your Arch based linux OS! Now, you either run it by
./Onivim2-x86_64.AppImage
or double click on it by using a GUI based file manager.
That works too. I found the solution in the Arch forum, but didn't try it. Since I worked a bit on Oni I know how to compile it, so recompiling it on my system was easier for me 🤷🏾
I'd like to find the time to create a docker based build on a newer ubuntu version that produces a binary that also works on arch.
Is OniVim2 still going on? I feel like the development has slowed down a lot How close is this to the 0.6 release?
@VarLad See https://github.com/onivim/oni2/issues/3811
Is this issue still ongoing?
I have a separate AppImage/AUR package that refuses to run for the exact same reason as this one and I don't want to spend a lot of time fixing it. I'm not a regular Arch Linux user anymore (for now, until I get my Steam Deck).
I've already spent entirely too much time on what should have just been a naming convention fix.
@AutoUpdatingBSoD You can download onivim2-bin from the AUR or manually download the AppImage from this repo.
I'm getting this when I start it:
I supposed glib2 has been upgraded and is not not compatible anymore.