diff --git a/Cabal2Ebuild.hs b/Cabal2Ebuild.hs
--- a/Cabal2Ebuild.hs
+++ b/Cabal2Ebuild.hs
@@ -56,9 +56,6 @@
     E.description = ST.fromShortText $ if ST.null (Cabal.synopsis pkg)
                                           then Cabal.description pkg
                                           else Cabal.synopsis pkg,
-    E.long_desc       = ST.fromShortText $ if ST.null (Cabal.description pkg)
-                                              then Cabal.synopsis pkg
-                                              else Cabal.description pkg,
     E.homepage        = thisHomepage,
     E.license         = Portage.convertLicense $ Cabal.license pkg,
     E.slot            = (E.slot E.ebuildTemplate) ++ (if hasLibs then "/${PV}" else ""),
diff --git a/Merge.hs b/Merge.hs
--- a/Merge.hs
+++ b/Merge.hs
@@ -491,10 +491,6 @@
       -- the existing @metadata.xml@. If an existing flag has a new and old description,
       -- the new one takes precedence.
       default_meta = Portage.makeDefaultMetadata
-                     -- Ensure that the long description does not equal the
-                     -- ebuild description, which fails Gentoo QA.
-                     (if E.long_desc ebuild == E.description ebuild
-                      then "" else E.long_desc ebuild)
                      $ Merge.metaFlags flags `Map.union`
                      Portage.metadataUseFlags current_meta'
       -- Create a 'Map.Map' of USE flags with updated descriptions.
diff --git a/Merge/Dependencies.hs b/Merge/Dependencies.hs
--- a/Merge/Dependencies.hs
+++ b/Merge/Dependencies.hs
@@ -579,4 +579,5 @@
   ,("sdl2",                        ("media-libs", "libsdl2", Portage.AnySlot))
   ,("SDL2_image",                  ("media-libs", "sdl2-image", Portage.AnySlot))
   ,("SDL2_mixer",                  ("media-libs", "sdl2-mixer", Portage.AnySlot))
+  ,("zlib",                        ("sys-libs", "zlib", Portage.AnySlot))
   ]
diff --git a/Merge/Utils.hs b/Merge/Utils.hs
--- a/Merge/Utils.hs
+++ b/Merge/Utils.hs
@@ -10,6 +10,8 @@
   , getPreviousPackageId
   , first_just_of
   , drop_prefix
+  , squash_debug
+  , convert_underscores
   , mangle_iuse
   , to_unstable
   , metaFlags
@@ -18,6 +20,7 @@
   , dropIfUseExpand
   ) where
 
+import qualified Control.Applicative as A
 import qualified Control.Monad as M
 import qualified Data.Char as C
 import           Data.Maybe (catMaybes, mapMaybe)
@@ -103,22 +106,46 @@
 -- >>> drop_prefix "no_examples"
 -- "no_examples"
 drop_prefix :: String -> String
-drop_prefix x
-  | take 5 x `elem` ["with_","with-"] = drop 5 x
-  | take 4 x `elem` ["use_","use-"]   = drop 4 x
-  | otherwise = x
+drop_prefix x =
+  let prefixes = ["with","use"]
+      separators = ["-","_"]
+      combinations = A.liftA2 (++) prefixes separators
+  in case catMaybes (A.liftA2 L.stripPrefix combinations [x]) of
+    [z] -> z
+    _ -> x
 
+-- | Squash debug-related @USE@ flags under the @debug@ global
+--   @USE@ flag.
+--
+-- >>> squash_debug "use-debug-foo"
+-- "debug"
+-- >>> squash_debug "foo-bar"
+-- "foo-bar"
+squash_debug :: String -> String
+squash_debug flag = if "debug" `L.isInfixOf` (C.toLower <$> flag)
+                         then "debug"
+                         else flag
+
 -- | Gentoo allows underscore ('_') names in @IUSE@ only for
 -- @USE_EXPAND@ values. If it's not a user-specified rename mangle
 -- it into a hyphen ('-').
 -- 
--- >>> mangle_iuse "use_remove_my_underscores"
+-- >>> convert_underscores "remove_my_underscores"
 -- "remove-my-underscores"
-mangle_iuse :: String -> String
-mangle_iuse = drop_prefix . map f
+convert_underscores :: String -> String
+convert_underscores = map f
   where f '_' = '-'
         f c   = c
 
+-- | Perform all @IUSE@ mangling.
+--
+-- >>> mangle_iuse "use_foo-bar_debug"
+-- "debug"
+-- >>> mangle_iuse "with-bar_quux"
+-- "bar-quux"
+mangle_iuse :: String -> String
+mangle_iuse = squash_debug . drop_prefix . convert_underscores
+
 -- | Convert all stable keywords to testing (unstable) keywords.
 -- Preserve arch masks (-).
 --
@@ -145,7 +172,10 @@
 -- >>> metaFlags flags
 -- fromList [("foo","bar")]
 metaFlags :: [Cabal.PackageFlag] -> Map.Map String String
-metaFlags flags = Map.fromList $ zip (mangle_iuse . Cabal.unFlagName . Cabal.flagName <$> flags) (Cabal.flagDescription <$> flags)
+metaFlags flags =
+  Map.fromList $
+  zip (mangle_iuse . Cabal.unFlagName . Cabal.flagName <$> flags)
+  (Cabal.flagDescription <$> flags)
 
 -- | Return a list of @USE_EXPAND@s maintained by ::gentoo.
 --
@@ -172,7 +202,7 @@
 -- then return 'Nothing'. Otherwise return 'Just' 'Cabal.PackageFlag'.
 dropIfUseExpand :: [String] -> Cabal.PackageFlag -> Maybe Cabal.PackageFlag
 dropIfUseExpand use_expands flag =
-  if True `elem` (L.isPrefixOf <$> use_expands <*> [Cabal.unFlagName . Cabal.flagName $ flag])
+  if or (A.liftA2 L.isPrefixOf use_expands [Cabal.unFlagName . Cabal.flagName $ flag])
   then Nothing else Just flag
 
 -- | Strip @USE_EXPAND@s from a ['Cabal.PackageFlag'].
diff --git a/Portage/EBuild.hs b/Portage/EBuild.hs
--- a/Portage/EBuild.hs
+++ b/Portage/EBuild.hs
@@ -16,6 +16,7 @@
         , sort_iuse
         , drop_tdot
         , quote
+        , toHttps
         ) where
 
 import           Portage.Dependency
@@ -45,7 +46,6 @@
     version :: String,
     hackportVersion :: String,
     description :: String,
-    long_desc :: String,
     homepage :: String,
     license :: Either String String,
     slot :: String,
@@ -76,7 +76,6 @@
     version = "0.1",
     hackportVersion = getHackportVersion Paths_hackport.version,
     description = "",
