cabal-debian 4.35.9 → 4.36
raw patch · 16 files changed
+309/−24 lines, 16 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Debian.Debianize.Prelude: mkPackageName :: String -> PackageName
+ Debian.Debianize.Prelude: mkVersion :: [Int] -> Version
+ Debian.Debianize.Prelude: mkVersion' :: Version -> Version
+ Debian.Debianize.Prelude: unPackageName :: PackageName -> String
+ Debian.Debianize.Prelude: versionNumbers :: Version -> [Int]
Files
- cabal-debian.cabal +1/−1
- src/Debian/Debianize/BasicInfo.hs +9/−0
- src/Debian/Debianize/BuildDependencies.hs +39/−13
- src/Debian/Debianize/Bundled.hs +28/−1
- src/Debian/Debianize/CopyrightDescription.hs +4/−0
- src/Debian/Debianize/DebianName.hs +15/−1
- src/Debian/Debianize/Details.hs +33/−1
- src/Debian/Debianize/Finalize.hs +35/−0
- src/Debian/Debianize/Goodies.hs +9/−0
- src/Debian/Debianize/InputDebian.hs +8/−0
- src/Debian/Debianize/Optparse.hs +23/−0
- src/Debian/Debianize/Prelude.hs +38/−1
- src/Debian/Debianize/VersionSplits.hs +16/−2
- src/Debian/GHC.hs +42/−2
- src/Debian/Orphans.hs +8/−1
- src/Debian/Policy.hs +1/−1
cabal-debian.cabal view
@@ -1,5 +1,5 @@ Name: cabal-debian-Version: 4.35.9+Version: 4.36 Copyright: Copyright (c) 2007-2014, David Fox, Jeremy Shaw License: BSD3 License-File: LICENSE
src/Debian/Debianize/BasicInfo.hs view
@@ -27,7 +27,11 @@ import Debian.Debianize.Prelude (read') import Debian.Orphans () import Distribution.Compiler (CompilerFlavor(..))+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.PackageDescription as Cabal (FlagName, mkFlagName)+#else import Distribution.PackageDescription as Cabal (FlagName(FlagName))+#endif import Prelude hiding (break, lines, log, null, readFile, sum) import System.Console.GetOpt (ArgDescr(ReqArg, NoArg), OptDescr(Option)) import System.FilePath ((</>))@@ -118,5 +122,10 @@ -- Lifted from Distribution.Simple.Setup, since it's not exported. flagList :: String -> [(FlagName, Bool)] flagList = map tagWithValue . words+#if MIN_VERSION_Cabal(2,0,0)+ where tagWithValue ('-':name) = (mkFlagName (map toLower name), False)+ tagWithValue name = (mkFlagName (map toLower name), True)+#else where tagWithValue ('-':name) = (FlagName (map toLower name), False) tagWithValue name = (FlagName (map toLower name), True)+#endif
src/Debian/Debianize/BuildDependencies.hs view
@@ -14,11 +14,11 @@ import Control.Monad.Trans (liftIO, MonadIO) import Data.Char (isSpace, toLower) import Data.Function (on)-import Data.List as List (filter, groupBy, map, minimumBy, nub, sortBy)+import Data.List as List (filter, groupBy, intercalate, map, minimumBy, nub, sortBy) import Data.Map as Map (lookup, Map)-import Data.Maybe (catMaybes, fromMaybe, isJust, isNothing, listToMaybe)+import Data.Maybe (catMaybes, fromMaybe, isJust, isNothing, listToMaybe, mapMaybe) import Data.Set as Set (empty, fold, fromList, map, member, Set, singleton, toList, union)-import Data.Version (showVersion, Version)+import Debian.Debianize.Prelude import Debian.Debianize.BasicInfo (buildEnv, compilerFlavor, EnvSet(dependOS)) import Debian.Debianize.Bundled (builtIn) import qualified Debian.Debianize.DebInfo as D@@ -34,11 +34,14 @@ import qualified Debian.Relation as D (BinPkgName(BinPkgName), Relation(..), Relations, VersionReq(EEQ, GRE, LTE, SGR, SLT)) import Debian.Version (DebianVersion, parseDebianVersion') import Distribution.Compiler (CompilerFlavor(..))-import Distribution.Package (Dependency(..), PackageIdentifier(pkgName, pkgVersion), PackageName(PackageName))-import Distribution.PackageDescription (PackageDescription)+import Distribution.Package (Dependency(..), PackageIdentifier(pkgName, pkgVersion), PackageName) import Distribution.PackageDescription as Cabal (BuildInfo(..), BuildInfo(buildTools, extraLibs, pkgconfigDepends), Library(..), Executable(..), TestSuite(..))+import Distribution.PackageDescription (PackageDescription) import qualified Distribution.PackageDescription as Cabal (PackageDescription(library, executables, testSuites))---import Distribution.Text (display)+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Types.LegacyExeDependency (LegacyExeDependency(..))+import Distribution.Types.PkgconfigDependency (PkgconfigDependency(..))+#endif import Distribution.Version (anyVersion, asVersionIntervals, earlierVersion, foldVersionRange', fromVersionIntervals, intersectVersionRanges, isNoVersion, laterVersion, orEarlierVersion, orLaterVersion, toVersionIntervals, unionVersionRanges, VersionRange, withinVersion) import Distribution.Version.Invert (invertVersionRange) import Prelude hiding (init, log, map, unlines, unlines, writeFile)@@ -80,11 +83,20 @@ allBuildDepends buildInfos = allBuildDepends' (mergeCabalDependencies $ concatMap Cabal.targetBuildDepends buildInfos)- (mergeCabalDependencies $ concatMap buildTools buildInfos)- (mergeCabalDependencies $ concatMap pkgconfigDepends buildInfos)+ (mergeCabalDependencies $ mapMaybe convertLegacy $ concatMap buildTools buildInfos)+ (mergeCabalDependencies $ mapMaybe convertPkgconfig $ concatMap pkgconfigDepends buildInfos) (concatMap extraLibs buildInfos) >>= return {- . List.filter (not . selfDependency (Cabal.package pkgDesc)) -} where+#if MIN_VERSION_Cabal(2,0,0)+ convertLegacy :: LegacyExeDependency -> Maybe Dependency+ convertLegacy = const Nothing+ convertPkgconfig :: PkgconfigDependency -> Maybe Dependency+ convertPkgconfig = const Nothing+#else+ convertLegacy = Just+ convertPkgconfig = Just+#endif allBuildDepends' :: Monad m => [Dependency] -> [Dependency] -> [Dependency] -> [String] -> CabalT m [Dependency_] allBuildDepends' buildDepends' buildTools' pkgconfigDepends' extraLibs' = do atoms <- get@@ -125,6 +137,11 @@ binDeps <- allBuildDepends (List.map buildInfo (Cabal.executables pkgDesc)) testDeps <- allBuildDepends (List.map testBuildInfo (Cabal.testSuites pkgDesc)) + liftIO (putStrLn ("library dependencies: " ++ show libDeps))+ liftIO (putStrLn ("executable dependencies: " ++ show binDeps))+ liftIO (putStrLn (intercalate "\n " ("executables:" : fmap show (Cabal.executables pkgDesc))))+ liftIO (putStrLn ("test suite dependencies: " ++ show testDeps))+ testsStatus <- use (A.debInfo . D.testsStatus) cDeps <- nub . concat . concat <$> sequence@@ -217,12 +234,12 @@ return [] adapt :: Map.Map String Relations -> Dependency_ -> [Relations]-adapt mp (PkgConfigDepends (Dependency (PackageName pkg) _)) =- maybe (aptFile pkg) (: []) (Map.lookup pkg mp)-adapt mp (BuildTools (Dependency (PackageName pkg) _)) =- maybe (aptFile pkg) (: []) (Map.lookup pkg mp)+adapt mp (PkgConfigDepends (Dependency pkg _)) =+ maybe (aptFile (unPackageName pkg)) (: []) (Map.lookup (unPackageName pkg) mp)+adapt mp (BuildTools (Dependency pkg _)) =+ maybe (aptFile (unPackageName pkg)) (: []) (Map.lookup (unPackageName pkg) mp) adapt _flags (ExtraLibs x) = [x]-adapt _flags (BuildDepends (Dependency (PackageName pkg) _)) = [[[D.Rel (D.BinPkgName pkg) Nothing Nothing]]]+adapt _flags (BuildDepends (Dependency pkg _)) = [[[D.Rel (D.BinPkgName (unPackageName pkg)) Nothing Nothing]]] -- There are three reasons this may not work, or may work -- incorrectly: (1) the build environment may be a different@@ -283,10 +300,16 @@ (\ v -> debianVersion' name v >>= \ dv -> return $ Rel' (D.Rel dname (Just (D.SLT dv)) Nothing)) (\ v -> debianVersion' name v >>= \ dv -> return $ Rel' (D.Rel dname (Just (D.GRE dv)) Nothing)) (\ v -> debianVersion' name v >>= \ dv -> return $ Rel' (D.Rel dname (Just (D.LTE dv)) Nothing))+#if MIN_VERSION_Cabal(2,0,0) (\ x y -> debianVersion' name x >>= \ dvx -> debianVersion' name y >>= \ dvy -> return $ And [Rel' (D.Rel dname (Just (D.GRE dvx)) Nothing), Rel' (D.Rel dname (Just (D.SLT dvy)) Nothing)])+#endif+ (\ x y -> debianVersion' name x >>= \ dvx ->+ debianVersion' name y >>= \ dvy ->+ return $ And [Rel' (D.Rel dname (Just (D.GRE dvx)) Nothing),+ Rel' (D.Rel dname (Just (D.SLT dvy)) Nothing)]) (\ x y -> x >>= \ x' -> y >>= \ y' -> return $ Or [x', y']) (\ x y -> x >>= \ x' -> y >>= \ y' -> return $ And [x', y']) id@@ -310,6 +333,9 @@ orLaterVersion orEarlierVersion (\ lb ub -> intersectVersionRanges (orLaterVersion lb) (earlierVersion ub))+#if MIN_VERSION_Cabal(2,0,0)+ (\ lb ub -> intersectVersionRanges (orLaterVersion lb) (earlierVersion ub))+#endif unionVersionRanges intersectVersionRanges id
src/Debian/Debianize/Bundled.hs view
@@ -32,12 +32,18 @@ import Data.List (groupBy, intercalate, isPrefixOf, stripPrefix) import Data.Maybe (listToMaybe, mapMaybe) import Data.Set as Set (difference, fromList)-import Data.Version (parseVersion, Version(..)) import Debian.GHC ({-instance Memoizable CompilerFlavor-}) import Debian.Relation (BinPkgName(..)) import Debian.Relation.ByteString () import Debian.Version (DebianVersion, parseDebianVersion', prettyDebianVersion)+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Package (mkPackageName, PackageIdentifier(..), unPackageName)+import Data.Version (parseVersion)+import Distribution.Version(mkVersion, mkVersion', Version)+#else+import Data.Version (parseVersion, Version(..)) import Distribution.Package (PackageIdentifier(..), PackageName(..))+#endif #if MIN_VERSION_Cabal(1,22,0) import Distribution.Simple.Compiler (CompilerFlavor(GHCJS)) #else@@ -51,8 +57,11 @@ import Text.Regex.TDFA ((=~)) #if MIN_VERSION_base(4,8,0)+#if !MIN_VERSION_Cabal(2,0,0) import Data.Version (makeVersion) #else+#endif+#else import Data.Monoid (mempty) #if !MIN_VERSION_Cabal(1,22,0)@@ -169,23 +178,41 @@ -- So be it. parsePackageIdentifier :: ReadP PackageIdentifier parsePackageIdentifier = do+#if MIN_VERSION_Cabal(2,0,0)+ makeId <$> ((,) <$> endBy1 (munch1 isAlphaNum) (char '-') <*> parseCabalVersion)+ where+ makeId :: ([String], Version) -> PackageIdentifier+ makeId (xs, v) = PackageIdentifier {pkgName = mkPackageName (intercalate "-" xs), pkgVersion = v}+#else makeId <$> ((,) <$> endBy1 (munch1 isAlphaNum) (char '-') <*> parseVersion) where makeId :: ([String], Version) -> PackageIdentifier makeId (xs, v) = PackageIdentifier {pkgName = PackageName (intercalate "-" xs), pkgVersion = v}+#endif parseMaybe :: ReadP a -> String -> Maybe a parseMaybe p = listToMaybe . map fst . filter ((== "") . snd) . readP_to_S p parseVersion' :: String -> Maybe Version+#if MIN_VERSION_Cabal(2,0,0)+parseVersion' = parseMaybe parseCabalVersion++parseCabalVersion :: ReadP Version+parseCabalVersion = fmap mkVersion' parseVersion+#else parseVersion' = parseMaybe parseVersion+#endif parsePackageIdentifier' :: String -> Maybe PackageIdentifier parsePackageIdentifier' = parseMaybe parsePackageIdentifier tests :: Test tests = TestList [ TestCase (assertEqual "Bundled1"+#if MIN_VERSION_Cabal(2,0,0)+ (Just (PackageIdentifier (mkPackageName "HUnit") (mkVersion [1,2,3])))+#else (Just (PackageIdentifier (PackageName "HUnit") (makeVersion [1,2,3])))+#endif (parseMaybe parsePackageIdentifier "HUnit-1.2.3")) , TestCase (assertEqual "Bundled2" Nothing
src/Debian/Debianize/CopyrightDescription.hs view
@@ -54,7 +54,11 @@ import Text.PrettyPrint.HughesPJClass (Pretty(pPrint), text) unPackageName :: Cabal.PackageName -> String+#if MIN_VERSION_Cabal(2,0,0)+unPackageName p = Cabal.unPackageName p+#else unPackageName (Cabal.PackageName x) = x+#endif -- | Description of the machine readable debian/copyright file. A -- special case is used to represeent the old style free format file -
src/Debian/Debianize/DebianName.hs view
@@ -18,7 +18,6 @@ import Control.Lens import Data.Char (toLower) import Data.Map as Map (alter, lookup)-import Data.Version (showVersion, Version) import Debian.Debianize.Monad (CabalT) import Debian.Debianize.CabalInfo as A (debianNameMap, packageDescription, debInfo) import Debian.Debianize.BinaryDebDescription as Debian (PackageType(..))@@ -29,7 +28,13 @@ import qualified Debian.Relation as D (VersionReq(EEQ)) import Debian.Version (parseDebianVersion') import Distribution.Compiler (CompilerFlavor(..))+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Package (Dependency(..), PackageIdentifier(..), PackageName, unPackageName)+import Distribution.Version (showVersion, Version)+#else+import Data.Version (showVersion, Version) import Distribution.Package (Dependency(..), PackageIdentifier(..), PackageName(PackageName))+#endif import qualified Distribution.PackageDescription as Cabal (PackageDescription(package)) import Prelude hiding (unlines) @@ -60,7 +65,11 @@ pkgDesc <- use packageDescription let pkgId = Cabal.package pkgDesc nameMap <- use A.debianNameMap+#if MIN_VERSION_Cabal(2,0,0)+ let pname = pkgName pkgId+#else let pname@(PackageName _) = pkgName pkgId+#endif version = (Just (D.EEQ (parseDebianVersion' (showVersion (pkgVersion pkgId))))) case (nameBase, Map.lookup (pkgName pkgId) nameMap) of (Just base, _) -> return base@@ -91,8 +100,13 @@ where prefix = "lib" ++ map toLower (show hc) ++ "-" debianBaseName :: PackageName -> DebBase+#if MIN_VERSION_Cabal(2,0,0)+debianBaseName p =+ DebBase (map (fixChar . toLower) (unPackageName p))+#else debianBaseName (PackageName name) = DebBase (map (fixChar . toLower) name)+#endif where -- Underscore is prohibited in debian package names. fixChar :: Char -> Char
src/Debian/Debianize/Details.hs view
@@ -1,6 +1,7 @@ -- | Detailed information about the specific repositories such as -- debian or seereason - in particular how cabal names are mapped to -- debian.+{-# LANGUAGE CPP #-} {-# OPTIONS -Wall #-} module Debian.Debianize.Details ( debianDefaults@@ -8,14 +9,19 @@ import Control.Lens import Data.Map as Map (insert)-import Data.Version (Version(Version)) import Debian.Debianize.DebianName (mapCabal, splitCabal) import Debian.Debianize.Monad (CabalT) import Debian.Debianize.CabalInfo as A (epochMap, debInfo) import Debian.Debianize.DebInfo as D (execMap) import Debian.Debianize.VersionSplits (DebBase(DebBase)) import Debian.Relation (BinPkgName(BinPkgName), Relation(Rel))+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Package (mkPackageName)+import Distribution.Version (mkVersion)+#else+import Data.Version (Version(Version)) import Distribution.Package (PackageName(PackageName))+#endif -- | Update the CabalInfo value in the CabalT state with some details about -- the debian repository - special cases for how some cabal packages@@ -23,25 +29,51 @@ debianDefaults :: Monad m => CabalT m () debianDefaults = do -- These are the two epoch names I know about in the debian repo+#if MIN_VERSION_Cabal(2,0,0)+ A.epochMap %= Map.insert (mkPackageName "HaXml") 1+ A.epochMap %= Map.insert (mkPackageName "HTTP") 1+#else A.epochMap %= Map.insert (PackageName "HaXml") 1 A.epochMap %= Map.insert (PackageName "HTTP") 1+#endif -- Associate some build tools and their corresponding -- (eponymous) debian package names mapM_ (\name -> (A.debInfo . D.execMap) %= Map.insert name [[Rel (BinPkgName name) Nothing Nothing]]) ["ghc", "happy", "alex", "hsx2hs"] -- The parsec debs are suffixed with either "2" or "3"+#if MIN_VERSION_Cabal(2,0,0)+ mapCabal (mkPackageName "parsec") (DebBase "parsec3")+#else mapCabal (PackageName "parsec") (DebBase "parsec3")+#endif -- Similar split for quickcheck+#if MIN_VERSION_Cabal(2,0,0)+ mapCabal (mkPackageName "QuickCheck") (DebBase "quickcheck2")+#else mapCabal (PackageName "QuickCheck") (DebBase "quickcheck2")+#endif -- Something was required for this package at one time - it -- looks like a no-op now+#if MIN_VERSION_Cabal(2,0,0)+ mapCabal (mkPackageName "gtk2hs-buildtools") (DebBase "gtk2hs-buildtools")+#else mapCabal (PackageName "gtk2hs-buildtools") (DebBase "gtk2hs-buildtools")+#endif -- Upgrade transformers to 0.4 - no don't! -- remapCabal (PackageName "transformers") (DebBase "transformers4") -- remapCabal (PackageName "haskeline") (DebBase "haskeline0713")+#if MIN_VERSION_Cabal(2,0,0)+ mapCabal (mkPackageName "haskell-src-exts") (DebBase "src-exts")+ mapCabal (mkPackageName "haskell-src-meta") (DebBase "src-meta")+ mapCabal (mkPackageName "Cabal") (DebBase "cabal")++ mapCabal (mkPackageName "happstack-authenticate") (DebBase "happstack-authenticate")+ splitCabal (mkPackageName "happstack-authenticate") (DebBase "happstack-authenticate-0") (mkVersion [2])+#else mapCabal (PackageName "haskell-src-exts") (DebBase "src-exts") mapCabal (PackageName "haskell-src-meta") (DebBase "src-meta") mapCabal (PackageName "Cabal") (DebBase "cabal") mapCabal (PackageName "happstack-authenticate") (DebBase "happstack-authenticate") splitCabal (PackageName "happstack-authenticate") (DebBase "happstack-authenticate-0") (Version [2] [])+#endif
src/Debian/Debianize/Finalize.hs view
@@ -53,8 +53,15 @@ #if MIN_VERSION_Cabal(1,22,0) import Distribution.Compiler (CompilerFlavor(GHCJS)) #endif+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Package (Dependency(..), PackageIdentifier(..), PackageName, mkPackageName, unPackageName)+import Distribution.PackageDescription as Cabal (allBuildInfo, author, BuildInfo(buildable, extraLibs), Executable(buildInfo, exeName), FlagName, mkFlagName, unFlagName, maintainer, PackageDescription(testSuites))+import Distribution.Types.UnqualComponentName+import Distribution.Utils.ShortText+#else import Distribution.Package (Dependency(..), PackageIdentifier(..), PackageName(PackageName)) import Distribution.PackageDescription as Cabal (allBuildInfo, author, BuildInfo(buildable, extraLibs), Executable(buildInfo, exeName), FlagName(FlagName), maintainer, PackageDescription(testSuites))+#endif import qualified Distribution.PackageDescription as Cabal (PackageDescription(dataFiles, executables, library, package)) import Prelude hiding (init, log, map, unlines, unlines, writeFile) import System.Directory (doesFileExist)@@ -368,7 +375,11 @@ officialSettings :: (Monad m, Functor m) => CabalT m () officialSettings = do pkgDesc <- use A.packageDescription+#if MIN_VERSION_Cabal(2,0,0)+ let cabal = pkgName (Cabal.package pkgDesc)+#else let PackageName cabal = pkgName (Cabal.package pkgDesc)+#endif zoom A.debInfo $ do let officialError = error "officialSettings: no sourcePackageName" @@ -378,7 +389,11 @@ let packagesURI = "https://anonscm.debian.org/cgit/pkg-haskell/DHG_packages.git/tree/p/" <> pack src zoom D.control $ do S.standardsVersion .?= Just (parseStandardsVersion "3.9.8")+#if MIN_VERSION_Cabal(2,0,0)+ S.homepage .?= Just ("http://hackage.haskell.org/package/" <> pack (unPackageName cabal))+#else S.homepage .?= Just ("http://hackage.haskell.org/package/" <> pack cabal)+#endif S.vcsFields %= Set.union (Set.fromList [ S.VCSBrowser packagesURI , S.VCSGit "https://anonscm.debian.org/cgit/pkg-haskell/DHG_packages.git"@@ -491,12 +506,23 @@ -- The names of cabal executables that go into eponymous debs insExecPkg <- use (A.debInfo . D.executable) >>= return . Set.map ename . Set.fromList . elems +#if MIN_VERSION_Cabal(2,0,0)+ let installedData :: Set (FilePath, FilePath)+ installedData = Set.map (\ a -> (a, a)) $ Set.unions (Map.elems installedDataMap)+ installedExec :: Set String+#else let installedData = Set.map (\ a -> (a, a)) $ Set.unions (Map.elems installedDataMap)+#endif installedExec = Set.unions (Map.elems installedExecMap) prefixPath <- dataTop let dataFilePaths = Set.fromList (zip (List.map (prefixPath </>) (Cabal.dataFiles pkgDesc)) (Cabal.dataFiles pkgDesc)) :: Set (FilePath, FilePath)+#if MIN_VERSION_Cabal(2,0,0)+ execFilePaths :: Set FilePath+ execFilePaths = Set.map (unUnqualComponentName . Cabal.exeName) (Set.filter (Cabal.buildable . Cabal.buildInfo) (Set.fromList (Cabal.executables pkgDesc))) :: Set FilePath+#else execFilePaths = Set.map Cabal.exeName (Set.filter (Cabal.buildable . Cabal.buildInfo) (Set.fromList (Cabal.executables pkgDesc))) :: Set FilePath+#endif let availableData = Set.union installedData dataFilePaths availableExec = Set.union installedExec execFilePaths @@ -696,8 +722,17 @@ -- Lifted from Distribution.Simple.Setup, since it's not exported. flagList :: String -> [(FlagName, Bool)] flagList = List.map tagWithValue . words+#if MIN_VERSION_Cabal(2,0,0)+ where tagWithValue ('-':name) = (mkFlagName (List.map toLower name), False)+ tagWithValue name = (mkFlagName (List.map toLower name), True)+#else where tagWithValue ('-':name) = (FlagName (List.map toLower name), False) tagWithValue name = (FlagName (List.map toLower name), True)+#endif flagString :: [(FlagName, Bool)] -> String+#if MIN_VERSION_Cabal(2,0,0)+flagString = List.intercalate " " . List.map (\ (s, sense) -> "-f" ++ (if sense then "" else "-") ++ unFlagName s)+#else flagString = List.intercalate " " . List.map (\ (FlagName s, sense) -> "-f" ++ (if sense then "" else "-") ++ s)+#endif
src/Debian/Debianize/Goodies.hs view
@@ -40,7 +40,11 @@ import Debian.Policy (apacheAccessLog, apacheErrorLog, apacheLogDirectory, databaseDirectory, dataDirectory, serverAccessLog, serverAppLog) import Debian.Pretty (ppShow, ppText) import Debian.Relation (BinPkgName(BinPkgName), Relation(Rel))+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Package (PackageName, unPackageName)+#else import Distribution.Package (PackageName(PackageName))+#endif import Distribution.PackageDescription as Cabal (PackageDescription(package, synopsis, description)) import Distribution.Simple.Build.PathsModule (pkgPathEnvVar) import Prelude hiding (init, log, map, unlines, writeFile)@@ -170,8 +174,13 @@ , "--http-port", show (D.port x)] watchAtom :: PackageName -> Text+#if MIN_VERSION_Cabal(2,0,0)+watchAtom pkgname =+ pack $ "version=3\nhttp://hackage.haskell.org/package/" ++ unPackageName pkgname ++ "/distro-monitor .*-([0-9\\.]+)\\.(?:zip|tgz|tbz|txz|(?:tar\\.(?:gz|bz2|xz)))\n"+#else watchAtom (PackageName pkgname) = pack $ "version=3\nhttp://hackage.haskell.org/package/" ++ pkgname ++ "/distro-monitor .*-([0-9\\.]+)\\.(?:zip|tgz|tbz|txz|(?:tar\\.(?:gz|bz2|xz)))\n"+#endif siteAtoms :: PackageDescription -> BinPkgName -> D.Site -> CabalInfo -> CabalInfo siteAtoms pkgDesc b site =
src/Debian/Debianize/InputDebian.hs view
@@ -40,7 +40,11 @@ import Debian.Policy (parseMaintainer, parsePackageArchitectures, parseStandardsVersion, parseUploaders, readPriority, readSection, readMultiArch, readSourceFormat, Section(..)) import Debian.Relation (BinPkgName(..), parseRelations, Relations, SrcPkgName(..)) --import Debug.Trace (trace)+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Package (PackageIdentifier(..), PackageName(..), unPackageName)+#else import Distribution.Package (PackageIdentifier(..), PackageName(..))+#endif import qualified Distribution.PackageDescription as Cabal (dataDir, PackageDescription(package)) import Prelude hiding (break, lines, log, null, readFile, sum, words) import System.Directory (doesFileExist)@@ -296,8 +300,12 @@ dataDest :: Monad m => CabalT m FilePath dataDest = do d <- use packageDescription+#if MIN_VERSION_Cabal(2,0,0)+ return $ "usr/share" </> (unPackageName $ pkgName $ Cabal.package d)+#else return $ "usr/share" </> ((\ (PackageName x) -> x) $ pkgName $ Cabal.package d) +#endif -- | Where to look for the data-files dataTop :: Monad m => CabalT m FilePath dataTop = do
src/Debian/Debianize/Optparse.hs view
@@ -40,8 +40,13 @@ import Debian.Relation import Debian.Version (DebianVersion, parseDebianVersion') import Distribution.Compiler (CompilerFlavor(..))+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Package (PackageName, mkPackageName, unPackageName)+import Distribution.PackageDescription (FlagName, mkFlagName)+#else import Distribution.Package (PackageName(..)) import Distribution.PackageDescription (FlagName(FlagName))+#endif import GHC.Generics import System.Environment (getArgs) import System.FilePath(splitFileName, (</>))@@ -200,15 +205,28 @@ extraRelationsR = first BinPkgName <$> mappingR cabalDebMappingR :: O.ReadM CabalDebMapping+#if MIN_VERSION_Cabal(2,0,0)+cabalDebMappingR = CabalDebMapping . first mkPackageName <$> mappingR+#else cabalDebMappingR = CabalDebMapping . first PackageName <$> mappingR+#endif cabalEpochMappingR :: O.ReadM CabalEpochMapping+#if MIN_VERSION_Cabal(2,0,0)+cabalEpochMappingR = CabalEpochMapping . first mkPackageName <$> epochMappingR+#else cabalEpochMappingR = CabalEpochMapping . first PackageName <$> epochMappingR+#endif cabalFlagMappingR :: O.ReadM CabalFlagMapping cabalFlagMappingR = O.str >>= \case+#if MIN_VERSION_Cabal(2,0,0)+ ('-' : str) -> return $ CabalFlagMapping (mkFlagName str, False)+ str -> return $ CabalFlagMapping (mkFlagName str, True)+#else ('-' : str) -> return $ CabalFlagMapping (FlagName str, False) str -> return $ CabalFlagMapping (FlagName str, True)+#endif -- Here are parser for BehaviorAdjustment and next are parsers for -- every field of this data. Please, keep parsers declarations in@@ -638,8 +656,13 @@ D.debVersion .= _debianVersion D.uploadersOption %= (++ _uploaders) D.extraDevDeps %= (++ concatMap unpack _devDep)+#if MIN_VERSION_Cabal(2,0,0)+ forM_ _cabalDebMapping $ \(CabalDebMapping (pkg, rels)) -> do+ D.extraLibMap %= Map.insert (unPackageName pkg) rels+#else forM_ _cabalDebMapping $ \(CabalDebMapping (PackageName pkg, rels)) -> do D.extraLibMap %= Map.insert pkg rels+#endif addExtra _extraDepends B.depends addExtra _extraConflicts B.conflicts addExtra _extraProvides B.provides
src/Debian/Debianize/Prelude.hs view
@@ -1,6 +1,6 @@ -- | Functions and instances used by but not related to cabal-debian. -- These could conceivably be moved into more general libraries.-{-# LANGUAGE FlexibleContexts, FlexibleInstances, Rank2Types, ScopedTypeVariables #-}+{-# LANGUAGE CPP, FlexibleContexts, FlexibleInstances, Rank2Types, ScopedTypeVariables #-} {-# OPTIONS_GHC -Wall -fno-warn-orphans #-} module Debian.Debianize.Prelude ( curry3@@ -38,6 +38,18 @@ , fromSingleton , (.?=) , escapeDebianWildcards+#if MIN_VERSION_Cabal(2,0,0)+ -- Cabal has its own Version type starting in 2.0.0.0+ , module Distribution.Version+ , module Distribution.Package+#else+ , module Data.Version+ , mkPackageName+ , mkVersion+ , mkVersion'+ , versionNumbers+ , unPackageName+#endif ) where @@ -62,7 +74,13 @@ import qualified Debian.Relation as D (BinPkgName(BinPkgName), Relations) import Debian.Relation.Common () import Debian.Version (DebianVersion, parseDebianVersion', prettyDebianVersion)+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Package (PackageIdentifier(..), PackageName, unPackageName)+import Distribution.Version+#else import Distribution.Package (PackageIdentifier(..), PackageName(..))+import Data.Version+#endif import Distribution.Verbosity (intToVerbosity, Verbosity) import GHC.IO.Exception (ExitCode(ExitFailure, ExitSuccess), IOErrorType(InappropriateType, NoSuchThing), IOException(IOError, ioe_description, ioe_type)) import Prelude hiding (lookup, map)@@ -328,7 +346,11 @@ pPrint (PP p) = pPrint (PP (pkgName p)) <> text "-" <> pPrint (PP (pkgVersion p)) instance Pretty (PP PackageName) where+#if MIN_VERSION_Cabal(2,0,0)+ pPrint (PP p) = text (unPackageName p)+#else pPrint (PP (PackageName s)) = text s+#endif -- | Set @b@ if it currently isNothing and the argument isJust, that is -- 1. Nothing happens if the argument isNothing@@ -341,3 +363,18 @@ escapeDebianWildcards (c : more) | elem c "[]" = '\\' : c : escapeDebianWildcards more escapeDebianWildcards (c : more) = c : escapeDebianWildcards more escapeDebianWildcards "" = ""++#if !MIN_VERSION_Cabal(2,0,0)+mkPackageName :: String -> PackageName+mkPackageName = PackageName+mkVersion :: [Int] -> Version+mkVersion ns = Version ns []+mkVersion' :: Version -> Version+mkVersion' = id+versionNumbers :: Version -> [Int]+versionNumbers (Version ns _) = ns+#if !MIN_VERSION_Cabal(1,22,0)+unPackageName :: PackageName -> String+unPackageName (PackageName x) = x+#endif+#endif
src/Debian/Debianize/VersionSplits.hs view
@@ -1,6 +1,6 @@ -- | Convert between cabal and debian package names based on version -- number ranges.-{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances #-}+{-# LANGUAGE CPP, DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances #-} module Debian.Debianize.VersionSplits ( DebBase(DebBase, unDebBase) -- * Combinators for VersionSplits@@ -18,12 +18,18 @@ import Data.Generics (Data, Typeable) import Data.Map as Map (elems, Map, mapMaybeWithKey) import Data.Set as Set (fromList, Set, toList)-import Data.Version (showVersion, Version(Version)) import Debian.Debianize.Interspersed (foldTriples, Interspersed(leftmost, pairs, foldInverted)) import Debian.Orphans () import qualified Debian.Relation as D (VersionReq(..)) import Debian.Version (DebianVersion, parseDebianVersion')+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Package (PackageIdentifier(..), PackageName)+import Distribution.Package (mkPackageName)+import Distribution.Version (showVersion, Version)+#else+import Data.Version (showVersion, Version(Version)) import Distribution.Package (PackageIdentifier(..), PackageName(..))+#endif import Distribution.Version (anyVersion, earlierVersion, intersectVersionRanges, orLaterVersion, VersionRange) import Prelude hiding (init, log, unlines) @@ -63,7 +69,11 @@ -> DebBase -- ^ The name to use for versions older than the split -> VersionSplits -> VersionSplits+#if MIN_VERSION_Cabal(2,0,0)+insertSplit ver ltname sp@(VersionSplits {}) =+#else insertSplit ver@(Version _ _) ltname sp@(VersionSplits {}) =+#endif -- (\ x -> trace ("insertSplit " ++ show (ltname, ver, sp) ++ " -> " ++ show x) x) $ case splits sp of -- This is the oldest split, change oldestPackage and insert a new head pair@@ -104,7 +114,11 @@ cabalFromDebian mp base@(DebBase name) ver = case Set.toList pset of [x] -> x+#if MIN_VERSION_Cabal(2,0,0)+ [] -> mkPackageName name+#else [] -> PackageName name+#endif l -> error $ "Error, multiple cabal package names associated with " ++ show base ++ ": " ++ show l where -- Look for splits that involve the right DebBase and return the
src/Debian/GHC.hs view
@@ -30,9 +30,7 @@ import Control.Lens (_2, over) import Control.Monad.Trans (MonadIO, liftIO) import Data.Char (isSpace, toLower, toUpper)-import Data.Function.Memoize (deriveMemoizable, memoize, memoize2) import Data.List (intercalate, isPrefixOf)-import Data.Version (showVersion, Version(..), parseVersion) import Debian.Debianize.BinaryDebDescription (PackageType(..)) import Debian.Relation (BinPkgName(BinPkgName)) import Debian.Version (DebianVersion, parseDebianVersion')@@ -40,6 +38,15 @@ #if MIN_VERSION_Cabal(1,22,0) import Distribution.Compiler (CompilerInfo(..), unknownCompilerInfo, AbiTag(NoAbiTag)) #endif+#if MIN_VERSION_Cabal(2,0,0)+import Data.Function.Memoize (deriveMemoizable, Memoizable, memoize, memoize2, memoizeFinite)+import Distribution.Version (mkVersion', mkVersion, showVersion, Version, versionNumbers)+import Data.Version (parseVersion)+import Data.Word (Word64)+#else+import Data.Function.Memoize (deriveMemoizable, memoize, memoize2)+import Data.Version (showVersion, Version(..), parseVersion)+#endif import System.Console.GetOpt (ArgDescr(ReqArg), OptDescr(..)) import System.Directory (doesDirectoryExist) import System.Environment (getEnv)@@ -55,6 +62,9 @@ import Text.Read (readMaybe) import Text.Regex.TDFA ((=~)) +#if MIN_VERSION_Cabal(2,0,0)+instance Memoizable Word64 where memoize = memoizeFinite+#endif $(deriveMemoizable ''CompilerFlavor) $(deriveMemoizable ''Version) $(deriveMemoizable ''BinPkgName)@@ -82,7 +92,11 @@ toVersion :: String -> Maybe Version toVersion s = case filter (all isSpace . snd) (readP_to_S parseVersion s) of+#if MIN_VERSION_Cabal(2,0,0)+ [(v, _)] -> Just (mkVersion' v)+#else [(v, _)] -> Just v+#endif _ -> Nothing withCompilerVersion :: FilePath -> CompilerFlavor -> (DebianVersion -> a) -> Either String a@@ -100,20 +114,41 @@ -- | What version of Cabal goes with this version of GHC? hvrCabalVersion :: Version -> Version+#if MIN_VERSION_Cabal(2,0,0)+hvrCabalVersion v =+ case versionNumbers v of+ (m : n : _) | (m == 7 && n <= 7) || m < 7 -> mkVersion [1,16]+ (7 : n : _) | n <= 9 -> mkVersion [1,18]+ (7 : _) -> mkVersion [1,22]+ _ -> mkVersion [1,24]+#else hvrCabalVersion (Version (m : n : _) _) | (m == 7 && n <= 7) || m < 7 = Version [1,16] [] hvrCabalVersion (Version (7 : n : _) _) | n <= 9 = Version [1,18] [] hvrCabalVersion (Version (7 : _) _) = Version [1,22] [] hvrCabalVersion _ = Version [1,24] []+#endif -- | What version of Happy goes with this version of GHC? hvrHappyVersion :: Version -> Version+#if MIN_VERSION_Cabal(2,0,0)+hvrHappyVersion v =+ case versionNumbers v of+ (m : n : _) | (m == 7 && n <= 3) || m < 7 -> mkVersion [1,19,3]+ (7 : n : _) | n <= 2 -> mkVersion [1,19,3]+ _ -> mkVersion [1,19,5]+#else hvrHappyVersion (Version (m : n : _) _) | (m == 7 && n <= 3) || m < 7 = Version [1,19,3] [] hvrHappyVersion (Version (7 : n : _) _) | n <= 2 = Version [1,19,3] [] hvrHappyVersion _ = Version [1,19,5] []+#endif -- | What version of Alex goes with this version of GHC? hvrAlexVersion :: Version -> Version+#if MIN_VERSION_Cabal(2,0,0)+hvrAlexVersion _ = mkVersion [3,1,7]+#else hvrAlexVersion _ = Version [3,1,7] []+#endif withModifiedPATH :: MonadIO m => (String -> String) -> m a -> m a withModifiedPATH f action = do@@ -196,8 +231,13 @@ compilerIdFromDebianVersion :: CompilerFlavor -> DebianVersion -> CompilerId compilerIdFromDebianVersion hc debVersion =+#if MIN_VERSION_Cabal(2,0,0)+ let ds = versionNumbers (greatestLowerBound debVersion (map (\ d -> mkVersion [d]) [0..])) in+ CompilerId hc (greatestLowerBound debVersion (map (\ d -> mkVersion (ds ++ [d])) [0..]))+#else let (Version ds ts) = greatestLowerBound debVersion (map (\ d -> Version [d] []) [0..]) in CompilerId hc (greatestLowerBound debVersion (map (\ d -> Version (ds ++ [d]) ts) [0..]))+#endif where greatestLowerBound :: DebianVersion -> [Version] -> Version greatestLowerBound b xs = last $ takeWhile (\ v -> parseDebianVersion' (showVersion v) < b) xs
src/Debian/Orphans.hs view
@@ -7,7 +7,6 @@ import Data.List (intersperse, isPrefixOf) import Data.Maybe (fromMaybe) import Data.Monoid ((<>))-import Data.Version (showVersion, Version(..)) import Debian.Changes (ChangeLog(..), ChangeLogEntry(..)) import Debian.Pretty (PP(PP, unPP)) import Debian.Relation (ArchitectureReq(..), Relation(..), VersionReq(..))@@ -22,6 +21,11 @@ import Distribution.PackageDescription (Executable(..), PackageDescription(package)) import Distribution.Simple.Compiler (Compiler(..)) import Distribution.Version (foldVersionRange', VersionRange(..))+#if MIN_VERSION_Cabal(2,0,0)+import Distribution.Version (showVersion, Version)+#else+import Data.Version (showVersion, Version(..))+#endif import Language.Haskell.Extension (Language(..)) #if !MIN_VERSION_Cabal(1,21,0) import Language.Haskell.Extension (Extension(..), KnownExtension(..))@@ -132,6 +136,9 @@ (\ v -> text ">=" <> pPrint (PP v)) (\ v -> text "<=" <> pPrint (PP v)) (\ x _ -> text "=" <> pPrint (PP x) <> text ".*") -- not exactly right+#if MIN_VERSION_Cabal(2,0,0)+ (\ v _ -> text " >= " <> pPrint (PP v)) -- maybe this will do?+#endif (\ x y -> text "(" <> x <> text " || " <> y <> text ")") (\ x y -> text "(" <> x <> text " && " <> y <> text ")") (\ x -> text "(" <> x <> text ")")
src/Debian/Policy.hs view
@@ -126,7 +126,7 @@ -- installed. getDebhelperCompatLevel :: IO (Maybe Int) getDebhelperCompatLevel =- debianPackageVersion "debhelper" >>= return . fmap (read . takeWhile (/= '.') . version)+ debianPackageVersion "debhelper" >>= return . fmap (min 9 . read . takeWhile (/= '.') . version) data StandardsVersion = StandardsVersion Int Int Int (Maybe Int) deriving (Eq, Ord, Show, Data, Typeable)