New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows support #149

Open
retep998 opened this Issue Oct 19, 2017 · 4 comments

Comments

Projects
None yet
4 participants
@retep998
Copy link

retep998 commented Oct 19, 2017

There's a large number of crates out there which are Windows specific, so it is essential that crater be able to test those crates.

CLI usage on Windows

  • #267: Have Crater successfully build on windows
  • #275: Run cargo check on Appveyor
  • #280: Run cargo build on Appveyor
    • C dependencies needs to be downloaded in the Appveyor image
  • Implement and test all the functions in src/native/windows.rs
    • #332: It would be nice to isolate all platform-specific code into a native module
  • Create the Docker image used by Crater to test crates
  • Successfully execute a demo run on Windows
  • Run cargo test on Appveyor
    • The test suite needs to be working on Windows
  • Successfully execute a full run on Windows
    • This probably needs to be done on a server, full runs takes ages

Craterbot support for Windows

  • Add a way to categorize agents by platform
  • Add support for scheduling runs on multiple platforms at the same time
  • Add support for rendering multiple platforms together in the report
  • Ensure the agent works on Windows

Reference material

@aidanhs aidanhs referenced this issue Oct 20, 2017

Closed

Tracking issue: running crater locally #135

2 of 2 tasks complete
@aidanhs

This comment has been minimized.

Copy link
Member

aidanhs commented Oct 20, 2017

Some unordered thoughts:

  • there are a lot of assumptions of linux in Crater, like joining paths with format!("{}/{}"). I'm guilty of being lazy and doing this recently :( Not a big problem, 'just' a bunch of papercuts
  • isolation is essential so we need to use Docker (or similar). I have a lot of experience with Docker on Linux, but none yet on Windows (and it's not too easy for me to get access), so I have a some questions:
    • is Docker on Windows fast enough at starting containers to be able to do start a container for every operation (generate-lockfile,test) on crates?
    • what environment do Windows crates assume? I'm vaguely aware of nanoserver - is that 'full' enough? But what about libraries that create GUIs on Windows, are they supported? For Linux we install a ton of random dependencies to help out crates that may require random libraries - do we need similar on Windows, e.g. the MSVC toolchain or whatever?
    • are all the Docker features we use supported (mainly volumes off the top of my head)? Are there important differences to be aware of?
  • more generally, I develop on Windows about once every 3 months, and have a commensurate amount of experience with useful things like scripting - I know the basics of a Windows dev environment, but little more, so a committed volunteer with Windows experience may be necessary
    • relatedly, we have crater linux machines. I know a bit about Linux admin, but nothing about Windows

There's nothing insurmountable, but Linux issues are higher yield for me at the moment. I will keep this tracking issue in mind though to at least try and stop the gap from getting worse.

It's clearly important to make sure we get to Windows at some point, but I don't know how long it's going to take - any help on this front would be much appreciated!

@retep998

This comment has been minimized.

Copy link

retep998 commented Oct 20, 2017

nanoserver would not work. It is so extremely stripped down that I have my doubts over whether even libstd would work.

Windows Server 2016 has containers which use Docker. I don't know how fast they are but it is certainly something we could benchmark. There is plenty of documentation though so anyone who wants to work on this can fairly easily learn what they need to know. https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/

As long as we have VC++ installed and the environment configured using vcvars, then that should take care of almost all crates which are capable of working.

@joshtriplett

This comment has been minimized.

Copy link
Member

joshtriplett commented Jun 4, 2018

Following up on this: given how much we rely on crater to detect potential breakage, we really do need this. Would it make sense to try to seek out some help from an appropriate Windows developer? If someone popped up willing to do this work, would the crater developers have time to work with them to get this in place? If so, it might make sense to put out a call for help here.

@pietroalbini

This comment has been minimized.

Copy link
Member

pietroalbini commented Jul 12, 2018

Added a bunch of tasks that needs to be done at the top of the issue. Appveyor with cargo check is also going to be up soon (#275) so at least we know Crater compiles on Windows.

Now that Craterbot is sort of running adding proper Windows support is going to be feasible, we "just" need to get an agent running on a Windows machine. Unfortunately I have almost no experience developing on Windows, but I'm happy to review PRs if someone wants to do the work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment