Files
Stefan Frijters b5406a6699 gobject-introspection: improve support for structuredAttrs
With `__structuredAttrs = true;` $outputLib is not available as an exported environment variable.
To avoid polluting the env with a generic variable that could be abused, use a bespoke
and easily greppable variable.
2025-12-19 02:12:29 +01:00

40 lines
1.4 KiB
Bash

make_gobject_introspection_find_gir_files() {
# required for .typelib files, eg mypaint git version
if [ -d "$1/lib/girepository-1.0" ]; then
addToSearchPath GI_TYPELIB_PATH $1/lib/girepository-1.0
fi
# XDG_DATA_DIRS: required for finding .gir files
if [ -d "$1/share/gir-1.0" ]; then
addToSearchPath XDG_DATA_DIRS $1/share
fi
}
export_gobject_introspection_fallback_path() {
# Newer multiple-output-optimized stdenv has a variable $outputLib,
# which in turn specifies another variable which then is used as
# the destination for the library contents (${!outputLib}/lib).
# We export this so it is available to subprocesses, such as giscanner,
# which we patch to prioritize this variable if available.
export NIX_GOBJECT_INTROSPECTION_DEFAULT_FALLBACK_LIBPATH=${!outputLib}
}
addEnvHooks "$targetOffset" make_gobject_introspection_find_gir_files
addEnvHooks "$targetOffset" export_gobject_introspection_fallback_path
giDiscoverSelf() {
if [ -d "$prefix/lib/girepository-1.0" ]; then
addToSearchPath GI_TYPELIB_PATH $prefix/lib/girepository-1.0
fi
}
# gappsWrapperArgsHook expects GI_TYPELIB_PATH variable to be set by this.
# Until we have dependency mechanism in generic builder, we need to use this hack.
postInstallHooks+=(giDiscoverSelf)
_multioutMoveGlibGir() {
moveToOutput share/gir-1.0 "${!outputDev}"
}
preFixupHooks+=(_multioutMoveGlibGir)