Hi Arthur!

On 2025-03-22T15:48:18+0100, Arthur Cohen <arthur.co...@embecosm.com> wrote:
> Thanks for testing that commit. I think a partial revert is not
> necessary, as I'm currently
> working on our milestone to make all Rust code compile with a Rust
> 1.49 toolchain.
>
> I think pushing a partial revert upstream would just create some
> confusion when the
> correct version of the code which will fully compile with Rust 1.49
> will be on our dev repo
> in a few days or weeks. I'm hoping to upstream it on Monday or next
> Monday if I cannot
> finish it in time.
>
> I feel like holding on on this for a few days would make the process
> easier? What do you
> think?

Works for me; I'll keep this local until then.


Grüße
 Thomas


> On Sat, 22 Mar 2025 at 15:43, Thomas Schwinge <tschwi...@baylibre.com> wrote:
>>
>> Hi!
>>
>> On 2025-03-17T16:33:34+0100, arthur.co...@embecosm.com wrote:
>> > From: Kushal Pal <kushalpal...@gmail.com>
>> >
>> > libgrust/ChangeLog:
>> >
>> >       * libformat_parser/Cargo.toml:
>> >       Used crate-type instead of depricated crate_type.
>> >       * libformat_parser/generic_format_parser/src/lib.rs:
>> >       Remove dead code.
>> >       * libformat_parser/src/lib.rs: Likewise.
>> >
>> > Signed-off-by: Kushal Pal <kushalpal...@gmail.com>
>>
>> This isn't "dead code" on a Debian "bookworm" system where I'm testing
>> with:
>>
>>     $ rustc --version
>>     rustc 1.63.0
>>
>> With this commit in place, I get:
>>
>>     [...]
>>     Making all in libformat_parser
>>     make[3]: Entering directory '[...]/build-gcc/libgrust/libformat_parser'
>>     cargo \
>>       --config [...]/source-gcc/libgrust/libformat_parser/.cargo/config \
>>       build \
>>         --offline \
>>         --target-dir . \
>>         --manifest-path 
>> [...]/source-gcc/libgrust/libformat_parser/Cargo.toml \
>>         # FIXME: Not always '--release', right?
>>        Compiling generic_format_parser v0.1.0 
>> ([...]/source-gcc/libgrust/libformat_parser/generic_format_parser)
>>     error[E0658]: use of unstable library feature 'is_some_with'
>>        --> generic_format_parser/src/lib.rs:615:34
>>         |
>>     615 | ...                   .is_some_and(is_id_start)
>>         |                        ^^^^^^^^^^^
>>         |
>>         = note: see issue #93050 
>> <https://github.com/rust-lang/rust/issues/93050> for more information
>>
>>     error[E0631]: type mismatch in function arguments
>>        --> generic_format_parser/src/lib.rs:615:46
>>         |
>>     17  | fn is_id_start(c: char) -> bool {
>>         | ------------------------------- found signature of `fn(char) -> _`
>>     ...
>>     615 |                                 .is_some_and(is_id_start)
>>         |                                  ----------- ^^^^^^^^^^^ expected 
>> signature of `for<'r> fn(&'r char) -> _`
>>         |                                  |
>>         |                                  required by a bound introduced by 
>> this call
>>         |
>>     note: required by a bound in `Option::<T>::is_some_and`
>>
>>     Some errors have detailed explanations: E0631, E0658.
>>     For more information about an error, try `rustc --explain E0631`.
>>     error: could not compile `generic_format_parser` due to 2 previous errors
>>     make[3]: *** [Makefile:431: debug/liblibformat_parser.a] Error 101
>>     make[3]: Target 'all' not remade because of errors.
>>     make[3]: Leaving directory '[...]/build-gcc/libgrust/libformat_parser'
>>     [...]
>>
>> With this commit reverted, the build again succeeds, with good test
>> results.  May I, therefore, push a (partial, I suppose?) 'git revert' of
>> this commit?
>>
>>
>> Grüße
>>  Thomas
>>
>>
>> > ---
>> >  libgrust/libformat_parser/Cargo.toml             |  2 +-
>> >  .../generic_format_parser/src/lib.rs             | 16 ----------------
>> >  libgrust/libformat_parser/src/lib.rs             | 14 --------------
>> >  3 files changed, 1 insertion(+), 31 deletions(-)
>> >
>> > diff --git a/libgrust/libformat_parser/Cargo.toml 
>> > b/libgrust/libformat_parser/Cargo.toml
>> > index 3c214915d31..39c017d249b 100644
>> > --- a/libgrust/libformat_parser/Cargo.toml
>> > +++ b/libgrust/libformat_parser/Cargo.toml
>> > @@ -14,7 +14,7 @@ libc = "0.2"
>> >  generic_format_parser = { path = "generic_format_parser" }
>> >
>> >  [lib]
>> > -crate_type = ["staticlib", "rlib"]
>> > +crate-type = ["staticlib", "rlib"]
>> >
>> >  [[bin]]
>> >  name = "format_parser_test"
>> > diff --git a/libgrust/libformat_parser/generic_format_parser/src/lib.rs 
>> > b/libgrust/libformat_parser/generic_format_parser/src/lib.rs
>> > index e255bf16908..25f6b0ead17 100644
>> > --- a/libgrust/libformat_parser/generic_format_parser/src/lib.rs
>> > +++ b/libgrust/libformat_parser/generic_format_parser/src/lib.rs
>> > @@ -22,22 +22,6 @@ fn is_id_continue(c: char) -> bool {
>> >      unicode_xid::UnicodeXID::is_xid_continue(c)
>> >  }
>> >
>> > -// Workaround for Ubuntu 18.04. The default Rust package is 1.65 (and 
>> > unlikely to change I assume?), but the
>> > -// generic format parser library uses `is_some_and` which was introduced 
>> > in 1.70. So this is a reimplementation,
>> > -// directly taken from the standard library sources
>> > -trait IsSomeAnd<T> {
>> > -    fn is_some_and(self, f: impl FnOnce(T) -> bool) -> bool;
>> > -}
>> > -
>> > -impl<T> IsSomeAnd<T> for Option<T> {
>> > -    fn is_some_and(self, f: impl FnOnce(T) -> bool) -> bool {
>> > -        match self {
>> > -            None => false,
>> > -            Some(x) => f(x),
>> > -        }
>> > -    }
>> > -}
>> > -
>> >  // use rustc_lexer::unescape;
>> >  pub use Alignment::*;
>> >  pub use Count::*;
>> > diff --git a/libgrust/libformat_parser/src/lib.rs 
>> > b/libgrust/libformat_parser/src/lib.rs
>> > index 0769577740f..f4670bf9b1f 100644
>> > --- a/libgrust/libformat_parser/src/lib.rs
>> > +++ b/libgrust/libformat_parser/src/lib.rs
>> > @@ -5,16 +5,6 @@
>> >
>> >  use std::ffi::CStr;
>> >
>> > -trait StringLeakExt {
>> > -    fn leak<'a>(self) -> &'a mut str;
>> > -}
>> > -
>> > -impl StringLeakExt for String {
>> > -    fn leak<'a>(self) -> &'a mut str {
>> > -        Box::leak(self.into_boxed_str())
>> > -    }
>> > -}
>> > -
>> >  trait IntoFFI<T> {
>> >      fn into_ffi(self) -> T;
>> >  }
>> > @@ -98,10 +88,6 @@ mod ffi {
>> >      //     InlineAsm,
>> >      // }
>> >
>> > -    #[derive(Copy, Clone)]
>> > -    #[repr(C)]
>> > -    struct InnerOffset(usize);
>> > -
>> >      /// A piece is a portion of the format string which represents the 
>> > next part
>> >      /// to emit. These are emitted as a stream by the `Parser` class.
>> >      #[derive(Debug, Clone, PartialEq)]
>> > --
>> > 2.45.2
>
>
>
> -- 
>
> Arthur Cohen <arthur.co...@embecosm.com>
>
> Toolchain Engineer
>
>
> Embecosm GmbH
>
> Geschäftsführer: Jeremy Bennett
>
> Niederlassung: Nürnberg
>
> Handelsregister: HR-B 36368
>
> www.embecosm.de
>
>
> Fürther Str. 27
>
> 90429 Nürnberg
>
>
> Tel.: 091 - 128 707 040
>
> Fax: 091 - 128 707 077

Reply via email to