Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle webkit2gtk-4.0 #2

Open
probonopd opened this issue Nov 22, 2024 · 20 comments
Open

Handle webkit2gtk-4.0 #2

probonopd opened this issue Nov 22, 2024 · 20 comments

Comments

@probonopd
Copy link

webkit2gtk-4.0 needs some extra handling as described in tauri-apps/tauri#2940.

https://github.com/probonopd/PrusaSlicer/blob/efe3df7c9a9a3bd8c2b7bdfa3ec6bb31bb67ab41/.github/workflows/build.yml#L100

is apparently not the way to do it, as it did not work for me.

@xplshn
Copy link

xplshn commented Nov 22, 2024

@probonopd sharun simply executes the ld.so with --library-path using the libraries on ./shared, it doesn't do anything deploy-like other than setting a few common env variables if certain directories are found in the AppDir.

I suppose this is something that you think should be added to lib4bin? But even then, shouldn't it work by default with the strace mode?

@probonopd
Copy link
Author

Right, probably needs to be handled in lib4bin, which is also mentioned here. I'm still new to all of this ;-)

@Samueru-sama
Copy link

Tauri does this to the libs:

#binary patch absolute paths in libwebkit files
find "$APPDIR"/usr/lib* -name 'libwebkit*' -exec sed -i -e "s|/usr|././|g" '{}' \;

But why? Also doesn't this mean that they need to change the working directory to the AppDir?

What I mentioned here would be a different problem because we are also shipping the dynamic linker, maybe that tauri patch isn't needed and just the binaries need to be wrapped with sharun hopefully.

@probonopd
Copy link
Author

I assume that libwebkit wants to launch the webkit helper binaries from a compiled-in path in /usr. So they are patching that to ././ and probably cd to AppDir/usr prior to executing the main application binary. As a result, libwebkit might launch the webkit helper binaries from inside the AppDir. Quite a hack but I have done similar things against compiled-in absolute paths in the past.

@probonopd
Copy link
Author

user@DESKTOP-4U17RT8:/mnt/c/Users/User/Downloads/squashfs-root$ ./AppRun

(prusa-slicer:143): Gtk-CRITICAL **: 08:37:06.918: gtk_window_resize: assertion 'width > 0' failed
[2024-11-22 08:37:07.175705] [0x00007faf8b8fb7c0] [error]   UserAccount: Failed to read token - no datafile found.
[2024-11-22 08:37:09.009464] [0x00007faf3cff9640] [error]   DBus Connection Error: /usr/bin/dbus-launch terminated abnormally without any error message
[2024-11-22 08:37:09.009503] [0x00007faf3cff9640] [error]   Dbus Messages listening terminating.
08:37:11 AM: Debug: window wxTreeCtrl@0x55557fed9ea0 ("treeCtrl") lost focus even though it didn't have it
08:37:11 AM: Debug: window wxTreeCtrl@0x55557fed9ea0 ("treeCtrl") lost focus even though it didn't have it

** (prusa-slicer:143): ERROR **: 08:37:13.934: Unable to spawn a new child process: Failed to spawn child process “/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitNetworkProcess” (No such file or directory)
Trace/breakpoint trap (core dumped)

It is looking for WebKitNetworkProcess at a compiled-in absolute path.

Maybe we need to resort to ././ patching if we find no other way?

@Samueru-sama
Copy link

Samueru-sama commented Nov 22, 2024

Maybe we need to resort to ././ patching if we find no other way?

Most likely, also sharun the binaries in the webkit2gtk-4.0 dir which is basically just moving the binaries to the ./shared/bin dir and putting a relative symlink in their original place and name that points to sharun.

You can also set SHARUN_WORKING_DIR=${SHARUN_DIR} on the .env file to make sharun cd into the AppDir when running (it is the equivalent of cd "$HERE" on the typical shell AppRun) if you go with the patching route.

@Samueru-sama
Copy link

Samueru-sama commented Nov 23, 2024

Getting closer:

image

Now I no longer crash when I click on printables which used to give the webkitgtk error.

I did the following to fix the issue:

Make a .env file in the top level of the AppDir with this:

SHARUN_WORKING_DIR=${SHARUN_DIR}
LIBGL_DRIVERS_PATH=${SHARUN_DIR}/shared/lib/dri

and run:

mv ./shared/lib/webkit2gtk-4.0/WebKitWebProcess ./shared/bin
mv ./shared/lib/webkit2gtk-4.0/WebKitNetworkProcess ./shared/bin
mv ./shared/lib/webkit2gtk-4.0/MiniBrowser ./shared/bin

