packages feed

debian-build 0.7.0.0 → 0.7.1.0

raw patch · 3 files changed

+93/−49 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Debian.Package.Build.Command: build :: FilePath -> [BuildMode] -> [String] -> Trace ()
+ Debian.Package.Build.Command: build :: FilePath -> [BuildMode] -> Bool -> [String] -> Trace ()

Files

debian-build.cabal view
@@ -1,5 +1,5 @@ name:                debian-build-version:             0.7.0.0+version:             0.7.1.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
@@ -1,6 +1,9 @@-import System.Environment (getProgName, getArgs)+import Control.Arrow ((>>>)) import Control.Monad (void, when)-import Data.List (stripPrefix)+import System.Environment (getProgName, getArgs)+import System.Console.GetOpt+  (OptDescr (Option), ArgDescr (ReqArg, NoArg), ArgOrder (RequireOrder),+   usageInfo, getOpt)  import Debian.Package.Data (Source, Hackage, isBinaryPackage) import qualified Debian.Package.Build.Command as Command@@ -10,11 +13,8 @@    removeBuildDir, findDebianChanges, genSources, removeGhcLibrary)  -defualtModes :: [BuildMode]-defualtModes =  [Dep, Indep, Src]- remove' :: Hackage -> Build ()-remove' hkg = liftTrace $ sequence_ [removeGhcLibrary m hkg | m <- defualtModes]+remove' hkg = liftTrace $ sequence_ [removeGhcLibrary m hkg | m <- [Dep, Indep, Src]]  install' :: Build () install' =  do@@ -25,42 +25,79 @@     mapM_ (\c -> debi' [c]) cs  +data ODebuildOptions =+  ODebuildOptions+  { revision    :: Maybe String+  , installDeps :: Bool+  } deriving Show++defaultOptions :: ODebuildOptions+defaultOptions =+  ODebuildOptions+  { revision     =  Nothing+  , installDeps  =  False+  }++descs :: [OptDescr (ODebuildOptions -> ODebuildOptions)]+descs =+  [ Option [] ["revision"]+    (ReqArg (\s opts -> opts { revision = Just s }) "DEBIAN_REVISION")+    "debian package revision to pass to cabal-debian"+  , Option [] ["install-deps"]+    (NoArg $ \opts -> opts { installDeps = True })+    "install build depends when to run build"+  ]++parseOption :: [String]+            -> (ODebuildOptions -> ODebuildOptions, ([String], [String]))+parseOption args = (foldr (>>>) id ufs, (ss1, ss2))  where+  (ufs, ss1, ss2) = getOpt RequireOrder descs args+ help :: IO () help =  do   prog <- getProgName-  let rev  = "[--revision=<debian revision>]"-      opts = "[debuild options]"-  putStr . unlines $ map unwords-    [[prog, "clean"],-     [prog, "source", rev],-     [prog, "build", rev, opts],-     [prog, "install", rev, opts],-     [prog, "reinstall", rev, opts],-     ["-- reinstall (Remove and install) support only for Haskell"],-     ["-- Revision string may use on auto-generating debian directory."]]+  let opts  = "[options]"+      debOpts = "[-- [debuild options]]"+      msg = unlines $ map unwords+            [ [prog, "clean"]+            , [prog, "prepare", opts]+            , [prog, "source", opts, debOpts]+            , [prog, "build", opts, debOpts]+            , [prog, "install", opts, debOpts]+            , [prog, "reinstall", opts, debOpts]+            , ["  reinstall (Remove and install) support only for Haskell"]+            , ["  Revision string may use on auto-generating debian directory."]+            ]+  putStr $ usageInfo msg descs  clean :: Build () clean =  removeBuildDir -source :: Maybe String -> Build ((FilePath, FilePath), Source, Maybe Hackage)-source mayRev = do+prepare :: ODebuildOptions -> Build ((FilePath, FilePath), Source, Maybe Hackage)+prepare opts = do   clean-  maybe (fail "Illegal state: genSources") return =<< genSources mayRev+  maybe (fail "Illegal state: genSources") return =<< genSources (revision opts) -build :: Maybe String -> [String] -> Build (Source, Maybe Hackage)-build mayRev opts = do-  ((_, dir), src, mayH) <- source mayRev-  liftTrace $ Command.build dir [] opts+build' :: [BuildMode] -> ODebuildOptions -> [String] -> Build (Source, Maybe Hackage)+build' modes opts args = do+  ((_, dir), src, mayH) <- prepare opts+  liftTrace $ Command.build dir modes (installDeps opts) args   return (src, mayH) -install :: Maybe String -> [String] -> Build ()-install mayRev args = do-  void $ build mayRev args+source :: ODebuildOptions -> [String] -> Build (Source, Maybe Hackage)+source = build' [Src]++build :: ODebuildOptions -> [String] -> Build (Source, Maybe Hackage)+build =  build' []++install :: ODebuildOptions -> [String] -> Build ()+install opts args = do+  void $ build opts args   install' -reinstall :: Maybe String -> [String] -> Build ()-reinstall mayRev args = do-  (_src, mayH) <- build mayRev args+reinstall :: ODebuildOptions -> [String] -> Build ()+reinstall opts args = do+  (_src, mayH) <- build opts args   maybe (return ()) remove' mayH   install' @@ -69,13 +106,20 @@   cur <- pwd   uncurry (runBuild b cur) defaultConfig -parseArgs :: [String] -> (Maybe String, [String])-parseArgs =  d where-  d aas@(a:as) = case stripPrefix "--revision=" a of-    r@(Just _)  ->  (r, as)-    Nothing     ->  (Nothing, aas)-  d []         =    (Nothing, [])+parseArgs :: [String] -> IO (ODebuildOptions, [String])+parseArgs args0+  | not $ null errs  = fail $ concat errs+  | not $ null args1 = fail $ "Unknown arguments: " ++ unwords args1+  | otherwise        = return+                       (f defaultOptions, drop 1 rest )  where+  (opt, rest) = break (== "--") args0+  (f, (args1, errs)) = parseOption opt +runArgs :: (ODebuildOptions -> [String] -> Build a) -> [String] -> IO a+runArgs act as = do+  (opts, args) <- parseArgs as+  run $ act opts args+ main :: IO () main =  do   as0 <- getArgs@@ -84,13 +128,13 @@     "--help" : _          ->  help     "help"   : _          ->  help     as2@(c : as1)  ->  do-      let (mayRev, args) = parseArgs as1-      run $ case c of-        "clean"         ->    clean-        "source"        ->    void $ source mayRev-        "build"         ->    void $ build mayRev args-        "install"       ->    install mayRev args-        "reinstall"     ->    reinstall mayRev args-        _               ->    void . uncurry build $ parseArgs as2+      case c of+        "clean"         ->    run clean+        "prepare"       ->    void $ runArgs (const . prepare) as1+        "source"        ->    void $ runArgs source as1+        "build"         ->    void $ runArgs build as1+        "install"       ->    runArgs install as1+        "reinstall"     ->    runArgs reinstall as1+        _               ->    void $ runArgs build as2 -    []                  -> run . void $ build Nothing []+    []                  -> run . void $ build defaultOptions []
src/Debian/Package/Build/Command.hs view
@@ -241,20 +241,20 @@  -- | Build package with specified mode list. --   Calculated mode list from control is used when not specified build modes.-build :: FilePath -> [BuildMode] -> [String] -> Trace ()-build dir modes' opts = do+build :: FilePath -> [BuildMode] -> Bool -> [String] -> Trace ()+build dir modes' installDep opts = do   modes <-     if null modes'     then modeListFromControl <$> dpkgParseControl (dir </> "debian" </> "control")     else return modes'-  when (any hasBinaryBuildMode modes) $ aptGetBuildDepends dir+  when (installDep && any hasBinaryBuildMode modes) $ aptGetBuildDepends dir   sequence_ [buildPackage dir m opts | m <- modes]  -- | Clean and build package using /debuild/ under specified directory rebuild :: FilePath -> [BuildMode] -> [String] -> Trace () rebuild dir modes opts = do   debuild dir ["clean"]-  build dir modes opts+  build dir modes False opts  -- | Remove ghc library packages under specified source package directory removeGhcLibrary :: BuildMode -> Hackage -> Trace ()