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
4 , TestSuite(testBuildInfo)
5 , updatePackageDescription
6 , cppOptions, ccOptions
7- , library, libBuildInfo, otherModules )
8+ , library, libBuildInfo, otherModules
9+ , ComponentName(CExeName)
11 import Distribution.Package
13 import Distribution.Version( Version )
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,
26+import Distribution.Types.UnqualComponentName
27 import Distribution.Verbosity
29+ ( Verbosity, silent )
30 import Distribution.Text
32-import Control.Monad ( unless, void )
34+import Control.Monad ( unless, when, void )
35 import System.Directory
36 ( doesDirectoryExist, doesFileExist )
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 )
47 verb = fromFlag $ sDistVerbosity flags
48 x <- versionPatches verb pkgVer
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 }
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),
64 ("-DLITTLEENDIAN", littleEndian),
65 ("-DBIGENDIAN", not littleEndian)]]
66 bi = emptyBuildInfo { cppOptions = args, ccOptions = args }
69 -- ---------------------------------------------------------------------
71+hasDarcsExe :: LocalBuildInfo -> Bool
72+hasDarcsExe = isJust . M.lookup darcsExe . componentNameMap where
73+ darcsExe = CExeName (mkUnqualComponentName "darcs")
75 buildManpage :: LocalBuildInfo -> IO ()
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
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
90-installManpage :: PackageDescription -> LocalBuildInfo
91- -> Verbosity -> CopyDest -> IO ()
92+installManpage :: PackageDescription -> LocalBuildInfo -> Verbosity -> CopyDest -> IO ()
93 installManpage pkg lbi verbosity copy =
95- (mandir (absoluteInstallDirs pkg lbi copy) </> "man1")
96- [(buildDir lbi </> "darcs", "darcs.1")]
97+ when (hasDarcsExe lbi) $
100+ (mandir (absoluteInstallDirs pkg lbi copy) </> "man1")
101+ [(buildDir lbi </> "darcs", "darcs.1")]
103 -- ---------------------------------------------------------------------
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
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list