packages feed

cabal-rpm 2.0.5 → 2.0.5.1

raw patch · 10 files changed

+65/−58 lines, 10 files

Files

ChangeLog view
@@ -1,3 +1,8 @@+# 2.0.5.1 (2020-06-11)+- spec: fix grep breakage in 2.0.5 release+- spec, refresh and update now leave newly prepped source tree around+- spec: dropped deprecated %post and %postun scriptlets+ # 2.0.5 (2020-06-10) - spec --tests flag to force enabling testsuite - spec: fix permissions of extra-source-files@@ -7,6 +12,7 @@ - use simple-cmd-args 0.1.6 for working subcommand help - improve handling of update --stream for subpackaging - default to Stackage LTS 15+- spec: exclude deps dropped with cabal-tweak-drop-dep  # 2.0.4 (2020-02-27) Fedora 32 - update: also unbreak patching
cabal-rpm.cabal view
@@ -1,5 +1,5 @@ Name:                cabal-rpm-Version:             2.0.5+Version:             2.0.5.1 Synopsis:            RPM packaging tool for Haskell Cabal-based packages Description:     This package provides a RPM packaging tool for Haskell Cabal-based packages.
src/Commands/Depends.hs view
@@ -39,7 +39,7 @@  depends :: Depends -> Flags -> Maybe PackageVersionSpecifier -> IO () depends action flags mpvs = do-  pkgdata <- prepare flags mpvs False+  pkgdata <- prepare flags mpvs False False   let pkgDesc = packageDesc pkgdata   case action of     Depends -> do
src/Commands/Diff.hs view
@@ -38,13 +38,13 @@  diff :: Flags -> PackageType -> Maybe PackageVersionSpecifier -> IO () diff flags pkgtype mpvs = do-  pkgdata <- prepare flags mpvs True+  pkgdata <- prepare flags mpvs True False   case specFilename pkgdata of     Nothing -> die "No (unique) .spec file in directory."     Just spec -> do       subpkg <- grep_ "%{subpkgs}" spec       tmpdir <- mktempdir-      speccblrpm <- createSpecFile silent flags False False pkgtype (if subpkg then Just Nothing else Nothing) (Just tmpdir) mpvs+      speccblrpm <- createSpecFile False silent flags False False pkgtype (if subpkg then Just Nothing else Nothing) (Just tmpdir) mpvs       diffcmd <- words <$> getEnvDefault "CBLRPM_DIFF" "diff -u"       hawk <- optionalProgram "hawk"       if hawk
src/Commands/Refresh.hs view
@@ -44,7 +44,7 @@  refresh :: Bool -> PackageType -> Maybe PackageVersionSpecifier -> IO () refresh dryrun pkgtype mpvs = do-  pkgdata <- prepare [] mpvs True+  pkgdata <- prepare [] mpvs True True   case specFilename pkgdata of     Nothing -> die "No (unique) .spec file in directory."     Just spec -> do@@ -65,7 +65,7 @@                   _ -> pkgtype           subpkg <- grep_ "%{subpkgs}" spec           oldspec <- createOldSpec subpkg cblrpmver spec-          newspec <- createSpecFile silent [] False False spectype (if subpkg then Just Nothing else Nothing) Nothing mpvs+          newspec <- createSpecFile True silent [] False False spectype (if subpkg then Just Nothing else Nothing) Nothing mpvs           patchSpec dryrun Nothing oldspec newspec --          setCurrentDirectory cwd --          when rwGit $
src/Commands/RpmBuild.hs view
@@ -40,12 +40,12 @@ rpmBuild :: RpmStage -> Flags -> PackageType -> Bool          -> Maybe PackageVersionSpecifier -> IO FilePath rpmBuild stage flags pkgtype subpackage mpvs = do-  pkgdata <- prepare flags mpvs True+  pkgdata <- prepare flags mpvs True False   when (stage == Binary) $     void $ pkgInstallMissing' pkgdata   let pkgDesc = packageDesc pkgdata       mspec = specFilename pkgdata-  specFile <- maybe (createSpecFile normal flags False False pkgtype (if subpackage then Just Nothing else Nothing) Nothing mpvs)+  specFile <- maybe (createSpecFile False normal flags False False pkgtype (if subpackage then Just Nothing else Nothing) Nothing mpvs)               (\ s -> putStrLn ("Using existing" +-+ s) >> return s)               mspec   let pkgid = package pkgDesc
src/Commands/Spec.hs view
@@ -28,7 +28,7 @@ import PackageUtils (bringTarball, latestPackage, PackageData (..), prepare) import SimpleCabal (buildable, mkPackageName, PackageDescription (..),                     PackageIdentifier(..), PackageName, showVersion)-import SimpleCmd ((+-+), grep, grep_, removePrefix)+import SimpleCmd ((+-+), cmdMaybe, grep_, removePrefix) import Stackage (defaultLTS) import Types @@ -94,12 +94,12 @@ unUnqualComponentName = id #endif -createSpecFile :: Verbosity -> Flags -> Bool -> Bool -> PackageType+createSpecFile :: Bool -> Verbosity -> Flags -> Bool -> Bool -> PackageType                -> Maybe (Maybe Stream) -> Maybe FilePath                -> Maybe PackageVersionSpecifier                -> IO FilePath-createSpecFile verbose flags testsuite force pkgtype subpkgStream mdest mpvs = do-  pkgdata <- prepare flags mpvs True+createSpecFile keep verbose flags testsuite force pkgtype subpkgStream mdest mpvs = do+  pkgdata <- prepare flags mpvs True keep   let mspec = case pkgtype of                 SpecFile f -> Just f                 _ -> specFilename pkgdata@@ -153,7 +153,7 @@   -- run commands before opening file to prevent empty file on error   -- maybe shell commands should be in a monad or something   droppedDeps <- if targetSpecAlreadyExists then do-      map (mkPackageName . removePrefix "cabal-tweak-drop-dep ") <$> grep "cabal-tweak-drop-dep" targetSpecFile+      map (mkPackageName . removePrefix "cabal-tweak-drop-dep ") <$> grep "^cabal-tweak-drop-dep" targetSpecFile       else return []   pkgdeps <- do     alldeps <- packageDependencies pkgDesc@@ -495,17 +495,6 @@     put "%cabal_test"     sectionNewline -  when hasLibPkg $ do-    put "%if 0%{?fedora} < 31 || 0%{?rhel} < 8"-    put $ "%post" +-+ subpkgParam Devel-    put "%ghc_pkg_recache"-    sectionNewline--    put $ "%postun" +-+ subpkgParam Devel-    put "%ghc_pkg_recache"-    put "%endif"-    sectionNewline-   let license_macro = "%license"   let execs = sort $ map exeName $ filter isBuildable $ executables pkgDesc @@ -579,7 +568,7 @@ createSpecFile_ :: Verbosity -> Flags -> Bool -> Bool -> PackageType                 -> Maybe (Maybe Stream) -> Maybe PackageVersionSpecifier -> IO () createSpecFile_ verbose flags testsuite force pkgtype subpkgStream mpvs =-  void (createSpecFile verbose flags testsuite force pkgtype subpkgStream Nothing mpvs)+  void (createSpecFile False verbose flags testsuite force pkgtype subpkgStream Nothing mpvs)  isBuildable :: Executable -> Bool isBuildable exe = buildable $ buildInfo exe@@ -669,3 +658,9 @@ quoteMacros :: String -> String quoteMacros "" = "" quoteMacros (c:cs) = (if c == '%' then "%%" else [c]) ++ quoteMacros cs++-- use simple-cmd > 0.2.1+grep :: String -> FilePath -> IO [String]+grep pat file = do+  mres <- cmdMaybe "grep" [pat, file]+  return $ maybe [] lines mres
src/Commands/Update.hs view
@@ -45,7 +45,7 @@  update :: Maybe PackageVersionSpecifier -> IO () update mpvs = do-  pkgdata <- pkgSpecPkgData [] (pvsPackage =<< mpvs) True+  pkgdata <- pkgSpecPkgData [] (pvsPackage =<< mpvs) True True   case specFilename pkgdata of     Nothing -> die "No (unique) .spec file in directory."     Just spec -> do@@ -131,13 +131,13 @@     -- Just Nothing is default stream     createSpecVersion :: PackageIdentifier -> String -> Bool -> Maybe (Maybe Stream) -> IO (FilePath, Bool)     createSpecVersion pkgid spec revise subpkgStream = do-      pd <- prepare [] (streamPkgToPVS Nothing (Just pkgid)) revise+      pd <- prepare [] (streamPkgToPVS Nothing (Just pkgid)) revise True       let pkgdata = pd { specFilename = Just spec }           dir = ".Cblrpm/" ++ display pkgid ++ if revise then ".revised" else ".orig"       direxists <- doesDirectoryExist dir       when direxists $ removeDirectoryRecursive dir       createDirectoryIfMissing True dir-      newspec <- createSpecFile silent [] False False (SpecFile spec) subpkgStream (Just dir) (streamPkgToPVS Nothing (Just pkgid))+      newspec <- createSpecFile True silent [] False False (SpecFile spec) subpkgStream (Just dir) (streamPkgToPVS Nothing (Just pkgid))       let newrevised =             isJust $ lookup "x-revision" (customFieldsPD (packageDesc pkgdata))       return (newspec, newrevised)
src/Dependencies.hs view
@@ -223,7 +223,7 @@  pkgInstallMissing :: Flags -> Maybe PackageVersionSpecifier -> IO [PackageName] pkgInstallMissing flags mpvs = do-  pkgdata <- prepare flags mpvs True+  pkgdata <- prepare flags mpvs True False   pkgInstallMissing' pkgdata  pkgInstallMissing' :: PackageData -> IO [PackageName]@@ -279,7 +279,7 @@   where     missingDepsPkg :: PackageName -> IO [RpmPackage]     missingDepsPkg pkg = do-      pkgdata <- prepare flags (streamPkgToPVS mstream (Just (unversionedPkgId pkg))) False+      pkgdata <- prepare flags (streamPkgToPVS mstream (Just (unversionedPkgId pkg))) False False       missingPackages (packageDesc pkgdata) >>= filterM notAvail      putMissing :: [RpmPackage] -> IO ()@@ -300,7 +300,7 @@  packageDeps :: Flags -> Maybe Stream -> PackageName -> IO [PackageName] packageDeps flags mstream pkg = do-  pkgdata <- prepare flags (streamPkgToPVS mstream (Just (unversionedPkgId pkg))) False+  pkgdata <- prepare flags (streamPkgToPVS mstream (Just (unversionedPkgId pkg))) False False   let pkgDesc = packageDesc pkgdata       (deps, setup, _, _, _) = dependencies pkgDesc   return $ nub $ (deps ++ setup) \\ [pkg]
src/PackageUtils.hs view
@@ -56,7 +56,7 @@  import Data.Char (toLower) import Data.List (isPrefixOf, isSuffixOf, nub, sort)-import Data.Maybe (isNothing, isJust, fromJust)+import Data.Maybe import Data.Time.Clock (diffUTCTime, getCurrentTime)  import Distribution.Text (display, simpleParse)@@ -236,9 +236,9 @@   cmd_ "cabal" (c:args)  -tryUnpack :: PackageIdentifier -> Bool ->-             IO (FilePath, Maybe FilePath) -- (cabalfile, mtmpdir)-tryUnpack pkgid revise = do+tryUnpack :: PackageIdentifier -> Bool -> Bool+          -> IO (FilePath, Maybe FilePath) -- (cabalfile, mtmpdir)+tryUnpack pkgid revise keep = do   let dir = display pkgid   isdir <- doesDirectoryExist dir   if isdir@@ -251,12 +251,15 @@       error $ "could not find" +-+ display (pkgName pkgid) <.> "cabal"     else do     cwd <- getCurrentDirectory-    tmpdir <- mktempdir-    setCurrentDirectory tmpdir+    mtmpdir <- if keep then return Nothing+      else do+      tmpdir <- mktempdir+      setCurrentDirectory tmpdir+      return $ Just tmpdir     cabal_ "unpack" $ ["-v0"] ++ ["--pristine" | not revise] ++ [display pkgid]     pth <- tryFindPackageDesc dir     setCurrentDirectory cwd-    return (tmpdir </> pth, Just tmpdir)+    return (fromMaybe "" mtmpdir </> pth, mtmpdir)  latestPackage :: Maybe Stream -> PackageName -> IO PackageIdentifier latestPackage (Just Hackage) pkg = latestHackage pkg@@ -320,8 +323,8 @@       then fileWithExtension (display pkgid) ".cabal"       else return Nothing -pkgSpecPkgData :: Flags -> Maybe PackageName -> Bool -> IO PackageData-pkgSpecPkgData flags mpkg revise = do+pkgSpecPkgData :: Flags -> Maybe PackageName -> Bool -> Bool -> IO PackageData+pkgSpecPkgData flags mpkg revise keep = do   mspec <- checkForSpecFile mpkg   case mspec of     Just spec -> specPackageData spec@@ -333,13 +336,13 @@           return $ PackageData Nothing docs licenses pkgDesc         Nothing ->           case mpkg of-            Just pkg -> prepStreamPkg flags Nothing defaultLTS pkg revise+            Just pkg -> prepStreamPkg flags Nothing defaultLTS pkg revise keep             Nothing -> do               cwd <- getCurrentDirectory               let trydir = simpleParse (takeFileName cwd)               case trydir of                 Just pdir | pkgVersion pdir == nullVersion ->-                              prepare flags (streamPkgToPVS Nothing trydir) revise+                              prepare flags (streamPkgToPVS Nothing trydir) revise keep                 _ -> error' "package not found for directory"   where     specPackageData :: FilePath -> IO PackageData@@ -382,31 +385,33 @@               , packageDesc :: PackageDescription               } -prepPkgId :: Flags -> Maybe FilePath -> PackageIdentifier -> Bool-               -> IO PackageData-prepPkgId flags mspec pkgid revise = do-  (cabalfile, mtmp) <- tryUnpack pkgid revise+prepPkgId :: Flags -> Maybe FilePath -> PackageIdentifier -> Bool -> Bool+          -> IO PackageData+prepPkgId flags mspec pkgid revise keep = do+  (cabalfile, mtmp) <- tryUnpack pkgid revise keep   (pkgDesc, docs, licenses) <- simplePackageDescription flags cabalfile-  maybe (return ()) removeDirectoryRecursive mtmp+  unless keep $ maybe (return ()) removeDirectoryRecursive mtmp   return $ PackageData mspec docs licenses pkgDesc -prepStreamPkg :: Flags -> Maybe FilePath -> Stream -> PackageName -> Bool -> IO PackageData-prepStreamPkg flags mspec stream pkg revise = do+prepStreamPkg :: Flags -> Maybe FilePath -> Stream -> PackageName -> Bool -> Bool+              -> IO PackageData+prepStreamPkg flags mspec stream pkg revise keep = do   pkgid <- latestPackage (Just stream) pkg   mcabal <- checkForPkgCabalFile pkgid   case mcabal of     Just cabalfile -> do       (pkgDesc, docs, licenses) <- simplePackageDescription flags cabalfile       return $ PackageData mspec docs licenses pkgDesc-    Nothing -> prepPkgId flags mspec pkgid revise+    Nothing -> prepPkgId flags mspec pkgid revise keep  -- Nothing means package in cwd-prepare :: Flags -> Maybe PackageVersionSpecifier -> Bool -> IO PackageData-prepare flags Nothing revise = pkgSpecPkgData flags Nothing revise+prepare :: Flags -> Maybe PackageVersionSpecifier -> Bool -> Bool+        -> IO PackageData+prepare flags Nothing revise keep = pkgSpecPkgData flags Nothing revise keep -- Something implies either new packaging or some existing spec file in dir-prepare flags (Just pvs) revise =+prepare flags (Just pvs) revise keep =   case pvs of-    PVPackageName pkg -> pkgSpecPkgData flags (Just pkg) revise+    PVPackageName pkg -> pkgSpecPkgData flags (Just pkg) revise keep     PVPackageId pkgid -> do       mspec <- checkForSpecFile $ Just (pkgName pkgid)       mcabal <- checkForPkgCabalFile pkgid@@ -414,7 +419,7 @@         Just cabalfile -> do           (pkgDesc, docs, licenses) <- simplePackageDescription flags cabalfile           return $ PackageData mspec docs licenses pkgDesc-        Nothing -> prepPkgId flags mspec pkgid revise+        Nothing -> prepPkgId flags mspec pkgid revise keep     PVStreamPackage stream Nothing -> do       mspec <- checkForSpecFile Nothing       case mspec of@@ -422,14 +427,15 @@           cwd <- getCurrentDirectory           let trydir = simpleParse (takeFileName cwd)           case trydir of-            Just pdir | pkgVersion pdir == nullVersion -> prepare flags (streamPkgToPVS (Just stream) trydir) revise+            Just pdir | pkgVersion pdir == nullVersion ->+                          prepare flags (streamPkgToPVS (Just stream) trydir) revise keep             _ -> error' "package not found"         Just spec -> do           let pkg = mkPackageName $ removePrefix "ghc-" $ takeBaseName spec-          prepStreamPkg flags (Just spec) stream pkg revise+          prepStreamPkg flags (Just spec) stream pkg revise keep     PVStreamPackage stream (Just pkg) -> do       mspec <- checkForSpecFile (Just pkg)-      prepStreamPkg flags mspec stream pkg revise+      prepStreamPkg flags mspec stream pkg revise keep  -- redundant mdir was earlier for update patchSpec :: Bool -> Maybe FilePath -> FilePath -> FilePath -> IO ()