[Bug 2364625] Review Request: rust-virtual-terminal - Virtual terminal

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.redhat.com/show_bug.cgi?id=2364625

Ben Beasley <code@xxxxxxxxxxxxxxxxxx> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |code@xxxxxxxxxxxxxxxxxx
         Depends On|                            |2350507



--- Comment #2 from Ben Beasley <code@xxxxxxxxxxxxxxxxxx> ---
With the dependencies rust-triggered and rust-bmart provided, this FTBFS with a
number of errors. The first one is:

error[E0433]: failed to resolve: could not find `termios` in `rustix`
   --> src/lib.rs:195:30
    | 
195 |                 .set(rustix::termios::InputModes::IUTF8, true);
    |                              ^^^^^^^ could not find `termios` in `rustix`
    |
note: found an item that was configured out
   --> /usr/share/cargo/registry/rustix-1.0.7/src/lib.rs:300:9
    | 
300 | pub mod termios;
    |         ^^^^^^^
note: the item is gated behind the `termios` feature
   --> /usr/share/cargo/registry/rustix-1.0.7/src/lib.rs:298:7
    |
298 | #[cfg(feature = "termios")]
    |       ^^^^^^^^^^^^^^^^^^^
error[E0433]: failed to resolve: could not find `termios` in `rustix`

Now, the error makes sense: the `termios` feature in `rustix` is supposed to be
needed for `rustix::termios::*`[1], and `virtual-terminal` doesn’t ask for
it[2]. However, I can’t reproduce the problem in a git checkout.

So I tried "cargo tree -e features | less -RS" in the git checkout, and I
found:

├── rustix-openpty feature "default"
│   └── rustix-openpty v0.2.0
│       ├── rustix feature "alloc" (*)
│       ├── rustix feature "fs"
│       │   └── rustix v1.0.7 (*)
│       ├── rustix feature "process"
│       │   ├── rustix v1.0.7 (*)
│       │   └── linux-raw-sys feature "prctl"
│       │       └── linux-raw-sys v0.9.4
│       ├── rustix feature "pty"
│       │   ├── rustix v1.0.7 (*)
│       │   └── rustix feature "fs" (*)
│       ├── rustix feature "stdio"
│       │   └── rustix v1.0.7 (*)
│       └── rustix feature "termios"
│           └── rustix v1.0.7 (*)

So that kind of makes sense: Rust feature unification means the feature will be
enabled if it is requested anywhere in the dependency tree, and rustix-openpty
0.2.0 requires rustix/termios for its default features. We still have
rust-rustix-openpty 0.1.1 in Fedora, and while I haven’t taken time to check,
it’s likely that this changed in 0.2.0.

In the dev-dependencies, there is an indirect dependency on rustix with the
termios feature,

├── terminal_size feature "default"
│   └── terminal_size v0.4.2
│       ├── rustix feature "default" (*)
│       └── rustix feature "termios" (*)

but per [3], “Dev-dependencies do not activate features unless building a Cargo
target that needs them (like tests or examples).”

You should send upstream a PR to directly require the "termios" feature in the
rustix dependency, since virtual-terminal uses rustix::termios APIs; you can
then patch it into Cargo.toml using "rust2rpm -p".

I tried the above, and I still encountered more errors. The first is:

error[E0308]: mismatched types
   --> src/lib.rs:185:54
    |
185 |         let pty = rustix_openpty::openpty(None, Some(&win_size))?;
    |                                                 ---- ^^^^^^^^^ expected
`&winsize`, found `&Winsize`
    |                                                 |
    |                                                 arguments to this enum
variant are incorrect
    |
    = note: expected reference `&linux_raw_sys::general::winsize`
               found reference `&Winsize`
help: the type constructed contains `&Winsize` due to the type of the argument
passed
   --> src/lib.rs:185:49
    |
185 |         let pty = rustix_openpty::openpty(None, Some(&win_size))?;
    |                                                 ^^^^^---------^
    |                                                      |
    |                                                      this argument
influences the type of `Some`
note: tuple variant defined here
   -->
/builddir/build/BUILD/rust-1.86.0-build/rustc-1.86.0-src/library/core/src/option.rs:580:5

I’m not taking time to dig into this deeply, but I am pretty sure it will turn
out to mean that patching the rustix-openpty dependency to allow 0.1 was not
correct, and this package actually does require the update to rustix-openpty
0.2, bug 2350507.

[1]
https://github.com/bytecodealliance/rustix/blob/92466d9860d95aa15b8ad0a5ea4cb88b39ccc63f/Cargo.toml#L152-L153
[2]
https://github.com/roboplc/virtual-terminal/blob/967e6c9dea5455c7f7f3b9276b88abb445009a3a/Cargo.toml#L17
[3]
https://doc.rust-lang.org/cargo/reference/features.html#feature-resolver-version-2



Referenced Bugs:

https://bugzilla.redhat.com/show_bug.cgi?id=2350507
[Bug 2350507] rust-rustix-openpty-0.2.0 is available
-- 
You are receiving this mail because:
You are always notified about changes to this product and component
You are on the CC list for the bug.
https://bugzilla.redhat.com/show_bug.cgi?id=2364625

Report this comment as SPAM: https://bugzilla.redhat.com/enter_bug.cgi?product=Bugzilla&format=report-spam&short_desc=Report%20of%20Bug%202364625%23c2

-- 
_______________________________________________
package-review mailing list -- package-review@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to package-review-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/package-review@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite Conditions]     [KDE Users]

  Powered by Linux