packages feed

debian-build 0.3.0.0 → 0.4.0.0

raw patch · 6 files changed

+47/−35 lines, 6 files

Files

debian-build.cabal view
@@ -1,5 +1,5 @@ name:                debian-build-version:             0.3.0.0+version:             0.4.0.0 synopsis:            Debian package build sequence tools description:         This package provides build sequence functions                      for debian package, and includes on-the-fly
mains/odebuild.hs view
@@ -4,13 +4,16 @@  import Debian.Package.Data (Source, Hackage) import Debian.Package.Build-  (BuildMode (All), buildPackage, debi,+  (BuildMode (Bin, Src), buildPackage, debi,    baseDirCurrent, defaultConfig, Build, runBuild, liftTrace,    sourceDir, removeBuildDir, genSources, removeGhcLibrary)  +defualtModes :: [BuildMode]+defualtModes =  [Bin, Src]+ remove' :: Hackage -> Build ()-remove' =  liftTrace . removeGhcLibrary All+remove' hkg = liftTrace $ sequence_ [removeGhcLibrary m hkg | m <- defualtModes]  install' :: Source -> Build () install' src = do@@ -43,7 +46,7 @@ build :: Maybe String -> [String] -> Build (Source, Maybe Hackage) build mayRev opts = do   ((_, dir), src, mayH) <- source mayRev-  liftTrace $ buildPackage dir All opts+  liftTrace $ sequence_ [buildPackage dir m opts | m <- defualtModes]   return (src, mayH)  install :: Maybe String -> [String] -> Build ()
src/Debian/Package/Build/Command.hs view
@@ -35,6 +35,7 @@ import Data.Maybe (fromMaybe) import Control.Arrow ((&&&)) import Control.Applicative ((<$>))+import Control.Monad (unless) import Control.Monad.Trans.Class (lift) import System.FilePath ((<.>), takeDirectory) import qualified System.Directory as D@@ -42,7 +43,9 @@ import System.Exit (ExitCode (..)) import Data.Version (Version, versionBranch, showVersion) -import Debian.Package.Data (Hackage, ghcLibraryBinPackages, ghcLibraryPackages, Source, parseChangeLog, DebianVersion, readDebianVersion, origVersion')+import Debian.Package.Data+  (Hackage, ghcLibraryBinPackages, ghcLibraryPackages, ghcLibraryDocPackage,+   Source, parseChangeLog, DebianVersion, readDebianVersion, origVersion') import Debian.Package.Build.Monad (Trace, traceCommand, traceOut, putLog, bracketTrace_)  @@ -194,13 +197,16 @@ debi dir = withCurrentDir' dir . rawSystem' . (["sudo", "debi"] ++)  -- | Build mode, all or binary only-data BuildMode = All | Bin+data BuildMode = All | Bin | Src | Dep | Indep  -- | Build package using /debuild/ under specified directory buildPackage :: FilePath -> BuildMode -> [String] -> Trace () buildPackage dir mode opts = do-  let modeOpt All = []-      modeOpt Bin = ["-B"]+  let modeOpt All    =  []+      modeOpt Bin    =  ["-b"]+      modeOpt Src    =  ["-S"]+      modeOpt Dep    =  ["-B"]+      modeOpt Indep  =  ["-A"]   debuild dir $ ["-uc", "-us"] ++ modeOpt mode ++ opts  -- | Clean and build package using /debuild/ under specified directory@@ -212,6 +218,11 @@ -- | Remove ghc library packages under specified source package directory removeGhcLibrary :: BuildMode -> Hackage -> Trace () removeGhcLibrary mode hkg = do-  let pkgs All = ghcLibraryBinPackages-      pkgs Bin = ghcLibraryPackages-  system' $ unwords ["echo '' |", "sudo apt-get remove", unwords $ pkgs mode hkg, "|| true"]+  let pkgs All   =  ghcLibraryPackages+      pkgs Bin   =  ghcLibraryPackages+      pkgs Src   =  const []+      pkgs Dep   =  ghcLibraryBinPackages+      pkgs Indep =  (:[]) . ghcLibraryDocPackage+      pkgs' = pkgs mode hkg+  unless (null pkgs') . system'+    $ unwords ["echo '' |", "sudo apt-get remove", unwords pkgs', "|| true"]
src/Debian/Package/Build/Sequence.hs view
@@ -216,7 +216,7 @@ cabalAutogenSources hname mayRev = do   debDir   <-  cabalAutogenDebianDir mayRev   pkg      <-  liftTrace . dpkgParseChangeLog $ debDir </> "changelog"-  hpkg     <-  either fail return $ haskellPackageFromPackage hname pkg+  let hpkg =   haskellPackageFromPackage hname pkg   pair@(_, srcDir)  <-  cabalGenOrigSources hpkg   liftTrace $ renameDirectory debDir (srcDir </> takeFileName debDir)   return (pair, hpkg)@@ -242,7 +242,7 @@   do clog <- findDebianChangeLog      src  <- lift . liftTrace $ dpkgParseChangeLog clog      (do hname <- takeBaseName <$> findCabalDescription-         hpkg  <- either fail return $ haskellPackageFromPackage hname src+         let hpkg = haskellPackageFromPackage hname src          p <- lift $ cabalGenSources hpkg          return (p, src, Just $ hackage hpkg)       <|>
src/Debian/Package/Data/Hackage.hs view
@@ -9,7 +9,7 @@ -- -- This module provides data types of hackage meta information. module Debian.Package.Data.Hackage-       ( HackageVersion, mkHackageVersion, hackageVersionNumbers+       ( HackageVersion, mkHackageVersion, mkHackageVersion', hackageVersionNumbers         , Hackage, mkHackage, hackageName, hackageVersion        , debianShortName, mkHackageDefault@@ -34,14 +34,16 @@ newtype HackageVersion = HackageVersion (Version)  -- | Make 'HackageVersion'+mkHackageVersion' :: [Int] -> HackageVersion+mkHackageVersion' =  HackageVersion . (`Version` [])++-- | Make 'HackageVersion' mkHackageVersion :: Int -> Int -> Int -> Int -> HackageVersion-mkHackageVersion v0 v1 v2 v3 = HackageVersion $ Version [v0, v1, v2, v3] []+mkHackageVersion v0 v1 v2 v3 = mkHackageVersion' [v0, v1, v2, v3]  -- | Extract hackage version numbers.-hackageVersionNumbers :: HackageVersion -> (Int, Int, Int, Int)-hackageVersionNumbers = d  where-  d (HackageVersion (Version [v0, v1, v2, v3] [])) = (v0, v1, v2, v3)-  d hv                                             = error $ "HackageVersion: Invalid structure: " ++ show hv+hackageVersionNumbers :: HackageVersion -> [Int]+hackageVersionNumbers (HackageVersion (Version ns _)) = ns  instance Show HackageVersion where   show (HackageVersion v) = showVersion v
src/Debian/Package/Data/Source.hs view
@@ -31,7 +31,7 @@ import System.FilePath ((<.>))  import Debian.Package.Data.Hackage-  (HackageVersion, mkHackageVersion, hackageVersionNumbers,+  (HackageVersion, mkHackageVersion', hackageVersionNumbers,    Hackage, mkHackageDefault, NameRule (Simple), debianNamesFromSourceName)  @@ -73,9 +73,9 @@ -- | Make deebian version from hackage version versionFromHackageVersion :: HackageVersion -> Maybe String -> DebianVersion versionFromHackageVersion hv = d where-  d (Just rev) = debianNonNativeVersion [v0, v1, v2, v3] rev-  d Nothing    = debianNativeVersion    [v0, v1, v2, v3] Nothing-  (v0, v1, v2, v3) = hackageVersionNumbers hv+  d (Just rev) = debianNonNativeVersion ns rev+  d Nothing    = debianNativeVersion    ns Nothing+  ns = hackageVersionNumbers hv  -- | Version without debian revision origVersion' :: DebianVersion -> Version@@ -166,10 +166,8 @@ sourceDirName pkg = sourceName pkg ++ '-' : showVersion (origVersion pkg)  -- | Try to make 'HackageVersion' from 'Source'-deriveHackageVersion :: Source -> Maybe HackageVersion-deriveHackageVersion =  d . versionBranch . origVersion where-  d [v0, v1, v2, v3] = Just $ mkHackageVersion v0 v1 v2 v3-  d _                = Nothing+deriveHackageVersion :: Source -> HackageVersion+deriveHackageVersion =  mkHackageVersion' . versionBranch . origVersion where  -- | Try to generate 'Source' from debian changelog string parseChangeLog :: String       -- ^ dpkg-parsechangelog result string@@ -213,11 +211,9 @@     (sn, _) = debianNamesFromSourceName rule hname  -- | Generate 'HaskellPackage' with hackage name and debian package meta-info-haskellPackageFromPackage :: String                       -- ^ Hackage name string-                          -> Source                       -- ^ Debian package meta info-                          -> Either String HaskellPackage -- ^ Result-haskellPackageFromPackage hname pkg = do-  hv <- maybe (Left "Fail to derive hackage version") Right-        $ deriveHackageVersion pkg-  let hkg = mkHackageDefault Simple hname hv-  return $ HaskellPackage hkg pkg+haskellPackageFromPackage :: String         -- ^ Hackage name string+                          -> Source         -- ^ Debian package meta info+                          -> HaskellPackage -- ^ Result+haskellPackageFromPackage hname pkg = HaskellPackage hkg pkg  where+  hv  = deriveHackageVersion pkg+  hkg = mkHackageDefault Simple hname hv