-    long_desc = "",
     homepage = "https://hackage.haskell.org/package/${HACKAGE_N}",
     license = Left "unassigned license?",
     slot = "0",
@@ -114,7 +113,7 @@
   ss ("# Copyright 1999-" ++ this_year ++ " Gentoo Authors"). nl.
   ss "# Distributed under the terms of the GNU General Public License v2". nl.
   nl.
-  ss "EAPI=7". nl.
+  ss "EAPI=8". nl.
   nl.
   ss ("# ebuild generated by hackport " ++ hackportVersion ebuild). nl.
   sconcat (map (\(k, v) -> ss "#hackport: " . ss k . ss ": " . ss v . nl) $ used_options ebuild).
@@ -125,7 +124,8 @@
   (case my_pn ebuild of
      Nothing -> id
      Just pn -> ss "MY_PN=". quote pn. nl.
-                ss "MY_P=". quote "${MY_PN}-${PV}". nl. nl).
+                ss "MY_P=". quote "${MY_PN}-${PV}". nl.
+                ss "S=". quote ("${WORKDIR}/${MY_P}"). nl. nl).
   ss "DESCRIPTION=". quote (drop_tdot $ description ebuild). nl.
   ss "HOMEPAGE=". quote (toHttps $ expandVars (homepage ebuild)). nl.
   ss "SRC_URI=". quote (src_uri ebuild). nl.
@@ -135,13 +135,12 @@
                          (license ebuild)). nl.
   ss "SLOT=". quote (slot ebuild). nl.
   ss "KEYWORDS=". quote' (sepBy " " $ keywords ebuild).nl.
-  ss "IUSE=". quote' (sepBy " " . sort_iuse $ L.nub $ iuse ebuild). nl.
-  nl.
+  (if null (iuse ebuild)
+    then nl
+    else ss "IUSE=". quote' (sepBy " " . sort_iuse $ L.nub $ iuse ebuild). nl. nl
+    ) .
   dep_str "RDEPEND" (rdepend_extra ebuild) (rdepend ebuild).
   dep_str "DEPEND"  ( depend_extra ebuild) ( depend ebuild).
-  (case my_pn ebuild of
-     Nothing -> id
-     Just _ -> nl. ss "S=". quote ("${WORKDIR}/${MY_P}"). nl).
 
   verbatim (nl . ss "src_prepare() {" . nl)
                (src_prepare ebuild)
@@ -157,30 +156,34 @@
                                       , (hackage_name ebuild, "${HACKAGE_N}")
                                       ]
 
-        replace old new = L.intercalate new . LS.splitOn old
-        -- add to this list with any https-aware websites
-        -- TODO: perhaps convert this to a list of http-only webpages,
-        --       given the prominence of https these days (year 2020).
-        httpsHomepages = Just <$> [ "github.com"
-                                  , "hackage.haskell.org"
-                                  , "www.haskell.org"
-                                  , "hledger.org"
-                                  , "jaspervdj.be"
-                                  , "www.yesodweb.com"
-                                  ]
-        toHttps :: String -> String
-        toHttps x =
-          case parseURI x of
-            Just uri -> if uriScheme uri == "http:" &&
-                           (uriRegName <$> uriAuthority uri)
-                           `elem`
-                           httpsHomepages
-                        then replace "http" "https" x
-                        else x
-            Nothing -> x
 
         this_year :: String
         this_year = TC.formatTime TC.defaultTimeLocale "%Y" now
+
+-- | Convert http urls into https urls, unless whitelisted as http-only.
+--
+-- >>> toHttps "http://darcs.net"
+-- "http://darcs.net"
+-- >>> toHttps "http://pandoc.org"
+-- "https://pandoc.org"
+-- >>> toHttps "https://github.com"
+-- "https://github.com"
+toHttps :: String -> String
+toHttps x =
+  case parseURI x of
+    Just uri -> if uriScheme uri == "http:" &&
+                   (uriRegName <$> uriAuthority uri)
+                   `notElem`
+                   httpOnlyHomepages
+                then replace "http" "https" x
+                else x
+    Nothing -> x
+  where
+    replace old new = L.intercalate new . LS.splitOn old
+    -- add to this list with any non https-aware websites
+    httpOnlyHomepages = Just <$> [ "leksah.org"
+                                 , "darcs.net"
+                                 ]
 
 -- | Sort IUSE alphabetically
 --
diff --git a/Portage/GHCCore.hs b/Portage/GHCCore.hs
--- a/Portage/GHCCore.hs
+++ b/Portage/GHCCore.hs
@@ -40,7 +40,7 @@
 -- The first @GHC@ version in this list is a minimum default.
 ghcs :: [(DC.CompilerInfo, InstalledPackageIndex)]
 ghcs = modern_ghcs
-    where modern_ghcs  = [ghc741, ghc742, ghc762, ghc782, ghc7101, ghc7102, ghc801, ghc802, ghc821, ghc843, ghc863, ghc865, ghc881, ghc883, ghc884, ghc8101]
+    where modern_ghcs  = [ghc843, ghc863, ghc865, ghc881, ghc883, ghc884, ghc8101, ghc8104]
 
 -- | Maybe determine the appropriate 'Cabal.Version' of the @Cabal@ package
 -- from a given @GHC@ version.
@@ -52,21 +52,14 @@
 cabalFromGHC :: [Int] -> Maybe Cabal.Version
 cabalFromGHC ver = lookup ver table
   where
