cabal-rpm 2.1.3 → 2.1.4
raw patch · 6 files changed
+44/−28 lines, 6 files
Files
- ChangeLog +6/−0
- README.md +6/−4
- cabal-rpm.cabal +1/−1
- src/Commands/Spec.hs +21/−19
- src/Main.hs +9/−2
- src/PackageUtils.hs +1/−2
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 $