Bug 2364625 - Review Request: rust-virtual-terminal - Virtual terminal
Summary: Review Request: rust-virtual-terminal - Virtual terminal
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Nobody's working on this, feel free to take it
QA Contact: Fedora Extras Quality Assurance
URL: https://crates.io/crates/virtual-term...
Whiteboard:
Depends On: 2350507 2364626 2365816
Blocks: 2359652
TreeView+ depends on / blocked
 
Reported: 2025-05-07 05:35 UTC by solomoncyj
Modified: 2025-05-18 14:35 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:


Attachments (Terms of Use)

Comment 1 Fedora Review Service 2025-05-07 05:38:33 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/9006514
(failed)

Build log:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2364625-rust-virtual-terminal/fedora-rawhide-x86_64/09006514-rust-virtual-terminal/builder-live.log.gz

Please make sure the package builds successfully at least for Fedora Rawhide.

- If the build failed for unrelated reasons (e.g. temporary network
  unavailability), please ignore it.
- If the build failed because of missing BuildRequires, please make sure they
  are listed in the "Depends On" field


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 2 Ben Beasley 2025-05-18 13:01:31 UTC
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

Comment 3 solomoncyj 2025-05-18 14:35:38 UTC
for `rustix-openpty` i have  PR [1] But atm its blocked by ruat-alacrity_terminal which is still on 1.0 and cannot be build when bumping versions

[1] https://src.fedoraproject.org/rpms/rust-rustix-openpty/pull-request/1


Note You need to log in before you can comment on or make changes to this bug.