Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Allow for RHEL-style /usr/lib64 paths in build filesystem #45

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

Merged

Conversation

freakboy3742
Copy link
Contributor

When building AppImages on a RHEL or RHEL-derived system (Fedora, Centos, AlmaLinux), system libraries and GTK modules are in the /usr/lib64 folder. To ensure that linuxdeploy is able to correctly delocalise those libraries and plugins, they must be installed into /usr/lib.

Fixes #44

@freakboy3742
Copy link
Contributor Author

Checking in - is there anything I can do to move this PR forward?

@TheTumultuousUnicornOfDarkness
Copy link
Contributor

Sorry, I was not able to take a deep look before.
I did a test with the generated tree before and after this PR for the Fedora container with GTK3:

The diff between them:

 /usr/bin
 /usr/bin/gtk3-widget-factory
 /usr/lib
-/usr/lib64
-/usr/lib64/gdk-pixbuf-2.0
-/usr/lib64/gdk-pixbuf-2.0/2.10.0
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders.cache
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ico.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tiff.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.so
-/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so
-/usr/lib64/girepository-1.0
-/usr/lib64/girepository-1.0/Atk-1.0.typelib
-/usr/lib64/girepository-1.0/Atspi-2.0.typelib
-/usr/lib64/girepository-1.0/cairo-1.0.typelib
-/usr/lib64/girepository-1.0/CloudProviders-0.3.typelib
-/usr/lib64/girepository-1.0/Colord-1.0.typelib
-/usr/lib64/girepository-1.0/Colorhug-1.0.typelib
-/usr/lib64/girepository-1.0/DBus-1.0.typelib
-/usr/lib64/girepository-1.0/DBusGLib-1.0.typelib
-/usr/lib64/girepository-1.0/fontconfig-2.0.typelib
-/usr/lib64/girepository-1.0/freetype2-2.0.typelib
-/usr/lib64/girepository-1.0/GDesktopEnums-3.0.typelib
-/usr/lib64/girepository-1.0/Gdk-3.0.typelib
-/usr/lib64/girepository-1.0/GdkPixbuf-2.0.typelib
-/usr/lib64/girepository-1.0/GdkPixdata-2.0.typelib
-/usr/lib64/girepository-1.0/GdkX11-3.0.typelib
-/usr/lib64/girepository-1.0/Gio-2.0.typelib
-/usr/lib64/girepository-1.0/GIRepository-2.0.typelib
-/usr/lib64/girepository-1.0/GL-1.0.typelib
-/usr/lib64/girepository-1.0/GLib-2.0.typelib
-/usr/lib64/girepository-1.0/GModule-2.0.typelib
-/usr/lib64/girepository-1.0/GObject-2.0.typelib
-/usr/lib64/girepository-1.0/Gst-1.0.typelib
-/usr/lib64/girepository-1.0/GstBase-1.0.typelib
-/usr/lib64/girepository-1.0/GstCheck-1.0.typelib
-/usr/lib64/girepository-1.0/GstController-1.0.typelib
-/usr/lib64/girepository-1.0/GstNet-1.0.typelib
-/usr/lib64/girepository-1.0/Gtk-3.0.typelib
-/usr/lib64/girepository-1.0/GUsb-1.0.typelib
-/usr/lib64/girepository-1.0/HarfBuzz-0.0.typelib
-/usr/lib64/girepository-1.0/Json-1.0.typelib
-/usr/lib64/girepository-1.0/libxml2-2.0.typelib
-/usr/lib64/girepository-1.0/ModemManager-1.0.typelib
-/usr/lib64/girepository-1.0/Modulemd-2.0.typelib
-/usr/lib64/girepository-1.0/Notify-0.7.typelib
-/usr/lib64/girepository-1.0/Pango-1.0.typelib
-/usr/lib64/girepository-1.0/PangoCairo-1.0.typelib
-/usr/lib64/girepository-1.0/PangoFc-1.0.typelib
-/usr/lib64/girepository-1.0/PangoFT2-1.0.typelib
-/usr/lib64/girepository-1.0/PangoOT-1.0.typelib
-/usr/lib64/girepository-1.0/PangoXft-1.0.typelib
-/usr/lib64/girepository-1.0/Rsvg-2.0.typelib
-/usr/lib64/girepository-1.0/Soup-2.4.typelib
-/usr/lib64/girepository-1.0/Soup-3.0.typelib
-/usr/lib64/girepository-1.0/SoupGNOME-2.4.typelib
-/usr/lib64/girepository-1.0/Tracker-3.0.typelib
-/usr/lib64/girepository-1.0/Vulkan-1.0.typelib
-/usr/lib64/girepository-1.0/win32-1.0.typelib
-/usr/lib64/girepository-1.0/xfixes-4.0.typelib
-/usr/lib64/girepository-1.0/xft-2.0.typelib
-/usr/lib64/girepository-1.0/xlib-2.0.typelib
-/usr/lib64/girepository-1.0/xrandr-1.3.typelib
-/usr/lib64/gtk-3.0
-/usr/lib64/gtk-3.0/3.0.0
-/usr/lib64/gtk-3.0/3.0.0/immodules
-/usr/lib64/gtk-3.0/3.0.0/immodules.cache
-/usr/lib64/gtk-3.0/3.0.0/printbackends
-/usr/lib64/gtk-3.0/3.0.0/printbackends/libprintbackend-cups.so
-/usr/lib64/gtk-3.0/3.0.0/printbackends/libprintbackend-file.so
-/usr/lib64/gtk-3.0/3.0.0/printbackends/libprintbackend-lpr.so
-/usr/lib64/gtk-3.0/immodules
-/usr/lib64/gtk-3.0/modules
-/usr/lib64/gtk-3.0/modules/libcanberra-gtk3-module.so
-/usr/lib64/gtk-3.0/modules/libcanberra-gtk-module.so
+/usr/lib/gdk-pixbuf-2.0
+/usr/lib/gdk-pixbuf-2.0/2.10.0
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ico.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tiff.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.so
+/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so
+/usr/lib/girepository-1.0
+/usr/lib/girepository-1.0/Atk-1.0.typelib
+/usr/lib/girepository-1.0/Atspi-2.0.typelib
+/usr/lib/girepository-1.0/cairo-1.0.typelib
+/usr/lib/girepository-1.0/CloudProviders-0.3.typelib
+/usr/lib/girepository-1.0/Colord-1.0.typelib
+/usr/lib/girepository-1.0/Colorhug-1.0.typelib
+/usr/lib/girepository-1.0/DBus-1.0.typelib
+/usr/lib/girepository-1.0/DBusGLib-1.0.typelib
+/usr/lib/girepository-1.0/fontconfig-2.0.typelib
+/usr/lib/girepository-1.0/freetype2-2.0.typelib
+/usr/lib/girepository-1.0/GDesktopEnums-3.0.typelib
+/usr/lib/girepository-1.0/Gdk-3.0.typelib
+/usr/lib/girepository-1.0/GdkPixbuf-2.0.typelib
+/usr/lib/girepository-1.0/GdkPixdata-2.0.typelib
+/usr/lib/girepository-1.0/GdkX11-3.0.typelib
+/usr/lib/girepository-1.0/Gio-2.0.typelib
+/usr/lib/girepository-1.0/GIRepository-2.0.typelib
+/usr/lib/girepository-1.0/GL-1.0.typelib
+/usr/lib/girepository-1.0/GLib-2.0.typelib
+/usr/lib/girepository-1.0/GModule-2.0.typelib
+/usr/lib/girepository-1.0/GObject-2.0.typelib
+/usr/lib/girepository-1.0/Gst-1.0.typelib
+/usr/lib/girepository-1.0/GstBase-1.0.typelib
+/usr/lib/girepository-1.0/GstCheck-1.0.typelib
+/usr/lib/girepository-1.0/GstController-1.0.typelib
+/usr/lib/girepository-1.0/GstNet-1.0.typelib
+/usr/lib/girepository-1.0/Gtk-3.0.typelib
+/usr/lib/girepository-1.0/GUsb-1.0.typelib
+/usr/lib/girepository-1.0/HarfBuzz-0.0.typelib
+/usr/lib/girepository-1.0/Json-1.0.typelib
+/usr/lib/girepository-1.0/libxml2-2.0.typelib
+/usr/lib/girepository-1.0/ModemManager-1.0.typelib
+/usr/lib/girepository-1.0/Modulemd-2.0.typelib
+/usr/lib/girepository-1.0/Notify-0.7.typelib
+/usr/lib/girepository-1.0/Pango-1.0.typelib
+/usr/lib/girepository-1.0/PangoCairo-1.0.typelib
+/usr/lib/girepository-1.0/PangoFc-1.0.typelib
+/usr/lib/girepository-1.0/PangoFT2-1.0.typelib
+/usr/lib/girepository-1.0/PangoOT-1.0.typelib
+/usr/lib/girepository-1.0/PangoXft-1.0.typelib
+/usr/lib/girepository-1.0/Rsvg-2.0.typelib
+/usr/lib/girepository-1.0/Soup-2.4.typelib
+/usr/lib/girepository-1.0/Soup-3.0.typelib
+/usr/lib/girepository-1.0/SoupGNOME-2.4.typelib
+/usr/lib/girepository-1.0/Tracker-3.0.typelib
+/usr/lib/girepository-1.0/Vulkan-1.0.typelib
+/usr/lib/girepository-1.0/win32-1.0.typelib
+/usr/lib/girepository-1.0/xfixes-4.0.typelib
+/usr/lib/girepository-1.0/xft-2.0.typelib
+/usr/lib/girepository-1.0/xlib-2.0.typelib
+/usr/lib/girepository-1.0/xrandr-1.3.typelib
+/usr/lib/gtk-3.0
+/usr/lib/gtk-3.0/3.0.0
+/usr/lib/gtk-3.0/3.0.0/immodules
+/usr/lib/gtk-3.0/3.0.0/immodules.cache
+/usr/lib/gtk-3.0/3.0.0/printbackends
+/usr/lib/gtk-3.0/3.0.0/printbackends/libprintbackend-cups.so
+/usr/lib/gtk-3.0/3.0.0/printbackends/libprintbackend-file.so
+/usr/lib/gtk-3.0/3.0.0/printbackends/libprintbackend-lpr.so
+/usr/lib/gtk-3.0/immodules
+/usr/lib/gtk-3.0/modules
+/usr/lib/gtk-3.0/modules/libcanberra-gtk3-module.so
+/usr/lib/gtk-3.0/modules/libcanberra-gtk-module.so
 /usr/lib/libatk-1.0.so.0
 /usr/lib/libatk-bridge-2.0.so.0
 /usr/lib/libatspi.so.0
