slawlor / ractor

Rust actor framework
MIT License
1.38k stars 69 forks source link

protobuf-src build requires autotools, which is not available on windows (by default) #142

Open nolmelab opened 1 year ago

nolmelab commented 1 year ago

Description of the problem encountered

I tried to build examples with ractor and ractor_cluster on windows 10 machine and encountered following error:

Compiling protobuf-src v1.1.0+21.5
error: failed to run custom build command for `protobuf-src v1.1.0+21.5`

Caused by:
  process didn't exit successfully: `D:\nolmelab\daily_rust\target\debug\build\protobuf-src-fa7f52d64a0497cb\build-script-build` (exit code: 101)
  --- stderr
  thread 'main' panicked at '
  `sh` is required to run `configure`

  build script failed, must exit now', C:\Users\keedongpark\.cargo\registry\src\index.crates.io-6f17d22bba15001f\autotools-0.2.6\src\lib.rs:781:5
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish... 

autotools requires configure & make, which are not available on windows by default.

Describe the solution you'd like I tried to remove dependency on protobuf-src in ractor repository by removing protobuf-src line in ractor_cluster/Cargo.toml and std::env::set_var("PROTOC", ... ) line in build.rs file.

Then the build complains about missing google.protobuf.Timestamp and some other files while compiling *.proto files. (I made protoc.exe available via PATH env variable)

If ractor_cluster requires some of the .proto files from protobuf and protoc only, then I think the dependency on protobuf-src can be removed.

It will make using ractor_cluster on windows really simple.

Describe alternatives you've considered I also consider that dependency on protobuf can be removed entirely using rust serialization (binary or json) in platform compatible way. Then it can make building and using ractor_cluster easier than now still supporting (possibly) other languages and platforms.

Additional context

nolmelab commented 1 year ago
fn build_protobufs() {
    // std::env::set_var("PROTOC", protobuf_src::protoc());
    std::env::set_var("PROTOC", "D:/App/protoc-24.2-win64/bin/protoc.exe");
...
}

Setting protoc.exe to the downloaded folder made the ractor crate build success on windows. I think this can be optional for windows.

slawlor commented 1 year ago

I'll try and look into it, sounds like a bug for Windows. Thanks for reporting.

slawlor commented 1 year ago

Related: https://github.com/MaterializeInc/rust-protobuf-native/issues/4

hemaolong commented 5 months ago

Any suggestion to solve/bypass the problem?

benesch commented 4 months ago

The latest version of protobuf-src now builds with CMake rather than autotools. I've not yet tested this, but it may "just work" with Windows now.