-
-
Notifications
You must be signed in to change notification settings - Fork 3k
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 #959
Comments
Update on this issue? I believe some users have gotten it working on Windows. Would be good to have a link to point users to. |
Ping again. I can run ipfs in a small VM but it's a little RAM hungry for any of my embedded boxes. |
cc @gatesvp |
I did a quick test just now..
Some recap of the still open points:
I'm not sure how to proceed with it. If we add it
I already told @whyrusleeping about a small problem with iptb.
All this said, I used current master to exfiltrate these logs, so it can't be that far-off. I'd like to hear from somebody with a proper shell setup, that can run the sharness tests. |
@cryptix Thanks for the update - what do you mean by a "proper shell"? |
Just a sysetm that can run our sharness tests. :) |
I think I can make it work in msys2. Perhaps a future goal should be a
cross platform test harness?
|
Just add it to |
right, that would work for the availability. What bugs mit is that godeps doesn't rewrite import paths for other OSes. (By default, I havn't check if it respects |
In the air on this one from the Windows perspective. I actually really like the idea, but windows has two commonly-used "shells":
|
I believe the ImDisk API could be used to provide a fuse-like interface to ipfs on Windows systems via a DLL, which should be accessible in golang. ImDisk Virtual Disk Driver API Here is the overview from http://www.ltr-data.se/opencode.html :
|
@alexpmorris thanks sounds promising. want to take a stab at it? |
The dokany fork is also worth a look.
|
Ah, nice! thanks for digging that up. I faintly remember a sshfs fork for windows, I think it used that API as well(?) |
Yep, sshfs is one of the dokan examples. I think dokany has an updated
version of that.
|
I messed around with this a bunch. ImDisk/DevIO turns out way too low-level for this as it's more geared towards block devices. Dokan could definitely work, but it's tricky to convert the headers for use in go. Perhaps I'm missing something simple, but I tried using cgo, swig, def2go, etc, and got nowhere. I did come across a repo doing just this, but it's still a long way off from working fully: https://github.com/raff/dokango - A Go interface to dokan I tried installing dokany but it doesn't work on older Windows systems, so I played around with this version that did work for me (from the sshfs fork a few people mentioned): |
Hey @alexpmorris, is there any way I can help you get on a later Windows version? Perhaps Win10 in a VM/VHD would do? |
I have a basic working implementation of this. However, it's in Delphi/FreePascal, not go. The trickiest part was that Dokan needs the correct file size in GetFileInformation, so I step up the path until I find it. Dokan uses that information to repeatedly call the ReadFile method with a 512 byte buffer until it has the total bytes it expects. Just a few thoughts... The file sizes are larger than the actual content. At first I thought the overhead was 11 bytes, but then other files/blocks had only 8. Perhaps there is some way I missed to figure out the exact size. It would have been also useful if a request such as this would return size:
I hope others find this useful, and it should also make it easier to build a version in go if there is sufficient demand for it. Lastly, I'm not sure this will work on newer Windows systems, but you are free to try, and it shouldn't be that difficult to get it to work there too. I'll try myself too when I get a chance. Here is the link, the executable version is under releases: |
@alexpmorris i've gotten a few requests for an API to get the exact size of a file, and as far as I know, we dont have that yet. I can write it up today and let you know when its done |
I tested dipfs on a 64-bit Windows7 system with the same version of Dokan included in the repo, and it worked perfectly! So it should work on 32-bit and 64-bit Windows at least up to Windows7 (so far). I also released a slight update. |
dipfs also works with the latest dokany release, which has been confirmed to work up to Windows 10. |
I'm going to go ahead and close this issue. Further discussion of dokany windows can and should go into a new issue (either on this repo or on the dipfs repo). Further discussion of problems with running ipfs on windows should open a new issue for each problem encountered. |
To compile on windows, you need to disable fuse by compiling with
go build -tags nofuse
.There are a number of other outstanding issues:
go-reuseport
to get windows compilation (godeps update #958)github.com/cheggaaa/pb
depends ongithub.com/olekukonko/ts
which is currently not vendoreddaemon.lock
sitting around and spits outERROR ipnsfs <autogenerated>:24: leveldb: closed
blockservice.test.exe
ordht.test.exe
hang duringgo test -tags nofuse ./...
and need to be killed manuallycmd.exe
andbash.exe
from git for windowsAnd I'm sure there is more. My tests are from a windows 7 QemuVM with a flacky VDE/SlirpDHCP network. I welcome every native windows user willing to test this with open arms.
The text was updated successfully, but these errors were encountered: