diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+# 1.0.3 (2019-12-31)
+- define %_devel for f30 packaging compatibility
+- missingdeps and builddep fixes
+- --standalone: add BRs for deps of missing deps
+
 # 1.0.2 (2019-12-09)
 - allow newer time for ghc-8.8
 - more type refactoring: PackageIdentifier, LibPkgType, RpmPackage
diff --git a/TODO b/TODO
--- a/TODO
+++ b/TODO
@@ -1,10 +1,9 @@
 - switch to Cabal 2 for better License handling
-- builddep should only install ghc-*-devel not ghc-*-prof
-- type for rpm (dep) packages
+- check/warn about executable doc files!
+  - add rpmlint command
+- prof install?
 
 - spec --bounds
-- distinguish binlib executable and library build-deps
-  and library and testsuite build-tools
 - rework "BR: ghc-*-static" with %{?_isa}
 - jump from lts-N to lts-N+1 instead of straight to Hackage
 - move Main to app?
@@ -17,18 +16,11 @@
 - read options from header line
 - use <> instead of ++
 
-- unify hackage and package deps into a common data structure
-  with pkgShow and depShow to render strings
-  * add RpmPackage and use Dependency
-
 # Commands
 - fetch
 - aliases for missingdeps
 - allow cmd abbreviations?
 
-## Options
-- command-based flags and help (optparse-applicative)
-
 ## spec/packaging
 - filter or blockformat literate code in description ("> ...")
 ? use repoquery for missing testdeps
@@ -44,31 +36,23 @@
 
 ## standalone
 - packaging of lib stacks into one deployable rpm
-* support creating and building standalone package including its missing deps
-  - phase 1: cabal sandbox
+* support building standalone package including missing deps
   - phase 2: embed src tarballs of missing deps?
 
 ## local
 - --no-network
 - llvm flag
 - running "cabal-rpm local pkg-ver" in pkg/ with existing pkg.spec when newer pkg exists builds old pkg
-- use rpmspec + dnf/yum-builddep if needed to install deps not in .cabal
 
-## install
-- check ghc version compatible (done?)
-
 ## update
 - warm about new missing deps
 - reverse deps and rebuilds
 * update subpkg sources
-- update and git add revised .cabal
 - sort sources
 
 ## depends
 - dependency graphs or sorted recursive deps
 - reverse dependencies
-- using repoquery for uninstalled missingdeps
-- use rpmspec when available?  (Centos5/6 too old)
 - use su -c when no sudo ??
   - any way to know if user is sudoer?
 
@@ -78,6 +62,5 @@
 - scratch builds
 
 ## diff
-- filter %changelog
 - ignore whitespace option
 - diff two versions
diff --git a/cabal-rpm.cabal b/cabal-rpm.cabal
--- a/cabal-rpm.cabal
+++ b/cabal-rpm.cabal
@@ -1,5 +1,5 @@
 Name:                cabal-rpm
-Version:             1.0.2
+Version:             1.0.3
 Synopsis:            RPM packaging tool for Haskell Cabal-based packages
 Description:
     This package provides a RPM packaging tool for Haskell Cabal-based packages.
@@ -83,4 +83,3 @@
                   Paths_cabal_rpm
     Hs-Source-Dirs:     src
     GHC-options:        -fwarn-missing-signatures -Wall
-    Extensions:         CPP
diff --git a/src/Commands/Depends.hs b/src/Commands/Depends.hs
--- a/src/Commands/Depends.hs
+++ b/src/Commands/Depends.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  Commands.Depends
 -- Copyright   :  (C) 2014-2019  Jens Petersen
@@ -17,19 +19,19 @@
     Depends (..)
     ) where
 
-import Dependencies (dependencies, missingPackages, packageDependencies)
-import PackageUtils (PackageData (..), prepare, repoquery)
+import Dependencies (dependencies, hsDep, missingPackages, notAvail,
+                     packageDependencies, recurseMissing, showDep)
+import PackageUtils (PackageData (..), prepare)
 import Types
 
