Hello community, here is the log from the commit of package cabal-rpm for openSUSE:Factory checked in at 2015-02-20 12:01:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cabal-rpm (Old) and /work/SRC/openSUSE:Factory/.cabal-rpm.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "cabal-rpm" Changes: -------- --- /work/SRC/openSUSE:Factory/cabal-rpm/cabal-rpm.changes 2015-02-16 22:12:45.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.cabal-rpm.new/cabal-rpm.changes 2015-02-20 12:01:23.000000000 +0100 @@ -1,0 +2,9 @@ +Wed Feb 18 18:36:09 UTC 2015 - mimi.vx@gmail.com + +- Bump to version 0.9.4 ++ remove requires-space.patch +* use dnf if installed instead of yum for install and repoquery +* update now only commits changes and new source if git origin is ssh +* allow Cabal-1.22 + +------------------------------------------------------------------- Old: ---- cabal-rpm-0.9.3.tar.gz requires-space.patch New: ---- cabal-rpm-0.9.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cabal-rpm.spec ++++++ --- /var/tmp/diff_new_pack.CntBTk/_old 2015-02-20 12:01:24.000000000 +0100 +++ /var/tmp/diff_new_pack.CntBTk/_new 2015-02-20 12:01:24.000000000 +0100 @@ -17,7 +17,7 @@ Name: cabal-rpm -Version: 0.9.3 +Version: 0.9.4 Release: 0 Summary: RPM packaging tool for Haskell Cabal-based packages License: GPL-3.0+ @@ -25,8 +25,6 @@ Url: https://hackage.haskell.org/package/%{name} Source0: https://hackage.haskell.org/package/%{name}-%{version}/%{name}-%{version}.tar.gz Source2: cabal-rpm.1 -# PATCH-FIX-UPSTREAM requires-space.patch - fix missed space in Requires - Ondřej Súkup mimi.vx@gmail.com -Patch0: requires-space.patch BuildRequires: ghc-Cabal-devel # Begin cabal-rpm deps: BuildRequires: ghc-directory-devel @@ -52,7 +50,6 @@ %prep %setup -q -%patch0 -p1 %build %{ghc_bin_build} ++++++ cabal-rpm-0.9.3.tar.gz -> cabal-rpm-0.9.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.3/ChangeLog new/cabal-rpm-0.9.4/ChangeLog --- old/cabal-rpm-0.9.3/ChangeLog 2015-02-05 16:50:49.000000000 +0100 +++ new/cabal-rpm-0.9.4/ChangeLog 2015-02-17 14:43:22.000000000 +0100 @@ -1,3 +1,8 @@ +* 0.9.4 (2015-02-17) +- use dnf if installed instead of yum for install and repoquery +- update now only commits changes and new source if git origin is ssh +- allow Cabal-1.22 + * 0.9.3 (2015-02-05) - make sure tarball destdir exists before copying - improve output for listing missing packages diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.3/README.md new/cabal-rpm-0.9.4/README.md --- old/cabal-rpm-0.9.3/README.md 2015-02-05 16:50:49.000000000 +0100 +++ new/cabal-rpm-0.9.4/README.md 2015-02-17 14:43:22.000000000 +0100 @@ -4,7 +4,7 @@ # cabal-rpm cabal-rpm is a tool for RPM packaging of Haskell Cabal-based packages. -It interacts with yum to install build dependencies and can also act as +It interacts with yum/dnf to install build dependencies and can also act as a cabal-install wrapper installing dependencies packaged in Fedora before running "cabal install". @@ -58,7 +58,7 @@ $ cblrpm install [pkg][-ver] -will yum install available missing dependencies and +will yum/dnf install available missing dependencies and run "cabal install" to build the package. ## Development diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.3/cabal-rpm.cabal new/cabal-rpm-0.9.4/cabal-rpm.cabal --- old/cabal-rpm-0.9.3/cabal-rpm.cabal 2015-02-05 16:50:49.000000000 +0100 +++ new/cabal-rpm-0.9.4/cabal-rpm.cabal 2015-02-17 14:43:22.000000000 +0100 @@ -1,11 +1,11 @@ Name: cabal-rpm -Version: 0.9.3 +Version: 0.9.4 Synopsis: RPM packaging tool for Haskell Cabal-based packages Description: This package provides a RPM packaging tool for Haskell Cabal-based packages. . cblrpm has commands to generate a RPM spec file and srpm for a package. - It can rpmbuild packages, yum install their dependencies, prep packages, + It can rpmbuild packages, yum/dnf install their dependencies, prep packages, and install them. There are commands to list package dependencies and missing dependencies. The diff command compares the current spec file with a freshly generated one and the update command updates the spec file @@ -30,7 +30,7 @@ Executable cblrpm Main-is: Main.hs Build-depends: base < 5, - Cabal > 1.10 && < 1.21, + Cabal > 1.10 && < 1.23, directory, filepath, old-locale, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.3/src/Commands/Depends.hs new/cabal-rpm-0.9.4/src/Commands/Depends.hs --- old/cabal-rpm-0.9.3/src/Commands/Depends.hs 2015-02-05 16:50:49.000000000 +0100 +++ new/cabal-rpm-0.9.4/src/Commands/Depends.hs 2015-02-17 14:43:22.000000000 +0100 @@ -5,7 +5,7 @@ -- Maintainer : Jens Petersen <petersen@fedoraproject.org> -- Stability : alpha -- --- Explanation: cabal wrapper which yum installs dependencies +-- Explanation: determines dependencies -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -20,7 +20,7 @@ import Dependencies (dependencies, missingPackages, packageDependencies) import PackageUtils (PackageData (..), prepare, stripPkgDevel) import Setup (quiet) -import SysCmd (cmd, (+-+)) +import SysCmd (repoquery, (+-+)) import Control.Applicative ((<$>)) import Control.Monad (filterM, unless, void) @@ -61,7 +61,7 @@ return $ nub $ accum2 ++ more notAvail :: String -> IO Bool -notAvail pkg = null <$> cmd "repoquery" [pkg] +notAvail pkg = null <$> repoquery [] pkg missingDepsPkg :: String -> IO [String] missingDepsPkg pkg = do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.3/src/Commands/Install.hs new/cabal-rpm-0.9.4/src/Commands/Install.hs --- old/cabal-rpm-0.9.3/src/Commands/Install.hs 2015-02-05 16:50:49.000000000 +0100 +++ new/cabal-rpm-0.9.4/src/Commands/Install.hs 2015-02-17 14:43:22.000000000 +0100 @@ -6,7 +6,7 @@ -- Stability : alpha -- Portability : portable -- --- Explanation: cabal wrapper which yum installs dependencies +-- Explanation: cabal wrapper which installs rpm dependencies -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -21,7 +21,7 @@ import Dependencies (missingPackages, notInstalled) import PackageUtils (PackageData (..), RpmStage (..), stripPkgDevel) import Setup (RpmFlags (..)) -import SysCmd (cmd, cmd_, sudo, yumInstall, (+-+)) +import SysCmd (cmd, cmd_, pkgInstall, rpmInstall, (+-+)) import Control.Applicative ((<$>)) import Control.Monad (unless, when) @@ -32,7 +32,7 @@ let pkgDesc = packageDesc pkgdata missing <- missingPackages pkgDesc unless (null missing) $ do - yumInstall missing False + pkgInstall missing False stillMissing <- missingPackages pkgDesc unless (null stillMissing) $ do putStrLn $ "Missing:" +-+ unwords stillMissing @@ -42,7 +42,7 @@ rpmdir <- cmd "rpm" ["--eval", "%{_rpmdir}"] rpms <- (map (\ p -> rpmdir </> arch </> p ++ ".rpm") . lines) <$> cmd "rpmspec" ["-q", spec] - sudo "yum" $ ["-y", "localinstall"] ++ rpms + rpmInstall rpms installMissing :: String -> IO () installMissing pkg = do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.3/src/Commands/RpmBuild.hs new/cabal-rpm-0.9.4/src/Commands/RpmBuild.hs --- old/cabal-rpm-0.9.3/src/Commands/RpmBuild.hs 2015-02-05 16:50:49.000000000 +0100 +++ new/cabal-rpm-0.9.4/src/Commands/RpmBuild.hs 2015-02-17 14:43:22.000000000 +0100 @@ -24,7 +24,7 @@ import PackageUtils (copyTarball, isScmDir, PackageData (..), packageName, packageVersion, rpmbuild, RpmStage (..)) import Setup (RpmFlags (..)) -import SysCmd (cmd, yumInstall, (+-+)) +import SysCmd (cmd, pkgInstall, (+-+)) --import Control.Exception (bracket) import Control.Monad (unless, void, when) @@ -62,7 +62,7 @@ name = packageName pkg when (stage `elem` [Binary,BuildDep]) $ do missing <- missingPackages pkgDesc - yumInstall missing (stage == Binary) + pkgInstall missing (stage == Binary) unless (stage == BuildDep) $ do srcdir <- cmd "rpm" ["--eval", "%{_sourcedir}"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.3/src/Commands/Update.hs new/cabal-rpm-0.9.4/src/Commands/Update.hs --- old/cabal-rpm-0.9.3/src/Commands/Update.hs 2015-02-05 16:50:49.000000000 +0100 +++ new/cabal-rpm-0.9.4/src/Commands/Update.hs 2015-02-17 14:43:22.000000000 +0100 @@ -18,10 +18,10 @@ import Commands.Spec (createSpecFile) import FileUtils (withTempDirectory) -import PackageUtils (PackageData (..), bringTarball, isGitDir, latestPkg, +import PackageUtils (PackageData (..), bringTarball, latestPkg, packageName, packageVersion, prepare, removePrefix) import Setup (RpmFlags (..)) -import SysCmd (cmd_, shell, (+-+)) +import SysCmd (cmd_, cmdBool, shell, (+-+)) import Control.Monad (when) import Distribution.PackageDescription (PackageDescription (..)) @@ -43,9 +43,9 @@ then error $ current +-+ "is latest version." else do bringTarball latest - pkgGit <- isGitDir "." - when pkgGit $ - cmd_ "fedpkg" ["new-sources", latest ++ ".tar.gz"] + rwGit <- cmdBool "grep -q 'url = ssh://' .git/config" + when rwGit $ + cmd_ "fedpkg" ["new-sources", latest ++ ".tar.gz"] withTempDirectory $ \cwd -> do curspec <- createSpecVersion current spec newspec <- createSpecVersion latest spec @@ -54,7 +54,7 @@ cmd_ "sed" ["-i", "-e s/^\\(Release: \\).*/\\10%{?dist}/", spec] let newver = removePrefix (name ++ "-") latest cmd_ "rpmdev-bumpspec" ["-c", "update to" +-+ newver, spec] - when pkgGit $ + when rwGit $ cmd_ "git" ["commit", "-a", "-m", "update to" +-+ newver] where createSpecVersion :: String -> String -> IO FilePath diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.3/src/Dependencies.hs new/cabal-rpm-0.9.4/src/Dependencies.hs --- old/cabal-rpm-0.9.3/src/Dependencies.hs 2015-02-05 16:50:49.000000000 +0100 +++ new/cabal-rpm-0.9.4/src/Dependencies.hs 2015-02-17 14:43:22.000000000 +0100 @@ -23,7 +23,7 @@ ) where import PackageUtils (packageName) -import SysCmd (cmd, cmdBool, optionalProgram, (+-+)) +import SysCmd (cmd, cmdBool, repoquery, (+-+)) import Control.Applicative ((<$>)) import Control.Monad (filterM, liftM) @@ -67,6 +67,8 @@ clibs = concatMap extraLibs buildinfo return (deps, tools, nub clibs, pkgcfgs, selfdep) +data RepoQueryType = Rpm | Repoquery deriving Eq + resolveLib :: String -> IO (Maybe String) resolveLib lib = do lib64 <- doesDirectoryExist "/usr/lib64" @@ -74,21 +76,16 @@ let lib_path = "/usr/lib" ++ libsuffix ++ "/lib" ++ lib ++ ".so" libInst <- doesFileExist lib_path if libInst - then rpmqueryFile "rpm" lib_path + then rpmqueryFile Rpm lib_path else do - haveRpqry <- optionalProgram "repoquery" - if haveRpqry - then do - putStrLn $ "Running repoquery on" +-+ "lib" ++ lib - rpmqueryFile "repoquery" lib_path - else do - warning $ "Install yum-utils to resolve package that provides uninstalled" +-+ lib_path - return Nothing + putStrLn $ "Running repoquery on" +-+ "lib" ++ lib + rpmqueryFile Repoquery lib_path -- use repoquery or rpm -q to query which package provides file -rpmqueryFile :: String -> FilePath -> IO (Maybe String) -rpmqueryFile qc file = do - out <- cmd qc ["-q", "--qf=%{name}", "-f", file] +rpmqueryFile :: RepoQueryType -> FilePath -> IO (Maybe String) +rpmqueryFile qt file = do + let args = ["-q", "--qf=%{name}", "-f"] + out <- if qt == Rpm then cmd "rpm" (args ++ [file]) else repoquery args file let pkgs = nub $ words out -- EL5 repoquery can return "No package provides <file>" case pkgs of @@ -141,7 +138,7 @@ derefPkg :: String -> IO String derefPkg req = do - res <- singleLine <$> cmd "repoquery" ["--qf", "%{name}", "--whatprovides", req] + res <- singleLine <$> repoquery ["--qf", "%{name}", "--whatprovides"] req if null res then error $ req +-+ "provider not found by repoquery" else return res diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.3/src/SysCmd.hs new/cabal-rpm-0.9.4/src/SysCmd.hs --- old/cabal-rpm-0.9.3/src/SysCmd.hs 2015-02-05 16:50:49.000000000 +0100 +++ new/cabal-rpm-0.9.4/src/SysCmd.hs 2015-02-17 14:43:22.000000000 +0100 @@ -22,16 +22,18 @@ cmdBool, cmdQuiet, cmdSilent, + pkgInstall, + repoquery, + rpmInstall, trySystem, shell, sudo, - yumInstall, (+-+)) where import Control.Monad (unless, void, when) import Data.Functor ((<$>)) import Data.List ((\\)) -import Data.Maybe (fromMaybe, isJust, isNothing) +import Data.Maybe (fromMaybe, isJust, isNothing, maybeToList) import Distribution.Simple.Utils (die, warn, findProgramLocation) import Distribution.Verbosity (normal) @@ -114,16 +116,31 @@ then init str else str +infixr 4 +-+ (+-+) :: String -> String -> String "" +-+ s = s s +-+ "" = s s +-+ t = s ++ " " ++ t -yumInstall :: [String] -> Bool -> IO () -yumInstall [] _ = return () -yumInstall pkgs hard = do +packageManager :: IO String +packageManager = do + havednf <- optionalProgram "dnf" + if havednf + then return "dnf" + else requireProgram "yum" >> return "yum" + +repoquery :: [String] -> String -> IO String +repoquery args key = do + havednf <- optionalProgram "dnf" + let (prog, subcmd) = if havednf then ("dnf", Just "repoquery") else ("repoquery", Nothing) + cmd prog (maybeToList subcmd ++ args ++ [key]) + +pkgInstall :: [String] -> Bool -> IO () +pkgInstall [] _ = return () +pkgInstall pkgs hard = do + pkginstaller <- packageManager putStrLn $ "Running repoquery" +-+ unwords pkgs - repopkgs <- lines <$> readProcess "repoquery" (["--qf", "%{name}"] ++ pkgs) [] + repopkgs <- mapM (repoquery ["--qf", "%{name}"]) pkgs let missing = pkgs \\ repopkgs if not (null missing) && hard then error $ unwords missing +-+ "not available." @@ -141,13 +158,18 @@ else do havesudo <- optionalProgram "sudo" return $ if havesudo then Just "sudo" else Nothing - requireProgram "yum" let args = map showPkg repopkgs - putStrLn $ "Running:" +-+ fromMaybe "" maybeSudo +-+ "yum install" +-+ unwords args + putStrLn $ "Running:" +-+ fromMaybe "" maybeSudo +-+ pkginstaller +-+ "install" +-+ unwords args let exec = if hard then cmd_ else trySystem fedora <- cmd "rpm" ["--eval", "%fedora"] let nogpgcheck = ["--nogpgcheck" | fedora `elem` ["21", "22"]] - exec (fromMaybe "yum" maybeSudo) $ maybe [] (const "yum") maybeSudo : "install" : args ++ nogpgcheck + exec (fromMaybe pkginstaller maybeSudo) $ maybe [] (const pkginstaller) maybeSudo : "install" : args ++ nogpgcheck showPkg :: String -> String showPkg p = if '(' `elem` p then show p else p + +rpmInstall :: [String] -> IO () +rpmInstall rpms = do + pkginstaller <- packageManager + let (inst, arg) = if pkginstaller == "dnf" then ("dnf", "install") else ("yum", "localinstall") + sudo inst $ ["-y", arg] ++ rpms -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org