cross: clean up the meson x cargo flag patching
This commit is contained in:
parent
f20a0ac409
commit
5a92b07f5d
|
@ -75,8 +75,20 @@ let
|
||||||
pkg
|
pkg
|
||||||
);
|
);
|
||||||
|
|
||||||
|
# build a GI_TYPELIB_PATH out of some packages, useful for build-time tools which otherwise
|
||||||
|
# try to load gobject-introspection files for the wrong platform (e.g. `blueprint` compiler).
|
||||||
typelibPath = pkgs: lib.concatStringsSep ":" (builtins.map (p: "${lib.getLib p}/lib/girepository-1.0") pkgs);
|
typelibPath = pkgs: lib.concatStringsSep ":" (builtins.map (p: "${lib.getLib p}/lib/girepository-1.0") pkgs);
|
||||||
|
|
||||||
|
# `cargo` which adds the correct env vars and `--target` flag when invoked from meson build scripts
|
||||||
|
crossCargo = let
|
||||||
|
inherit (final.pkgsBuildHost) cargo;
|
||||||
|
inherit (final.rust.envVars) setEnv rustHostPlatformSpec;
|
||||||
|
in (final.pkgsBuildBuild.writeShellScriptBin "cargo" ''
|
||||||
|
exec ${setEnv} "${lib.getExe cargo}" "$@" --target "${rustHostPlatformSpec}"
|
||||||
|
'').overrideAttrs {
|
||||||
|
inherit (cargo) meta;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
emulated = mkEmulated final prev;
|
emulated = mkEmulated final prev;
|
||||||
|
|
||||||
|
@ -474,24 +486,14 @@ in with final; {
|
||||||
# ];
|
# ];
|
||||||
# });
|
# });
|
||||||
|
|
||||||
delfin = prev.delfin.overrideAttrs (upstream:
|
delfin = prev.delfin.overrideAttrs (upstream: {
|
||||||
let
|
|
||||||
cargoEnvWrapper = buildPackages.writeShellScript "cargo-env-wrapper" ''
|
|
||||||
CARGO_BIN="$1"
|
|
||||||
shift
|
|
||||||
CARGO_OP="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
${rust.envVars.setEnv} "$CARGO_BIN" "$CARGO_OP" --target "${rust.envVars.rustHostPlatformSpec}" "$@"
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
nativeBuildInputs = upstream.nativeBuildInputs ++ [
|
nativeBuildInputs = upstream.nativeBuildInputs ++ [
|
||||||
# fixes: loaders/meson.build:72:7: ERROR: Program 'msgfmt' not found or not executable
|
# fixes: loaders/meson.build:72:7: ERROR: Program 'msgfmt' not found or not executable
|
||||||
buildPackages.gettext
|
buildPackages.gettext
|
||||||
];
|
];
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace delfin/meson.build \
|
substituteInPlace delfin/meson.build \
|
||||||
--replace "cargo, 'build'," "'${cargoEnvWrapper}', cargo, 'build'," \
|
--replace "cargo, 'build'," "'${lib.getExe crossCargo}', 'build'," \
|
||||||
--replace "'delfin' / rust_target" "'delfin' / '${rust.envVars.rustHostPlatformSpec}' / rust_target"
|
--replace "'delfin' / rust_target" "'delfin' / '${rust.envVars.rustHostPlatformSpec}' / rust_target"
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
@ -745,24 +747,14 @@ in with final; {
|
||||||
# });
|
# });
|
||||||
|
|
||||||
# 2024/02/27: upstreaming is unblocked
|
# 2024/02/27: upstreaming is unblocked
|
||||||
glycin-loaders = prev.glycin-loaders.overrideAttrs (upstream:
|
glycin-loaders = prev.glycin-loaders.overrideAttrs (upstream: {
|
||||||
let
|
|
||||||
cargoEnvWrapper = buildPackages.writeShellScript "cargo-env-wrapper" ''
|
|
||||||
CARGO_BIN="$1"
|
|
||||||
shift
|
|
||||||
CARGO_OP="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
${rust.envVars.setEnv} "$CARGO_BIN" "$CARGO_OP" --target "${rust.envVars.rustHostPlatformSpec}" "$@"
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
nativeBuildInputs = upstream.nativeBuildInputs ++ [
|
nativeBuildInputs = upstream.nativeBuildInputs ++ [
|
||||||
# fixes: loaders/meson.build:72:7: ERROR: Program 'msgfmt' not found or not executable
|
# fixes: loaders/meson.build:72:7: ERROR: Program 'msgfmt' not found or not executable
|
||||||
buildPackages.gettext
|
buildPackages.gettext
|
||||||
];
|
];
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace loaders/meson.build \
|
substituteInPlace loaders/meson.build \
|
||||||
--replace "cargo_bin, 'build'," "'${cargoEnvWrapper}', cargo_bin, 'build'," \
|
--replace "cargo_bin, 'build'," "'${lib.getExe crossCargo}', 'build'," \
|
||||||
--replace "'loaders' / rust_target" "'loaders' / '${rust.envVars.rustHostPlatformSpec}' / rust_target"
|
--replace "'loaders' / rust_target" "'loaders' / '${rust.envVars.rustHostPlatformSpec}' / rust_target"
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
@ -1210,20 +1202,10 @@ in with final; {
|
||||||
# });
|
# });
|
||||||
|
|
||||||
# 2023/12/19: upstreaming blocked on glycin-loaders
|
# 2023/12/19: upstreaming blocked on glycin-loaders
|
||||||
loupe = prev.loupe.overrideAttrs (upstream:
|
loupe = prev.loupe.overrideAttrs (upstream: {
|
||||||
let
|
|
||||||
cargoEnvWrapper = buildPackages.writeShellScript "cargo-env-wrapper" ''
|
|
||||||
CARGO_BIN="$1"
|
|
||||||
shift
|
|
||||||
CARGO_OP="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
${rust.envVars.setEnv} "$CARGO_BIN" "$CARGO_OP" --target "${rust.envVars.rustHostPlatformSpec}" "$@"
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
postPatch = (upstream.postPatch or "") + ''
|
postPatch = (upstream.postPatch or "") + ''
|
||||||
substituteInPlace src/meson.build \
|
substituteInPlace src/meson.build \
|
||||||
--replace "cargo, 'build'," "'${cargoEnvWrapper}', cargo, 'build'," \
|
--replace "cargo, 'build'," "'${lib.getExe crossCargo}', 'build'," \
|
||||||
--replace "'src' / rust_target" "'src' / '${rust.envVars.rustHostPlatformSpec}' / rust_target"
|
--replace "'src' / rust_target" "'src' / '${rust.envVars.rustHostPlatformSpec}' / rust_target"
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
@ -1845,21 +1827,11 @@ in with final; {
|
||||||
# inherit (emulated) stdenv;
|
# inherit (emulated) stdenv;
|
||||||
# };
|
# };
|
||||||
|
|
||||||
snapshot = prev.snapshot.overrideAttrs (upstream:
|
snapshot = prev.snapshot.overrideAttrs (upstream: {
|
||||||
let
|
|
||||||
cargoEnvWrapper = buildPackages.writeShellScript "cargo-env-wrapper" ''
|
|
||||||
CARGO_BIN="$1"
|
|
||||||
shift
|
|
||||||
CARGO_OP="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
${rust.envVars.setEnv} "$CARGO_BIN" "$CARGO_OP" --target "${rust.envVars.rustHostPlatformSpec}" "$@"
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
# fixes "error: linker `cc` not found"
|
# fixes "error: linker `cc` not found"
|
||||||
postPatch = (upstream.postPatch or "") + ''
|
postPatch = (upstream.postPatch or "") + ''
|
||||||
substituteInPlace src/meson.build \
|
substituteInPlace src/meson.build \
|
||||||
--replace "cargo, 'build'," "'${cargoEnvWrapper}', cargo, 'build'," \
|
--replace "cargo, 'build'," "'${lib.getExe crossCargo}', 'build'," \
|
||||||
--replace "'src' / rust_target" "'src' / '${rust.envVars.rustHostPlatformSpec}' / rust_target"
|
--replace "'src' / rust_target" "'src' / '${rust.envVars.rustHostPlatformSpec}' / rust_target"
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue
Block a user