packages feed

cabal-rpm 0.2.1 → 0.2.2

raw patch · 3 files changed

+33/−18 lines, 3 files

Files

cabal-rpm.cabal view
@@ -1,5 +1,5 @@ Name: cabal-rpm-Version: 0.2.1+Version: 0.2.2 License: GPL License-File: COPYING Author: Bryan O'Sullivan <bos@serpentine.com>
src/Distribution/Package/Rpm.hs view
@@ -42,37 +42,45 @@ import Distribution.License import Distribution.Package (PackageIdentifier(..)) import Distribution.PreProcess (knownSuffixHandlers)-import Distribution.Simple.Configure (configCompiler)-import Distribution.Simple.LocalBuildInfo (distPref)+import Distribution.Program (defaultProgramConfiguration)+import Distribution.Simple.Configure (configCompiler, configure,+                                      maybeGetPersistBuildConfig)+import Distribution.Simple.LocalBuildInfo (LocalBuildInfo, distPref) import Distribution.Simple.SrcDist (createArchive, prepareTree, tarBallName) import Distribution.Simple.Utils (copyDirectoryRecursiveVerbose,                                   copyFileVerbose, die, warn)-import Distribution.PackageDescription (BuildInfo(..), Library(..),-                                        PackageDescription(..), exeName,+import Distribution.PackageDescription (BuildInfo(..),+                                        GenericPackageDescription(..),+                                        Library(..),+                                        PackageDescription(..),+                                        emptyHookedBuildInfo,+                                        exeName, flattenPackageDescription,                                         hasLibs, setupMessage, withExe,                                         withLib) import Distribution.Verbosity (Verbosity(..)) import Distribution.Version (Dependency(..), VersionRange(..), withinRange)+import Distribution.Setup (emptyConfigFlags) import Distribution.Package.Rpm.Setup (RpmFlags(..)) import System.Posix.Files (setFileCreationMask) -rpm :: PackageDescription       -- ^info from the .cabal file+rpm :: GenericPackageDescription -- ^info from the .cabal file     -> RpmFlags                 -- ^rpm flags     -> IO () -rpm pkgDesc flags = do+rpm genPkgDesc flags = do     case rpmCompiler flags of       Just GHC -> return ()       Just c -> die ("the " ++ show c ++ " compiler is not yet supported")     if rpmGenSpec flags       then do+        let pkgDesc = flattenPackageDescription genPkgDesc         (name, extraDocs) <- createSpecFile False pkgDesc flags "."         putStrLn $ "Spec file created: " ++ name         when ((not . null) extraDocs) $ do             putStrLn "NOTE: docs packaged, but not in .cabal file:"             mapM_ putStrLn $ sort extraDocs         return ()-      else rpmBuild pkgDesc flags+      else rpmBuild genPkgDesc flags  -- | Copy a file or directory (recursively, in the latter case) to the -- same name in the target directory.  Arguments flipped from the@@ -100,24 +108,32 @@               ExitSuccess -> return ()               ExitFailure n -> die ("autoreconf failed with status " ++ show n) -rpmBuild :: PackageDescription-         -> RpmFlags-         -> IO ()+localBuildInfo :: PackageDescription -> IO LocalBuildInfo+localBuildInfo pkgDesc = do+  mb_lbi <- maybeGetPersistBuildConfig+  case mb_lbi of+    Just lbi -> return lbi+    Nothing -> configure (Right pkgDesc, emptyHookedBuildInfo)+               (emptyConfigFlags defaultProgramConfiguration) -rpmBuild pkgDesc flags = do+rpmBuild :: GenericPackageDescription -> RpmFlags -> IO ()++rpmBuild genPkgDesc flags = do     tgtPfx <- canonicalizePath (maybe distPref id $ rpmTopDir flags)-    let verbose = rpmVerbosity flags+    let pkgDesc = flattenPackageDescription genPkgDesc+        verbose = rpmVerbosity flags         tmpDir = tgtPfx </> "src"     flip mapM_ ["BUILD", "RPMS", "SOURCES", "SPECS", "SRPMS"] $ \ subDir -> do       createDirectoryIfMissing True (tgtPfx </> subDir)     let specsDir = tgtPfx </> "SPECS"+    lbi <- localBuildInfo pkgDesc     bracket (setFileCreationMask 0o022) setFileCreationMask $ \ _ -> do       autoreconf verbose pkgDesc       (specFile, extraDocs) <- createSpecFile True pkgDesc flags specsDir-      tree <- prepareTree pkgDesc verbose Nothing False tmpDir+      tree <- prepareTree pkgDesc verbose (Just lbi) False tmpDir               knownSuffixHandlers 0       mapM_ (copyTo verbose tree) extraDocs-      tarball <- createArchive pkgDesc verbose Nothing tmpDir+      tarball <- createArchive pkgDesc verbose (Just lbi) tmpDir                  (tgtPfx </> "SOURCES")       ret <- system ("rpmbuild -ba --define \"_topdir " ++ tgtPfx ++ "\" " ++                      specFile)
src/Distribution/Package/Rpm/Main.hs view
@@ -13,8 +13,7 @@  module Distribution.Package.Rpm.Main where -import Distribution.PackageDescription (packageDescription,-                                        readPackageDescription)+import Distribution.PackageDescription (readPackageDescription) import Distribution.Package.Rpm (rpm) import Distribution.Package.Rpm.Setup (RpmFlags (..), parseArgs) import Distribution.Simple.Utils (defaultPackageDesc)@@ -26,4 +25,4 @@           let verbosity = rpmVerbosity opts           descPath <- defaultPackageDesc verbosity           pkgDesc <- readPackageDescription verbosity descPath-          rpm (packageDescription pkgDesc) opts+          rpm pkgDesc opts