finally really add back custom-setup stanza
Fourth or fifth try at this and finally found a way to make it work. Absurd amount of busy-work forced on me by change in cabal's behavior. Split up Utility modules that need posix stuff out of ones used by Setup. Various other hacks around inability for Setup to use anything that ifdefs a use of unix. Probably lost a full day of my life to this. This is how build systems make their users hate them. Just saying.
This commit is contained in:
parent
2bfdd690e2
commit
25703e1413
50 changed files with 494 additions and 345 deletions
|
@ -13,6 +13,10 @@ import Common
|
|||
import Utility.Metered
|
||||
import Utility.Tuple
|
||||
|
||||
#ifdef mingw32_HOST_OS
|
||||
import qualified System.FilePath.Posix as Posix
|
||||
#endif
|
||||
|
||||
import Data.Char
|
||||
import System.Console.GetOpt
|
||||
|
||||
|
@ -139,3 +143,29 @@ filterRsyncSafeOptions = fst3 . getOpt Permute
|
|||
[ Option [] ["bwlimit"] (reqArgLong "bwlimit") "" ]
|
||||
where
|
||||
reqArgLong x = ReqArg (\v -> "--" ++ x ++ "=" ++ v) ""
|
||||
|
||||
{- Converts a DOS style path to a msys2 style path. Only on Windows.
|
||||
- Any trailing '\' is preserved as a trailing '/'
|
||||
-
|
||||
- Taken from: http://sourceforge.net/p/msys2/wiki/MSYS2%20introduction/i
|
||||
-
|
||||
- The virtual filesystem contains:
|
||||
- /c, /d, ... mount points for Windows drives
|
||||
-}
|
||||
toMSYS2Path :: FilePath -> FilePath
|
||||
#ifndef mingw32_HOST_OS
|
||||
toMSYS2Path = id
|
||||
#else
|
||||
toMSYS2Path p
|
||||
| null drive = recombine parts
|
||||
| otherwise = recombine $ "/" : driveletter drive : parts
|
||||
where
|
||||
(drive, p') = splitDrive p
|
||||
parts = splitDirectories p'
|
||||
driveletter = map toLower . takeWhile (/= ':')
|
||||
recombine = fixtrailing . Posix.joinPath
|
||||
fixtrailing s
|
||||
| hasTrailingPathSeparator p = Posix.addTrailingPathSeparator s
|
||||
| otherwise = s
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue