Spec URL: https://solomoncyj.fedorapeople.org/reviews/rust-virtual-terminal/rust-virtual-terminal.spec SRPM URL: https://solomoncyj.fedorapeople.org/reviews/rust-virtual-terminal/rust-virtual-terminal-0.1.4-1.fc43.src.rpm Description: Virtual terminal. Fedora Account System Username: solomoncyj
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.
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
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