+/usr/lib/libavahi-client.so.3
+/usr/lib/libavahi-common.so.3
 /usr/lib/libblkid.so.1
 /usr/lib/libbrotlicommon.so.1
 /usr/lib/libbrotlidec.so.1
 /usr/lib/libbz2.so.1
 /usr/lib/libcairo-gobject.so.2
 /usr/lib/libcairo.so.2
+/usr/lib/libcanberra-gtk3.so.0
+/usr/lib/libcanberra.so.0
 /usr/lib/libcap.so.2
 /usr/lib/libcloudproviders.so.0
+/usr/lib/libcolord.so.2
+/usr/lib/libcrypto.so.3
+/usr/lib/libcups.so.2
 /usr/lib/libdatrie.so.1
 /usr/lib/libdbus-1.so.3
 /usr/lib/libepoxy.so.0
 /usr/lib/libffi.so.8
-/usr/lib/libgdk-3.so
 /usr/lib/libgdk-3.so.0
-/usr/lib/libgdk-3.so.0.2405.32
 /usr/lib/libgdk_pixbuf-2.0.so
 /usr/lib/libgdk_pixbuf-2.0.so.0
 /usr/lib/libgdk_pixbuf-2.0.so.0.4200.10
@@ -117,19 +121,33 @@
 /usr/lib/libgio-2.0.so.0.7400.6
 /usr/lib/libglib-2.0.so.0
 /usr/lib/libgmodule-2.0.so.0
