packages feed

cabal-rpm 2.1.3 → 2.1.4

raw patch · 6 files changed

+44/−28 lines, 6 files

Files

ChangeLog view
@@ -1,3 +1,9 @@+# 2.1.4 (2023-11-03)+- spec --standalone should not create subpkgs (regression in 2.1.3)+- spec: when subpackaging include prof for main exec deps+- fix --flags parsing to actually work!+- PackageUtils bringTarball: create SOURCES/ earlier for new user+ # 2.1.3 (2023-09-27) - spec: implement recursive missing deps fully; use cabal-sort if available - spec: also get the license of subpkgs now
README.md view
@@ -69,10 +69,12 @@ See the manpage or help output for more details.  ## Help output-```shellsession-$ cabal-rpm --version-2.1.3-$ cabal-rpm --help+`$ cabal-rpm --version`+```+2.1.4+```+`$ cabal-rpm --help`+``` Cabal-rpm tool  Usage: cabal-rpm [--version] COMMAND
cabal-rpm.cabal view
@@ -1,6 +1,6 @@ Cabal-version:       1.18 Name:                cabal-rpm-Version:             2.1.3+Version:             2.1.4 Synopsis:            RPM packaging tool for Haskell Cabal-based packages Description:     This package provides a RPM packaging tool for Haskell Cabal-based packages.
src/Commands/Spec.hs view
@@ -280,10 +280,10 @@       subpkgMacro pid = "%{" ++ mkSubpkgMacro pid ++ "}"       subpkgMacros = map subpkgMacro subpkgs       subpkgMacrosOrdered = map subpkgMacro subpkgsOrdered-  forM_ (sort subpkgs) $ \pid ->-    global (mkSubpkgMacro pid) $ display pid-  let hasSubpkgs = subpkgs /= []+      hasSubpkgs = not standalone &&  subpkgs /= []   when hasSubpkgs $ do+    forM_ (sort subpkgs) $ \pid ->+      global (mkSubpkgMacro pid) $ display pid     putNewline     global "subpkgs" $ unwords subpkgMacrosOrdered     putNewline@@ -330,9 +330,10 @@   putHdr "Url" $ "https://hackage.haskell.org/package" </> pkg_name   put "# Begin cabal-rpm sources:"   putHdr "Source0" $ sourceUrl pkgver-  mapM_ (\ (n,p) -> putHdr ("Source" ++ n) (sourceUrl p)) $ number subpkgMacros+  when hasSubpkgs $+    mapM_ (\(n,p) -> putHdr ("Source" ++ n) (sourceUrl p)) $ number subpkgMacros   when revised $-    putHdr ("Source" ++ show (1 + length subpkgs)) $ "https://hackage.haskell.org/package" </> pkgver </> pkg_name <.> "cabal" ++ "#" </> pkgver <.> "cabal"+    putHdr ("Source" ++ show (1 + if hasSubpkgs then length subpkgs else 0)) $ "https://hackage.haskell.org/package" </> pkgver </> pkg_name <.> "cabal" ++ "#" </> pkgver <.> "cabal"   put "# End cabal-rpm sources"   putNewline   put "# Begin cabal-rpm deps:"@@ -341,7 +342,7 @@ --    put "# Setup"     unless (mkPackageName "Cabal" `elem` buildDeps pkgdeps) $       putHdr "BuildRequires" $ ghc_name ++ "-Cabal-devel"-    mapM_ (\ d -> (if d `elem` map pkgName subpkgs then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Devel d))) $ setupDeps pkgdeps+    mapM_ (\d -> (if d `elem` map pkgName subpkgs then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Devel d))) $ setupDeps pkgdeps   putHdr "BuildRequires" $ "ghc-rpm-macros" ++ (if hasSubpkgs then "-extra" else "")    unless (null (buildDeps pkgdeps)) $ do@@ -353,16 +354,17 @@       put "%else"      let metaPackages = [mkPackageName "haskell-gi-overloading"]-    mapM_ (\ d -> (if d `elem` map pkgName subpkgs then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Devel d))) $ sort $ buildDeps pkgdeps-    when hasLibPkg $ do+    mapM_ (\d -> (if d `elem` map pkgName subpkgs then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Devel d))) $ sort $ buildDeps pkgdeps+    -- FIXME should tracks devel/prof deps finely when subpackaging+    when (hasLibPkg || hasSubpkgs) $ do       put "%if %{with ghc_prof}"-      mapM_ (\ d -> (if d `elem` map pkgName subpkgs then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Prof d))) $ sort $ buildDeps pkgdeps \\ metaPackages+      mapM_ (\d -> (if d `elem` map pkgName subpkgs then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Prof d))) $ sort $ buildDeps pkgdeps \\ metaPackages       put "%endif"   let otherdeps = sort $ toolDeps pkgdeps ++ clibDeps pkgdeps ++ pkgcfgDeps pkgdeps   unless (null otherdeps) $ do --    put "# Other"     missingOthers <- missingOtherPkgs pkgDesc-    mapM_ (\ d -> (if d `elem` missingOthers then putHdrComment else putHdr) "BuildRequires" d) otherdeps+    mapM_ (\d -> (if d `elem` missingOthers then putHdrComment else putHdr) "BuildRequires" d) otherdeps   let testDeps = testsuiteDeps \\ (mkPackageName "Cabal" : (buildDeps pkgdeps ++ setupDeps pkgdeps))   when (testable && notNull testDeps) $ do     put "%if %{with tests}"@@ -390,10 +392,10 @@         unless (null moredeps) $ do           put $ "# for missing dep '" ++ display pkg ++ "':"           missingMore <- filterM (notSrcOrInst . RpmHsLib Devel) moredeps-          mapM_ (\ d -> (if d `elem` missingMore then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Devel d))) moredeps+          mapM_ (\d -> (if d `elem` missingMore then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Devel d))) moredeps           unless standalone $ do             put "%if %{with ghc_prof}"-            mapM_ (\ d -> (if d `elem` missingMore then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Prof d))) moredeps+            mapM_ (\d -> (if d `elem` missingMore then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Prof d))) moredeps             put "%endif"       when (isJust mwithghc) $         put "%endif"@@ -555,7 +557,7 @@    when bashCompletions $ do     put "mkdir -p %{buildroot}%{_datadir}/bash-completion/completions/"-    mapM_ (\ ex -> let exn = execNaming ex in put ("%{buildroot}%{_bindir}" </> exn ++ " --bash-completion-script " ++ exn ++ " | sed s/filenames/default/ > %{buildroot}%{_datadir}/bash-completion/completions" </> exn)) execs+    mapM_ (\ex -> let exn = execNaming ex in put ("%{buildroot}%{_bindir}" </> exn ++ " --bash-completion-script " ++ exn ++ " | sed s/filenames/default/ > %{buildroot}%{_datadir}/bash-completion/completions" </> exn)) execs    put "# End cabal-rpm install"   sectionNewline@@ -575,7 +577,7 @@     -- Add the license file to the main package only if it wouldn't     -- otherwise be empty.     unless common $ do-      mapM_ (\ l -> put $ license_macro +-+ l) licensefiles+      mapM_ (\l -> put $ license_macro +-+ l) licensefiles       unless (null docs) $         put $ "%doc" +-+ unwords docs     mapM_ (put . ("%{_bindir}" </>) . execNaming) execs@@ -589,7 +591,7 @@   when common $ do     put "%files common"     put "# Begin cabal-rpm files:"-    mapM_ (\ l -> put $ license_macro +-+ l) licensefiles+    mapM_ (\l -> put $ license_macro +-+ l) licensefiles     unless (null docs) $       put $ "%doc" +-+ unwords docs     put $ "%{_datadir}" </> pkgver@@ -602,7 +604,7 @@       put $ "%files" +-+ filesParams Base       unless common $ do         put "# Begin cabal-rpm files:"-        mapM_ (\ l -> put $ license_macro +-+ l) licensefiles+        mapM_ (\l -> put $ license_macro +-+ l) licensefiles         unless (null datafiles) $           put $ "%{_datadir}" </> pkgver         put "# End cabal-rpm files"@@ -611,18 +613,18 @@     put $ "%files" +-+ filesParams Devel     -- put "# Begin cabal-rpm files:"     unless hasModules $-      mapM_ (\ l -> put $ license_macro +-+ l) licensefiles+      mapM_ (\l -> put $ license_macro +-+ l) licensefiles     unless (common || null docs) $       put $ "%doc" +-+ unwords docs     unless binlib $-      mapM_ ((\ p -> put $ "%{_bindir}" </> (if p == name then "%{pkg_name}" else p)) . unUnqualComponentName) execs+      mapM_ ((\p -> put $ "%{_bindir}" </> (if p == name then "%{pkg_name}" else p)) . unUnqualComponentName) execs     -- put "# End cabal-rpm files"     sectionNewline      when hasModules $ do       put "%if %{with haddock}"       put $ "%files" +-+ filesParams Doc-      mapM_ (\ l -> put $ license_macro +-+ l) licensefiles+      mapM_ (\l -> put $ license_macro +-+ l) licensefiles       put "%endif"       sectionNewline       put "%if %{with ghc_prof}"
src/Main.hs view
@@ -25,6 +25,7 @@ #endif                            ) #endif+import Data.List (partition) import Data.Version.Extra (readVersion) import Distribution.Text (simpleParse) import Distribution.Verbosity (normal, silent)@@ -46,7 +47,7 @@ import Paths_cabal_rpm (version) import Types hiding (readVersion) -import SimpleCabal (PackageIdentifier(..))+import SimpleCabal (PackageIdentifier(..), mkFlagName) import SimpleCmdArgs  main :: IO ()@@ -138,7 +139,13 @@     pkgId = optional (argumentWith (maybeReader simpleParse) "PKG[VER]")      flags :: Parser Flags-    flags = optionalWith auto 'f' "flag" "[(String,Bool)]" "Set or disable Cabal flags" []+    flags =+      mapToFlags <$> strOptionWith 'f' "flag" "\"flag1 -flag2 ...\"" "Set or disable Cabal flags"+      where+        mapToFlags cs =+          let ws = words cs in+            case partition (\w -> head w == '-') ws of+              (ds,es) -> map (\f -> (mkFlagName f,True)) es ++ map (\f -> (mkFlagName (tail f),False)) ds      quietRpmbuild = switchWith 'q' "quiet" "Quiet rpmbuild output"     verboseRpmbuild = flagWith True False 'v' "verbose" "Verbose rpmbuild output"
src/PackageUtils.hs view
@@ -106,6 +106,7 @@              then map sourceFieldFile <$> cmdLines "spectool" ["-S", fromJust mspec]              else return [tarfile]   srcdir <- getSourceDir+  createDirectoryIfMissing True srcdir   allExist <- and <$> mapM (doesFileExist . (srcdir </>)) sources   unless allExist $ do     pkggit <- grepGitConfig "\\(pkgs\\|src\\)."@@ -113,8 +114,6 @@       srcnv <- grep_ tarfile "sources"       when srcnv $         cmd_ "fedpkg" ["sources"]-    when havespec $-      createDirectoryIfMissing True srcdir     mapM_ (copyTarball False srcdir) sources     haveLocalCabal <- doesFileExist $ srcdir </> display pkgid <.> "cabal"     unless haveLocalCabal $