-  table = [ ([7,4,2],  Cabal.mkVersion [1,14,0])
-          , ([7,6,2],  Cabal.mkVersion [1,16,0])
-          , ([7,8,2],  Cabal.mkVersion [1,18,1,3])
-          , ([7,10,1], Cabal.mkVersion [1,22,2,0])
-          , ([7,10,2], Cabal.mkVersion [1,22,4,0])
-          , ([8,0,1],  Cabal.mkVersion [1,24,0,0])
-          , ([8,0,2],  Cabal.mkVersion [1,24,2,0])
-          , ([8,2,1],  Cabal.mkVersion [2,0,0,2])
-          , ([8,4,3],  Cabal.mkVersion [2,2,0,1])
+  table = [ ([8,4,3],  Cabal.mkVersion [2,2,0,1])
           , ([8,6,3],  Cabal.mkVersion [2,4,0,1])
           , ([8,6,5],  Cabal.mkVersion [2,4,0,1])
           , ([8,8,1],  Cabal.mkVersion [3,0,0,0])
           , ([8,8,3],  Cabal.mkVersion [3,0,1,0])
           , ([8,8,4],  Cabal.mkVersion [3,0,1,0])
           , ([8,10,1], Cabal.mkVersion [3,2,0,0])
+          , ([8,10,4], Cabal.mkVersion [3,2,1,0])
           ]
 
 platform :: Platform
@@ -148,6 +141,9 @@
 ghc nrs = DC.unknownCompilerInfo c_id DC.NoAbiTag
     where c_id = CompilerId GHC (mkVersion nrs)
 
+ghc8104 :: (DC.CompilerInfo, InstalledPackageIndex)
+ghc8104 = (ghc [8,10,4], mkIndex ghc8104_pkgs)
+
 ghc8101 :: (DC.CompilerInfo, InstalledPackageIndex)
 ghc8101 = (ghc [8,10,1], mkIndex ghc8101_pkgs)
 
@@ -169,39 +165,47 @@
 ghc843 :: (DC.CompilerInfo, InstalledPackageIndex)
 ghc843 = (ghc [8,4,3], mkIndex ghc843_pkgs)
 
-ghc821 :: (DC.CompilerInfo, InstalledPackageIndex)
-ghc821 = (ghc [8,2,1], mkIndex ghc821_pkgs)
-
-ghc802 :: (DC.CompilerInfo, InstalledPackageIndex)
-ghc802 = (ghc [8,0,2], mkIndex ghc802_pkgs)
-
-ghc801 :: (DC.CompilerInfo, InstalledPackageIndex)
-ghc801 = (ghc [8,0,1], mkIndex ghc801_pkgs)
-
-ghc7102 :: (DC.CompilerInfo, InstalledPackageIndex)
-ghc7102 = (ghc [7,10,2], mkIndex ghc7102_pkgs)
-
-ghc7101 :: (DC.CompilerInfo, InstalledPackageIndex)
-ghc7101 = (ghc [7,10,1], mkIndex ghc7101_pkgs)
-
-ghc782 :: (DC.CompilerInfo, InstalledPackageIndex)
-ghc782 = (ghc [7,8,2], mkIndex ghc782_pkgs)
-
-ghc762 :: (DC.CompilerInfo, InstalledPackageIndex)
-ghc762 = (ghc [7,6,2], mkIndex ghc762_pkgs)
-
-ghc742 :: (DC.CompilerInfo, InstalledPackageIndex)
-ghc742 = (ghc [7,4,2], mkIndex ghc742_pkgs)
-
-ghc741 :: (DC.CompilerInfo, InstalledPackageIndex)
-ghc741 = (ghc [7,4,1], mkIndex ghc741_pkgs)
-
 -- | Non-upgradeable core packages
 -- Sources:
 --  * release notes
 --      example: https://downloads.haskell.org/~ghc/8.6.5/docs/html/users_guide/8.6.5-notes.html
 --  * our binary tarballs (package.conf.d.initial subdir)
 --  * ancient: http://haskell.org/haskellwiki/Libraries_released_with_GHC
+ghc8104_pkgs :: [Cabal.PackageIdentifier]
+ghc8104_pkgs =
+  [ p "array" [0,5,4,0]
+  , p "base" [4,14,1,0]
+  , p "binary" [0,8,8,0] -- used by libghc
+  , p "bytestring" [0,10,12,0]
+--  , p "Cabal" [3,2,1,0]  package is upgradeable
+  , p "containers" [0,6,2,1]
+  , p "deepseq" [1,4,4,0] -- used by time
+  , p "directory" [1,3,6,0]
+  , p "filepath" [1,4,2,1]
+--  , p "exceptions [0,10,4] -- used by haskeline, package is upgradeable 
+  , p "ghc-boot" [8,10,4]
+  , p "ghc-boot-th" [8,10,4]
+  , p "ghc-compact" [0,1,0,0]
+  , p "ghc-prim" [0,6,1,0]
+  , p "ghc-heap" [8,10,4]
+  , p "ghci" [8,10,4]
+--  , p "haskeline" [0,8,0,1]  package is upgradeable
+  , p "hpc" [0,6,1,0] -- used by libghc
+  , p "integer-gmp" [1,0,3,0]
+  --  , p "mtl" [2,2,2]  package is upgradeable(?)
+  --  , p "parsec" [3,1,14,0]  package is upgradeable(?)
+  , p "pretty" [1,1,3,6]
+  , p "process" [1,6,9,0]
+  --  , p "stm" [2,5,0,0]  package is upgradeable(?)
+  , p "template-haskell" [2,16,0,0] -- used by libghc
+  -- , p "terminfo" [0,4,1,4]
+  -- , p "text" [1,2,4,1] dependency of Cabal library
+  , p "time" [1,9,3,0] -- used by unix, directory, hpc, ghc. unsafe to upgrade
+  , p "transformers" [0,5,6,2] -- used by libghc
+  , p "unix" [2,7,2,2]
+--  , p "xhtml" [3000,2,2,1]
+  ]
+
 ghc8101_pkgs :: [Cabal.PackageIdentifier]
 ghc8101_pkgs =
   [ p "array" [0,5,4,0]
@@ -433,253 +437,6 @@
   , p "transformers" [0,5,5,0] -- used by libghc
   , p "unix" [2,7,2,2]
 --  , p "xhtml" [3000,2,2,1]
-  ]
-
-ghc821_pkgs :: [Cabal.PackageIdentifier]
-ghc821_pkgs =
-  [ p "array" [0,5,2,0]
-  , p "base" [4,10,0,0]
-  , p "binary" [0,8,5,1] -- used by libghc
-  , p "bytestring" [0,10,8,2]
---  , p "Cabal" [2,0,0,2]  package is upgradeable
-  , p "containers" [0,5,10,2]
-  , p "deepseq" [1,4,3,0] -- used by time
-  , p "directory" [1,3,0,2]
-  , p "filepath" [1,4,1,2]
-  , p "ghc-boot" [8,2,1]
-  , p "ghc-boot-th" [8,2,1]
-  , p "ghc-compact" [0,1,0,0]
-  , p "ghc-prim" [0,5,1,0]
-  , p "ghci" [8,2,1]
---  , p "haskeline" [0,7,4,0]  package is upgradeable
-  , p "hoopl" [3,10,2,2] -- used by libghc
-  , p "hpc" [0,6,0,3] -- used by libghc
-  , p "integer-gmp" [1,0,1,0]
-  , p "pretty" [1,1,3,3]
-  , p "process" [1,6,1,0]
-  , p "template-haskell" [2,12,0,0] -- used by libghc
-  -- , p "terminfo" [0,4,1,0]
-  , p "time" [1,8,0,2] -- used by unix, directory, hpc, ghc. unsafe to upgrade
-  , p "transformers" [0,5,2,0] -- used by libghc
-  , p "unix" [2,7,2,2]
---  , p "xhtml" [3000,2,2]
-  ]
-
-ghc802_pkgs :: [Cabal.PackageIdentifier]
-ghc802_pkgs =
-  [ p "array" [0,5,1,1]
-  , p "base" [4,9,1,0]
-  , p "binary" [0,8,3,0] -- used by libghc
-  , p "bytestring" [0,10,8,1]
---  , p "Cabal" [1,24,2,0]  package is upgradeable
-  , p "containers" [0,5,7,1]
-  , p "deepseq" [1,4,2,0] -- used by time
-  , p "directory" [1,3,0,0]
-  , p "filepath" [1,4,1,1]
-  , p "ghc-boot" [8,0,2]
-  , p "ghc-boot-th" [8,0,2]
-  , p "ghc-prim" [0,5,0,0]
-  , p "ghci" [8,0,2]
---  , p "haskeline" [0,7,3,0]  package is upgradeable
-  , p "hoopl" [3,10,2,1] -- used by libghc
-  , p "hpc" [0,6,0,3] -- used by libghc
-  , p "integer-gmp" [1,0,0,1]
-  , p "pretty" [1,1,3,3]
-  , p "process" [1,4,3,0]
-  , p "template-haskell" [2,11,1,0] -- used by libghc
-  -- , p "terminfo" [0,4,0,2]
-  , p "time" [1,6,0,1] -- used by unix, directory, hpc, ghc. unsafe to upgrade
-  , p "transformers" [0,5,2,0] -- used by libghc
-  , p "unix" [2,7,2,1]
---  , p "xhtml" [3000,2,1]
-  ]
-
-ghc801_pkgs :: [Cabal.PackageIdentifier]
-ghc801_pkgs =
-  [ p "array" [0,5,1,1]
-  , p "base" [4,9,0,0]
-  , p "binary" [0,8,3,0] -- used by libghc
-  , p "bytestring" [0,10,8,0]
---  , p "Cabal" [1,24,0,0]  package is upgradeable
-  , p "containers" [0,5,7,1]
-  , p "deepseq" [1,4,2,0] -- used by time
-  , p "directory" [1,2,6,2]
-  , p "filepath" [1,4,1,0]
-  , p "ghc-boot" [8,0,1]
-  , p "ghc-prim" [0,5,0,0]
-  , p "ghci" [8,0,1]
-  , p "hoopl" [3,10,2,1] -- used by libghc
-  , p "hpc" [0,6,0,3] -- used by libghc
-  , p "integer-gmp" [1,0,0,1]
-  , p "pretty" [1,1,3,3]
-  , p "process" [1,4,2,0]
-  , p "template-haskell" [2,11,0,0] -- used by libghc
-  -- , p "terminfo" [0,4,0,2]
-  , p "time" [1,6,0,1] -- used by unix, directory, hpc, ghc. unsafe to upgrade
-  , p "transformers" [0,5,2,0] -- used by libghc
-  , p "unix" [2,7,2,0]
---  , p "xhtml" [3000,2,1]
-  ]
-
-ghc7102_pkgs :: [Cabal.PackageIdentifier]
-ghc7102_pkgs =
-  [ p "array" [0,5,1,0]
-  , p "base" [4,8,1,0]
-  , p "binary" [0,7,3,0] -- used by libghc
-  , p "bytestring" [0,10,6,0]
---  , p "Cabal" [1,18,1,3]  package is upgradeable
-  , p "containers" [0,5,6,2]
-  , p "deepseq" [1,4,1,1] -- used by time
-  , p "directory" [1,2,2,0]
-  , p "filepath" [1,4,0,0]
-  , p "ghc-prim" [0,4,0,0]
-  -- , p "haskell2010" [1,1,2,0] -- stopped shipping in 7.10, deprecated
-  -- , p "haskell98" [2,0,0,3] -- stopped shipping in 7.10, deprecated
-  , p "hoopl" [3,10,1,0] -- used by libghc
-  , p "hpc" [0,6,0,2] -- used by libghc
-  , p "integer-gmp" [1,0,0,0]
-  -- , p "old-locale" [1,0,0,6] -- stopped shipping in 7.10, deprecated
-  -- , p "old-time" [1,1,0,2] -- stopped shipping in 7.10, deprecated
-  , p "pretty" [1,1,2,0]
-  , p "process" [1,2,3,0]
-  , p "template-haskell" [2,10,0,0] -- used by libghc
-  , p "time" [1,5,0,1] -- used by haskell98, unix, directory, hpc, ghc. unsafe to upgrade
-  , p "transformers" [0,4,2,0] -- used by libghc
-  , p "unix" [2,7,1,0]
-  ]
-
-ghc7101_pkgs :: [Cabal.PackageIdentifier]
-ghc7101_pkgs =
-  [ p "array" [0,5,1,0]
-  , p "base" [4,8,0,0]
-  , p "binary" [0,7,3,0] -- used by libghc
-  , p "bytestring" [0,10,6,0]
---  , p "Cabal" [1,18,1,3]  package is upgradeable
-  , p "containers" [0,5,6,2]
-  , p "deepseq" [1,4,1,1] -- used by time
-  , p "directory" [1,2,2,0]
-  , p "filepath" [1,4,0,0]
-  , p "ghc-prim" [0,4,0,0]
-  -- , p "haskell2010" [1,1,2,0] -- stopped shipping in 7.10, deprecated
-  -- , p "haskell98" [2,0,0,3] -- stopped shipping in 7.10, deprecated
-  , p "hoopl" [3,10,0,2] -- used by libghc
-  , p "hpc" [0,6,0,2] -- used by libghc
-  , p "integer-gmp" [1,0,0,0]
-  -- , p "old-locale" [1,0,0,6] -- stopped shipping in 7.10, deprecated
-  -- , p "old-time" [1,1,0,2] -- stopped shipping in 7.10, deprecated
-  , p "pretty" [1,1,2,0]
-  , p "process" [1,2,3,0]
-  , p "template-haskell" [2,10,0,0] -- used by libghc
-  , p "time" [1,5,0,1] -- used by haskell98, unix, directory, hpc, ghc. unsafe to upgrade
-  , p "transformers" [0,4,2,0] -- used by libghc
-  , p "unix" [2,7,1,0]
-  ]
-
-ghc782_pkgs :: [Cabal.PackageIdentifier]
-ghc782_pkgs =
-  [ p "array" [0,5,0,0]
-  , p "base" [4,7,0,0]
-  , p "binary" [0,7,1,0] -- used by libghc
-  , p "bytestring" [0,10,4,0]
---  , p "Cabal" [1,18,1,3]  package is upgradeable
-  , p "containers" [0,5,5,1]
-  , p "deepseq" [1,3,0,2] -- used by time, haskell98
-  , p "directory" [1,2,1,0]
-  , p "filepath" [1,3,0,2]
-  , p "ghc-prim" [0,3,1,0]
-  , p "haskell2010" [1,1,2,0]
-  , p "haskell98" [2,0,0,3]
-  , p "hoopl" [3,10,0,1] -- used by libghc
-  , p "hpc" [0,6,0,1] -- used by libghc
-  , p "integer-gmp" [0,5,1,0]
-  -- , p "old-locale" [1,0,0,6] -- stopped shipping in 7.10, deprecated
-  -- , p "old-time" [1,1,0,2] -- stopped shipping in 7.10, deprecated
-  , p "pretty" [1,1,1,1]
-  , p "process" [1,2,0,0]
-  , p "template-haskell" [2,9,0,0] -- used by libghc
-  , p "time" [1,4,2] -- used by haskell98, unix, directory, hpc, ghc. unsafe to upgrade
-  , p "transformers" [0,3,0,0] -- used by libghc
-  , p "unix" [2,7,0,1]
-  ]
-
-ghc762_pkgs :: [Cabal.PackageIdentifier]
-ghc762_pkgs =
-  [ p "array" [0,4,0,1]
-  , p "base" [4,6,0,1]
-  , p "binary" [0,5,1,1] -- used by libghc
-  , p "bytestring" [0,10,0,2]
---  , p "Cabal" [1,16,0]  package is upgradeable
-  , p "containers" [0,5,0,0]
-  , p "deepseq" [1,3,0,1] -- used by time, haskell98
-  , p "directory" [1,2,0,1]
-  , p "filepath" [1,3,0,1]
-  , p "ghc-prim" [0,3,0,0]
-  , p "haskell2010" [1,1,1,0]
-  , p "haskell98" [2,0,0,2]
-  , p "hoopl" [3,9,0,0] -- used by libghc
-  , p "hpc" [0,6,0,0] -- used by libghc
-  , p "integer-gmp" [0,5,0,0]
-  -- , p "old-locale" [1,0,0,5] -- stopped shipping in 7.10, deprecated
-  -- , p "old-time" [1,1,0,1] -- stopped shipping in 7.10, deprecated
-  , p "pretty" [1,1,1,0]
-  , p "process" [1,1,0,2]
-  , p "template-haskell" [2,8,0,0] -- used by libghc
-  , p "time" [1,4,0,1] -- used by haskell98, unix, directory, hpc, ghc. unsafe to upgrade
-  , p "unix" [2,6,0,1]
-  ]
-
-ghc742_pkgs :: [Cabal.PackageIdentifier]
-ghc742_pkgs =
-  [ p "array" [0,4,0,0]
-  , p "base" [4,5,1,0]
-  , p "binary" [0,5,1,0] -- used by libghc
-  , p "bytestring" [0,9,2,1]
---  , p "Cabal" [1,14,0]  package is upgradeable
-  , p "containers" [0,4,2,1]
-  , p "deepseq" [1,3,0,0] -- used by time, haskell98
-  , p "directory" [1,1,0,2]
--- , p "extensible-exceptions" [0,1,1,4] -- package is upgradeable, stopped shipping in 7.6
-  , p "filepath" [1,3,0,0]
-  , p "ghc-prim" [0,2,0,0]
-  , p "haskell2010" [1,1,0,1]
-  , p "haskell98" [2,0,0,1]
-  , p "hoopl" [3,8,7,3] -- used by libghc
-  , p "hpc" [0,5,1,1] -- used by libghc
-  , p "integer-gmp" [0,4,0,0]
-  -- , p "old-locale" [1,0,0,4] -- stopped shipping in 7.10, deprecated
-  -- , p "old-time" [1,1,0,0] -- stopped shipping in 7.10, deprecated
-  , p "pretty" [1,1,1,0]
-  , p "process" [1,1,0,1]
-  , p "template-haskell" [2,7,0,0] -- used by libghc
-  , p "time" [1,4]
-  , p "unix" [2,5,1,1]
-  ]
-
-ghc741_pkgs :: [Cabal.PackageIdentifier]
-ghc741_pkgs =
-  [ p "array" [0,4,0,0]
-  , p "base" [4,5,0,0]
-  , p "binary" [0,5,1,0] -- used by libghc
-  , p "bytestring" [0,9,2,1]
---  , p "Cabal" [1,14,0]  package is upgradeable
-  , p "containers" [0,4,2,1]
-  , p "deepseq" [1,3,0,0] -- used by time, haskell98
-  , p "directory" [1,1,0,2]
--- , p "extensible-exceptions" [0,1,1,4] -- package is upgradeable, stopped shipping in 7.6
-  , p "filepath" [1,3,0,0]
-  , p "ghc-prim" [0,2,0,0]
-  , p "haskell2010" [1,1,0,1]
-  , p "haskell98" [2,0,0,1]
-  , p "hoopl" [3,8,7,3] -- used by libghc
-  , p "hpc" [0,5,1,1] -- used by libghc
-  , p "integer-gmp" [0,4,0,0]
-  -- , p "old-locale" [1,0,0,4] -- stopped shipping in 7.10, deprecated
-  -- , p "old-time" [1,1,0,0] -- stopped shipping in 7.10, deprecated
-  , p "pretty" [1,1,1,0]
-  , p "process" [1,1,0,1]
-  , p "template-haskell" [2,7,0,0] -- used by libghc
-  , p "time" [1,4]
-  , p "unix" [2,5,1,0]
   ]
 
 p :: String -> [Int] -> Cabal.PackageIdentifier
diff --git a/Portage/Metadata.hs b/Portage/Metadata.hs
--- a/Portage/Metadata.hs
+++ b/Portage/Metadata.hs
@@ -9,6 +9,7 @@
         ( Metadata(..)
         , metadataFromFile
         , pureMetadataFromFile
+        , stripGlobalUseFlags -- exported for hspec
         , prettyPrintFlags -- exported for hspec
         , prettyPrintFlagsHuman
         , makeDefaultMetadata
@@ -36,18 +37,20 @@
 --
 -- Trying to parse an empty 'T.Text' should return 'Nothing':
 --
--- prop> pureMetadataFromFile T.empty == Nothing
+-- >>> pureMetadataFromFile T.empty
+-- Nothing
 --
 -- Parsing a @metadata.xml@ /without/ USE flags should /always/ be equivalent
--- to 'makeMinimalMetadata', no matter the package description:
+-- to 'makeMinimalMetadata':
 --
--- prop> \desc -> pureMetadataFromFile (makeDefaultMetadata desc Map.empty) == Just makeMinimalMetadata
+-- >>> pureMetadataFromFile (makeDefaultMetadata Map.empty) == Just makeMinimalMetadata
+-- True
 --
 -- Parsing a @metadata.xml@ /with/ USE flags should /always/ be equivalent
--- to 'makeMinimalMetadata' /plus/ the supplied USE flags, no matter the
--- package description:
+-- to 'makeMinimalMetadata' /plus/ the supplied USE flags:
 --
--- prop> \desc -> pureMetadataFromFile (makeDefaultMetadata desc (Map.fromList [("name","description")])) == Just (makeMinimalMetadata {metadataUseFlags = Map.fromList [("name","description")] } )
+-- >>> pureMetadataFromFile (makeDefaultMetadata (Map.fromList [("name","description")])) == Just (makeMinimalMetadata {metadataUseFlags = Map.fromList [("name","description")] } )
+-- True
 pureMetadataFromFile :: T.Text -> Maybe Metadata
 pureMetadataFromFile file = parseXMLDoc file >>= \doc -> parseMetadata doc
 
@@ -74,20 +77,33 @@
                       in Map.fromList $ zip z b
                   }
 
+-- | Remove global @USE@ flags from the flags 'Map.Map', as these should not be
+-- within the local @metadata.xml@. For now, this is manually specified rather than
+-- parsing @use.desc@.
+stripGlobalUseFlags :: Map.Map String String -> Map.Map String String
+stripGlobalUseFlags m = foldr1 Map.intersection (Map.delete <$> globals <*> [m])
+  where
+    globals = [ "debug"
+              , "examples"
+              , "static"
+              ]
+
 -- | Pretty print as valid XML a list of flags and their descriptions
 -- from a given 'Map.Map'.
 prettyPrintFlags :: Map.Map String String -> [String]
 prettyPrintFlags m = (\(name,description) ->
-                        "\t\t<flag name=\"" ++ name ++ "\">" ++
-                        (L.intercalate " " . lines $ description) ++ "</flag>")
-                     <$> Map.toAscList m
+                        "\t\t" ++
+                        (showElement
+                         . add_attr (Attr (blank_name { qName = "name" }) name)
+                         . unode "flag" $ description))
+                     <$> (Map.toAscList . stripGlobalUseFlags $ m)
 
 -- | Pretty print a human-readable list of flags and their descriptions
 -- from a given 'Map.Map'.
 prettyPrintFlagsHuman :: Map.Map String String -> [String]
 prettyPrintFlagsHuman m = (\(name,description) -> A.bold (name ++ ": ") ++
                             (L.intercalate " " . lines $ description))