+/usr/lib/libgnutls.so.30
 /usr/lib/libgobject-2.0.so
 /usr/lib/libgobject-2.0.so.0
 /usr/lib/libgobject-2.0.so.0.7400.6
 /usr/lib/libgraphite2.so.3
+/usr/lib/libgssapi_krb5.so.2
+/usr/lib/libgthread-2.0.so.0
 /usr/lib/libgtk-3.so.0
+/usr/lib/libhogweed.so.6
 /usr/lib/libicudata.so.71
 /usr/lib/libicui18n.so.71
 /usr/lib/libicuuc.so.71
+/usr/lib/libidn2.so.0
+/usr/lib/libjbig.so.2.1
 /usr/lib/libjpeg.so.62
 /usr/lib/libjson-glib-1.0.so.0
+/usr/lib/libk5crypto.so.3
+/usr/lib/libkeyutils.so.1
+/usr/lib/libkrb5.so.3
+/usr/lib/libkrb5support.so.0
+/usr/lib/liblcms2.so.2
+/usr/lib/libltdl.so.7
 /usr/lib/liblz4.so.1
 /usr/lib/liblzma.so.5
 /usr/lib/libmount.so.1
+/usr/lib/libnettle.so.8
+/usr/lib/libogg.so.0
 /usr/lib/libpango-1.0.so
 /usr/lib/libpango-1.0.so.0
 /usr/lib/libpango-1.0.so.0.5000.14
