aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/windows_support.mdwn
blob: 17accd62e56a71e355d2153275dc05ddd7660728 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
The git-annex Windows port is not ready for prime time. But it does exist
now! --[[Joey]] 

## status

* Doesn't daemonize. Maybe use
  <http://hackage.haskell.org/package/Win32-services>
  or perhaps easier,
  <http://hackage.haskell.org/package/Win32-services-wrapper>

* XMPP library not yet built. (See below.)

* View debug log is empty in windows -- all logs go to console.
  This messes up a few parts of UI that direct user to the debug log.
  Should try to get rid of the console, but only once ssh passwords
  (and possibly gpg) are not prompted there anymore.

* Local pairing seems to fail, after acking on Linux box, it stalls.
  (Also, of course, the Windows box is unlikely to have a ssh server,
  so only pairing with a !Windows box will work.)

* gcrypt is not ported to windows (and as a shell script, may need
  to be rewritten)

* Incremental fsck sets the sticky bit to record when a file is fscked,
  and this is not done on windows, so fsck doesn't behave incrementally
  there.

* Deleting a git repository from inside the webapp fails "RemoveDirectory
  permision denied ... file is being used by another process"

## minor problems

* rsync special remotes with a rsyncurl of a local directory are known
  buggy. (git-annex tells rsync C:foo and it thinks it means a remote host
  named C...)
* webapp lets user choose to encrypt repo, and generate gpg key,
  before checking that gcrypt is not installed
* Ssh connection caching does not work on Windows, so `git annex get`
  has to connect twice to the remote system over ssh per file, which
  is much slower than on systems supporting connection caching.
* glacier-cli is not easily available (probably)
* user feedback: "Git on windows installer provides openssh 4.6. git-annex installer
  provides openssh 6.2 . This seems to create problems regarding how
  `known_hosts` file path is setup. Setting `GIT_SSH=` to the git-annex
  openssh version fixes the problem."  
  However, I don't know how to determine what that location is after
  it's been installed. Maybe look for ssh.exe in same directory as
  git-annex.exe? --[[Joey]]

## stuff needing testing

* test that adding a repo on a removable drive works; that git is synced to
  it and files can be transferred to it and back
* Does stopping in progress transfers work in the webapp?

## trying to build XMPP

Lots of library deps:

1. gsasl-$LATEST.zip from <http://josefsson.org/gnutls4win/> (includes
   gnuidn and gnutls)
2. pkg-config from
   <http://sourceforge.net/projects/pkgconfiglite/files/latest/download?source=files>
3. libxml2 from mingw:
   <http://sourceforge.net/projects/mingw/files/MSYS/Extension/libxml2/libxml2-2.7.6-1/>
   both the -dll and the -dev
3. Extract all the above into the Haskell platform's mingw directory. Note
   that pkg-config needs to be moved out of a named subdirectory.
4. Run in DOS prompt (not cygwin!): cabal install network-protocol-xmpp

Current FAIL:

<pre>
Loading package gnutls-0.1.5 ... ghc.exe: internal error: Misaligned section: 18206e5b
    (GHC version 7.6.3 for i386_unknown_mingw32)
        Please report this as a GHC bug:
	http://www.haskell.org/ghc/reportabug
</pre>

<https://ghc.haskell.org/trac/ghc/ticket/8830>

Note: This only happens in the TH link stage. So building w/o the webapp
works with XMPP.

Options:

1. Use EvilSplicer, building first without XMPP library, but with its UI,
   and a second time without TH, but with the XMPP library. Partially done
   on the `winsplicehack` branch, but requires building patched versions
   of lots of yesod dependency chain to export modules referenced by TH
   splices, like had to be done on Android. Horrible pain. Ugly as hell.
2. Make a helper program with the XMPP support in it, that does not use TH.