-                          <$> Map.toAscList m
+                          <$> (Map.toAscList . stripGlobalUseFlags $ m)
                           
 -- | A minimal metadata for use as a fallback value.
 makeMinimalMetadata :: Metadata
@@ -97,19 +113,8 @@
 
 -- don't use Text.XML.Light as we like our own pretty printer
 -- | Pretty print the @metadata.xml@ string.
---
--- This function will additionally print the @<use>@ and @<longdescription>@
--- xml elements if:
---
---   1. There are USE flags to fill the @<use>@ element, which cannot be empty;
---      and
---   2. The long description is greater than 150 characters long.
---
--- The long description also cannot be identical to the @DESCRIPTION@ field
--- in an ebuild in order to pass Gentoo QA, but this is checked for outside
--- of this function. See "Merge" for an example usage.
-makeDefaultMetadata :: String -> Map.Map String String -> T.Text
-makeDefaultMetadata long_description flags = T.pack $
+makeDefaultMetadata :: Map.Map String String -> T.Text
+makeDefaultMetadata flags = T.pack $
   unlines [ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
           , "<!DOCTYPE pkgmetadata SYSTEM \"http://www.gentoo.org/dtd/metadata.dtd\">"
           , "<pkgmetadata>"
@@ -118,22 +123,7 @@
           , "\t\t<name>Gentoo Haskell</name>"
           , "\t</maintainer>"
             ++ if flags == Map.empty
-               then []
+               then ""
                else "\n\t<use>\n" ++ (unlines $ prettyPrintFlags flags) ++ "\t</use>"
-            ++ if long_description == "" || length long_description <= 150
-               then []
-               else "\n" ++
-                    (init {- strip trailing newline-}
-                      . unlines
-                      . map (\l -> if l `elem` ["<longdescription>", "</longdescription>"]
-                                   then "\t"   ++ l -- leading/trailing lines
-                                   else "\t\t" ++ l -- description itself
-                            )
-                      . lines
-                      . showElement
-                      . unode "longdescription"
-                      . ("\n" ++) -- prepend newline to separate from <longdescription>
-                      . (++ "\n") -- append newline
-                    ) long_description
           , "</pkgmetadata>"
           ]
diff --git a/hackage-security/hackage-repo-tool/hackage-repo-tool.cabal b/hackage-security/hackage-repo-tool/hackage-repo-tool.cabal
--- a/hackage-security/hackage-repo-tool/hackage-repo-tool.cabal
+++ b/hackage-security/hackage-repo-tool/hackage-repo-tool.cabal
@@ -52,7 +52,7 @@
   -- For boot libraries we try to accomodate the versions bundled with
   -- the respective GHC release
   build-depends:       base                 >= 4.5  && < 4.15,
-                       bytestring           >= 0.9  && < 0.11,
+                       bytestring           >= 0.9  && < 0.12,
                        Cabal                >= 1.14 && < 1.26
                                          || >= 2.0  && < 2.6
                                          || >= 3.0  && < 3.4,
diff --git a/hackage-security/hackage-security-HTTP/ChangeLog.md b/hackage-security/hackage-security-HTTP/ChangeLog.md
--- a/hackage-security/hackage-security-HTTP/ChangeLog.md
+++ b/hackage-security/hackage-security-HTTP/ChangeLog.md
@@ -1,3 +1,7 @@
+0.1.1.1
+-------
+* Add support for hackage-security-0.6
+
 0.1.1
 -----
 * Implement updated HttpLib API from hackage-security 0.5
diff --git a/hackage-security/hackage-security-HTTP/hackage-security-HTTP.cabal b/hackage-security/hackage-security-HTTP/hackage-security-HTTP.cabal
--- a/hackage-security/hackage-security-HTTP/hackage-security-HTTP.cabal
+++ b/hackage-security/hackage-security-HTTP/hackage-security-HTTP.cabal
@@ -1,5 +1,6 @@
+cabal-version:       1.12
 name:                hackage-security-HTTP
-version:             0.1.1
+version:             0.1.1.1
 synopsis:            Hackage security bindings against the HTTP library
 description:         The hackage security library provides a 'HttpLib'
                      abstraction to allow to bind against different HTTP
@@ -8,13 +9,12 @@
 license:             BSD3
 license-file:        LICENSE
 author:              Edsko de Vries
-maintainer:          edsko@well-typed.com
-copyright:           Copyright 2015 Well-Typed LLP
+maintainer:          cabal-devel@haskell.org
+copyright:           Copyright 2015-2016 Well-Typed LLP
 category:            Distribution
 homepage:            https://github.com/haskell/hackage-security
 bug-reports:         https://github.com/haskell/hackage-security/issues
 build-type:          Simple
-cabal-version:       >=1.10
 tested-with:         GHC==8.10.1, GHC==8.8.3, GHC==8.6.5, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2,
                      GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
 
@@ -31,8 +31,8 @@
 
 library
   exposed-modules:     Hackage.Security.Client.Repository.HttpLib.HTTP
-  build-depends:       base             >= 4.4       && < 5,
-                       bytestring       >= 0.9       && < 0.11,
+  build-depends:       base             >= 4.5       && < 4.15,
+                       bytestring       >= 0.9       && < 0.12,
                        HTTP             >= 4000.2.19 && < 4000.4,
                        mtl              >= 2.1       && < 2.3,
                        zlib             >= 0.5       && < 0.7,
@@ -51,6 +51,7 @@
   -- See comments in hackage-security.cabal
   if flag(use-network-uri)
     build-depends: network-uri >= 2.6 && < 2.7,
-                   network     >= 2.6 && < 3.2
+                   network     >= 2.6 && < 2.9
+                            || >= 3.0 && < 3.2
   else
     build-depends: network     >= 2.5 && < 2.6
diff --git a/hackage-security/hackage-security/hackage-security.cabal b/hackage-security/hackage-security/hackage-security.cabal
--- a/hackage-security/hackage-security/hackage-security.cabal
+++ b/hackage-security/hackage-security/hackage-security.cabal
@@ -111,9 +111,9 @@
                        Prelude
   -- We support ghc 7.4 (bundled with Cabal 1.14) and up
   build-depends:       base              >= 4.5     && < 4.15,
-                       base16-bytestring >= 0.1.1   && < 0.2,
-                       base64-bytestring >= 1.0     && < 1.2,
-                       bytestring        >= 0.9     && < 0.11,
+                       base16-bytestring >= 0.1.1   && < 1.1,
+                       base64-bytestring >= 1.0     && < 1.3,
+                       bytestring        >= 0.9     && < 0.12,
                        Cabal             >= 1.14    && < 1.26
                                       || >= 2.0     && < 2.6
                                       || >= 3.0     && < 3.4,
@@ -252,10 +252,14 @@
                        Cabal,
                        containers,
                        bytestring,
-                       network-uri,
                        tar,
                        time,
                        zlib
+
+  if flag(use-network-uri)
+    build-depends: network-uri
+  else
+    build-depends: network
 
   -- dependencies exclusive to test-suite
   build-depends:       tasty            == 1.2.*,
diff --git a/hackport.cabal b/hackport.cabal
--- a/hackport.cabal
+++ b/hackport.cabal
@@ -1,5 +1,5 @@
 Name:           hackport
-Version:        0.6.7
+Version:        0.7
 License:        GPL
 License-file:   LICENSE
 Author:         Henning Günther, Duncan Coutts, Lennart Kolmodin
@@ -16,7 +16,7 @@
   location: git://github.com/gentoo-haskell/hackport.git
 
 Executable    hackport
-  ghc-options: -Wall -threaded +RTS -N -RTS
+  ghc-options: -Wall -threaded +RTS -N -RTS -with-rtsopts=-N
   ghc-prof-options: -caf-all -auto-all -rtsopts
   Main-Is:    Main.hs
   Default-Language: Haskell2010
diff --git a/tests/Merge/UtilsSpec.hs b/tests/Merge/UtilsSpec.hs
--- a/tests/Merge/UtilsSpec.hs
+++ b/tests/Merge/UtilsSpec.hs
@@ -102,9 +102,28 @@
           then [flag]
           else [prefix ++ '-':flag]
 
+  describe "squash_debug" $ do
+    it "squashes debug-related flags under the debug global USE flag" $ do
+      squash_debug "use-debug-foo" `shouldBe` "debug"
+      squash_debug "debug-foo" `shouldBe` "debug"
+      squash_debug "foo-debugger" `shouldBe` "debug"
+    it "ignores debug-unrelated flags" $ do
+      squash_debug "foo-bar" `shouldBe` "foo-bar"
+
+  describe "convert_underscores" $ do
+    it "converts underscores (_) into hyphens (-)" $ do
+      convert_underscores "foo_bar" `shouldBe` "foo-bar"
+    it "ignores mangling of separators other than underscores" $ do
+      convert_underscores "foo-bar" `shouldBe` "foo-bar"
+    it "ignores mangling of characters which are not separators" $ do
+      convert_underscores "foobar" `shouldBe` "foobar"
+
   describe "mangle_iuse" $ do
-    prop "converts underscores (_) into hyphens (-) and drops with/use prefixes" $ do
-        \a -> mangle_iuse a == drop_prefix (map (\f -> if f == '_' then '-' else f) a)
+    it "performs all IUSE mangling" $ do
+      mangle_iuse "use_foo_bar" `shouldBe` "foo-bar"
+      mangle_iuse "with-baz-quux" `shouldBe` "baz-quux"
+      mangle_iuse "use_debugging-symbols" `shouldBe` "debug"
+      mangle_iuse "foo-bar-baz_quux" `shouldBe` "foo-bar-baz-quux"
 
   describe "to_unstable" $ do
     prop "creates an unstable keyword from a stable keyword, or preserves a mask" $ do
diff --git a/tests/Portage/EBuildSpec.hs b/tests/Portage/EBuildSpec.hs
--- a/tests/Portage/EBuildSpec.hs
+++ b/tests/Portage/EBuildSpec.hs
@@ -29,4 +29,12 @@
       quote "Extras for the \"contravariant\" package" ""
         `shouldBe`
         "\"Extras for the \\\"contravariant\\\" package\""
-
+  describe "toHttps" $ do
+    it "should not convert whitelisted http-only homepages into https homepages" $ do
+      toHttps "http://leksah.org" `shouldBe` "http://leksah.org"
+      toHttps "http://darcs.net/" `shouldBe` "http://darcs.net/"
+    it "should otherwise convert all homepages into https-aware homepages" $ do
+      toHttps "http://pandoc.org" `shouldBe` "https://pandoc.org"
+      toHttps "http://www.yesodweb.com/" `shouldBe` "https://www.yesodweb.com/"
+    it "should ignore any conversions of homepages already marked as https-aware" $ do
+      toHttps "https://github.com" `shouldBe` "https://github.com"
diff --git a/tests/Portage/MetadataSpec.hs b/tests/Portage/MetadataSpec.hs
--- a/tests/Portage/MetadataSpec.hs
+++ b/tests/Portage/MetadataSpec.hs
@@ -14,20 +14,51 @@
   describe "pureMetadataFromFile" $ do
     it "returns Nothing from an empty Text" $ do
       pureMetadataFromFile T.empty `shouldBe` Nothing
-    prop "equals makeMinimalMetadata with no USE flags, no matter the description" $ do
-      \desc -> pureMetadataFromFile (makeDefaultMetadata desc Map.empty) ==
-               Just makeMinimalMetadata
-    prop "equals makeMinimalMetadata plus the supplied USE flags, no matter the description" $
-      do let flags = Map.singleton "name" "description"
-           in \desc -> pureMetadataFromFile (makeDefaultMetadata desc flags)
-                       == Just (makeMinimalMetadata { metadataUseFlags = flags } )
+    it "equals makeMinimalMetadata with no USE flags" $ do
+      pureMetadataFromFile (makeDefaultMetadata Map.empty) `shouldBe` Just makeMinimalMetadata
+    it "equals makeMinimalMetadata plus the supplied USE flags" $ do
+      let flags = Map.singleton "name" "description"
+      pureMetadataFromFile (makeDefaultMetadata flags) `shouldBe` Just (makeMinimalMetadata { metadataUseFlags = flags })
 
+  describe "stripGlobalUseFlags" $ do
+    it "should remove specified global USE flags from the metadata.xml" $ do
+      stripGlobalUseFlags (Map.singleton "debug" "description") `shouldBe` Map.empty
+      stripGlobalUseFlags (Map.singleton "examples" "description") `shouldBe` Map.empty
+      stripGlobalUseFlags (Map.singleton "static" "description") `shouldBe` Map.empty
+    prop "should ignore USE flags that are not specified as global" $ do
+      \name description -> stripGlobalUseFlags (Map.singleton name description) ==
+                           if name `elem` ["debug","examples","static"]
+                           then Map.empty
+                           else Map.singleton name description
+
   describe "prettyPrintFlags" $ do
-    prop "should correctly format a single USE flag name with its description" $ do
-      \name description -> prettyPrintFlags (Map.singleton name description) ==
+    it "correctly handles special XML characters contained in strings" $ do
+      let name = "foo"
+          desc = "bar < 1.1.0"
+        in prettyPrintFlags (Map.singleton name desc) `shouldBe`
+        ["\t\t<flag name=\"" ++ name ++ "\">"
+         ++ "bar &lt; 1.1.0" ++ "</flag>"]
+    it "correctly formats a single USE flag name with its description" $ do
+      let name = "foo"
+          description = "bar"
+        in prettyPrintFlags (Map.singleton name description) `shouldBe`
                            ["\t\t<flag name=\"" ++ name ++
                            "\">" ++ (L.intercalate " " . lines $ description)
                            ++ "</flag>"]
+    it "correctly formats multiple USE flag names with their descriptions" $ do
+      let f1 = "flag1"
+          f2 = "flag2"
+          d1 = "foo_desc"
+          d2 = "bar_desc"
+        in prettyPrintFlags (Map.fromList [(f1,d1),(f2,d2)]) `shouldBe`
+           ["\t\t<flag name=\"" ++ f1
+           ++ "\">" ++ (L.intercalate " " . lines $ d1)
+           ++ "</flag>"
+           ,
+           "\t\t<flag name=\"" ++ f2
+           ++ "\">" ++ (L.intercalate " " . lines $ d2)
+           ++ "</flag>"]
+
     prop "should have a length equal to the number of USE flags" $ do
       \flags -> length (prettyPrintFlags flags) == Map.size flags
       
@@ -36,10 +67,9 @@
       it "should have a certain number of lines" $ do
         -- This is the number of lines in a skeleton metadata.xml.
         -- If it does not equal this number, the formatting may be wrong.
-        length (T.lines (makeDefaultMetadata "" Map.empty)) `shouldBe` 8
+        length (T.lines (makeDefaultMetadata Map.empty)) `shouldBe` 8
       it "should have a certain format" $ do
-        let desc = "foo"
-            correctMetadata = T.pack $ unlines
+        let correctMetadata = T.pack $ unlines
               [ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
               , "<!DOCTYPE pkgmetadata SYSTEM \"http://www.gentoo.org/dtd/metadata.dtd\">"
               , "<pkgmetadata>"
@@ -49,15 +79,14 @@
               , "\t</maintainer>"
               , "</pkgmetadata>"
               ]
-          in makeDefaultMetadata desc Map.empty `shouldBe` correctMetadata
+          in makeDefaultMetadata Map.empty `shouldBe` correctMetadata
     context "when writing a metadata.xml with USE flags" $ do
       it "should have a certain number of lines" $ do
         let flags = Map.singleton "name" "description"
-          in length (T.lines (makeDefaultMetadata "" flags))
+          in length (T.lines (makeDefaultMetadata flags))
              `shouldBe` 10 + (Map.size flags)
       it "should have a certain format, including the <use> element" $ do
-        let desc = "foo"
-            flags = Map.singleton "name" "description"
+        let flags = Map.fromList [("flag1","desc1"),("flag2","desc2")]
             correctMetadata = T.pack $ unlines
               [ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
               , "<!DOCTYPE pkgmetadata SYSTEM \"http://www.gentoo.org/dtd/metadata.dtd\">"
@@ -67,34 +96,9 @@
               , "\t\t<name>Gentoo Haskell</name>"
               , "\t</maintainer>"
               , "\t<use>"
-              , "\t\t<flag name=\"name\">description</flag>"
+              , "\t\t<flag name=\"flag1\">desc1</flag>"
+              , "\t\t<flag name=\"flag2\">desc2</flag>"
               , "\t</use>"
               , "</pkgmetadata>"
               ]
-          in makeDefaultMetadata desc flags `shouldBe` correctMetadata
-    context "when writing a metadata.xml with a valid long description and USE flags" $ do
-      it "has a certain number of lines" $ do
-        let desc = replicate 151 'a'
-            flags = Map.singleton "name" "description"
-          in length (T.lines (makeDefaultMetadata desc flags))
-             `shouldBe` 13 + (Map.size flags)
-      it "writes the <longdescription> and <use> elements into the metadata.xml" $ do
-        let desc = replicate 151 'a'
-            flags = Map.singleton "name" "description"
-            correctMetadata = T.pack $ unlines
-              [ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
-              , "<!DOCTYPE pkgmetadata SYSTEM \"http://www.gentoo.org/dtd/metadata.dtd\">"
-              , "<pkgmetadata>"
-              , "\t<maintainer type=\"project\">"
-              , "\t\t<email>haskell@gentoo.org</email>"
-              , "\t\t<name>Gentoo Haskell</name>"
-              , "\t</maintainer>"
-              , "\t<use>"
-              , "\t\t<flag name=\"name\">description</flag>"
-              , "\t</use>"
-              , "\t<longdescription>"
-              , "\t\t" ++ desc
-              , "\t</longdescription>"
-              , "</pkgmetadata>"
-              ]
-          in makeDefaultMetadata desc flags `shouldBe` correctMetadata
+          in makeDefaultMetadata flags `shouldBe` correctMetadata
