The attached patches make darcs build on Windows for me using GHC 6.8.3. I ran 'make test' and most tests passed, except

TESTS FAILED!
        pull.sh

which is much better than I've seen before.


The threadWaitRead issue is even more subtle than I realised. In fact darcs does respond to ^C, but only after you press it twice. I think the reason is this:

     c <- hLookAhead stdin `catch` \_ -> return ' '

this catch is catching the first ^C exception and discarding it. I notice that there are several places in Darcs.Utils that catch all exceptions and discard them, which is generally considered not good style - you could discard all kinds of interesting exceptions.

Cheers,
        Simon

Tue Aug 19 14:42:52 GMT Daylight Time 2008  Simon Marlow <[EMAIL PROTECTED]>
  * Fix Windows build
  On Windows, System.Posix.Types.FileOffset is not the same as the type
  of the st_size field of the stat structure: the latter is Int64,
  whereas COff == Int32.
  
  This is almost ceratinly not the right fix, but it gets the build
  going.
  
  In general I don't recommend using System.Posix.* on Windows.  The
  right way is to either use the official platform-independent libraries
  like System.IO, System.Directory or System.Process, or to use
  System.Win32 directly.

Tue Aug 19 15:11:51 GMT Daylight Time 2008  Simon Marlow <[EMAIL PROTECTED]>
  * Fix use of threadWaitRead on Windows
  threadWaitRead doesn't work on Windows in all GHC versions < 6.10.1
  (which isn't released yet).
  
  This means that since darcs is compiled with -threaded, when compiled
  with GHC < 6.10 on Windows, darcs will not respond to ^C when waiting
  for user input.
  

New patches:

[Fix Windows build
Simon Marlow <[EMAIL PROTECTED]>**20080819134252
 On Windows, System.Posix.Types.FileOffset is not the same as the type
 of the st_size field of the stat structure: the latter is Int64,
 whereas COff == Int32.
 
 This is almost ceratinly not the right fix, but it gets the build
 going.
 
 In general I don't recommend using System.Posix.* on Windows.  The
 right way is to either use the official platform-independent libraries
 like System.IO, System.Directory or System.Process, or to use
 System.Win32 directly.
] hunk ./src/Darcs/SlurpDirectory.lhs 56
-import System.Posix.Types ( EpochTime, FileOffset )
+import System.Posix.Types ( EpochTime )
hunk ./src/Darcs/SlurpDirectory.lhs 72
+#if mingw32_HOST_OS
+import Data.Int ( Int64 )
+#else
+import System.Posix.Types ( FileOffset )
+#endif
+
hunk ./src/Darcs/SlurpDirectory.lhs 80
+#if mingw32_HOST_OS
+type FileOffset = Int64
+#endif
+
hunk ./src/win32/System/Posix/Files.hsc 1
+{-# OPTIONS_GHC -cpp #-}
hunk ./src/win32/System/Posix/Files.hsc 15
-import System.Posix.Types ( Fd(..), CMode, COff, EpochTime, FileOffset, 
FileMode )
+import System.Posix.Types ( Fd(..), CMode, EpochTime, FileMode )
hunk ./src/win32/System/Posix/Files.hsc 19
+#if mingw32_HOST_OS
+import Data.Int ( Int64 )
+#else
+import System.Posix.Types ( FileOffset )
+#endif
+
+##if mingw32_HOST_OS
+type FileOffset = Int64
+##endif
+
hunk ./src/win32/System/Posix/Files.hsc 33
-    fst_size :: COff
+    fst_size :: FileOffset

[Fix use of threadWaitRead on Windows
Simon Marlow <[EMAIL PROTECTED]>**20080819141151
 threadWaitRead doesn't work on Windows in all GHC versions < 6.10.1
 (which isn't released yet).
 
 This means that since darcs is compiled with -threaded, when compiled
 with GHC < 6.10 on Windows, darcs will not respond to ^C when waiting
 for user input.
 
] hunk ./src/Darcs/Utils.lhs 18
-import Control.Concurrent ( threadWaitRead, newEmptyMVar, takeMVar, putMVar, 
forkIO )
+import Control.Concurrent ( newEmptyMVar, takeMVar, putMVar, forkIO )
+#if !defined(WIN32) ||  __GLASGOW_HASKELL__>=609
+import Control.Concurrent ( threadWaitRead )
+#endif
hunk ./src/Darcs/Utils.lhs 157
-                                                   threadWaitRead 0
+                                                   waitForStdin
hunk ./src/Darcs/Utils.lhs 165
+waitForStdin :: IO ()
+#ifdef WIN32
+#if __GLASGOW_HASKELL__ >= 609
+waitForStdin = threadWaitRead 0
+#else
+waitForStdin = return ()  -- threadWaitRead didn't work prior to 6.9
+#endif
+#else
+waitForStdin = threadWaitRead 0
+#endif
+
hunk ./src/Darcs/Utils.lhs 239
-              threadWaitRead 0
+              waitForStdin
hunk ./src/Darcs/Utils.lhs 280
-                              do threadWaitRead 0
+                              do waitForStdin

Context:

[Resolve issue823: do not exit on keyboard interrupt when getting patches.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080815070943
 And give a chance for go_to_chosen_version to run.
] 
[fix buggy comments in bugs/identical-patches.sh.
David Roundy <[EMAIL PROTECTED]>**20080814135322] 
[Add Ian's identical-patch test case.
Eric Kow <[EMAIL PROTECTED]>**20080813171032] 
[URL.hs: store only URL in waitToStart queue.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813122246] 
[Add (failing) test for issue944.
Eric Kow <[EMAIL PROTECTED]>**20080814055903
 
 This appears to be a reggression from darcs 1.0.9, and was submitted by
 Wolfgang Lux on the bug tracker.  Interestingly, only the old format
 repositories are affected, not the hashed ones.
] 
[add type witnesses to TouchesFiles
Jason Dagit <[EMAIL PROTECTED]>**20080810063403] 
[add type witnesses to Patch/Choices.lhs
Jason Dagit <[EMAIL PROTECTED]>**20080809000237] 
[Split Cache mostly out of Darsc/Repository/Prefs into its own file (take 2)
[EMAIL PROTECTED] 
[Make Darcs.Repository.Prefs export the cache hash function
[EMAIL PROTECTED] 
[remove a few unsightly functions
Jason Dagit <[EMAIL PROTECTED]>**20080813061256] 
[Fix URL module bug with pipelining enabled.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813081218] 
[Minor change to URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813074218] 
[Enable pipelining by default, add --disable-pipelining option (issue838).
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813011342] 
[Generalize HashRepo.clean_pristine to HashIO.clean_hashdir.
[EMAIL PROTECTED] 
[Add writeSlurpy to roll out a copy of slurpy into a filesystem.
[EMAIL PROTECTED] 
[fix breakage in URL.
David Roundy <[EMAIL PROTECTED]>**20080812141220] 
[Parametrize "pristine.hashed" in a bunch of functions.
[EMAIL PROTECTED] 
[Rework URL module for multi threading.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080811221209] 
[Add thread synchronization to URL module and resume select() if interrupted by 
signal in curl module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080810092810] 
[Handle error case with empty URL in URL.waitNextUrl function.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080809221755] 
[Add --debug-http flag to enable curl and libwww debug at run-time instead of 
compile-time.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080809154834] 
[Print a warning when the remote end does not have darcs 2.
Eric Kow <[EMAIL PROTECTED]>**20080811100933
 
 Two reasons:
 (1) right now people get a scary warning from ssh when it can't fetch
     some non-essential files (it used to be that we would send stderr from ssh
     to /dev/null, but that has other problems...)
 (2) darcs transfer-mode more widely deployed could help a lot of people
     wrt darcs performance
] 
[Added a beware note to the unrecord command
[EMAIL PROTECTED] 
[Fixed typo
[EMAIL PROTECTED] 
[Better debug messages in URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080809215247] 
[make Convert.lhs compile.
David Roundy <[EMAIL PROTECTED]>**20080810201725] 
[improve type safety of Darcs.Repository.Internal.
Jason Dagit <[EMAIL PROTECTED]>**20080810051109] 
[Refactor `darcs convert' warning at kowey's request.
Trent W. Buck <[EMAIL PROTECTED]>**20080810110014] 
[Expand formats text based in part on suggestions from darcs-users
Max Battcher <[EMAIL PROTECTED]>**20080809184043] 
[Fixes to global cache text based on darcs-users suggestions
Max Battcher <[EMAIL PROTECTED]>**20080809181424] 
[Add user-focused documentation of repository format options
Max Battcher <[EMAIL PROTECTED]>**20080807195429] 
[Highlight the global cache as a best practice
Max Battcher <[EMAIL PROTECTED]>**20080807193918] 
[Describe best practice in `darcs convert --help'.
Trent W. Buck <[EMAIL PROTECTED]>**20080810110615] 
[add type witnesses to Population
Jason Dagit <[EMAIL PROTECTED]>**20080808053252] 
[add type witnesses to CommandsAux
Jason Dagit <[EMAIL PROTECTED]>**20080808052738] 
[Add type witnesses to more modules, rounding out Darcs/Repository/*
Jason Dagit <[EMAIL PROTECTED]>**20080808050947] 
[fixed a bug in identity_commutes property
Jason Dagit <[EMAIL PROTECTED]>**20080808023025
 In the right identity check the patch order should have gone from
 (identity :> p) to (p2 :> i2).  I added a rigid type context too
 so that ghc 6.8 and newer would type the definition.
] 
[Make Darcs.Repository.Internal compile with type witnesses.
Jason Dagit <[EMAIL PROTECTED]>**20080808015343] 
[UF8.lhs: remove unusued functions/imports/docs
[EMAIL PROTECTED] 
[Resolve issue974 : do not pass both -optc-g and -opta-g to GHC
Eric Kow <[EMAIL PROTECTED]>**20080807073620] 
[make this test more cross-platform
Simon Michael <[EMAIL PROTECTED]>**20080807103433] 
[document how to run unit tests
Simon Michael <[EMAIL PROTECTED]>**20080807030416] 
[move (most) failing tests to bugs for clean test output
Simon Michael <[EMAIL PROTECTED]>**20080806191336] 
[fix an old spelling error
Simon Michael <[EMAIL PROTECTED]>**20080806170432] 
[make searching for "test:" in makefile work
Simon Michael <[EMAIL PROTECTED]>**20080805222241] 
[run only normal (expected to pass) tests by default
Simon Michael <[EMAIL PROTECTED]>**20080805222108] 
[Downplay quantum mechanics link.
Eric Kow <[EMAIL PROTECTED]>**20080806124109
 Besides, darcs has far more than 3 users by now.
] 
[Make patch theory intro more inviting to math people.
Eric Kow <[EMAIL PROTECTED]>**20080806123411] 
[cleanup and slight rewrite of the test docs
Simon Michael <[EMAIL PROTECTED]>**20080806165949] 
[make order of running tests consistent
Simon Michael <[EMAIL PROTECTED]>**20080806172123] 
[small makefile refactoring: allow just the normal tests to be run, without 
bugs/*
Simon Michael <[EMAIL PROTECTED]>**20080805203242] 
[Rectify dist help
[EMAIL PROTECTED]
 Removed the "make dist" suggestion, the manual is a better place for that.
 Instead, make clear that it operates on a clean copy of the tree, and
 mention the "predist" functionality.
] 
[website: explain that darcs 2 is required to get the darcs source.
Simon Michael <[EMAIL PROTECTED]>**20080803181216] 
[Canonize Gaetan Lehmann and Daniel Buenzli.
Eric Kow <[EMAIL PROTECTED]>**20080730104357
 (for Daniel B, avoid an accent in his name)
] 
[configure: check for packages needed with split base.
Eric Kow <[EMAIL PROTECTED]>**20080730103840
 Now that all packages must be used explicitly.
] 
[fix type witness compile errors specific to ghc 6.8
Jason Dagit <[EMAIL PROTECTED]>**20080722182729] 
[avoid import of unused function fromMaybe.
David Roundy <[EMAIL PROTECTED]>**20080729172825] 
[configure: suggest regex-compat before text
Eric Kow <[EMAIL PROTECTED]>**20080725095336] 
[configure: mention Haskell in 'try installing' suggestion
Eric Kow <[EMAIL PROTECTED]>**20080725095015] 
[Typo (Text.Regex)
Eric Kow <[EMAIL PROTECTED]>**20080715121708] 
[Use haskeline to have a readline-like behavior when asking something to the 
user
[EMAIL PROTECTED]
 Unlike the implementations using readline or editline packages, this code
 code doesn't break the Ctrl-C behavior.
] 
[Improve generic rules for English plurals. 
Eric Kow <[EMAIL PROTECTED]>**20080604123728] 
[add configure check for Network.URI.
David Roundy <[EMAIL PROTECTED]>**20080711011914] 
[add -hide-all-packages to default GHCFLAGS.
David Roundy <[EMAIL PROTECTED]>**20080711010952] 
[add support for outputting patch numbers in darcs changes.
David Roundy <[EMAIL PROTECTED]>**20080710011211] 
[add support for matching single patches by index.
David Roundy <[EMAIL PROTECTED]>**20080710004512] 
[add support for matching ranges of patches (counting back from present).
David Roundy <[EMAIL PROTECTED]>**20080710003225] 
[Better avoid silly manpage error.
Trent W. Buck <[EMAIL PROTECTED]>**20080704024920
 
 It turned out only initialize's help string used 'quotes', so just
 remove them.  This makes init's docstring consistent with the others.
] 
[Missing period at end of sentence.
Trent W. Buck <[EMAIL PROTECTED]>**20080704024232] 
[darcs --overview no longer works, so don't document it.
Trent W. Buck <[EMAIL PROTECTED]>**20080704030804] 
[Avoid silly manpage error.
Trent W. Buck <[EMAIL PROTECTED]>**20080703010733
 man (nroff) treats an apostrophe in the first column specially,
 resulting in a syntax error without this patch.
 
 Ideally, all cases of 'foo' in the manpage (i.e. docstrings) should
 become `foo', since man -Tps turns ` and ' into left and right single
 quotes respectively.
] 
[obliterate whitespace in Darcs.Commands.Get
[EMAIL PROTECTED]
 'twas causing lhs/haddock difficulties where a \end{code} wasn't getting 
recognized.
] 
[rm haddock CPP business
[EMAIL PROTECTED]
 Try as I might, I can't see any reason to special-case some Haddock CPP logic 
to deal with some *commented-out guards*, unless CPP magically restores and 
uncomments the code if Haddock isn't being run.
] 
[make pull less verbose when --verbose flag is given.
David Roundy <[EMAIL PROTECTED]>**20080624170035] 
[fix makefile to remember to regenerate version information after running 
configure.
David Roundy <[EMAIL PROTECTED]>**20080624170001] 
[TAG 2.0.2
David Roundy <[EMAIL PROTECTED]>**20080624012041] 
Patch bundle hash:
f44c82ee52e7ea4ff24b74c4dad2a326820c9f79
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to