Hi, It looks good to me.
Maybe use the link to the exact commit in helix (instead of the commit as proposed) https://github.com/helix-editor/helix/commit/de0ef8af15945fb7f761503c615a2d6213d2fd82 ok semarie@ (but let's Maintainer time to reply too). Thanks. -- Sebastien Marie On Fri, Sep 15, 2023 at 08:56:31PM +0200, Volker Schlecht wrote: > 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 {
