atuinsh / atuin

✨ Magical shell history

Home Page:https://atuin.sh

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Bug]: atuin does not compile on windows since daemon was added

chhe opened this issue · comments

commented

What did you expect to happen?

When compiling atuin on Windows using cargo build --no-default-features --features=client,sync,clipboard,check-update,server the proccess completes and I get a fresh and shiny atuin.exe.

What happened?

When compiling atuin on Windows using cargo build --no-default-features --features=client,sync,clipboard,check-update,server the build fails with errors:

$ cargo build --no-default-features --features=client,sync,clipboard,check-update,server
   Compiling atuin-client v18.2.0 (D:\workspaces\atuin\crates\atuin-client)
   Compiling atuin v18.2.0 (D:\workspaces\atuin\crates\atuin)
   Compiling atuin-history v0.1.0 (D:\workspaces\atuin\crates\atuin-history)
   Compiling atuin-dotfiles v0.2.0 (D:\workspaces\atuin\crates\atuin-dotfiles)
   Compiling atuin-daemon v0.1.0 (D:\workspaces\atuin\crates\atuin-daemon)
error[E0432]: unresolved import `tokio::net::UnixStream`
  --> crates\atuin-daemon\src\client.rs:2:5
   |
2  | use tokio::net::UnixStream;
   |     ^^^^^^^^^^^^^^^^^^^^^^ no `UnixStream` in `net`
   |
note: found an item that was configured out
  --> C:/Develop/msys64/home/Christian/.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.36.0\src\net\mod.rs:51:27
   |
51 |     pub use unix::stream::UnixStream;
   |                           ^^^^^^^^^^

error[E0432]: unresolved import `tokio::net::UnixListener`
  --> crates\atuin-daemon\src\server.rs:16:5
   |
16 | use tokio::net::UnixListener;
   |     ^^^^^^^^^^^^------------
   |     |           |
   |     |           help: a similar name exists in the module: `TcpListener`
   |     no `UnixListener` in `net`
   |
note: found an item that was configured out
  --> C:/Develop/msys64/home/Christian/.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.36.0\src\net\mod.rs:50:29
   |
50 |     pub use unix::listener::UnixListener;
   |                             ^^^^^^^^^^^^

error[E0432]: unresolved import `tokio_stream::wrappers::UnixListenerStream`
  --> crates\atuin-daemon\src\server.rs:17:5
   |
17 | use tokio_stream::wrappers::UnixListenerStream;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^------------------
   |     |                       |
   |     |                       help: a similar name exists in the module: `TcpListenerStream`
   |     no `UnixListenerStream` in `wrappers`
   |
note: found an item that was configured out
  --> C:/Develop/msys64/home/Christian/.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-stream-0.1.14\src\wrappers.rs:48:28
   |
48 |     pub use unix_listener::UnixListenerStream;
   |                            ^^^^^^^^^^^^^^^^^^

error[E0433]: failed to resolve: could not find `unix` in `signal`
   --> crates\atuin-daemon\src\server.rs:138:35
    |
138 |     let mut term = tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate())
    |                                   ^^^^ could not find `unix` in `signal`
    |
note: found an item that was configured out
   --> C:/Develop/msys64/home/Christian/.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.36.0\src\signal\mod.rs:61:9
    |
61  | pub mod unix;
    |         ^^^^

error[E0433]: failed to resolve: could not find `unix` in `signal`
   --> crates\atuin-daemon\src\server.rs:138:63
    |
138 |     let mut term = tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate())
    |                                                               ^^^^ could not find `unix` in `signal`
    |
note: found an item that was configured out
   --> C:/Develop/msys64/home/Christian/.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.36.0\src\signal\mod.rs:61:9
    |
61  | pub mod unix;
    |         ^^^^

error[E0433]: failed to resolve: could not find `unix` in `signal`
   --> crates\atuin-daemon\src\server.rs:140:34
    |
140 |     let mut int = tokio::signal::unix::signal(tokio::signal::unix::SignalKind::interrupt())
    |                                  ^^^^ could not find `unix` in `signal`
    |
note: found an item that was configured out
   --> C:/Develop/msys64/home/Christian/.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.36.0\src\signal\mod.rs:61:9
    |
61  | pub mod unix;
    |         ^^^^

error[E0433]: failed to resolve: could not find `unix` in `signal`
   --> crates\atuin-daemon\src\server.rs:140:62
    |
140 |     let mut int = tokio::signal::unix::signal(tokio::signal::unix::SignalKind::interrupt())
    |                                                              ^^^^ could not find `unix` in `signal`
    |
note: found an item that was configured out
   --> C:/Develop/msys64/home/Christian/.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.36.0\src\signal\mod.rs:61:9
    |
61  | pub mod unix;
    |         ^^^^

Some errors have detailed explanations: E0432, E0433.
For more information about an error, try `rustc --explain E0432`.
error: could not compile `atuin-daemon` (lib) due to 7 previous errors

Tested on x86_64-pc-windows-gnu and x86_64-pc-windows-msvc.

Atuin doctor output

atuin:
  version: 18.2.0
  sync:
    cloud: false
    records: true
    auto_sync: true
    last_sync: 2024-05-08 17:54:15.2530676 +00:00:00
shell:
  name: zsh.exe
  default: unknown
  plugins:
  - atuin
system:
  os: Windows
  arch: x86
  version: 11 (22621)
  disks:
  - name: Zeh
    filesystem: NTFS

Code of Conduct

  • I agree to follow this project's Code of Conduct
commented

It happens because the crate atuin-daemon gets built regardless of the feature daemon.

I tried making atuin-daemon optional and dependent on the feature daemon in atuin's Cargo.toml like so:

...
[features]
....
daemon = ["atuin-daemon", "atuin-client/daemon"]
...

[dependencies]
...
atuin-daemon = { path = "../atuin-daemon", version = "0.1.0", optional = true }
...

However atuin-daemon still gets built (without the feature daemon enabled) and the errors are the same. Maybe my understanding of how optional and features that enable dependecies work is wrong.

Try running cargo build --no-default-features --features client sync server clipboard check-update