cabal-rpm 0.11.1 → 0.11.2
raw patch · 7 files changed
+39/−18 lines, 7 files
Files
- ChangeLog +6/−0
- README.md +2/−0
- cabal-rpm.cabal +2/−2
- src/Commands/Spec.hs +15/−12
- src/Dependencies.hs +10/−1
- src/PackageUtils.hs +3/−2
- src/SysCmd.hs +1/−1
ChangeLog view
@@ -1,3 +1,9 @@+* 0.11.2 (2017-07-31)+- fix cblrpm update --subpackage+- fix rpm installation when no sudo (#49)+- fix handling of no exposed modules (#50)+- fix license handling for selfdep binlib (#51)+ * 0.11.1 (2017-03-13) - support building meta (compat) packages - invocation of optional stackage-query to update to LTS now works
README.md view
@@ -1,5 +1,7 @@ [](https://travis-ci.org/juhp/cabal-rpm) [](http://hackage.haskell.org/package/cabal-rpm)+[](http://stackage.org/lts/package/cabal-rpm)+[](http://stackage.org/nightly/package/cabal-rpm) # cabal-rpm
cabal-rpm.cabal view
@@ -1,5 +1,5 @@ Name: cabal-rpm-Version: 0.11.1+Version: 0.11.2 Synopsis: RPM packaging tool for Haskell Cabal-based packages Description: This package provides a RPM packaging tool for Haskell Cabal-based packages.@@ -24,7 +24,7 @@ Extra-source-files: README.md ChangeLog man/cabal-rpm.1.md man/cabal-rpm.1 Cabal-version: >=1.6 Tested-with: GHC == 7.0.4, GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4,- GHC == 7.10.3, GHC == 8.0.1+ GHC == 7.10.3, GHC == 8.0.2 source-repository head type: git
src/Commands/Spec.hs view
@@ -20,8 +20,8 @@ createSpecFile, createSpecFile_ ) where -import Dependencies (notInstalled, missingPackages, packageDependencies,- showDep, testsuiteDependencies)+import Dependencies (notInstalled, packageDependencies, showDep,+ subPackages, testsuiteDependencies) import Distro (Distro(..), detectDistro) import Options (RpmFlags (..)) import PackageUtils (copyTarball, getPkgName, isScmDir, latestPackage,@@ -178,14 +178,15 @@ let pkgver = if hasLib then "%{pkgver}" else pkg_name ++ "-%{version}" -- FIXME sort by build order- missing <- if rpmSubpackage flags then missingPackages pkgDesc else return []- subpackages <-+ -- FIXME recursive missingdeps+ missing <- if rpmSubpackage flags then subPackages (if specAlreadyExists then mspec else Nothing) pkgDesc else return []+ subpkgs <- mapM ((getsubpkgMacro >=> \(m,pv) -> put ("%global" +-+ m +-+ pv) >> return ("%{" ++ m ++ "}")) . stripPkgDevel) missing- let hasSubpkgs = notNull subpackages+ let hasSubpkgs = notNull subpkgs when hasSubpkgs $ do- put $ "%global subpkgs" +-+ unwords subpackages+ put $ "%global subpkgs" +-+ unwords subpkgs putNewline unless (null testsuiteDeps) $ do@@ -218,7 +219,7 @@ putHdr "License" $ (showLicense distro . license) pkgDesc putHdr "Url" $ "https://hackage.haskell.org/package" </> pkg_name putHdr "Source0" $ sourceUrl pkgver- mapM_ (\ (n,p) -> putHdr ("Source" ++ n) (sourceUrl p)) $ number subpackages+ mapM_ (\ (n,p) -> putHdr ("Source" ++ n) (sourceUrl p)) $ number subpkgs when (revision /= "0") $ if distro == SUSE then putHdr "Source1" $ "https://hackage.haskell.org/package" </> pkgver </> "revision" </> revision ++ ".cabal#" </> pkg_name ++ ".cabal"@@ -296,7 +297,7 @@ put "%global main_version %{version}" putNewline put "%if %{defined ghclibdir}"- mapM_ (\p -> put $ "%ghc_lib_subpackage" +-+ p) subpackages+ mapM_ (\p -> put $ "%ghc_lib_subpackage" +-+ p) subpkgs put "%endif" putNewline put "%global version %{main_version}"@@ -304,7 +305,7 @@ put "%prep" put $ "%setup -q" ++ (if pkgname /= name then " -n" +-+ pkgver else "") +-+- (if hasSubpkgs then unwords (map (("-a" ++) . fst) $ number subpackages) else "")+ (if hasSubpkgs then unwords (map (("-a" ++) . fst) $ number subpkgs) else "") when (distro == SUSE && revision /= "0") $ put $ "cp -p %{SOURCE1}" +-+ pkg_name ++ ".cabal" sectionNewline@@ -316,7 +317,9 @@ let cabalFlags = [ "-f" ++ (if b then "" else "-") ++ n | (FlagName n, b) <- rpmConfigurationsFlags flags ] put $ "%define cabal_configure_options " ++ unwords cabalFlags let pkgType = if hasLib then "lib" else "bin"- put $ "%ghc_" ++ pkgType ++ "_build"+ if hasLib && not exposesModules+ then put $ "%ghc_" ++ pkgType ++ "_build_without_haddock"+ else put $ "%ghc_" ++ pkgType ++ "_build" sectionNewline put "%install"@@ -351,8 +354,8 @@ when (hasLib && not exposesModules) $ put "mv %{buildroot}%{_ghcdocdir}{,-devel}" - when selfdep $- put "mv %{buildroot}%{_ghcdocdir}/{,ghc-}%{name}"+ when (selfdep && binlib) $+ put "mv %{buildroot}%{_ghclicensedir}/{,ghc-}%{name}" sectionNewline
src/Dependencies.hs view
@@ -21,6 +21,7 @@ notInstalled, packageDependencies, showDep,+ subPackages, testsuiteDependencies ) where @@ -33,7 +34,7 @@ #endif import Control.Monad (filterM, when) -import Data.List (delete, nub)+import Data.List (delete, isSuffixOf, nub) import Data.Maybe (catMaybes, isNothing) import Distribution.Package (Dependency (..), PackageName (..))@@ -168,3 +169,11 @@ singleLine :: String -> String singleLine "" = "" singleLine s = (head . lines) s++subPackages :: Maybe FilePath -> PackageDescription -> IO [String]+subPackages mspec pkgDesc = do+ develSubpkgs <- filter ("-devel" `isSuffixOf`) . lines <$> maybe (return "") (\ f -> cmd "rpmspec" ["-q", "--qf", "%{name}\n", f]) mspec+ let self = packageName $ package pkgDesc+ subpkgs = delete (showDep self) develSubpkgs+ missing <- missingPackages pkgDesc+ return $ nub (subpkgs ++ missing)
src/PackageUtils.hs view
@@ -28,6 +28,7 @@ pkgInstall, prepare, removePrefix,+ removeSuffix, repoquery, rpmbuild, rpmInstall,@@ -368,7 +369,7 @@ else do createDirectoryIfMissing True dir copyFile (head tarballs) dest- -- cabal fetch creates tarballs with mode 0600+ -- cabal-1.18 fetch creates tarballs with mode 0600 stat <- getFileStatus dest when (fileMode stat /= 0o100644) $ setFileMode dest 0o0644@@ -457,7 +458,7 @@ let exec = if hard then cmd_ else trySystem fedora <- cmd "rpm" ["--eval", "%fedora"] let nogpgcheck = ["--nogpgcheck" | fedora `elem` ["22", "23"]]- exec (fromMaybe pkginstaller maybeSudo) $ maybe [] (const pkginstaller) maybeSudo : "install" : args ++ nogpgcheck+ exec (fromMaybe pkginstaller maybeSudo) $ maybe [] (const [pkginstaller]) maybeSudo ++ ("install" : args ++ nogpgcheck) where showPkg :: String -> String showPkg p = if '(' `elem` p then show p else p
src/SysCmd.hs view
@@ -86,7 +86,7 @@ requireProgram c (ret, out, err) <- readProcessWithExitCode c args "" case ret of- ExitSuccess -> return $removeTrailingNewline out+ ExitSuccess -> return $ removeTrailingNewline out ExitFailure n -> die ("\"" ++ c +-+ unwords args ++ "\"" +-+ "failed with status" +-+ show n ++ "\n" ++ err) -- hide stdout