mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-11 15:15:36 +00:00
haskell-packages: made darcs compile with ghc 8.8
This commit is contained in:
parent
7c1c9dcc72
commit
8ab67c7a19
|
@ -45,6 +45,12 @@ self: super: {
|
||||||
# Needs older QuickCheck version
|
# Needs older QuickCheck version
|
||||||
attoparsec-varword = dontCheck super.attoparsec-varword;
|
attoparsec-varword = dontCheck super.attoparsec-varword;
|
||||||
|
|
||||||
|
# http://bugs.darcs.net/issue2642
|
||||||
|
darcs = doJailbreak (appendPatches super.darcs [
|
||||||
|
./patches/darcs-setup.patch
|
||||||
|
./patches/darcs-2.14.2-Compile-against-GHC-8.8.patch
|
||||||
|
]);
|
||||||
|
|
||||||
# Tests are failing
|
# Tests are failing
|
||||||
# https://github.com/bos/statistics/issues/123
|
# https://github.com/bos/statistics/issues/123
|
||||||
statistics = dontCheck super.statistics;
|
statistics = dontCheck super.statistics;
|
||||||
|
@ -1505,9 +1511,6 @@ self: super: {
|
||||||
polysemy = self.polysemy_1_3_0_0;
|
polysemy = self.polysemy_1_3_0_0;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Fixed at head, but hasn't cut a release in awhile.
|
|
||||||
darcs = doJailbreak super.darcs;
|
|
||||||
|
|
||||||
# Test suite requires running a database server. Testing is done upstream.
|
# Test suite requires running a database server. Testing is done upstream.
|
||||||
hasql-pool = dontCheck super.hasql-pool;
|
hasql-pool = dontCheck super.hasql-pool;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,333 @@
|
||||||
|
From 2490fa65eeba52699a7c0e303aa5cb9b78c2b1cf Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= <mail@nh2.me>
|
||||||
|
Date: Fri, 17 Apr 2020 20:49:23 +0200
|
||||||
|
Subject: [PATCH] Compile against GHC 8.8
|
||||||
|
|
||||||
|
---
|
||||||
|
Setup.hs | 15 ---------------
|
||||||
|
src/Darcs/Patch/Depends.hs | 2 +-
|
||||||
|
src/Darcs/Patch/Match.hs | 12 ++++++------
|
||||||
|
src/Darcs/Patch/PatchInfoAnd.hs | 2 +-
|
||||||
|
src/Darcs/Patch/Prim/V1/Apply.hs | 6 +++---
|
||||||
|
src/Darcs/Patch/Prim/V1/Commute.hs | 1 +
|
||||||
|
src/Darcs/Patch/ReadMonads.hs | 1 +
|
||||||
|
src/Darcs/Patch/V1/Commute.hs | 1 +
|
||||||
|
src/Darcs/Repository/Diff.hs | 2 +-
|
||||||
|
src/Darcs/Repository/Match.hs | 2 +-
|
||||||
|
src/Darcs/Util/Tree/Monad.hs | 4 ++--
|
||||||
|
12 files changed, 30 insertions(+), 42 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Setup.hs b/Setup.hs
|
||||||
|
index f5cc3e8..05caac4 100644
|
||||||
|
--- a/Setup.hs
|
||||||
|
+++ b/Setup.hs
|
||||||
|
@@ -75,21 +75,6 @@
|
||||||
|
postInst = \ _ flags pkg lbi ->
|
||||||
|
installManpage pkg lbi (fromFlag $ installVerbosity flags) NoCopyDest,
|
||||||
|
|
||||||
|
- sDistHook = \ pkg lbi hooks flags -> do
|
||||||
|
- let pkgVer = packageVersion pkg
|
||||||
|
- verb = fromFlag $ sDistVerbosity flags
|
||||||
|
- x <- versionPatches verb pkgVer
|
||||||
|
- y <- context verb
|
||||||
|
- rewriteFileEx silent "release/distributed-version" $ show x
|
||||||
|
- rewriteFileEx silent "release/distributed-context" $ show y
|
||||||
|
- putStrLn "about to hand over"
|
||||||
|
- let pkg' = pkg { library = sanity (library pkg) }
|
||||||
|
- sanity (Just lib) = Just $ lib { libBuildInfo = sanity' $ libBuildInfo lib }
|
||||||
|
- sanity _ = error "eh"
|
||||||
|
- sanity' bi = bi { otherModules = [ m | m <- otherModules bi, toFilePath m /= "Version" ] }
|
||||||
|
-
|
||||||
|
- sDistHook simpleUserHooks pkg' lbi hooks flags
|
||||||
|
- ,
|
||||||
|
postConf = \_ _ _ _ -> return () --- Usually this checked for external C
|
||||||
|
--- dependencies, but we already have performed such
|
||||||
|
--- check in the confHook
|
||||||
|
--- a/darcs.cabal 1970-01-01 01:00:01.000000000 +0100
|
||||||
|
+++ b/darcs.cabal 2020-04-18 10:26:07.605129733 +0200
|
||||||
|
@@ -1,6 +1,5 @@
|
||||||
|
Name: darcs
|
||||||
|
version: 2.14.2
|
||||||
|
-x-revision: 1
|
||||||
|
License: GPL-2
|
||||||
|
License-file: COPYING
|
||||||
|
Author: David Roundy <droundy@darcs.net>, <darcs-devel@darcs.net>
|
||||||
|
@@ -75,7 +74,7 @@
|
||||||
|
description: Use libcurl for HTTP support.
|
||||||
|
|
||||||
|
-- in future this could extend to any other external libraries,
|
||||||
|
--- e.g. libiconv
|
||||||
|
+-- e.g. libiconv
|
||||||
|
flag pkgconfig
|
||||||
|
description: Use pkgconfig to configure libcurl
|
||||||
|
default: False
|
||||||
|
@@ -113,7 +112,7 @@
|
||||||
|
-- ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
custom-setup
|
||||||
|
- setup-depends: base >= 4.9 && < 4.13,
|
||||||
|
+ setup-depends: base >= 4.9 && <5,
|
||||||
|
Cabal >= 1.24,
|
||||||
|
process >= 1.2.3.0 && < 1.7,
|
||||||
|
filepath >= 1.4.1 && < 1.5.0.0,
|
||||||
|
@@ -381,7 +380,7 @@
|
||||||
|
else
|
||||||
|
build-depends: unix >= 2.7.1.0 && < 2.8
|
||||||
|
|
||||||
|
- build-depends: base >= 4.9 && < 4.13,
|
||||||
|
+ build-depends: base >= 4.9 && <5,
|
||||||
|
stm >= 2.1 && < 2.6,
|
||||||
|
binary >= 0.5 && < 0.10,
|
||||||
|
containers >= 0.5.6.2 && < 0.7,
|
||||||
|
@@ -402,19 +401,19 @@
|
||||||
|
tar >= 0.5 && < 0.6,
|
||||||
|
data-ordlist == 0.4.*,
|
||||||
|
attoparsec >= 0.13.0.1 && < 0.14,
|
||||||
|
- zip-archive >= 0.3 && < 0.5,
|
||||||
|
+ zip-archive >= 0.3 && <1,
|
||||||
|
async >= 2.0.2 && < 2.3,
|
||||||
|
- sandi >= 0.4 && < 0.6,
|
||||||
|
+ sandi >= 0.4 && <1,
|
||||||
|
unix-compat >= 0.4.2 && < 0.6,
|
||||||
|
bytestring >= 0.10.6 && < 0.11,
|
||||||
|
old-time >= 1.1.0.3 && < 1.2,
|
||||||
|
time >= 1.5.0.1 && < 1.10,
|
||||||
|
- text >= 1.2.1.3 && < 1.3,
|
||||||
|
+ text >= 1.2.1.3 && <2,
|
||||||
|
directory >= 1.2.6.2 && < 1.4,
|
||||||
|
process >= 1.2.3.0 && < 1.7,
|
||||||
|
array >= 0.5.1.0 && < 0.6,
|
||||||
|
random >= 1.1 && < 1.2,
|
||||||
|
- hashable >= 1.2.3.3 && < 1.3,
|
||||||
|
+ hashable >= 1.2.3.3 && <2,
|
||||||
|
mmap >= 0.5.9 && < 0.6,
|
||||||
|
zlib >= 0.6.1.2 && < 0.7.0.0,
|
||||||
|
network-uri == 2.6.*,
|
||||||
|
@@ -443,7 +442,7 @@
|
||||||
|
|
||||||
|
-- The terminfo package cannot be built on Windows.
|
||||||
|
if flag(terminfo) && !os(windows)
|
||||||
|
- build-depends: terminfo >= 0.4.0.2 && < 0.5
|
||||||
|
+ build-depends: terminfo >= 0.4.0.2 && <1
|
||||||
|
cpp-options: -DHAVE_TERMINFO
|
||||||
|
|
||||||
|
default-extensions:
|
||||||
|
@@ -500,7 +499,7 @@
|
||||||
|
cc-options: -D_REENTRANT
|
||||||
|
|
||||||
|
build-depends: darcs,
|
||||||
|
- base >= 4.9 && < 4.13
|
||||||
|
+ base >= 4.9 && <5
|
||||||
|
|
||||||
|
-- ----------------------------------------------------------------------
|
||||||
|
-- unit test driver
|
||||||
|
@@ -518,7 +517,7 @@
|
||||||
|
build-depends: Win32 >= 2.3.1 && < 2.4
|
||||||
|
|
||||||
|
build-depends: darcs,
|
||||||
|
- base >= 4.9 && < 4.13,
|
||||||
|
+ base >= 4.9 && <5,
|
||||||
|
array >= 0.5.1.0 && < 0.6,
|
||||||
|
bytestring >= 0.10.6 && < 0.11,
|
||||||
|
cmdargs >= 0.10.10 && < 0.11,
|
||||||
|
@@ -527,15 +526,15 @@
|
||||||
|
mtl >= 2.2.1 && < 2.3,
|
||||||
|
shelly >= 1.6.8 && < 1.9,
|
||||||
|
split >= 0.2.2 && < 0.3,
|
||||||
|
- text >= 1.2.1.3 && < 1.3,
|
||||||
|
+ text >= 1.2.1.3 && <2,
|
||||||
|
directory >= 1.2.6.2 && < 1.4,
|
||||||
|
FindBin >= 0.0.5 && < 0.1,
|
||||||
|
- QuickCheck >= 2.8.2 && < 2.13,
|
||||||
|
+ QuickCheck >= 2.8.2 && <3,
|
||||||
|
HUnit >= 1.3 && < 1.7,
|
||||||
|
test-framework >= 0.8.1.1 && < 0.9,
|
||||||
|
test-framework-hunit >= 0.3.0.2 && < 0.4,
|
||||||
|
test-framework-quickcheck2 >= 0.3.0.3 && < 0.4,
|
||||||
|
- zip-archive >= 0.3 && < 0.5
|
||||||
|
+ zip-archive >= 0.3 && <1
|
||||||
|
|
||||||
|
-- https://github.com/yesodweb/Shelly.hs/issues/177
|
||||||
|
if os(windows)
|
||||||
|
diff --git a/src/Darcs/Patch/Depends.hs b/src/Darcs/Patch/Depends.hs
|
||||||
|
index 8531294..a4c71cb 100644
|
||||||
|
--- a/src/Darcs/Patch/Depends.hs
|
||||||
|
+++ b/src/Darcs/Patch/Depends.hs
|
||||||
|
@@ -251,7 +251,7 @@ splitOnTag _ (PatchSet NilRL NilRL) = Nothing
|
||||||
|
unwrapOneTagged :: (Monad m) => PatchSet rt p wX wY -> m (PatchSet rt p wX wY)
|
||||||
|
unwrapOneTagged (PatchSet (ts :<: Tagged t _ tps) ps) =
|
||||||
|
return $ PatchSet ts (tps :<: t +<+ ps)
|
||||||
|
-unwrapOneTagged _ = fail "called unwrapOneTagged with no Tagged's in the set"
|
||||||
|
+unwrapOneTagged _ = error "called unwrapOneTagged with no Tagged's in the set"
|
||||||
|
|
||||||
|
-- | @getUncovered ps@ returns the 'PatchInfo' for all the patches in
|
||||||
|
-- @ps@ that are not depended on by anything else *through explicit
|
||||||
|
diff --git a/src/Darcs/Patch/Match.hs b/src/Darcs/Patch/Match.hs
|
||||||
|
index aba6c7a..2b6f53a 100644
|
||||||
|
--- a/src/Darcs/Patch/Match.hs
|
||||||
|
+++ b/src/Darcs/Patch/Match.hs
|
||||||
|
@@ -421,7 +421,7 @@ getNonrangeMatchS fs repo =
|
||||||
|
Just m -> if nonrangeMatcherIsTag fs
|
||||||
|
then getTagS m repo
|
||||||
|
else getMatcherS Exclusive m repo
|
||||||
|
- Nothing -> fail "Pattern not specified in getNonrangeMatch."
|
||||||
|
+ Nothing -> error "Pattern not specified in getNonrangeMatch."
|
||||||
|
|
||||||
|
-- | @firstMatch fs@ tells whether @fs@ implies a "first match", that
|
||||||
|
-- is if we match against patches from a point in the past on, rather
|
||||||
|
@@ -441,7 +441,7 @@ getFirstMatchS fs repo =
|
||||||
|
Just (_,b) -> unpullLastN repo b -- b is chronologically earlier than a
|
||||||
|
Nothing ->
|
||||||
|
case firstMatcher fs of
|
||||||
|
- Nothing -> fail "Pattern not specified in getFirstMatchS."
|
||||||
|
+ Nothing -> error "Pattern not specified in getFirstMatchS."
|
||||||
|
Just m -> if firstMatcherIsTag fs
|
||||||
|
then getTagS m repo
|
||||||
|
else getMatcherS Inclusive m repo
|
||||||
|
@@ -462,7 +462,7 @@ checkMatchSyntax :: [MatchFlag] -> IO ()
|
||||||
|
checkMatchSyntax opts =
|
||||||
|
case getMatchPattern opts of
|
||||||
|
Nothing -> return ()
|
||||||
|
- Just p -> either fail (const $ return ()) (parseMatch p::Either String (MatchFun rt DummyPatch))
|
||||||
|
+ Just p -> either error (const $ return ()) (parseMatch p::Either String (MatchFun rt DummyPatch))
|
||||||
|
|
||||||
|
getMatchPattern :: [MatchFlag] -> Maybe String
|
||||||
|
getMatchPattern [] = Nothing
|
||||||
|
@@ -718,7 +718,7 @@ getMatcherS :: (ApplyMonad (ApplyState p) m, Matchable p) =>
|
||||||
|
getMatcherS ioe m repo =
|
||||||
|
if matchExists m repo
|
||||||
|
then applyInvToMatcher ioe m repo
|
||||||
|
- else fail $ "Couldn't match pattern "++ show m
|
||||||
|
+ else error $ "Couldn't match pattern "++ show m
|
||||||
|
|
||||||
|
getTagS :: (ApplyMonad (ApplyState p) m, MonadProgress m, Matchable p) =>
|
||||||
|
Matcher rt p -> PatchSet rt p Origin wX -> m ()
|
||||||
|
diff --git a/src/Darcs/Patch/PatchInfoAnd.hs b/src/Darcs/Patch/PatchInfoAnd.hs
|
||||||
|
index 2da7ec8..1147410 100644
|
||||||
|
--- a/src/Darcs/Patch/PatchInfoAnd.hs
|
||||||
|
+++ b/src/Darcs/Patch/PatchInfoAnd.hs
|
||||||
|
@@ -167,7 +167,7 @@ conscientiously er (PIAP pinf hp) =
|
||||||
|
|
||||||
|
-- | @hopefullyM@ is a version of @hopefully@ which calls @fail@ in a
|
||||||
|
-- monad instead of erroring.
|
||||||
|
-hopefullyM :: Monad m => PatchInfoAnd rt p wA wB -> m (WrappedNamed rt p wA wB)
|
||||||
|
+hopefullyM :: MonadFail m => PatchInfoAnd rt p wA wB -> m (WrappedNamed rt p wA wB)
|
||||||
|
hopefullyM (PIAP pinf hp) = case hopefully2either hp of
|
||||||
|
Right p -> return p
|
||||||
|
Left e -> fail $ renderString
|
||||||
|
diff --git a/src/Darcs/Patch/Prim/V1/Apply.hs b/src/Darcs/Patch/Prim/V1/Apply.hs
|
||||||
|
index bea7e41..7984d21 100644
|
||||||
|
--- a/src/Darcs/Patch/Prim/V1/Apply.hs
|
||||||
|
+++ b/src/Darcs/Patch/Prim/V1/Apply.hs
|
||||||
|
@@ -41,13 +41,13 @@ instance Apply Prim where
|
||||||
|
apply (FP f (TokReplace t o n)) = mModifyFilePS f doreplace
|
||||||
|
where doreplace fc =
|
||||||
|
case tryTokReplace t (BC.pack o) (BC.pack n) fc of
|
||||||
|
- Nothing -> fail $ "replace patch to " ++ fn2fp f
|
||||||
|
+ Nothing -> error $ "replace patch to " ++ fn2fp f
|
||||||
|
++ " couldn't apply."
|
||||||
|
Just fc' -> return fc'
|
||||||
|
apply (FP f (Binary o n)) = mModifyFilePS f doapply
|
||||||
|
where doapply oldf = if o == oldf
|
||||||
|
then return n
|
||||||
|
- else fail $ "binary patch to " ++ fn2fp f
|
||||||
|
+ else error $ "binary patch to " ++ fn2fp f
|
||||||
|
++ " couldn't apply."
|
||||||
|
apply (DP d AddDir) = mCreateDirectory d
|
||||||
|
apply (DP d RmDir) = mRemoveDirectory d
|
||||||
|
@@ -115,7 +115,7 @@ applyHunk f h fc =
|
||||||
|
case applyHunkLines h fc of
|
||||||
|
Right fc' -> return fc'
|
||||||
|
Left msg ->
|
||||||
|
- fail $
|
||||||
|
+ error $
|
||||||
|
"### Error applying:\n" ++ renderHunk h ++
|
||||||
|
"\n### to file " ++ fn2fp f ++ ":\n" ++ BC.unpack fc ++
|
||||||
|
"### Reason: " ++ msg
|
||||||
|
diff --git a/src/Darcs/Patch/Prim/V1/Commute.hs b/src/Darcs/Patch/Prim/V1/Commute.hs
|
||||||
|
index 7639dbd..e1432e6 100644
|
||||||
|
--- a/src/Darcs/Patch/Prim/V1/Commute.hs
|
||||||
|
+++ b/src/Darcs/Patch/Prim/V1/Commute.hs
|
||||||
|
@@ -58,6 +58,7 @@ instance Monad Perhaps where
|
||||||
|
Failed >>= _ = Failed
|
||||||
|
Unknown >>= _ = Unknown
|
||||||
|
return = Succeeded
|
||||||
|
+instance MonadFail Perhaps where
|
||||||
|
fail _ = Unknown
|
||||||
|
|
||||||
|
instance Alternative Perhaps where
|
||||||
|
diff --git a/src/Darcs/Patch/ReadMonads.hs b/src/Darcs/Patch/ReadMonads.hs
|
||||||
|
index 62a4f81..e1cb149 100644
|
||||||
|
--- a/src/Darcs/Patch/ReadMonads.hs
|
||||||
|
+++ b/src/Darcs/Patch/ReadMonads.hs
|
||||||
|
@@ -237,6 +237,7 @@ failSM _ = SM (\_ -> Nothing)
|
||||||
|
instance Monad SM where
|
||||||
|
(>>=) = bindSM
|
||||||
|
return = returnSM
|
||||||
|
+instance MonadFail SM where
|
||||||
|
fail = failSM
|
||||||
|
|
||||||
|
instance ParserM SM where
|
||||||
|
diff --git a/src/Darcs/Patch/V1/Commute.hs b/src/Darcs/Patch/V1/Commute.hs
|
||||||
|
index 0bb41a3..c6c3382 100644
|
||||||
|
--- a/src/Darcs/Patch/V1/Commute.hs
|
||||||
|
+++ b/src/Darcs/Patch/V1/Commute.hs
|
||||||
|
@@ -93,6 +93,7 @@ instance Monad Perhaps where
|
||||||
|
Failed >>= _ = Failed
|
||||||
|
Unknown >>= _ = Unknown
|
||||||
|
return = Succeeded
|
||||||
|
+instance MonadFail Perhaps where
|
||||||
|
fail _ = Unknown
|
||||||
|
|
||||||
|
instance Alternative Perhaps where
|
||||||
|
diff --git a/src/Darcs/Repository/Diff.hs b/src/Darcs/Repository/Diff.hs
|
||||||
|
index 8078d49..e0e2341 100644
|
||||||
|
--- a/src/Darcs/Repository/Diff.hs
|
||||||
|
+++ b/src/Darcs/Repository/Diff.hs
|
||||||
|
@@ -138,7 +138,7 @@ treeDiff da ft t1 t2 = do
|
||||||
|
do rmDirP <- diff p (Removed subtree)
|
||||||
|
addFileP <- diff p (Changed (File emptyBlob) b')
|
||||||
|
return $ joinGap (+>+) rmDirP addFileP
|
||||||
|
- diff p _ = fail $ "Missing case at path " ++ show p
|
||||||
|
+ diff p _ = error $ "Missing case at path " ++ show p
|
||||||
|
|
||||||
|
text_diff p a b
|
||||||
|
| BL.null a && BL.null b = emptyGap NilFL
|
||||||
|
diff --git a/src/Darcs/Repository/Match.hs b/src/Darcs/Repository/Match.hs
|
||||||
|
index 08c9f13..f33cabe 100644
|
||||||
|
--- a/src/Darcs/Repository/Match.hs
|
||||||
|
+++ b/src/Darcs/Repository/Match.hs
|
||||||
|
@@ -60,7 +60,7 @@ getNonrangeMatch :: (ApplyMonad (ApplyState p) DefaultIO, IsRepoType rt, RepoPat
|
||||||
|
getNonrangeMatch r = withRecordedMatch r . getMatch where
|
||||||
|
getMatch fs = case hasIndexRange fs of
|
||||||
|
Just (n, m) | n == m -> applyNInv (n-1)
|
||||||
|
- | otherwise -> fail "Index range is not allowed for this command."
|
||||||
|
+ | otherwise -> error "Index range is not allowed for this command."
|
||||||
|
_ -> getNonrangeMatchS fs
|
||||||
|
|
||||||
|
getOnePatchset :: (IsRepoType rt, RepoPatch p)
|
||||||
|
diff --git a/src/Darcs/Util/Tree/Monad.hs b/src/Darcs/Util/Tree/Monad.hs
|
||||||
|
index 0e01d9b..296fdc4 100644
|
||||||
|
--- a/src/Darcs/Util/Tree/Monad.hs
|
||||||
|
+++ b/src/Darcs/Util/Tree/Monad.hs
|
||||||
|
@@ -216,7 +216,7 @@ instance (Monad m) => TreeRO (TreeMonad m) where
|
||||||
|
t <- gets tree
|
||||||
|
let f = findFile t p'
|
||||||
|
case f of
|
||||||
|
- Nothing -> fail $ "No such file " ++ show p'
|
||||||
|
+ Nothing -> error $ "No such file " ++ show p'
|
||||||
|
Just x -> lift (readBlob x)
|
||||||
|
|
||||||
|
currentDirectory = ask
|
||||||
|
@@ -251,7 +251,7 @@ instance (Monad m) => TreeRW (TreeMonad m) where
|
||||||
|
let item = find tr from'
|
||||||
|
found_to = find tr to'
|
||||||
|
unless (isNothing found_to) $
|
||||||
|
- fail $ "Error renaming: destination " ++ show to ++ " exists."
|
||||||
|
+ error $ "Error renaming: destination " ++ show to ++ " exists."
|
||||||
|
unless (isNothing item) $ do
|
||||||
|
modifyItem from Nothing
|
||||||
|
modifyItem to item
|
||||||
|
--
|
||||||
|
2.23.1
|
||||||
|
|
120
pkgs/development/haskell-modules/patches/darcs-setup.patch
Normal file
120
pkgs/development/haskell-modules/patches/darcs-setup.patch
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
--- darcs-2.14.2/Setup.hs 2019-01-27 03:14:51.000000000 +1300
|
||||||
|
+++ darcs.net/Setup.hs 2019-10-18 02:41:57.000000000 +1300
|
||||||
|
@@ -11,7 +11,9 @@
|
||||||
|
, TestSuite(testBuildInfo)
|
||||||
|
, updatePackageDescription
|
||||||
|
, cppOptions, ccOptions
|
||||||
|
- , library, libBuildInfo, otherModules )
|
||||||
|
+ , library, libBuildInfo, otherModules
|
||||||
|
+ , ComponentName(CExeName)
|
||||||
|
+ )
|
||||||
|
import Distribution.Package
|
||||||
|
( packageVersion )
|
||||||
|
import Distribution.Version( Version )
|
||||||
|
@@ -21,24 +23,27 @@
|
||||||
|
import Distribution.Simple.Setup
|
||||||
|
(buildVerbosity, copyDest, copyVerbosity, fromFlag,
|
||||||
|
haddockVerbosity, installVerbosity, sDistVerbosity, replVerbosity )
|
||||||
|
-import Distribution.Simple.BuildPaths ( autogenModulesDir )
|
||||||
|
+import Distribution.Simple.BuildPaths ( autogenPackageModulesDir )
|
||||||
|
import Distribution.System
|
||||||
|
( OS(Windows), buildOS )
|
||||||
|
import Distribution.Simple.Utils
|
||||||
|
(copyFiles, createDirectoryIfMissingVerbose, rawSystemStdout,
|
||||||
|
- rewriteFile )
|
||||||
|
+ rewriteFileEx)
|
||||||
|
+import Distribution.Types.UnqualComponentName
|
||||||
|
import Distribution.Verbosity
|
||||||
|
- ( Verbosity )
|
||||||
|
+ ( Verbosity, silent )
|
||||||
|
import Distribution.Text
|
||||||
|
( display )
|
||||||
|
-import Control.Monad ( unless, void )
|
||||||
|
|
||||||
|
+import Control.Monad ( unless, when, void )
|
||||||
|
import System.Directory
|
||||||
|
( doesDirectoryExist, doesFileExist )
|
||||||
|
import System.IO
|
||||||
|
( openFile, IOMode(..) )
|
||||||
|
import System.Process (runProcess)
|
||||||
|
import Data.List( isInfixOf, lines )
|
||||||
|
+import qualified Data.Map as M
|
||||||
|
+import Data.Maybe ( isJust )
|
||||||
|
import System.FilePath ( (</>) )
|
||||||
|
import Foreign.Marshal.Utils ( with )
|
||||||
|
import Foreign.Storable ( peek )
|
||||||
|
@@ -75,8 +80,8 @@
|
||||||
|
verb = fromFlag $ sDistVerbosity flags
|
||||||
|
x <- versionPatches verb pkgVer
|
||||||
|
y <- context verb
|
||||||
|
- rewriteFile "release/distributed-version" $ show x
|
||||||
|
- rewriteFile "release/distributed-context" $ show y
|
||||||
|
+ rewriteFileEx silent "release/distributed-version" $ show x
|
||||||
|
+ rewriteFileEx silent "release/distributed-context" $ show y
|
||||||
|
putStrLn "about to hand over"
|
||||||
|
let pkg' = pkg { library = sanity (library pkg) }
|
||||||
|
sanity (Just lib) = Just $ lib { libBuildInfo = sanity' $ libBuildInfo lib }
|
||||||
|
@@ -105,8 +110,7 @@
|
||||||
|
littleEndian <- testEndianness
|
||||||
|
let args = ("-DPACKAGE_VERSION=" ++ show' version) :
|
||||||
|
[arg | (arg, True) <- -- include fst iff snd.
|
||||||
|
- [-- We have MAPI iff building on/for Windows.
|
||||||
|
- ("-DHAVE_MAPI", buildOS == Windows),
|
||||||
|
+ [
|
||||||
|
("-DLITTLEENDIAN", littleEndian),
|
||||||
|
("-DBIGENDIAN", not littleEndian)]]
|
||||||
|
bi = emptyBuildInfo { cppOptions = args, ccOptions = args }
|
||||||
|
@@ -133,20 +137,26 @@
|
||||||
|
-- man page
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
+hasDarcsExe :: LocalBuildInfo -> Bool
|
||||||
|
+hasDarcsExe = isJust . M.lookup darcsExe . componentNameMap where
|
||||||
|
+ darcsExe = CExeName (mkUnqualComponentName "darcs")
|
||||||
|
+
|
||||||
|
buildManpage :: LocalBuildInfo -> IO ()
|
||||||
|
-buildManpage lbi = do
|
||||||
|
- let darcs = buildDir lbi </> "darcs/darcs"
|
||||||
|
- manpage = buildDir lbi </> "darcs/darcs.1"
|
||||||
|
- manpageHandle <- openFile manpage WriteMode
|
||||||
|
- void $ runProcess darcs ["help","manpage"]
|
||||||
|
- Nothing Nothing Nothing (Just manpageHandle) Nothing
|
||||||
|
+buildManpage lbi =
|
||||||
|
+ when (hasDarcsExe lbi) $ do
|
||||||
|
+ let darcs = buildDir lbi </> "darcs/darcs"
|
||||||
|
+ manpage = buildDir lbi </> "darcs/darcs.1"
|
||||||
|
+ manpageHandle <- openFile manpage WriteMode
|
||||||
|
+ void $ runProcess darcs ["help","manpage"]
|
||||||
|
+ Nothing Nothing Nothing (Just manpageHandle) Nothing
|
||||||
|
|
||||||
|
-installManpage :: PackageDescription -> LocalBuildInfo
|
||||||
|
- -> Verbosity -> CopyDest -> IO ()
|
||||||
|
+installManpage :: PackageDescription -> LocalBuildInfo -> Verbosity -> CopyDest -> IO ()
|
||||||
|
installManpage pkg lbi verbosity copy =
|
||||||
|
- copyFiles verbosity
|
||||||
|
- (mandir (absoluteInstallDirs pkg lbi copy) </> "man1")
|
||||||
|
- [(buildDir lbi </> "darcs", "darcs.1")]
|
||||||
|
+ when (hasDarcsExe lbi) $
|
||||||
|
+ copyFiles
|
||||||
|
+ verbosity
|
||||||
|
+ (mandir (absoluteInstallDirs pkg lbi copy) </> "man1")
|
||||||
|
+ [(buildDir lbi </> "darcs", "darcs.1")]
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- version module
|
||||||
|
@@ -187,12 +197,13 @@
|
||||||
|
generateVersionModule :: Verbosity -> LocalBuildInfo
|
||||||
|
-> String -> String -> IO ()
|
||||||
|
generateVersionModule verbosity lbi version state = do
|
||||||
|
- let dir = autogenModulesDir lbi
|
||||||
|
+ let dir = autogenPackageModulesDir lbi
|
||||||
|
createDirectoryIfMissingVerbose verbosity True dir
|
||||||
|
ctx <- context verbosity
|
||||||
|
hash <- weakhash verbosity
|
||||||
|
- rewriteFile (dir </> "Version.hs") $ unlines
|
||||||
|
+ rewriteFileEx silent (dir </> "Version.hs") $ unlines
|
||||||
|
["module Version where"
|
||||||
|
+ ,"import Darcs.Prelude"
|
||||||
|
,"version, weakhash, context :: String"
|
||||||
|
,"version = \"" ++ version ++ " (" ++ state ++ ")\""
|
||||||
|
,"weakhash = " ++ case hash of
|
|
@ -18947,7 +18947,7 @@ in
|
||||||
|
|
||||||
dablin = callPackage ../applications/radio/dablin { };
|
dablin = callPackage ../applications/radio/dablin { };
|
||||||
|
|
||||||
darcs = haskell.lib.overrideCabal (haskell.lib.justStaticExecutables haskell.packages.ghc865.darcs) (drv: {
|
darcs = haskell.lib.overrideCabal (haskell.lib.justStaticExecutables haskellPackages.darcs) (drv: {
|
||||||
configureFlags = (stdenv.lib.remove "-flibrary" drv.configureFlags or []) ++ ["-f-library"];
|
configureFlags = (stdenv.lib.remove "-flibrary" drv.configureFlags or []) ++ ["-f-library"];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue