summaryrefslogtreecommitdiff
path: root/doc/todo/windows_support.mdwn
blob: 75744bdb28271858af70256bd9a7b6f52781c2ba (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
94
95
96
97
98
99
100
101
102
103
104
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)

## 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

  Trying to install the deps, using libs from cygwin. Cabal can be used
  with some hacking:

	cabal unpack libxml-sax
	cd libxml-sax-*
	cabal configure --extra-lib-dirs=C:\\cygwin\\lib --extra-include-dirs=C:\\cygwin\\usr\\include\\libxml2
	cabal build || true
	cabal copy
	cabal register
	
	cabal unpack gnutls
	cd gnutls-*
	cabal configure --extra-lib-dirs=C:\\cygwin\\lib --extra-include-dirs=C:\\cygwin\\usr\\include\\
	cabal build || true
	cabal copy
	cabal register

	# get mingw x86 gasal zip from <ftp://alpha.gnu.org/gnu/gsasl/> and unpack
	# into the Haskell platform's mingw directory.
	cabal unpack gsasl
	cd gsasl-*
	cabal configure --extra-lib-dirs=C:\\cygwin\\lib --extra-include-dirs=C:\\cygwin\\usr\\include\\
	cabal build || true
	cabal copy
	cabal register --gen-pkg-config
	grep -v /home/jas gsasl*.conf > hacked.conf
	ghc-pkg update hacked.conf --global --user --force

  Cannot get haskell gnuidn binding to link. Workaround: It's not hard to hack
  network-client-xmpp to not use gnuidn.

  dlls don't get found when building git-annex,
  at TH link time. Worked around by copying /usr/bin/cyggnutls-28.dll to
  ./gnutls.dll, and the same for several others. Note that gsasl has
  to be copied from where it was installed in ming2/bin/libgsasl-7.dll
  to gsasl.dll (the libgsasl.dll from cygwin won't work).

	Loading package gnutls-0.1.5 ... linking ... done.
	Loading package gsasl-0.3.5 ... linking ... ghc.exe: unable to load package `gsasl-0.3.5'
	ghc.exe: C:\Documents and Settings\me\Application Data\cabal\gsasl-0.3.5\ghc-7.6.3\HSgsasl-0.3.5.o: unknown symbol `_gsasl_client_start'

  Current problem:

	GHCi runtime linker: fatal error: I found a duplicate definition for symbol
	   _adler32
	whilst processing object file
	   C:\cygwin\lib\libz.a

  I think this means I can't use the cygwin libs, and need to get mingw
  builds of gnutls and libxml2 instead. 
  
  TODO: Try <http://josefsson.org/gnutls4win/>, and libxml2 from mingw,
  and pkg-config from <http://www.gtk.org/download/win32.php>.