( cd ./shared/lib/webkit2gtk-4.0
  ln -s ../../../sharun ./WebKitWebProcess
  ln -s ../../../sharun ./WebKitNetworkProcess
  ln -s ../../../sharun ./MiniBrowser
)

find ./shared/lib -name 'libwebkit*' -exec sed -i 's|/usr|././|g' {} \;

ln -s ./ ./shared/lib/x86_64-linux-gnu

Now what does EGL_BAD_PARAMETER error mean?

@Samueru-sama
Copy link

Samueru-sama commented Nov 23, 2024

Relevant issue about the EGL_BAD_PARAMETER error: gitbutlerapp/gitbutler#5282

Seems like an older version of webkit2gtk has to be used? this thing is a nightmare lol.


EDIT: Looking at strace, I get the following missing libs when I click on "Printables" and I get the EGL_BAD_PARAMETER error:

"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/../lib/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libgallium-24.2.7-arch1.1.so"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libgallium-24.2.7-arch1.1.so"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libgallium-24.2.7-arch1.1.so"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libgallium-24.2.7-arch1.1.so"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-dri2.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-dri2.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-dri2.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-dri2.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-dri3.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-dri3.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-dri3.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-dri3.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-present.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-present.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-present.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-present.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-sync.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-sync.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-sync.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-sync.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxshmfence.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxshmfence.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxshmfence.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxshmfence.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/../lib/libEGL_mesa.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libgallium-24.2.7-arch1.1.so"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libgallium-24.2.7-arch1.1.so"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libgallium-24.2.7-arch1.1.so"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libgallium-24.2.7-arch1.1.so"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-dri2.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-dri2.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-dri2.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-dri2.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-xfixes.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-dri3.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-dri3.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-dri3.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-dri3.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-present.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-present.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-present.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-present.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxcb-sync.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxcb-sync.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxcb-sync.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxcb-sync.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libxshmfence.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libxshmfence.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libxshmfence.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libxshmfence.so.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libLLVM.so.18.1"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libedit.so.0"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/dri/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/gdk-pixbuf-2.0/2.10.0/loaders/libncursesw.so.6"
"/tmp/samuel/Volatile/squashfs-root/shared/lib/webkit2gtk-4.0/injected-bundle/libncursesw.so.6"
"/home/runner/work/PrusaSlicer/PrusaSlicer/deps/build/destdir/usr/local/lib/wx/3.2/web-extensions"

Hopefully these libs just need to be bundled, specially libgallium-24.2.7-arch1.1.so, libLLVM.so.18.1 and libEGL_mesa.so.0.

That /home/runner/work/PrusaSlicer/PrusaSlicer/deps/build/destdir/usr/local/lib/wx/3.2/web-extensionsis odd, it is looking for something that was made when compiled.

@Samueru-sama
Copy link

Update I was able to reduce most of the strace missing libs: I had to copy the following libs from ubuntu into the AppDir:

libGLX_indirect.so.0
libGLX_mesa.so.0
libxcb-dri2.so.0
libxcb-dri3.so.0
libxcb-glx.so.0
libxcb-present.so.0
libxcb-sync.so.1
libxcb-xfixes.so.0
libxshmfence.so.1
libXxf86vm.so.1

Now I only get "/home/runner/work/PrusaSlicer/PrusaSlicer/deps/build/destdir/usr/local/lib/wx/3.2/web-extensions" missing when I click on Printables.

@xplshn
Copy link

xplshn commented Nov 23, 2024

image
I made a working one using: pelfCreator --maintainer "xplshn" --name "prusaSlicer" --pkg-add "prusa-slicer" --entrypoint "PrusaSlicer.desktop"

I should check if I can make it smaller via using ./baseSystems/arch_x86_64 pelfCreator's --sharun mode + --keep to keep some /usr, /opt, /var, whatever, files.

image
I used pelfCreator to create one based on Devuan, and the other one which is based on a CachyOS rootfs, you could probably just roll with this after passing the --getrid flag and indicating some files & dirs which could be removed from the appdir.

NOTE: See the AppBundleHUB repo if interested in the arch_x86_64 extension for pelfCreator
NOTE 2: pelfCreator by default uses an Alpine rootfs, and it can produce binaries which use a container and binaries which don't use a container (--sharun mode).
NOTE 3: You can write an "extension" for pelfCreator so that it uses any system you want. Its very simple, you just need a rootfs in tar.gz format.