-import SimpleCabal (PackageIdentifier, PackageName)
-import SimpleCmd ((+-+))
+import SimpleCabal (PackageIdentifier)
 
 #if (defined(MIN_VERSION_base) && MIN_VERSION_base(4,8,0))
 #else
 import Control.Applicative ((<$>))
 #endif
 import Control.Monad (filterM, unless, void)
-import Data.List (nub, sort, (\\))
+import Data.List (nub, sort)
 import Data.Maybe (mapMaybe)
 import Distribution.Text (display)
 import System.FilePath ((<.>))
@@ -48,49 +50,10 @@
       mapM_ putStrLn $ map display (nub (deps ++ setup)) ++ tools ++ clibs' ++ pkgcfgs'
     Requires -> do
       (deps, setup, tools, clibs, pkgcfgs) <- packageDependencies pkgDesc
-      mapM_ putStrLn $ sort . nub  $ map (show . RpmHsLib Devel) (deps ++ setup) ++ tools ++ clibs ++ pkgcfgs
+      mapM_ putStrLn $ sort . nub  $ map (showRpm . RpmHsLib Devel) (deps ++ setup) ++ tools ++ clibs ++ pkgcfgs
     Missing -> do
       missing <- missingPackages pkgDesc >>= filterM notAvail
       mapM_ (putStrLn . showDep) missing
       let miss = mapMaybe hsDep missing
       unless (null miss) $ putStrLn ""
       void $ recurseMissing flags stream [] miss
-  where
-    showDep :: RpmPackage -> String
-    showDep (RpmHsLib _ n) = display n
-    showDep (RpmHsBin n) = display n
-    showDep p = show p
-
-hsDep :: RpmPackage -> Maybe PackageName
-hsDep (RpmHsLib _ n) = Just n
-hsDep _ = Nothing
-
-recurseMissing :: Flags -> Stream -> [PackageName] -> [PackageName] -> IO [PackageName]
-recurseMissing _ _ already [] = return already
-recurseMissing flags stream already (dep:deps) = do
-  miss <- missingDepsPkg flags stream dep
-  putMissing miss already
-  let hmiss = mapMaybe hsDep miss
-  let accum = nub $ hmiss ++ already
-  -- deeper <- recurseMissing flags stream accum (miss \\ accum)
-  -- let accum2 = nub $ accum ++ deeper
-  more <- recurseMissing flags stream accum (deps \\ accum)
-  return $ nub $ accum ++ more
-
-notAvail :: RpmPackage -> IO Bool
-notAvail pkg = null <$> repoquery [] (show pkg)
-
-missingDepsPkg :: Flags -> Stream -> PackageName -> IO [RpmPackage]
-missingDepsPkg flags stream pkg = do
-  pkgdata <- prepare flags stream (Just (unversionedPkgId pkg)) False
-  missingPackages (packageDesc pkgdata) >>= filterM notAvail
-
-putMissing :: [RpmPackage] -> [PackageName] -> IO ()
-putMissing [] _ = return ()
-putMissing deps already = putStrLn $ "  " ++ "needs:" +-+ unwords (markAlready deps)
-  where
-    markAlready :: [RpmPackage] -> [String]
-    markAlready [] = []
-    markAlready (d:ds) =
-      let (op, cl) = if maybe False (`elem` already) (hsDep d) then ("(", ")") else ("", "") in
-      (op ++ show d ++ cl) : markAlready ds
diff --git a/src/Commands/Diff.hs b/src/Commands/Diff.hs
--- a/src/Commands/Diff.hs
+++ b/src/Commands/Diff.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  Commands.Diff
 -- Copyright   :  (C) 2014,2017-2018  Jens Petersen
diff --git a/src/Commands/Install.hs b/src/Commands/Install.hs
--- a/src/Commands/Install.hs
+++ b/src/Commands/Install.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  Commands.Install
 -- Copyright   :  (C) 2012-2019 Jens Petersen
