1--- darcs-2.14.2/Setup.hs 2019-01-27 03:14:51.000000000 +1300
2+++ darcs.net/Setup.hs 2019-10-18 02:41:57.000000000 +1300
3@@ -11,7 +11,9 @@
4 , TestSuite(testBuildInfo)
5 , updatePackageDescription
6 , cppOptions, ccOptions
7- , library, libBuildInfo, otherModules )
8+ , library, libBuildInfo, otherModules
9+ , ComponentName(CExeName)
10+ )
11 import Distribution.Package
12 ( packageVersion )
13 import Distribution.Version( Version )
14@@ -21,24 +23,27 @@
15 import Distribution.Simple.Setup
16 (buildVerbosity, copyDest, copyVerbosity, fromFlag,
17 haddockVerbosity, installVerbosity, sDistVerbosity, replVerbosity )
18-import Distribution.Simple.BuildPaths ( autogenModulesDir )
19+import Distribution.Simple.BuildPaths ( autogenPackageModulesDir )
20 import Distribution.System
21 ( OS(Windows), buildOS )
22 import Distribution.Simple.Utils
23 (copyFiles, createDirectoryIfMissingVerbose, rawSystemStdout,
24- rewriteFile )
25+ rewriteFileEx)
26+import Distribution.Types.UnqualComponentName
27 import Distribution.Verbosity
28- ( Verbosity )
29+ ( Verbosity, silent )
30 import Distribution.Text
31 ( display )
32-import Control.Monad ( unless, void )
33
34+import Control.Monad ( unless, when, void )
35 import System.Directory
36 ( doesDirectoryExist, doesFileExist )
37 import System.IO
38 ( openFile, IOMode(..) )
39 import System.Process (runProcess)
40 import Data.List( isInfixOf, lines )
41+import qualified Data.Map as M
42+import Data.Maybe ( isJust )
43 import System.FilePath ( (</>) )
44 import Foreign.Marshal.Utils ( with )
45 import Foreign.Storable ( peek )
46@@ -75,8 +80,8 @@
47 verb = fromFlag $ sDistVerbosity flags
48 x <- versionPatches verb pkgVer
49 y <- context verb
50- rewriteFile "release/distributed-version" $ show x
51- rewriteFile "release/distributed-context" $ show y
52+ rewriteFileEx silent "release/distributed-version" $ show x
53+ rewriteFileEx silent "release/distributed-context" $ show y
54 putStrLn "about to hand over"
55 let pkg' = pkg { library = sanity (library pkg) }
56 sanity (Just lib) = Just $ lib { libBuildInfo = sanity' $ libBuildInfo lib }
57@@ -105,8 +110,7 @@
58 littleEndian <- testEndianness
59 let args = ("-DPACKAGE_VERSION=" ++ show' version) :
60 [arg | (arg, True) <- -- include fst iff snd.
61- [-- We have MAPI iff building on/for Windows.
62- ("-DHAVE_MAPI", buildOS == Windows),
63+ [
64 ("-DLITTLEENDIAN", littleEndian),
65 ("-DBIGENDIAN", not littleEndian)]]
66 bi = emptyBuildInfo { cppOptions = args, ccOptions = args }
67@@ -133,20 +137,26 @@
68 -- man page
69 -- ---------------------------------------------------------------------
70
71+hasDarcsExe :: LocalBuildInfo -> Bool
72+hasDarcsExe = isJust . M.lookup darcsExe . componentNameMap where
73+ darcsExe = CExeName (mkUnqualComponentName "darcs")
74+
75 buildManpage :: LocalBuildInfo -> IO ()
76-buildManpage lbi = do
77- let darcs = buildDir lbi </> "darcs/darcs"
78- manpage = buildDir lbi </> "darcs/darcs.1"
79- manpageHandle <- openFile manpage WriteMode
80- void $ runProcess darcs ["help","manpage"]
81- Nothing Nothing Nothing (Just manpageHandle) Nothing
82+buildManpage lbi =
83+ when (hasDarcsExe lbi) $ do
84+ let darcs = buildDir lbi </> "darcs/darcs"
85+ manpage = buildDir lbi </> "darcs/darcs.1"
86+ manpageHandle <- openFile manpage WriteMode
87+ void $ runProcess darcs ["help","manpage"]
88+ Nothing Nothing Nothing (Just manpageHandle) Nothing
89
90-installManpage :: PackageDescription -> LocalBuildInfo
91- -> Verbosity -> CopyDest -> IO ()
92+installManpage :: PackageDescription -> LocalBuildInfo -> Verbosity -> CopyDest -> IO ()
93 installManpage pkg lbi verbosity copy =
94- copyFiles verbosity
95- (mandir (absoluteInstallDirs pkg lbi copy) </> "man1")
96- [(buildDir lbi </> "darcs", "darcs.1")]
97+ when (hasDarcsExe lbi) $
98+ copyFiles
99+ verbosity
100+ (mandir (absoluteInstallDirs pkg lbi copy) </> "man1")
101+ [(buildDir lbi </> "darcs", "darcs.1")]
102
103 -- ---------------------------------------------------------------------
104 -- version module
105@@ -187,12 +197,13 @@
106 generateVersionModule :: Verbosity -> LocalBuildInfo
107 -> String -> String -> IO ()
108 generateVersionModule verbosity lbi version state = do
109- let dir = autogenModulesDir lbi
110+ let dir = autogenPackageModulesDir lbi
111 createDirectoryIfMissingVerbose verbosity True dir
112 ctx <- context verbosity
113 hash <- weakhash verbosity
114- rewriteFile (dir </> "Version.hs") $ unlines
115+ rewriteFileEx silent (dir </> "Version.hs") $ unlines
116 ["module Version where"
117+ ,"import Darcs.Prelude"
118 ,"version, weakhash, context :: String"
119 ,"version = \"" ++ version ++ " (" ++ state ++ ")\""
120 ,"weakhash = " ++ case hash of