diff options
author | Artturi <Artturin@artturin.com> | 2022-11-11 03:19:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-11 03:19:25 +0200 |
commit | 17fbc9a3c96ebc388be735ea61a1e6298af9e17f (patch) | |
tree | 84d4b87e66579b073ec6c1d1fe0569f15109dbc1 | |
parent | fcc8eb092150596d204459a2e6c855a8559b8a9b (diff) | |
parent | 5f09efa7306838562a05d4fba883cd7f58030746 (diff) | |
download | nixpkgs-17fbc9a3c96ebc388be735ea61a1e6298af9e17f.tar nixpkgs-17fbc9a3c96ebc388be735ea61a1e6298af9e17f.tar.gz nixpkgs-17fbc9a3c96ebc388be735ea61a1e6298af9e17f.tar.bz2 nixpkgs-17fbc9a3c96ebc388be735ea61a1e6298af9e17f.tar.lz nixpkgs-17fbc9a3c96ebc388be735ea61a1e6298af9e17f.tar.xz nixpkgs-17fbc9a3c96ebc388be735ea61a1e6298af9e17f.tar.zst nixpkgs-17fbc9a3c96ebc388be735ea61a1e6298af9e17f.zip |
Merge pull request #200337 from Artturin/crossfixes4
gobject-introspection: use wrapper.nix for the native package too
8 files changed, 123 insertions, 59 deletions
diff --git a/pkgs/applications/window-managers/i3/i3ipc-glib.nix b/pkgs/applications/window-managers/i3/i3ipc-glib.nix index 572b12d986c..a6a77600ee5 100644 --- a/pkgs/applications/window-managers/i3/i3ipc-glib.nix +++ b/pkgs/applications/window-managers/i3/i3ipc-glib.nix @@ -4,7 +4,6 @@ }: stdenv.mkDerivation rec { - pname = "i3ipc-glib"; version = "1.0.1"; @@ -15,10 +14,10 @@ stdenv.mkDerivation rec { sha256 = "01fzvrbnzcwx0vxw29igfpza9zwzp2s7msmzb92v01z0rz0y5m0p"; }; - nativeBuildInputs = [ autoreconfHook which pkg-config ]; - - buildInputs = [ libxcb json-glib gtk-doc xorgproto gobject-introspection ]; + strictDeps = true; + nativeBuildInputs = [ autoreconfHook which pkg-config gtk-doc gobject-introspection ]; + buildInputs = [ libxcb json-glib xorgproto ]; preAutoreconf = '' gtkdocize diff --git a/pkgs/development/libraries/gobject-introspection/default.nix b/pkgs/development/libraries/gobject-introspection/default.nix index bb306fb3a85..ec109cbee8d 100644 --- a/pkgs/development/libraries/gobject-introspection/default.nix +++ b/pkgs/development/libraries/gobject-introspection/default.nix @@ -138,14 +138,6 @@ stdenv.mkDerivation (finalAttrs: { rm $out/lib/libregress-1.0${stdenv.targetPlatform.extensions.sharedLibrary} ''; - # add self to buildInputs to avoid needing to add gobject-introspection to buildInputs in addition to nativeBuildInputs - # builds use target-pkg-config to look for gobject-introspection instead of just looking for binaries in $PATH - # wrapper uses depsTargetTargetPropagated so ignore it - preFixup = lib.optionalString (!lib.hasSuffix "-wrapped" finalAttrs.pname) '' - mkdir -p $dev/nix-support - echo "$out" > $dev/nix-support/propagated-target-target-deps - ''; - setupHook = ./setup-hook.sh; passthru = { diff --git a/pkgs/development/libraries/gobject-introspection/wrapper.nix b/pkgs/development/libraries/gobject-introspection/wrapper.nix index f887b7d18c7..518dda781a6 100644 --- a/pkgs/development/libraries/gobject-introspection/wrapper.nix +++ b/pkgs/development/libraries/gobject-introspection/wrapper.nix @@ -9,50 +9,96 @@ # to build, run # `nix build ".#pkgsCross.aarch64-multiplatform.buildPackages.gobject-introspection"` +# a comment for both depsTargetTargetPropagated's +# add self to buildInputs to avoid needing to add gobject-introspection to buildInputs in addition to nativeBuildInputs +# builds use target-pkg-config to look for gobject-introspection instead of just looking for binaries in $PATH + let - # ensure that `.override` works when gobject-introspection == gobject-introspection-wrapped + # ensure that `.override` works 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" ]; + + overridenUnwrappedGir = gobject-introspection-unwrapped.override args; + # if we have targetPackages.gobject-introspection then propagate that + overridenTargetUnwrappedGir = + if targetPackages ? gobject-introspection-unwrapped + then targetPackages.gobject-introspection-unwrapped.override argsForTarget + else overridenUnwrappedGir; in -(gobject-introspection-unwrapped.override args).overrideAttrs (previousAttrs: { - pname = "gobject-introspection-wrapped"; - depsTargetTargetPropagated = [ gobject-introspection-unwrapped ]; - postFixup = (previousAttrs.postFixup or "") + '' - mv $dev/bin/g-ir-compiler $dev/bin/.g-ir-compiler-wrapped - mv $dev/bin/g-ir-scanner $dev/bin/.g-ir-scanner-wrapped - - ( - export bash="${buildPackages.bash}" - export emulator=${lib.escapeShellArg (stdenv.targetPlatform.emulator buildPackages)} - export emulatorwrapper="$dev/bin/g-ir-scanner-qemuwrapper" - export buildlddtree="${buildPackages.pax-utils}/bin/lddtree" - - 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-scanner.sh}" "$dev/bin/g-ir-scanner" - substituteAll "${./wrappers/g-ir-scanner-lddwrapper.sh}" "$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 - # variable with pkg-config they'll get the host version which can't be run - # override the variable to use the absolute path to g_ir_X in PATH which can be run - + '' - cat >> $dev/nix-support/setup-hook <<-'EOF' - override-pkg-config-gir-variables() { - PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_SCANNER="$(type -p g-ir-scanner)" - PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_COMPILER="$(type -p g-ir-compiler)" - PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_GENERATE="$(type -p g-ir-generate)" - export PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_SCANNER - export PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_COMPILER - export PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_GENERATE - } - - preConfigureHooks+=(override-pkg-config-gir-variables) - EOF - ''; -}) +# wrap both pkgsCrossX.buildPackages.gobject-introspection and {pkgs,pkgsSomethingExecutableOnBuildSystem).buildPackages.gobject-introspection +if (!stdenv.hostPlatform.canExecute stdenv.targetPlatform) && stdenv.targetPlatform.emulatorAvailable buildPackages +then + stdenv.mkDerivation + (builtins.removeAttrs overridenUnwrappedGir.drvAttrs [ "name" ] # so we can get a fresh name generated from the pname + // { + pname = "gobject-introspection-wrapped"; + passthru = overridenUnwrappedGir.passthru // { + unwrapped = overridenUnwrappedGir; + }; + phases = [ "fixupPhase" ]; # don't remove, it is valid to set phases here. + dontStrip = true; + depsTargetTargetPropagated = [ overridenTargetUnwrappedGir ]; + postFixup = '' + ${lib.concatMapStrings (output: '' + mkdir -p ${"$" + "${output}"} + ${lib.getExe buildPackages.xorg.lndir} ${gobject-introspection-unwrapped.${output}} ${"$" + "${output}"} + '') gobject-introspection-unwrapped.outputs} + + cp $dev/bin/g-ir-compiler $dev/bin/.g-ir-compiler-wrapped + cp $dev/bin/g-ir-scanner $dev/bin/.g-ir-scanner-wrapped + + ( + rm "$dev/bin/g-ir-compiler" + rm "$dev/bin/g-ir-scanner" + export bash="${buildPackages.bash}" + export emulator=${lib.escapeShellArg (stdenv.targetPlatform.emulator buildPackages)} + export emulatorwrapper="$dev/bin/g-ir-scanner-qemuwrapper" + export buildlddtree="${buildPackages.pax-utils}/bin/lddtree" + + export targetgir="${lib.getDev overridenTargetUnwrappedGir}" + + 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" + substituteAll "${./wrappers/g-ir-scanner-qemuwrapper.sh}" "$dev/bin/g-ir-scanner-qemuwrapper" + chmod +x $dev/bin/g-ir-compiler + chmod +x $dev/bin/g-ir-scanner* + ) + '' + # when cross-compiling and using the wrapper then when a package looks up the g_ir_X + # variable with pkg-config they'll get the host version which can't be run + # override the variable to use the absolute path to g_ir_X in PATH which can be run + + '' + cat >> $dev/nix-support/setup-hook <<-'EOF' + override-pkg-config-gir-variables() { + PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_SCANNER="$(type -p g-ir-scanner)" + PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_COMPILER="$(type -p g-ir-compiler)" + PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_GENERATE="$(type -p g-ir-generate)" + export PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_SCANNER + export PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_COMPILER + export PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_G_IR_GENERATE + } + + preConfigureHooks+=(override-pkg-config-gir-variables) + EOF + ''; + }) +else + stdenv.mkDerivation (builtins.removeAttrs overridenUnwrappedGir.drvAttrs [ "name" ] # so we can get a fresh name generated from the pname + // { + pname = "gobject-introspection-wrapped"; + passthru = overridenUnwrappedGir.passthru // { + unwrapped = overridenUnwrappedGir; + }; + phases = [ "fixupPhase" ]; # don't remove, it is valid to set phases here. + dontStrip = true; + depsTargetTargetPropagated = [ overridenTargetUnwrappedGir ]; + postFixup = '' + ${lib.concatMapStrings (output: '' + mkdir -p ${"$" + "${output}"} + ${lib.getExe buildPackages.xorg.lndir} ${gobject-introspection-unwrapped.${output}} ${"$" + "${output}"} + '') gobject-introspection-unwrapped.outputs} + ''; + }) diff --git a/pkgs/development/libraries/gtksourceview/4.x.nix b/pkgs/development/libraries/gtksourceview/4.x.nix index 315547ad386..f3414c39270 100644 --- a/pkgs/development/libraries/gtksourceview/4.x.nix +++ b/pkgs/development/libraries/gtksourceview/4.x.nix @@ -70,6 +70,13 @@ stdenv.mkDerivation rec { dbus ]; + postPatch = '' + # https://gitlab.gnome.org/GNOME/gtksourceview/-/merge_requests/295 + # build: drop unnecessary vapigen check + substituteInPlace meson.build \ + --replace "if generate_vapi" "if false" + ''; + # Broken by PCRE 2 bump in GLib. # https://gitlab.gnome.org/GNOME/gtksourceview/-/issues/283 doCheck = false; diff --git a/pkgs/development/libraries/gtksourceview/5.x.nix b/pkgs/development/libraries/gtksourceview/5.x.nix index 25bd8127a54..d3b1cc42a12 100644 --- a/pkgs/development/libraries/gtksourceview/5.x.nix +++ b/pkgs/development/libraries/gtksourceview/5.x.nix @@ -74,6 +74,13 @@ stdenv.mkDerivation rec { "-Dgtk_doc=true" ]; + postPatch = '' + # https://gitlab.gnome.org/GNOME/gtksourceview/-/merge_requests/295 + # build: drop unnecessary vapigen check + substituteInPlace meson.build \ + --replace "if generate_vapi" "if false" + ''; + doCheck = stdenv.isLinux; checkPhase = '' diff --git a/pkgs/development/libraries/keybinder3/default.nix b/pkgs/development/libraries/keybinder3/default.nix index 94f10426c71..cee48d5e9ef 100644 --- a/pkgs/development/libraries/keybinder3/default.nix +++ b/pkgs/development/libraries/keybinder3/default.nix @@ -13,14 +13,25 @@ stdenv.mkDerivation rec { sha256 = "196ibn86j54fywfwwgyh89i9wygm4vh7ls19fn20vrnm6ijlzh9r"; }; - nativeBuildInputs = [ autoconf automake libtool pkg-config ]; + strictDeps = true; + nativeBuildInputs = [ + autoconf + automake + libtool + pkg-config + gnome.gnome-common + gtk-doc + gobject-introspection + ]; buildInputs = [ - gnome.gnome-common gtk-doc gtk3 - libX11 libXext libXrender gobject-introspection + gtk3 libX11 libXext libXrender ]; preConfigure = '' - ./autogen.sh --prefix="$out" + # NOCONFIGURE fixes 'If you meant to cross compile, use `--host'.' + NOCONFIGURE=1 ./autogen.sh --prefix="$out" + substituteInPlace ./configure \ + --replace "dummy pkg-config" 'dummy ''${ac_tool_prefix}pkg-config' ''; meta = with lib; { diff --git a/pkgs/development/libraries/libwnck/default.nix b/pkgs/development/libraries/libwnck/default.nix index d6e64759172..2f535930ed0 100644 --- a/pkgs/development/libraries/libwnck/default.nix +++ b/pkgs/development/libraries/libwnck/default.nix @@ -3,6 +3,7 @@ , fetchurl , fetchpatch , meson +, mesonEmulatorHook , ninja , pkg-config , gtk-doc @@ -50,6 +51,8 @@ stdenv.mkDerivation rec { gtk-doc docbook_xsl docbook_xml_dtd_412 + ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + mesonEmulatorHook ]; buildInputs = [ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 81a1f5a0c36..b0193753776 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19199,8 +19199,7 @@ with pkgs; gns3-gui = gns3Packages.guiStable; gns3-server = gns3Packages.serverStable; - gobject-introspection = if (!stdenv.hostPlatform.canExecute stdenv.targetPlatform) && stdenv.targetPlatform.emulatorAvailable buildPackages - then callPackage ../development/libraries/gobject-introspection/wrapper.nix { } else gobject-introspection-unwrapped; + gobject-introspection = callPackage ../development/libraries/gobject-introspection/wrapper.nix { }; gobject-introspection-unwrapped = callPackage ../development/libraries/gobject-introspection { nixStoreDir = config.nix.storeDir or builtins.storeDir; |