gobject-introspection: wrapper: add .libs to LD_LIBRARY_PATH for emulator
fixes issues like
libdbusmenu-gtk3-aarch64-unknown-linux-gnu> /build/libdbusmenu-16.04.0/libdbusmenu-gtk/tmp-introspect2jhtiwwn/.libs/DbusmenuGtk3-0.4:
error while loading shared libraries: libdbusmenu-glib.so.4: cannot open shared object file: No such file or directory
in non-meson builds
i think the reason we need this in all non-meson builds is because of ./pkgs/development/libraries/gobject-introspection/absolute_shlib_path.patch
see: https://github.com/void-linux/void-packages/blob/master/srcpkgs/gobject-introspection/files/g-ir-scanner-qemuwrapper
c5a14f39a6/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.72.0.bb (L74)
This commit is contained in:
parent
118b5d13a1
commit
267ef1f2de
4 changed files with 28 additions and 5 deletions
|
@ -25,6 +25,7 @@ in
|
|||
(
|
||||
export bash="${buildPackages.bash}"
|
||||
export emulator=${lib.escapeShellArg (stdenv.targetPlatform.emulator buildPackages)}
|
||||
export emulatorwrapper="$dev/bin/g-ir-scanner-qemuwrapper"
|
||||
export buildobjdump="${buildPackages.stdenv.cc.bintools}/bin/objdump"
|
||||
|
||||
export targetgir="${lib.getDev (targetPackages.gobject-introspection-unwrapped.override argsForTarget)}"
|
||||
|
@ -32,9 +33,8 @@ in
|
|||
substituteAll "${./wrappers/g-ir-compiler.sh}" "$dev/bin/g-ir-compiler"
|
||||
substituteAll "${./wrappers/g-ir-scanner.sh}" "$dev/bin/g-ir-scanner"
|
||||
substituteAll "${./wrappers/g-ir-scanner-lddwrapper.sh}" "$dev/bin/g-ir-scanner-lddwrapper"
|
||||
chmod +x "$dev/bin/g-ir-compiler"
|
||||
chmod +x "$dev/bin/g-ir-scanner"
|
||||
chmod +x "$dev/bin/g-ir-scanner-lddwrapper"
|
||||
substituteAll "${./wrappers/g-ir-scanner-qemuwrapper.sh}" "$dev/bin/g-ir-scanner-qemuwrapper"
|
||||
chmod +x $dev/bin/g-ir-*
|
||||
)
|
||||
''
|
||||
# when cross-compiling and using the wrapper then when a package looks up the g_ir_X
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#! @bash@/bin/bash
|
||||
# shellcheck shell=bash
|
||||
|
||||
exec @emulator@ @targetgir@/bin/g-ir-compiler "$@"
|
||||
exec @emulatorwrapper@ @targetgir@/bin/g-ir-compiler "$@"
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
#! @bash@/bin/bash
|
||||
# shellcheck shell=bash
|
||||
|
||||
# fixes issues like
|
||||
# libdbusmenu-gtk3-aarch64-unknown-linux-gnu> /build/libdbusmenu-16.04.0/libdbusmenu-gtk/tmp-introspect2jhtiwwn/.libs/DbusmenuGtk3-0.4:
|
||||
# error while loading shared libraries: libdbusmenu-glib.so.4: cannot open shared object file: No such file or directory
|
||||
# in non-meson builds
|
||||
|
||||
# see: https://github.com/void-linux/void-packages/blob/master/srcpkgs/gobject-introspection/files/g-ir-scanner-qemuwrapper
|
||||
# https://github.com/openembedded/openembedded-core/blob/c5a14f39a6717a99b510cb97aa2fb403d4b98d99/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.72.0.bb#L74
|
||||
while read -r d; do \
|
||||
# some meson projects may have subprojects which use makefiles for docs(e.g. gi-docgen), ignore those as they will never be needed
|
||||
if [[ -f "$d/Makefile" && "$d" != *"subproject"* ]]; then
|
||||
GIR_EXTRA_LIBS_PATH="$(readlink -f "$d/.libs"):$GIR_EXTRA_LIBS_PATH"
|
||||
export GIR_EXTRA_LIBS_PATH
|
||||
fi
|
||||
done < <(find "$NIX_BUILD_TOP" -type d)
|
||||
|
||||
# quoting broke the build of atk
|
||||
# shellcheck disable=2086
|
||||
exec @emulator@ ${GIR_EXTRA_OPTIONS:-} \
|
||||
${GIR_EXTRA_LIBS_PATH:+-E LD_LIBRARY_PATH="${GIR_EXTRA_LIBS_PATH}"} \
|
||||
"$@"
|
|
@ -2,6 +2,6 @@
|
|||
# shellcheck shell=bash
|
||||
|
||||
exec @dev@/bin/.g-ir-scanner-wrapped \
|
||||
--use-binary-wrapper=@emulator@ \
|
||||
--use-binary-wrapper=@emulatorwrapper@ \
|
||||
--use-ldd-wrapper=@dev@/bin/g-ir-scanner-lddwrapper \
|
||||
"$@"
|
||||
|
|
Loading…
Reference in a new issue