scryer-prolog: problem compiling on windows

Hello, I tried to compile scryer on windows 10 and I have a compilation error :

$ cargo build
   Compiling scryer-prolog v0.8.120 (C:\DEV\Covid-19\dev\prolog\scryer-prolog)
error[E0432]: unresolved import `nix::sys`
  --> src\main.rs:16:10
   |
16 | use nix::sys::signal;
   |          ^^^ could not find `sys` in `nix`

warning: unnecessary parentheses around block return value
   --> src\prolog\heap_print.rs:457:13
    |
457 |             (iter.next() == Some(']') && iter.next().is_none())
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
    |
    = note: `#[warn(unused_parens)]` on by default

warning: unnecessary parentheses around block return value
   --> src\prolog\heap_print.rs:459:13
    |
459 |             (iter.next() == Some('}') && iter.next().is_none())
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: could not compile `scryer-prolog`.

To learn more, run the command again with --verbose.

my OS windows 10 my rust version with mingw gcc backend

$ rustc --version
rustc 1.43.0 (4fb7144ed 2020-04-20)

cydu@pc-12571 MINGW64 /C/DEV/Covid-19/dev/prolog/scryer-prolog
$ gcc --version
gcc.exe (Rev2, Built by MSYS2 project) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

About this issue

  • Original URL
  • State: open
  • Created 4 years ago
  • Comments: 26 (11 by maintainers)

Most upvoted comments

I think cross-compiling would be great, and it would also be nice to provide executables directly!

However, I think it would be best to host any executables on a different site, separate from the source repository: This is because if (for example) Google falsely detects an executable on a site as a security risk, it may block access to the site or make Chrome display a security warning for it. I remember that this happened to another project once, and they had to contact Google and urge them to remove the warning. Therefore, I think executables are best host separately, so that the source repository always stays reliably accessible.

Does merged #1907 resolve this issue?

If we want to have binaries available to download, maybe itโ€™s time to have a website!

As for Windows, it just keeps compiling on MSYS2, which gives native Windows binaries. I can try to cross-compile from Linux, which will be a nice addition for the CI

compilation works now. appears that I used the wrong perl version.

$ pacman -R mingw-w64-x86_64-perl
$ pacman -S perl

did the trick ๐Ÿ˜‰

@cduret , could you run this main.rs:

extern crate crossterm;
extern crate divrem;
#[macro_use]
extern crate downcast;
extern crate git_version;
extern crate indexmap;
#[macro_use]
extern crate lazy_static;
extern crate libc;
#[macro_use]
extern crate prolog_parser;
#[macro_use]
extern crate ref_thread_local;

mod prolog;

use crate::prolog::machine::*;
use crate::prolog::machine::streams::*;
use crate::prolog::read::*;

use std::sync::atomic::Ordering;

fn main() {
    let mut wam = Machine::new(readline::input_stream(), Stream::stdout());
    wam.run_top_level();
}

Comment/delete nix in Cargo.toml if necessary.