@@ -161,13 +179,22 @@
 /usr/lib/librsvg-2.so.2
 /usr/lib/librsvg-2.so.2.48.0
 /usr/lib/libselinux.so.1
+/usr/lib/libsharpyuv.so.0
 /usr/lib/libsqlite3.so.0
 /usr/lib/libstemmer.so.0
 /usr/lib/libsystemd.so.0
+/usr/lib/libtasn1.so.6
+/usr/lib/libtdb.so.1
+/usr/lib/libtiff.so.5
 /usr/lib/libtracker-sparql-3.0.so.0
+/usr/lib/libudev.so.1
+/usr/lib/libunistring.so.2
+/usr/lib/libvorbisfile.so.3
+/usr/lib/libvorbis.so.0
 /usr/lib/libwayland-client.so.0
 /usr/lib/libwayland-cursor.so.0
 /usr/lib/libwayland-egl.so.1
+/usr/lib/libwebp.so.7
 /usr/lib/libXau.so.6
 /usr/lib/libxcb-render.so.0
 /usr/lib/libxcb-shm.so.0

I was wondering why /usr/lib/libgdk-3.so and /usr/lib/libgdk-3.so.0.2405.32 are missing after this PR, but there are a copy of /usr/lib/libgdk-3.so (not a symlink).
In fact, it seems no library is linked against libgdk-3.so, so it is not an issue (it is an improvement).

A deep look on shared library libprintbackend-lpr.so:

  • Before PR:
$ ldd /tmp/squashfs-root-before-pr/usr/lib/libprintbackend-lpr.so | grep gdk
	libgdk-3.so.0 => /usr/lib/libgdk-3.so.0 (0x00007f1bb42c1000)
	libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x00007f1bb3e95000)
  • After PR:
$ ldd /tmp/squashfs-root-after-pr/usr/lib/libprintbackend-lpr.so | grep gdk
   libgdk-3.so.0 => /tmp/squashfs-root-after-pr/usr/lib/libgdk-3.so.0 (0x00007f671f065000)
   libgdk_pixbuf-2.0.so.0 => /tmp/squashfs-root-after-pr/usr/lib/libgdk_pixbuf-2.0.so.0 (0x00007f671ec28000)