diff --git a/src/Commands/Refresh.hs b/src/Commands/Refresh.hs
--- a/src/Commands/Refresh.hs
+++ b/src/Commands/Refresh.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  Commands.Refresh
 -- Copyright   :  (C) 2016-2019  Jens Petersen
diff --git a/src/Commands/RpmBuild.hs b/src/Commands/RpmBuild.hs
--- a/src/Commands/RpmBuild.hs
+++ b/src/Commands/RpmBuild.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  Commands.RpmBuild
 -- Copyright   :  (C) 2007-2008  Bryan O'Sullivan
diff --git a/src/Commands/Spec.hs b/src/Commands/Spec.hs
--- a/src/Commands/Spec.hs
+++ b/src/Commands/Spec.hs
@@ -21,9 +21,9 @@
   ) where
 
 import Dependencies (missingLibraries,
-                     missingOtherPkgs, notSrcOrInst,
-                     packageDependencies, pkgSuffix, subPackages,
-                     testsuiteDependencies')
+                     missingOtherPkgs, notSrcOrInst, packageDeps,
+                     packageDependencies, pkgSuffix,
+                     subPackages, testsuiteDependencies')
 import Types
 import PackageUtils (bringTarball, latestPackage, PackageData (..), prepare)
 import SimpleCabal (buildable, mkPackageName, PackageDescription (..),
@@ -170,8 +170,8 @@
   when standalone $ do
     global "ghc_without_dynamic" "1"
     global "ghc_without_shared" "1"
-    global "without_prof" "1"
-    global "without_haddock" "1"
+    put "%undefine with_ghc_prof"
+    put "%undefine with_haddock"
     global "debug_package" "%{nil}"
     putNewline
 
@@ -179,6 +179,13 @@
     global "pkg_name" name
     global "pkgver" "%{pkg_name}-%{version}"
     putNewline
+  global "_devel" $
+    if hasLib
+    -- rpm-4.15 supports %{expr:b?t:f} (not in rhel8)
+    then "-%{?ghc_devel_prof}%{!?ghc_devel_prof:devel}"
+    -- FIXME: use static%{_isa}
+    else "-%{?ghc_devel_prof:static}%{!?ghc_devel_prof:devel}"
+  putNewline
 
   let pkgver = if hasLib then "%{pkgver}" else pkg_name ++ "-%{version}"
 
@@ -186,7 +193,7 @@
   -- FIXME recursive missingdeps
   missingLibs <- do
     subs <- if subpackage then subPackages mspec pkgDesc else return []
-    miss <- if subpackage || standalone then missingLibraries pkgDesc else return []
+    miss <- if subpackage || standalone then missingLibraries hasLibPkg pkgDesc else return []
     return $ nub (subs ++ miss)
   subpkgs <- if subpackage then
     mapM (getsubpkgMacro stream specFile >=>
@@ -229,16 +236,14 @@
   put "# Begin cabal-rpm deps:"
   when (mkPackageName "Cabal" `notElem` deps || not hasLib || not (null setupDeps)) $ do
 --    put "# Setup"
-  -- `not hasLib` is for -static
-    when (mkPackageName "Cabal" `notElem` deps {-|| not hasLib-}) $
+    when (mkPackageName "Cabal" `notElem` deps) $
       putHdr "BuildRequires" "ghc-Cabal-devel"
-    mapM_ (\ d -> (if d `elem` missingLibs then putHdrComment else putHdr) "BuildRequires" (show (RpmHsLib Devel d))) setupDeps
+    mapM_ (\ d -> (if d `elem` missingLibs then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Devel d))) setupDeps
   putHdr "BuildRequires" $ "ghc-rpm-macros" ++ (if hasSubpkgs then "-extra" else "")
 
-  unless (null deps) $ do
+  unless (null deps) $
 --    put "# Build"
-    let ghcLibDep = RpmHsLib $ if hasLibPkg then Prof else Static
-    mapM_ (\ d -> (if d `elem` missingLibs then putHdrComment else putHdr) "BuildRequires" (show (ghcLibDep d))) $ sort deps
+    mapM_ (\ d -> (if d `elem` missingLibs then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Base d) ++ "%{_devel}")) $ sort deps
   let otherdeps = sort $ tools ++ clibs ++ pkgcfgs
   unless (null otherdeps) $ do
 --    put "# Other"
@@ -251,7 +256,7 @@
   let testDeps = sort $ testsuiteDeps \\ (mkPackageName "Cabal" : (deps ++ setupDeps))
   unless (null testDeps) $ do
     put "%if %{with tests}"
-    mapM_ (putHdr "BuildRequires" . show . RpmHsLib Devel) testDeps
+    mapM_ (putHdr "BuildRequires" . showRpm . RpmHsLib Devel) testDeps
     put "%endif"
 
   let common = binlib && datafiles /= [] && not standalone
@@ -259,8 +264,16 @@
   when common $
     putHdr "Requires" $ "%{name}-common" ++ versionRelease
   put "# End cabal-rpm deps"
-  when standalone $
+  when standalone $ do
     putHdr "BuildRequires" "cabal-install > 1.18"
+    unless (null missingLibs) $
+      let putPkgDeps pkg = do
+            more <- packageDeps flags stream pkg
+            let moredeps = more \\ (deps ++ missingLibs)
+            unless (null moredeps) $ do
+              put $ "# deps for missing" +-+ display pkg ++ ":"
+              mapM_ (\ d -> (if d `elem` missingLibs then putHdrComment else putHdr) "BuildRequires" (showRpm (RpmHsLib Static d))) moredeps
+      in mapM_ putPkgDeps missingLibs
   putNewline
 
   put "%description"
@@ -403,6 +416,17 @@
   unless (null testsuiteDeps) $ do
     put "%check"
     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"
diff --git a/src/Commands/Update.hs b/src/Commands/Update.hs
--- a/src/Commands/Update.hs
+++ b/src/Commands/Update.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  Commands.Update
 -- Copyright   :  (C) 2014-2019  Jens Petersen
diff --git a/src/Dependencies.hs b/src/Dependencies.hs
--- a/src/Dependencies.hs
+++ b/src/Dependencies.hs
@@ -17,15 +17,20 @@
 
 module Dependencies (
   dependencies,
+  hsDep,
   missingLibraries,
   missingOtherPkgs,
   missingPackages,
+  notAvail,
   notInstalled,
   notSrcOrInst,
+  packageDeps,
   packageDependencies,
   pkgInstallMissing,
   pkgInstallMissing',
   pkgSuffix,
+  recurseMissing,
+  showDep,
   subPackages,
   testsuiteDependencies'
   ) where
@@ -49,10 +54,10 @@
 import Control.Monad (filterM, when, unless)
 
 import Data.List (delete, isSuffixOf, nub, (\\))
-import Data.Maybe (catMaybes, fromJust, isNothing)
+import Data.Maybe (catMaybes, fromJust, isNothing, mapMaybe)
 
 import Distribution.Text (display)
-import Distribution.PackageDescription (allBuildInfo, BuildInfo (..))
+import Distribution.PackageDescription (allBuildInfo, BuildInfo (..),  hasLibs)
 
 import System.Directory (doesDirectoryExist, doesFileExist)
 import System.FilePath ((<.>), (</>))
@@ -145,13 +150,22 @@
   pcpkgs <- mapM derefPkg pkgcfgs
   filterM notSrcOrInst $ nub $ map (RpmHsLib Devel) (deps ++ setup ++ [mkPackageName "Cabal"]) ++ map RpmOther (["ghc-rpm-macros"] ++ tools ++ clibs ++ pcpkgs)
 
-missingLibraries :: PackageDescription -> IO [PackageName]
-missingLibraries pkgDesc = do
+missingLibraries :: Bool -> PackageDescription -> IO [PackageName]
+missingLibraries hasLibPkg pkgDesc = do
   (deps, setup, _, _, _) <- packageDependencies pkgDesc
-  bdeps <- filterM (notSrcOrInst . RpmHsLib Prof) deps
+  let libType = if hasLibPkg then Prof else Devel
+  bdeps <- filterM (notSrcOrInst . RpmHsLib libType) deps
   sdeps <- filterM (notSrcOrInst . RpmHsLib Devel) $ (mkPackageName "Cabal" : setup) \\ deps
   return $ bdeps ++ sdeps
 
+uninstalledLibraries :: Bool -> PackageDescription -> IO [PackageName]
+uninstalledLibraries hasLibPkg pkgDesc = do
+  (deps, setup, _, _, _) <- packageDependencies pkgDesc
+  let libType = if hasLibPkg then Prof else Devel
+  bdeps <- filterM (notInstalled . RpmHsLib libType) deps
+  sdeps <- filterM (notInstalled . RpmHsLib Devel) $ (mkPackageName "Cabal" : setup) \\ deps
+  return $ bdeps ++ sdeps
+
 missingOtherPkgs :: PackageDescription -> IO [String]
 missingOtherPkgs pkgDesc = do
   (_, _, tools, clibs, pkgcfgs) <- packageDependencies pkgDesc
@@ -160,7 +174,7 @@
 
 notSrcOrInst :: RpmPackage -> IO Bool
 notSrcOrInst pkg = do
-  src <- doesDirectoryExist (".." </> show (baseLibPackage pkg))
+  src <- doesDirectoryExist (".." </> showRpm (baseLibPackage pkg))
   if src then return False
     else notInstalled pkg
   where
@@ -174,7 +188,7 @@
   where
     quoteShow :: RpmPackage -> String
     quoteShow (RpmOther cs) = shellQuote cs
-    quoteShow p = show p
+    quoteShow p = showRpm p
 
     shellQuote :: String -> String
     shellQuote (c:cs) = (if c `elem` "()" then (['\\', c] ++) else (c:)) (shellQuote cs)
@@ -209,24 +223,24 @@
 pkgInstallMissing' pkgdata = do
   let pkgDesc = packageDesc pkgdata
       mspec = specFilename pkgdata
-  missing <- missingLibraries pkgDesc
+  missing <- uninstalledLibraries (hasLibs pkgDesc) pkgDesc
   if null missing then return []
     else do
     subpkgs <- subPackages mspec pkgDesc
     let pkgs = missing \\ subpkgs
     pkgconfdir <- fromJust . lookup "Global Package DB" . read <$> cmd "ghc" ["--info"]
-    putStrLn $ "Running repoquery" +-+ unwords (map display pkgs)
+    putStrLn $ "Running repoquery for" +-+ unwords (map display pkgs)
     repopkgs <- catMaybes <$> mapM (repoqueryPackageConf pkgconfdir) pkgs
     let missing' = pkgs \\ repopkgs
     unless (null missing') $ do
       putStrLn "Unavailable dependencies:"
       mapM_ (putStrLn . display) missing'
     unless (null repopkgs) $ do
-      putStrLn "Uninstalled dependencies:"
+      putStrLn "Found dependencies:"
       mapM_ (putStrLn . display) repopkgs
       -- fedora <- rpmEval "%fedora"
       -- let nogpgcheck = ["--nogpgcheck" | fedora `elem` []]
-      rpmInstall True $ map (show . RpmHsLib Prof) repopkgs
+      rpmInstall True $ map (showRpm . RpmHsLib Prof) repopkgs
     return missing'
       where
         repoqueryPackageConf :: String -> PackageName -> IO (Maybe PackageName)
@@ -234,3 +248,52 @@
               let key = pkgconfd </> display pkg ++ "-[0-9]*.conf"
               res <- repoquery ["--qf", "%{name}"] key
               return $ if null res then Nothing else  Just pkg
+
+showDep :: RpmPackage -> String
+showDep (RpmHsLib _ n) = display n
+showDep (RpmHsBin n) = display n
+showDep p = showRpm p
+
+hsDep :: RpmPackage -> Maybe PackageName
+hsDep (RpmHsLib _ n) = Just n
+hsDep _ = Nothing
+
+recurseMissing :: Flags -> Stream -> [PackageName] -> [PackageName] -> IO [PackageName]
+recurseMissing _ _ already [] = return already
+recurseMissing flags stream already (dep:deps) = do
+  miss <- missingDepsPkg dep
+  putMissing miss
+  let hmiss = mapMaybe hsDep miss
+  let accum = nub (dep : hmiss ++ already)
+  -- deeper <- recurseMissing flags stream accum (miss \\ accum)
+  -- let accum2 = nub $ accum ++ deeper
+  more <- recurseMissing flags stream accum (deps \\ accum)
+  return $ nub $ accum ++ more
+  where
+    missingDepsPkg :: PackageName -> IO [RpmPackage]
+    missingDepsPkg pkg = do
+      pkgdata <- prepare flags stream (Just (unversionedPkgId pkg)) False
+      missingPackages (packageDesc pkgdata) >>= filterM notAvail
+
+    putMissing :: [RpmPackage] -> IO ()
+    putMissing [] = return ()
+    putMissing depends = putStrLn $ "  " ++ "needs:" +-+ unwords (markAlready depends)
+      where
+        markAlready :: [RpmPackage] -> [String]
+        markAlready [] = []
+        markAlready (d:ds) =
+          let (op, cl) = if alreadyMentioned d then ("(", ")") else ("", "") in
+            (op ++ showDep d ++ cl) : markAlready ds
+
+        alreadyMentioned :: RpmPackage -> Bool
+        alreadyMentioned d = maybe False (`elem` already) (hsDep d)
+
+notAvail :: RpmPackage -> IO Bool
+notAvail pkg = null <$> repoquery [] (showRpm pkg)
+
+packageDeps :: Flags -> Stream -> PackageName -> IO [PackageName]
+packageDeps flags stream pkg = do
+  pkgdata <- prepare flags stream (Just (unversionedPkgId pkg)) False
+  let pkgDesc = packageDesc pkgdata
+      (deps, setup, _, _, _) = dependencies pkgDesc
+  return $ nub $ (deps ++ setup) \\ [pkg]
diff --git a/src/FileUtils.hs b/src/FileUtils.hs
--- a/src/FileUtils.hs
+++ b/src/FileUtils.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  FileUtils
 -- Copyright   :  (C) 2014, 2016-2019  Jens Petersen
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  Main
 -- Copyright   :  (C) 2007  Bryan O'Sullivan
diff --git a/src/PackageUtils.hs b/src/PackageUtils.hs
--- a/src/PackageUtils.hs
+++ b/src/PackageUtils.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  PackageUtils
 -- Copyright   :  (C) 2013-2019  Jens Petersen
diff --git a/src/Stackage.hs b/src/Stackage.hs
--- a/src/Stackage.hs
+++ b/src/Stackage.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 -- |
diff --git a/src/SysCmd.hs b/src/SysCmd.hs
--- a/src/SysCmd.hs
+++ b/src/SysCmd.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- |
 -- Module      :  SysCmd
 -- Copyright   :  (C) 2013-2019  Jens Petersen
diff --git a/src/Types.hs b/src/Types.hs
--- a/src/Types.hs
+++ b/src/Types.hs
@@ -20,6 +20,7 @@
   unversionedPkgId,
   readVersion,
   RpmPackage(..),
+  showRpm,
   Stream(..),
   nullVersion,
   Verbose(..)
@@ -61,10 +62,10 @@
                 | RpmOther String
   deriving Eq
 
-instance Show RpmPackage where
-  show (RpmHsLib t n) = "ghc-" ++ display n ++ pkgSuffix t
-  show (RpmHsBin n) = display n
-  show (RpmOther n) = n
+showRpm :: RpmPackage -> String
+showRpm (RpmHsLib t n) = "ghc-" ++ display n ++ pkgSuffix t
+showRpm (RpmHsBin n) = display n
+showRpm (RpmOther n) = n
 
 pkgSuffix :: LibPkgType -> String
 pkgSuffix lpt =
