-
Notifications
You must be signed in to change notification settings - Fork 106
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: first attempt #224
base: master
Are you sure you want to change the base?
Conversation
By the way, I've found another attempt of making Meteorite work on Windows by @seanmwalker : seanmwalker@da6190d I think some code may be taken from that repository. |
Hi Egor, Please let me know if you find any issues with this fork of meteorite. I'm preparing to make a pull request, as I've not had anyone report any issues with it yet. But I'll be happy to help if you find anything. One quick note: Unless you put meteorite in the beginning of your windows path the command line still finds the Microsoft virus scanner software first. This has not been an issue in a cygwin bash shell, and works as as one would expect. Thanks, looking forward to any feedback for changes before the pull request. |
Great stuff! Seems very reasonable to me. You should be able to run the tests (on *nix at least -- obviously ideally they'd work on Windows too, although that may present other problems) -- I can run them here later today if you don't have a machine to try them on. |
@tmeasday Unfortunatelly, I am unable to run tests even on Debian i686. Log, I use node v0.11.8-pre, Npm 1.3.12, Meteorite from checkout. I've also cloned https://github.com/oortcloud/atmosphere/ , ran it on port 3333 and imported bson from |
Hey @yeputons - Probably some better documentation is needed. Some notes:
|
P.S. if you are still having trouble, let's organise a time to meet on IRC or elsewhere to try and get it going? |
To avoid conflict with the existing Microsoft's "malicious software removal tool" (mrt.exe), why not add a meta-command that then invokes meteorite's mrt and name it something like, "wmrt" or "meteorite". If you use a batch file to implement this, it might be... wmrt.bat Then... |
Hey all, I updated Meteorite slightly and made the documentation more helpful: https://github.com/oortcloud/meteorite/blob/master/CONTRIBUTING.md#testing I'm having running the tests right now as github appears to be flaky, but theoretically it should work. |
I now have the tests running and passing using the meteorite/master branch on a Ubuntu VM. The plan is to merge master with my fork to see if there are any issues created on Linux, and to remedy any tests that will fail on Windows. @yeputons would you (and/or any others) be interested in combining efforts to get a meteorite release candidate for Windows using one of our forks or a fresh one? |
@seanmwalker sure, I'm really interested in getting Meteorite on Windows. Here's my thoughts on it:
Wait for your thoughts about it. I think our nearest goal is to choose a single approach on all these points. |
Hey guys, I'll go ahead and give you write access to the repo so you can make a windows branch and push to that if it makes sense for point 6. |
@tmeasday Thanks. Everyone, I found one very fun issue with my approach and Another problem: |
@tmeasday I've found an essential problem in unit test for Resolver ( That's the reason of failure for the first five unit tests of Resolver. Another problem similar to the one I've reported today ( https://github.com/sdarnell/meteor/issues/27 ): smart lock unit test ( These six are the only tests that fail on my system before |
@tmeasday One more problem: you call This particular issue is not Windows-related, I will open a separate ticket and, after some time, pull request (I already know how to fix the problem in one particular case). |
Windows-specific issue on stdout/stderr flushing after exit: nodejs/node-v0.x-archive#3584 . It's already two years old. UPD: workaround package |
@yeputons, thanks for the list of points, I’m on board with you. Here’s a quick response on them, I think we’re largely ready to go. I’m going to start a little tonight, and should be on it each evening this week. Let me know how you’d like to carve up the work, I was going to try to get the directory creation (2, 3 and 4) and paths addressed first. Did you want to continue with 1?
|
Just a note, I've created the branch called 'windows-updates' in meteorite. |
Just a couple of notes from my experiences with Meteor on Windows. Unlink is also a pain on Windows. On unix-based platforms you can always unlink files and they disappear from the filesystem even if the file is opened by someone. On Windows you cannot delete files that are in use. Grrr! |
✅ Got rid of the unlink errors (EPERM) per installing Would like to hear some feedback. |
Windows meteor does something similar to graceful-fs, but instead of busy looping until it completes it uses a fibers based sleep() to allow AV to get out of the way. |
So far two more things to fix: 5. |
@yeputons - re 6. - we need to do this to make sure that the proxied meteor server and the mongo server are killed when we kill the meteor process. If someone has a better way of doing this, I'd be very glad to get rid of this hack. |
One more thing: 7.Meteor warehouse is
So it's different on Windows. It's used in UPD: Looks like it can be deleted - created an issue for that: #243 |
…s now it's changed iff there was no such env variable before
…ich waits till stdout/stderr buffers are flushed on Windows before exit
Please note that I've added the |
By now We have only two things left in TODO: use |
One thing I noticed this weekend was that if there is a space in a directory name (in my case both my test application, meteorite and atmosphere are in a directory called 'Source Code' ), the process throws an exception. I haven't had a chance to dig into it, but thought we may want to add that to the list. |
@seanmwalker I had this issue too. Not sure if it's fixed now, but I've added some quotes to exec's first argument. Unfortunatelly, I haven't tested it yet. |
@tmeasday Would you mind describing the exact purpose of these lines? I don't get it. For example, what if |
….js was correspondingly modified
@yeputons - I don't remember very well but I think the reason for this was to make sure that Meteor doesn't have to re download itself for every test (as we destroy the home directory each time). If Probably the line should be:
|
One more thing in TODO: I've noticed that meteorite uses unix newlines in some files that are changed and it makes my git client very sad. |
|
@tmeasday @seanmwalker What do you guys think about the following:
? |
I've been pretty happy with how things are working for my 3 machines, 2 windows and 1 linux. I do have the same git setup on both windows machines, so I should try changing that to see if there are any issues (different options for command line access to utilities, line endings for files etc). I will recheck things using the latest change for spawn command though.
|
|
@yeputons is the issue with spaces under linux a problem that was there before or was it introduced by using the alternate spawn-cmd library? |
@tmeasday it was even worse before - it failed at 'before all' hook. But if I add extra quotes to |
Oh, sure. But in practice did it work to run custom Meteor out of a directory with spaces? (I guess I can test this easily enough...) |
@tmeasday not sure how to test it. Doesn't |
@tmeasday Well, Meteor cannot be easily runned from checkout on Windows - it wants to use dev-bundle. I think that the best option is explicitly disable pinning Meteor on Windows (but add a special key like |
Ok, sounds reasonable |
@yeputons - for the record running I have seen issues before where people use spaces in e.g. their home directory. So ideally we wouldn't regress here. But it's not the greatest priority I guess. I do say it's deprecated, but at the same time I do it in one of my own projects! I think maybe deprecated is the wrong word. I really just didn't want people doing it when it wasn't necessary as a lot of Meteor issues were getting opened against Meteorite... |
@tmeasday would you mind giving an example smart.json or example project (latter is better) so I can test it? |
@tmeasday I took |
@tmeasday It looks like Meteor itself doesn't know how to install from folders with spaces. UPD: however, if I manually download last version of Meteor and run it from checkout (all paths have spaces), everything works. |
@tmeasday Yes, it's old version of possibilities/meteor that is unable to start if |
@yeputons - I tried (update-meteor-version) but the tests kept failing / timing out. I think because newer versions of Meteor take bloody ages to start on a new project (downloading npm packages, initialising mongo etc). This means using such a Meteor version in our tests is going to massively blow out the time it takes to run the tests or we are going to figure out some way around the problem. I'm not really sure what the best thing to do is. I'm not too stressed about the tests not passing in a directory with spaces, as long as Meteorite itself still works ok. It's a strange use case at the best of times. So I'd probably vote to just leave it. |
So 9 months later this is still dead in its tracks? |
@dotnetwise Looks so :( However, I've been using this branch of Meteorite on Windows for a several months and didn't notice any annoying problems (there can be some hidden, of course). It's very easy to install: just clone repo, switch to this branch and call Btw, Meteor 0.9 came out, and Meteorite will be no longer be used after some time as there is built-in package manager now. |
Hello everybody out there
usingtrying to use Meteorite on WindowsI've tried to start Meteorite on Windows and, not surprisingly, it didn't work at all. My computer's background: npm, msys, meteor and git are installed (everything is in the PATH). I use half-official meteor for Windows, the one from 'bootstrap script', not MSI.
I've investigated the problem a little and I found three things that prevent
mrt install
/mrt update
from running correctly on my system:git clone
do not create several nested folders, as it do on Linux. Well-known, see Git source dependencies don't work on Windows sbt/sbt#895 .meteor
on Windows is not an executable, it's a script calledmeteor.bat
- big difference, as only executables can be ran directly, in contrast with linux. So, usualspawn
fails to findmeteor.exe
. Well-known too - child_process.spawn ignores PATHEXT on Windows nodejs/node-v0.x-archive#2318ENOPERM
.I've fixed all of them locally and reported number three to
wrench-js
: ryanmcgrath/wrench-js#70 .This branch with fixed
wrench-js
(as I've suggested in the last issue) works OK on Windows. At least, I can performmrt install
,mrt update
andmrt create
.It would be great to get some feedback from another Windows users and to get thoughts of Meteorite authors on this issue.