It is definitively better with this PR, because it is using shared libraries inside AppImage instead of shared libraries on my system.

Good job @freakboy3742, thank you. I feel confident to merge this PR.

@TheTumultuousUnicornOfDarkness TheTumultuousUnicornOfDarkness merged commit 5ce0401 into linuxdeploy:master Apr 1, 2023
@freakboy3742 freakboy3742 deleted the lib64-fix branch April 1, 2023 06:46
@freakboy3742
Copy link
Contributor Author

No worries - thanks for the review!

@tsl0922
Copy link

tsl0922 commented Apr 1, 2023

This breaks my build on Ubuntu 20.04, error log:

-- Running input plugin: gtk -- 
[gtk/stdout] Installing AppRun hook
[gtk/stderr] Package gobject-introspection-1.0 was not found in the pkg-config search path.
[gtk/stderr] Perhaps you should add the directory containing `gobject-introspection-1.0.pc'
[gtk/stderr] to the PKG_CONFIG_PATH environment variable
[gtk/stderr] No package 'gobject-introspection-1.0' found
[gtk/stdout] Installing GLib schemas
[gtk/stdout] Installing GIRepository Typelibs
[gtk/stderr] cp: failed to access 'AppDir//usr/lib'[gtk/stdout] /usr/lib/x86_64-linux-gnu ~/work/ImPlay/ImPlay/build
: No such file or directory
ERROR: Failed to run plugin: gtk (exit code: 1) 

Revert to the previous commit fixes the issue.

@TheTumultuousUnicornOfDarkness
Copy link
Contributor

@tsl0922 can you re-run with the DEBUG=1 environment variable and provide the new output?

@tsl0922
Copy link

tsl0922 commented Apr 1, 2023

@tsl0922 can you re-run with the DEBUG=1 environment variable and provide the new output?

You can reproduce it with this actions yaml: https://github.com/tsl0922/ImPlay/blob/main/.github/workflows/build.yml

@tsl0922
Copy link

tsl0922 commented Apr 1, 2023

-- Running input plugin: gtk --
[gtk/stderr] + verbose=--verbose
[gtk/stderr] +++ readlink -f /home/tsl0922/ImPlay/build/linuxdeploy-plugin-gtk.sh
[gtk/stderr] ++ basename /home/tsl0922/ImPlay/build/linuxdeploy-plugin-gtk.sh
[gtk/stderr] + SCRIPT=linuxdeploy-plugin-gtk.sh
[gtk/stderr] + DEPLOY_GTK_VERSION=3
[gtk/stderr] + APPDIR=
[gtk/stderr] + '[' --appdir '!=' '' ']'
[gtk/stderr] + case "$1" in
[gtk/stderr] + APPDIR=AppDir
[gtk/stderr] + shift
[gtk/stderr] + shift
[gtk/stderr] + '[' '' '!=' '' ']'
[gtk/stderr] + '[' AppDir == '' ']'
[gtk/stderr] + mkdir -p AppDir
[gtk/stderr] + command -v pkgconf
[gtk/stdout] Installing AppRun hook
[gtk/stderr] + command -v pkg-config
[gtk/stderr] + PKG_CONFIG=pkg-config
[gtk/stderr] ++ search_library_path
[gtk/stderr] ++ PATH_ARRAY=("/usr/lib/$(uname -m)-linux-gnu" "/usr/lib64" "/usr/lib")
[gtk/stderr] +++ uname -m
[gtk/stderr] ++ for path in "${PATH_ARRAY[@]}"
[gtk/stderr] ++ '[' -d /usr/lib/x86_64-linux-gnu ']'
[gtk/stderr] ++ echo /usr/lib/x86_64-linux-gnu
[gtk/stderr] ++ return 0
[gtk/stderr] + LD_GTK_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
[gtk/stderr] + command -v find
[gtk/stderr] + '[' -z /tmp/.mount_linuxdEyV4IE/usr/bin/linuxdeploy ']'
[gtk/stderr] + gtk_versions=0
[gtk/stderr] + '[' 3 -eq 0 ']'
[gtk/stderr] + '[' 0 -gt 1 ']'
[gtk/stderr] + '[' 3 -eq 0 ']'
[gtk/stderr] + echo 'Installing AppRun hook'
[gtk/stderr] + HOOKSDIR=AppDir/apprun-hooks
[gtk/stderr] + HOOKFILE=AppDir/apprun-hooks/linuxdeploy-plugin-gtk.sh
[gtk/stderr] + mkdir -p AppDir/apprun-hooks
[gtk/stdout] Installing GLib schemas
[gtk/stderr] + cat
[gtk/stderr] + echo 'Installing GLib schemas'
[gtk/stdout] '/usr/share/glib-2.0/schemas/10_gsettings-desktop-schemas.gschema.override' -> 'AppDir/usr/share/glib-2.0/schemas/10_gsettings-desktop-schemas.gschema.override'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.applications.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.applications.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.interface.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.interface.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.keyboard.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.keyboard.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.magnifier.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.magnifier.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.mouse.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.mouse.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.app-folders.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.app-folders.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.calendar.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.calendar.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.datetime.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.datetime.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.default-applications.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.default-applications.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.enums.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.enums.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.input-sources.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.input-sources.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.interface.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.interface.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.lockdown.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.lockdown.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.media-handling.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.media-handling.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.notifications.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.notifications.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.peripherals.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.peripherals.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.privacy.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.privacy.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.screensaver.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.screensaver.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.search-providers.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.search-providers.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.session.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.session.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.sound.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.sound.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.thumbnail-cache.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.thumbnail-cache.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.thumbnailers.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.thumbnailers.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.wm.keybindings.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.des[gtk/stderr] ++ get_pkgconf_variable schemasdir gio-2.0 /usr/share/glib-2.0/schemas
[gtk/stderr] ++ local variable=schemasdir
[gtk/stderr] ++ local library=gio-2.0
[gtk/stderr] ++ local default_value=/usr/share/glib-2.0/schemas
[gtk/stderr] +++ pkg-config --variable=schemasdir gio-2.0
[gtk/stderr] ++ pkgconfig_ret=/usr/share/glib-2.0/schemas
[gtk/stderr] ++ '[' -n /usr/share/glib-2.0/schemas ']'
[gtk/stderr] ++ echo /usr/share/glib-2.0/schemas
[gtk/stderr] + glib_schemasdir=/usr/share/glib-2.0/schemas
[gtk/stderr] + copy_tree /usr/share/glib-2.0/schemas AppDir/
[gtk/stderr] + src=('/usr/share/glib-2.0/schemas')
[gtk/stderr] + local src
[gtk/stderr] + local dst=AppDir/
[gtk/stderr] + for elem in "${src[@]}"
[gtk/stderr] + mkdir -p AppDir/usr/share/glib-2.0/schemas
[gtk/stderr] + cp /usr/share/glib-2.0/schemas --archive --parents --target-directory=AppDir/ --verbose
ktop.wm.keybindings.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.desktop.wm.preferences.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.desktop.wm.preferences.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.system.locale.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.system.locale.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.system.location.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.system.location.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gnome.system.proxy.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gnome.system.proxy.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gtk.Settings.ColorChooser.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gtk.Settings.ColorChooser.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gtk.Settings.Debug.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gtk.Settings.Debug.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gtk.Settings.EmojiChooser.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gtk.Settings.EmojiChooser.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/gschema.dtd' -> 'AppDir/usr/share/glib-2.0/schemas/gschema.dtd'
[gtk/stdout] '/usr/share/glib-2.0/schemas/com.gexperts.Tilix.gschema.xml' -> 'AppDir/usr/share/glib-2.0/schemas/com.gexperts.Tilix.gschema.xml'
[gtk/stdout] '/usr/share/glib-2.0/schemas/gschemas.compiled' -> 'AppDir/usr/share/glib-2.0/schemas/gschemas.compiled'
[gtk/stderr] + glib-compile-schemas AppDir//usr/share/glib-2.0/schemas
[gtk/stdout] Installing GIRepository Typelibs
[gtk/stderr] + cat
[gtk/stderr] + echo 'Installing GIRepository Typelibs'
[gtk/stdout] /usr/lib/x86_64-linux-gnu ~/ImPlay/build
[gtk/stderr] ++ get_pkgconf_variable typelibdir gobject-introspection-1.0 /usr/lib/x86_64-linux-gnu/girepository-1.0
[gtk/stderr] ++ local variable=typelibdir
[gtk/stderr] ++ local library=gobject-introspection-1.0
[gtk/stderr] ++ local default_value=/usr/lib/x86_64-linux-gnu/girepository-1.0
[gtk/stderr] +++ pkg-config --variable=typelibdir gobject-introspection-1.0
[gtk/stderr] Package gobject-introspection-1.0 was not found in the pkg-config search path.
[gtk/stderr] Perhaps you should add the directory containing `gobject-introspection-1.0.pc'
[gtk/stderr] to the PKG_CONFIG_PATH environment variable
[gtk/stderr] No package 'gobject-introspection-1.0' found
[gtk/stderr] ++ pkgconfig_ret=
[gtk/stderr] ++ '[' -n '' ']'
[gtk/stderr] ++ '[' -n /usr/lib/x86_64-linux-gnu/girepository-1.0 ']'
[gtk/stderr] ++ echo /usr/lib/x86_64-linux-gnu/girepository-1.0
[gtk/stderr] + gi_typelibsdir=/usr/lib/x86_64-linux-gnu/girepository-1.0
[gtk/stderr] + copy_lib_tree /usr/lib/x86_64-linux-gnu/girepository-1.0 AppDir/
[gtk/stderr] + src=('/usr/lib/x86_64-linux-gnu/girepository-1.0')
[gtk/stderr] + local src
[gtk/stderr] + local dst=AppDir/
[gtk/stderr] + for elem in "${src[@]}"
[gtk/stderr] + mkdir -p AppDir/usr/lib/girepository-1.0
[gtk/stderr] + pushd /usr/lib/x86_64-linux-gnu
[gtk/stderr] ++ realpath --relative-to=/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/girepository-1.0
[gtk/stderr] + cp girepository-1.0 --archive --parents --target-directory=AppDir//usr/lib --verbose
[gtk/stderr] cp: failed to access 'AppDir//usr/lib': No such file or directory
ERROR: Failed to run plugin: gtk (exit code: 1)

@rmartin16
Copy link
Contributor

rmartin16 commented Apr 1, 2023

hmm....these changes are, indeed, assuming the specified --appdir is an absolute path. we should probably adjust how copy_lib_tree is performing the copy....or convert appdir to an absolute path.

I believe the workaround, though, of passing an absolute path to --appdir should work for right now.

(pardon for interjecting....ive just spent a lot of time looking at this before the PR was submitted)

@TheAssassin
Copy link
Member

PRs welcome, you seem to know how to fix the problem.

@TheTumultuousUnicornOfDarkness
Copy link
Contributor

(pardon for interjecting....ive just spent a lot of time looking at this before the PR was submitted)

CI pipelines did not shown any regression. As you said, we did not cover the case where APPDIR is a relative path.
Do not worry: you figured the problem, you can open a new PR with a fix. 😉

@TheTumultuousUnicornOfDarkness
Copy link
Contributor

This breaks my build on Ubuntu 20.04

474c039 merged, it should work again.
Thank you for the PR @rmartin16.

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

Successfully merging this pull request may close these issues.

AppDir Inherits Host Filesystem Layout
5 participants