gobject-introspection: fix .override when the wrapper is in use

This commit is contained in:
Artturin 2022-07-22 06:21:40 +03:00
parent 77085e9b2b
commit d2e484dba2

View file

@ -1,13 +1,22 @@
{ lib { lib
, stdenv , stdenv
, buildPackages , buildPackages
, gobject-introspection-unwrapped
, targetPackages , targetPackages
}: , gobject-introspection-unwrapped
, ...
}@_args:
# to build, run # to build, run
# `nix build ".#pkgsCross.aarch64-multiplatform.buildPackages.gobject-introspection"` # 'nix build ".#pkgsCross.aarch64-multiplatform.buildPackages.gobject-introspection"'
gobject-introspection-unwrapped.overrideAttrs (_previousAttrs: {
let
# ensure that `.override` works when gobject-introspection == gobject-introspection-wrapped
args = builtins.removeAttrs _args [ "buildPackages" "targetPackages" "gobject-introspection-unwrapped" ];
# passing this stdenv to `targetPackages...` breaks due to splicing not working in `.override``
argsForTarget = builtins.removeAttrs args [ "stdenv" ];
in
(gobject-introspection-unwrapped.override args).overrideAttrs (_previousAttrs: {
pname = "gobject-introspection-wrapped"; pname = "gobject-introspection-wrapped";
postFixup = '' postFixup = ''
mv $dev/bin/g-ir-compiler $dev/bin/.g-ir-compiler-wrapped mv $dev/bin/g-ir-compiler $dev/bin/.g-ir-compiler-wrapped
@ -18,7 +27,7 @@ gobject-introspection-unwrapped.overrideAttrs (_previousAttrs: {
export emulator=${lib.escapeShellArg (stdenv.targetPlatform.emulator buildPackages)} export emulator=${lib.escapeShellArg (stdenv.targetPlatform.emulator buildPackages)}
export buildprelink="${buildPackages.prelink}/bin/prelink-rtld" export buildprelink="${buildPackages.prelink}/bin/prelink-rtld"
export targetgir="${lib.getDev targetPackages.gobject-introspection-unwrapped}" export targetgir="${lib.getDev (targetPackages.gobject-introspection-unwrapped.override argsForTarget)}"
substituteAll "${./wrappers/g-ir-compiler.sh}" "$dev/bin/g-ir-compiler" 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.sh}" "$dev/bin/g-ir-scanner"