@probonopd
Copy link
Author

probonopd commented Nov 23, 2024

Great progress @Samueru-sama 👍

@probonopd
Copy link
Author

probonopd commented Nov 23, 2024

@xplshn: Interesting as well. How far can you bring the size down in you approach without impacting functionality?

Maybe you could use something like https://github.com/jacereda/fsatrace to find out which files are actually needed and should be kept?

@probonopd
Copy link
Author

probonopd commented Nov 23, 2024

As of #1 (comment) now, the remaining issue on Fedora was that it claimed to need glib-networking for TLS/SSL to work.

image

This message seems to come from libsoup-2.4.so.1.11.2.

It's a shame that Chromium for Gtk draws in dependencies for GNOME such as https://wiki.gnome.org/Projects/libsoup which in turn draws in things like glib-networking which in turn seems to draw in GIO...

$ strings ./squashfs-root/shared/lib/libgio-2.0.so.0.7200.4 | grep usr
/usr/lib/x86_64-linux-gnu/gio/modules

Apparently we need to deploy that stuff (and its dependencies) too, and set GIO_MODULE_DIR, as I have done in my latest build.

At least on my machine everything now seems to work on Fedora with an AppImage built on Ubuntu.

image

Would be interesting to know whether it can run on NixOS.

@probonopd
Copy link
Author

probonopd commented Nov 23, 2024

On openSUSE Tumbleweed 20231208:

image

Works fine on, e.g., Ubuntu 20.04.3 LTS (Focal Fossa).

Update: Fixed by bundling glib2 schemas.

@xplshn
Copy link

xplshn commented Nov 23, 2024

@xplshn: Interesting as well. How far can you bring the size down in you approach without impacting functionality?

Maybe you could use something like https://github.com/jacereda/fsatrace to find out which files are actually needed and should be kept?

Well, depends the mode. The smallest AppBundle that uses an entire rootfs is 10 megs, 6 out of those 10 megs are the static tools being included...

The sharun mode would run lib4bin on the binaries which you pass an ditch the rootfs, only keeping the directories you want via --keep, also, AppBundles generated like this will always use the directories within ./appdir/proto. So, if you had, ./appdir/proto/usr/share/myapp, the program would be able to locate its config, it'd believe that its config is sitting at /usr/share/myapp. This approach works for all directories, not just usr, arbitrary ones too.

@Samueru-sama
Copy link

It's a shame that Chromium for Gtk draws in dependencies for GNOME such as https://wiki.gnome.org/Projects/libsoup which in turn draws in things like glib-networking which in turn seems to draw in GIO...

Apparently we need to deploy that stuff (and its dependencies) too, and set GIO_MODULE_DIR, as I have done in my latest build.

sharun should already set GIO_MODULE_DIR automatically.

@probonopd
Copy link
Author

So, for my personal test case I found solutions for all of the above. But it is a lot of manual work, Is it in the scope of this project to provide automation for this? Thanks.

@Samueru-sama
Copy link

Samueru-sama commented Nov 26, 2024

So, for my personal test case I found solutions for all of the above. But it is a lot of manual work, Is it in the scope of this project to provide automation for this? Thanks.

This is a very specific issue with webkit2gtk.

With that said I was recently shared this amazing thing that can be used to overwrite paths.

TLDR:

git clone https://github.com/fritzw/ld-preload-open.git
cd ld-preload-open
make all

Then move the lib to the AppDir and:

export PATH_MAPPING="/usr/lib:/$HERE/shared/lib"
LD_PRELOAD="$HERE/path-mapping.so" "$HERE"/AppRun

And now calls to /usr/lib will be redirected to $HERE/shared/lib in this example.

So maybe lib4bin can have something that builds this library and sharun preloads it when it finds in the AppDir.

@probonopd
Copy link
Author

Yes... but it needs to be considered also:

  • Not all binaries are dynamic
  • Exporting LD_PRELOAD means that not only the main process started by AppRun, but also all subprocesses started by it might see it, which might not be desirable

@Samueru-sama
Copy link

Not all binaries are dynamic

In that case the binary works already. I don't know of a scenario where we ship a static binary in an AppImage that is hardcoded to look into /usr/lib?

Exporting LD_PRELOAD means that not only the main process started by AppRun, but also all subprocesses started by it might see it, which might not be desirable

I guess you could add it with patchelf --add-needed as well but I'm not sure if it only needs to be added to all binaries or also all libraries as well though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants