23 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			Markdown
		
	
	
	
	
	
Followed my plan from yesterday, and wrote a simple C library to interface
 | 
						|
to `kqueue`, and Haskell code to use that library. By now I think I
 | 
						|
understand kqueue fairly well -- there are some very tricky parts to the
 | 
						|
interface.
 | 
						|
 | 
						|
But... it still didn't work. After building all this, my code was
 | 
						|
failing the same way that the
 | 
						|
[haskell kqueue library failed](https://github.com/hesselink/kqueue/issues/1)
 | 
						|
yesterday. I filed a [bug report with a testcase]().
 | 
						|
 | 
						|
Then I thought to ask on #haskell. Got sorted out in quick order! The
 | 
						|
problem turns out to be that haskell's runtime has a periodic SIGALARM,
 | 
						|
that is interrupting my kevent call. It can be worked around with `+RTS -V0`,
 | 
						|
but I put in a fix to retry to kevent when it's interrupted.
 | 
						|
 | 
						|
And now `git-annex watch` can detect changes to directories on BSD and OSX!
 | 
						|
 | 
						|
Note: I said "detect", not "do something useful in response to". Getting
 | 
						|
from the limited kqueue events to actually staging changes in the git repo
 | 
						|
is going to be another day's work. Still, brave FreeBSD or OSX users
 | 
						|
might want to check out the `watch` branch from git and see if 
 | 
						|
`git annex watch` will at least *say* it sees changes you make to your
 | 
						|
repository.
 |