Cc: Maintainer Seems like editors/helix has a bug when building with lang/rust > 1.70. See
https://github.com/rust-lang/rust/issues/112171#issuecomment-1575573079 https://github.com/helix-editor/helix/pull/7227 for details. This backports the upstream patch, which fixes the issue for me (amd64). ok?
Index: Makefile =================================================================== RCS file: /cvs/ports/editors/helix/Makefile,v retrieving revision 1.4 diff -u -p -r1.4 Makefile --- Makefile 19 May 2023 16:24:08 -0000 1.4 +++ Makefile 15 Sep 2023 18:52:16 -0000 @@ -2,6 +2,7 @@ COMMENT = modal text editor VER = 23.05 DISTNAME = helix-${VER} +REVISION = 0 CATEGORIES = editors Index: patches/patch-helix-vcs_src_diff_line_cache_rs =================================================================== RCS file: patches/patch-helix-vcs_src_diff_line_cache_rs diff -N patches/patch-helix-vcs_src_diff_line_cache_rs --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-helix-vcs_src_diff_line_cache_rs 15 Sep 2023 18:52:16 -0000 @@ -0,0 +1,60 @@ +Backport upstream compatibility fix for rust >= 1.71 +https://github.com/helix-editor/helix/pull/7227/commits/269f637847140ddb9537efde4968bd92c91c9e1e +Index: helix-vcs/src/diff/line_cache.rs +--- helix-vcs/src/diff/line_cache.rs.orig ++++ helix-vcs/src/diff/line_cache.rs +@@ -20,8 +20,8 @@ use super::{MAX_DIFF_BYTES, MAX_DIFF_LINES}; + /// A cache that stores the `lines` of a rope as a vector. + /// It allows safely reusing the allocation of the vec when updating the rope + pub(crate) struct InternedRopeLines { +- diff_base: Rope, +- doc: Rope, ++ diff_base: Box<Rope>, ++ doc: Box<Rope>, + num_tokens_diff_base: u32, + interned: InternedInput<RopeSlice<'static>>, + } +@@ -34,8 +34,8 @@ impl InternedRopeLines { + after: Vec::with_capacity(doc.len_lines()), + interner: Interner::new(diff_base.len_lines() + doc.len_lines()), + }, +- diff_base, +- doc, ++ diff_base: Box::new(diff_base), ++ doc: Box::new(doc), + // will be populated by update_diff_base_impl + num_tokens_diff_base: 0, + }; +@@ -44,19 +44,19 @@ impl InternedRopeLines { + } + + pub fn doc(&self) -> Rope { +- self.doc.clone() ++ Rope::clone(&*self.doc) + } + + pub fn diff_base(&self) -> Rope { +- self.diff_base.clone() ++ Rope::clone(&*self.diff_base) + } + + /// Updates the `diff_base` and optionally the document if `doc` is not None + pub fn update_diff_base(&mut self, diff_base: Rope, doc: Option<Rope>) { + self.interned.clear(); +- self.diff_base = diff_base; ++ self.diff_base = Box::new(diff_base); + if let Some(doc) = doc { +- self.doc = doc ++ self.doc = Box::new(doc) + } + if !self.is_too_large() { + self.update_diff_base_impl(); +@@ -74,7 +74,7 @@ impl InternedRopeLines { + .interner + .erase_tokens_after(self.num_tokens_diff_base.into()); + +- self.doc = doc; ++ self.doc = Box::new(doc); + if self.is_too_large() { + self.interned.after.clear(); + } else {