packages feed

debian-build 0.4.0.1 → 0.4.1.0

raw patch · 6 files changed

+82/−22 lines, 6 filesdep +splitPVP ok

version bump matches the API change (PVP)

Dependencies added: split

API changes (from Hackage documentation)

+ Debian.Package.Build.Command: debi' :: [String] -> Trace ()
+ Debian.Package.Build.Sequence: findDebianChanges :: Build [(FilePath, ChangesType)]
+ Debian.Package.Build.Sequence: getBuildDir :: Build FilePath
+ Debian.Package.Data.Source: ChangesAll :: ChangesType
+ Debian.Package.Data.Source: ChangesArch :: String -> ChangesType
+ Debian.Package.Data.Source: ChangesSource :: ChangesType
+ Debian.Package.Data.Source: data ChangesType
+ Debian.Package.Data.Source: instance Eq ChangesType
+ Debian.Package.Data.Source: instance Show ChangesType
+ Debian.Package.Data.Source: isBinaryChanges :: ChangesType -> Bool
+ Debian.Package.Data.Source: isSourceChanges :: ChangesType -> Bool
+ Debian.Package.Data.Source: takeChangesType :: FilePath -> Maybe ChangesType

Files

debian-build.cabal view
@@ -1,5 +1,5 @@ name:                debian-build-version:             0.4.0.1+version:             0.4.1.0 synopsis:            Debian package build sequence tools description:         This package provides build sequence functions                      for debian package, and includes on-the-fly@@ -32,6 +32,7 @@                      , process                      , directory                      , transformers+                     , split                      , Cabal    hs-source-dirs:      src
mains/odebuild.hs view
@@ -1,24 +1,27 @@ import System.Environment (getProgName, getArgs)-import Control.Monad (void)+import Control.Monad (void, when) import Data.List (stripPrefix) -import Debian.Package.Data (Source, Hackage)+import Debian.Package.Data (Source, Hackage, isBinaryChanges) import Debian.Package.Build-  (BuildMode (Bin, Src), buildPackage, debi,+  (BuildMode (Dep, Indep, Src), buildPackage, debi',    baseDirCurrent, defaultConfig, Build, runBuild, liftTrace,-   sourceDir, removeBuildDir, genSources, removeGhcLibrary)+   removeBuildDir, findDebianChanges, genSources, removeGhcLibrary)   defualtModes :: [BuildMode]-defualtModes =  [Bin, Src]+defualtModes =  [Dep, Indep, Src]  remove' :: Hackage -> Build () remove' hkg = liftTrace $ sequence_ [removeGhcLibrary m hkg | m <- defualtModes] -install' :: Source -> Build ()-install' src = do-  srcDir <- sourceDir src-  liftTrace $ debi srcDir []+install' :: Build ()+install' =  do+  ps <- findDebianChanges+  let cs = [c | (c, t) <- ps, isBinaryChanges t ]+  liftTrace $ do+    when (null cs) $ fail "No .changes files found!"+    mapM_ (\c -> debi' [c]) cs   help :: IO ()@@ -51,14 +54,14 @@  install :: Maybe String -> [String] -> Build () install mayRev args = do-  (src, _mayH) <- build mayRev args-  install' src+  void $ build mayRev args+  install'  reinstall :: Maybe String -> [String] -> Build () reinstall mayRev args = do-  (src, mayH) <- build mayRev args+  (_src, mayH) <- build mayRev args   maybe (return ()) remove' mayH-  install' src+  install'  run :: Build a -> IO a run b = uncurry (runBuild b baseDirCurrent) defaultConfig
src/Debian/Package/Build/Command.hs view
@@ -19,7 +19,7 @@         , cabalDebian', cabalDebian, packageVersion, dpkgParseChangeLog -       , debuild, debi+       , debuild, debi', debi         , BuildMode (..) @@ -192,9 +192,13 @@ debuild :: FilePath -> [String] -> Trace () debuild dir = withCurrentDir' dir . debuild' +-- | Just run debi with root user+debi' :: [String] -> Trace ()+debi' =  rawSystem' . (["sudo", "debi"] ++)+ -- | Install packages under specified source package directory debi :: FilePath -> [String] -> Trace ()-debi dir = withCurrentDir' dir . rawSystem' . (["sudo", "debi"] ++)+debi dir = withCurrentDir' dir . debi'  -- | Build mode, all or binary only data BuildMode = All | Bin | Src | Dep | Indep
src/Debian/Package/Build/Monad.hs view
@@ -139,7 +139,12 @@  -- | Default configuration defaultConfig :: (Config, Bool)-defaultConfig =  (Config (buildDirRelative ".debian-build") "debian" [".git", ".hg"], True)+defaultConfig =  (Config+                  { buildDir       = buildDirRelative ".debian-build"+                  , debianDirName  = "debian"+                  , sourceExcludes = [".git", ".hg"]+                  },+                  True)  -- | Monad type with build base directory and build configuration. type Build = ReaderT BaseDir (ReaderT Config Trace)
src/Debian/Package/Build/Sequence.hs view
@@ -13,7 +13,8 @@         , withCurrentDir, withBaseCurrentDir -       , removeBuildDir+       , getBuildDir, removeBuildDir+       , findDebianChanges         , copyDebianDir @@ -26,17 +27,19 @@  import System.FilePath ((</>), takeFileName, takeDirectory, takeBaseName) import System.Directory-  (doesDirectoryExist, doesFileExist)+  (getDirectoryContents, doesDirectoryExist, doesFileExist) import Control.Applicative (pure, (<$>), (<*>), (<|>)) import Control.Monad (when) import Control.Monad.IO.Class (liftIO) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Maybe (MaybeT(MaybeT), runMaybeT) import Data.List (isPrefixOf)+import Data.Maybe (catMaybes)  import Debian.Package.Data   (Hackage, hackageLongName, hackageArchive,    Source, origArchiveName, nativeArchiveName, sourceDirName, isNative,+   ChangesType, takeChangesType,    HaskellPackage, hackage, package, haskellPackageFromPackage) import Debian.Package.Build.Monad   (Build, liftTrace, bracketBuild_, Config (..), askConfig, askBaseDir, askBuildDir)@@ -65,7 +68,7 @@   baseDir <- getBaseDir   withCurrentDir baseDir act --- Take build-directory from 'Build' action context.+-- | Take build-directory from 'Build' action context. getBuildDir :: Build FilePath getBuildDir =  liftIO pwd >>= askBuildDir @@ -232,6 +235,17 @@     return $ if exist              then Just changelog              else Nothing++-- | Find debian .changes files+findDebianChanges :: Build [(FilePath, ChangesType)]+findDebianChanges =  do+  bd <- getBuildDir+  fs <- liftIO $ getDirectoryContents bd+  return $ catMaybes+    [ do ty <- takeChangesType path+         Just (path, ty)+    | path <- map (bd </>) fs+    ]  findCabalDescription :: MaybeT Build FilePath findCabalDescription =  MaybeT (getBaseDir >>= liftIO . Cabal.findDescriptionFile)
src/Debian/Package/Data/Source.hs view
@@ -17,20 +17,23 @@         , parseChangeLog +       , ChangesType (..), takeChangesType, isSourceChanges, isBinaryChanges+        , HaskellPackage, hackage, package        , haskellPackageDefault, haskellPackageFromPackage        ) where -import Data.Maybe (listToMaybe) import Control.Arrow (second) import Control.Applicative ((<$>), pure, (<*>), (<|>)) import Control.Monad.Trans.State (StateT, runStateT) import Control.Monad.Trans.Class (lift) import Numeric (readDec)+import Data.Maybe (listToMaybe) import Data.Char (isSpace) import Data.Version (Version (Version, versionBranch), showVersion, parseVersion)+import Data.List.Split (splitOn) import Text.ParserCombinators.ReadP (ReadP, string, readP_to_S, readS_to_P)-import System.FilePath ((<.>))+import System.FilePath ((<.>), takeFileName, splitExtension)  import Debian.Package.Data.Hackage   (HackageVersion, mkHackageVersion', hackageVersionNumbers,@@ -169,6 +172,36 @@     mayDebVer = do       dverS <- lookup' "Version:"       readDebianVersion dverS++-- | Debian .changes file types+data ChangesType+  = ChangesArch String+  | ChangesAll+  | ChangesSource+  deriving (Eq, Show)++-- | Take 'ChangesType' from debian .changes file path+takeChangesType :: FilePath -> Maybe ChangesType+takeChangesType path = d . splitExtension $ takeFileName path  where+  d (n, ".changes") = case xs of+    [_, _, a] -> case a of+      "all"    -> Just   ChangesAll+      "source" -> Just   ChangesSource+      _        -> Just $ ChangesArch a+    _          -> Nothing+    where xs = splitOn "_" n+  d (_, _)     =  Nothing++-- | Test changes file type is source package.+isSourceChanges :: ChangesType -> Bool+isSourceChanges = d where+  d (ChangesArch _) = False+  d  ChangesAll     = False+  d  ChangesSource  = True++-- | Test changes file type is binary package.+isBinaryChanges :: ChangesType -> Bool+isBinaryChanges = not . isSourceChanges   -- | Debian source package type for Haskell