diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index 737bbf5db2..6b527209b6 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -32,6 +32,20 @@ if start != -1: text = text[:start] + text[end + 3:] tmp_dir.write_text(text) PY + +# nix 0.30.1 wrongly types Redox's sigaction SaFlags_t as c_ulong, but relibc +# and the libc crate both declare sa_flags/SA_* as c_int (nix 0.31 already uses +# c_int for Redox). With the `kill` feature the nix signal module is compiled, +# and the u64-vs-i32 mismatch breaks the SaFlags bitflags (E0308). Correct the +# Redox branch. cargo fetch first so the registry source exists before patching +# (it is only unpacked during the build). +cargo fetch --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" || true +for nix_src in "${HOME}/.cargo/registry/src/"*/nix-0.30.1; do + sig="$nix_src/src/sys/signal.rs" + [ -f "$sig" ] || continue + sed -i '/if #\\[cfg(target_os = "redox")\\] {/{n;s/type SaFlags_t = libc::c_ulong;/type SaFlags_t = libc::c_int;/}' "$sig" +done + # TODO: upstream changes, consider using feat_require_unix_core if relibc is ready? CARGO_PROFILE_RELEASE_LTO=thin cookbook_cargo --no-default-features --features feat_os_unix_redox,kill --bin coreutils