From a6db4e4af25a4b6f3809b0de5b44305443fc573b Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 12 Nov 2025 20:13:11 +0900 Subject: [PATCH] frawk: fix build Upstream squash-merged the original PR. We cannot use the resulting commit directly because it includes Cargo.toml changes. Additionally, using the fetchpatch includes/excludes inputs is not possible, as the merged commit modifies the same file at multiple locations. Consequently, I prefer vendoring a patch file over using a direct GitHub URL: https://github.com/ezrosent/frawk/commit/ad649637b9a1c8ac1fdae72bdc3ccd12f04b5800.patch?full_index=1 I also considered updating this package to the unstable version. However, The crate isn't updated, and the Cargo.lock in the GitHub repository is also not updated. --- .../fix-some-compiler-warnings-errors.patch | 55 +++++++++++++++++++ pkgs/by-name/fr/frawk/package.nix | 5 ++ 2 files changed, 60 insertions(+) create mode 100644 pkgs/by-name/fr/frawk/fix-some-compiler-warnings-errors.patch diff --git a/pkgs/by-name/fr/frawk/fix-some-compiler-warnings-errors.patch b/pkgs/by-name/fr/frawk/fix-some-compiler-warnings-errors.patch new file mode 100644 index 000000000000..417bf85f206b --- /dev/null +++ b/pkgs/by-name/fr/frawk/fix-some-compiler-warnings-errors.patch @@ -0,0 +1,55 @@ +From ad649637b9a1c8ac1fdae72bdc3ccd12f04b5800 Mon Sep 17 00:00:00 2001 +From: Gert Hulselmans +Date: Fri, 29 Aug 2025 23:49:53 +0200 +Subject: [PATCH] Fix some compiler warnings/errors. + + - error: implicit autoref creates a reference to the dereference of a raw pointer + - unsafe precondition(s) violated: slice::get_unchecked_mut requires that the index is within the slice +--- + src/interp.rs | 2 +- + src/runtime/splitter/batch.rs | 4 ++-- + src/runtime/str_impl.rs | 3 ++- + 3 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/interp.rs b/src/interp.rs +index 587afbab83c3440e0364ee33dd89afd6a1b9e1d2..7b88ce32e9eedab648cc3eae8f6f98721d2cc976 100644 +--- a/src/interp.rs ++++ b/src/interp.rs +@@ -653,7 +653,7 @@ impl<'a, LR: LineReader> Interp<'a, LR> { + cur = loop { + debug_assert!(cur < unsafe { (*instrs).len() }); + use Variable::*; +- match unsafe { (*instrs).get_unchecked(cur) } { ++ match unsafe { (&(*instrs)).get_unchecked(cur) } { + StoreConstStr(sr, s) => { + let sr = *sr; + *self.get_mut(sr) = s.clone_str() +diff --git a/src/runtime/splitter/batch.rs b/src/runtime/splitter/batch.rs +index cc8d05e44b49c6a0a0e930c527e35bd6773ba120..1d4c53dcb4ceca6bc6739ce5c226777b6f6a1e34 100644 +--- a/src/runtime/splitter/batch.rs ++++ b/src/runtime/splitter/batch.rs +@@ -1128,8 +1128,8 @@ mod generic { + let len = buf.len(); + let len_minus_64 = len.saturating_sub(V::INPUT_SIZE); + let mut ix = 0; +- let field_base_ptr: *mut u64 = field_offsets.fields.get_unchecked_mut(0); +- let newline_base_ptr: *mut u64 = newline_offsets.fields.get_unchecked_mut(0); ++ let field_base_ptr: *mut u64 = field_offsets.fields.as_mut_ptr(); ++ let newline_base_ptr: *mut u64 = newline_offsets.fields.as_mut_ptr(); + let mut field_base = 0; + let mut newline_base = 0; + +diff --git a/src/runtime/str_impl.rs b/src/runtime/str_impl.rs +index e34176f86b7d0c4ba77f2107d3ebe571f207fbbd..4f8fbca5ac56b94765efdb3e03edfb0e82370e05 100644 +--- a/src/runtime/str_impl.rs ++++ b/src/runtime/str_impl.rs +@@ -727,7 +727,8 @@ impl<'a> Str<'a> { + ); + let new_len = to - from; + if new_len <= MAX_INLINE_SIZE { +- return Str::from_rep(Inline::from_unchecked(&(*self.get_bytes())[from..to]).into()); ++ let bytes: &[u8] = &*self.get_bytes(); ++ return Str::from_rep(Inline::from_unchecked(&bytes[from..to]).into()); + } + let tag = self.rep().get_tag(); + let u32_max = u32::max_value() as usize; diff --git a/pkgs/by-name/fr/frawk/package.nix b/pkgs/by-name/fr/frawk/package.nix index f5d9a4f51a08..3c775a9fb7a0 100644 --- a/pkgs/by-name/fr/frawk/package.nix +++ b/pkgs/by-name/fr/frawk/package.nix @@ -26,6 +26,11 @@ rustPlatform.buildRustPackage rec { cargoHash = "sha256-VraFR3Mp4mPh+39hw88R0q1p5iNkcQzvhRVNPwSxzU0="; + patches = [ + # This patch comes from https://github.com/ezrosent/frawk/pull/120, which was squash-merged. + ./fix-some-compiler-warnings-errors.patch + ]; + buildInputs = [ libxml2 ncurses