diff --git a/Tests.hs b/Tests.hs
--- a/Tests.hs
+++ b/Tests.hs
@@ -159,12 +159,12 @@
                 (S.maintainer . D.control . debInfo) .= Just (NameAddr (Just "David Fox") "dsf@seereason.com")
                 (S.standardsVersion . D.control . debInfo) .= Just (StandardsVersion 3 9 3 (Just 1)) -- This will change as new versions of debian-policy are released
                 (S.buildDepends . D.control . debInfo) %=
-                                  (++ [[Rel (BinPkgName "debhelper") (Just (GRE (parseDebianVersion ("9" :: String)))) Nothing],
-                                       [Rel (BinPkgName "haskell-devscripts") (Just (GRE (parseDebianVersion ("0.9" :: String)))) Nothing],
-                                       [Rel (BinPkgName "cdbs") Nothing Nothing],
-                                       [Rel (BinPkgName "ghc") Nothing Nothing],
-                                       [Rel (BinPkgName "ghc-prof") Nothing Nothing]])
-                (S.buildDependsIndep . D.control . debInfo) %= (++ [[Rel (BinPkgName "ghc-doc") Nothing Nothing]]))
+                                  (++ [[RRel (BinPkgName "debhelper") (Just (GRE (parseDebianVersion ("9" :: String)))) Nothing []],
+                                       [RRel (BinPkgName "haskell-devscripts") (Just (GRE (parseDebianVersion ("0.9" :: String)))) Nothing []],
+                                       [anyrel (BinPkgName "cdbs")],
+                                       [anyrel (BinPkgName "ghc") ],
+                                       [anyrel (BinPkgName "ghc-prof")]])
+                (S.buildDependsIndep . D.control . debInfo) %= (++ [[anyrel (BinPkgName "ghc-doc")]]))
             atoms
       log = ChangeLog [Entry { logPackage = "haskell-cabal-debian"
                              , logVersion = buildDebianVersion Nothing "2.6.2" Nothing
@@ -206,12 +206,12 @@
                 (S.maintainer . D.control . debInfo) .= Just (NameAddr {nameAddr_name = Just "David Fox", nameAddr_addr = "dsf@seereason.com"})
                 (S.standardsVersion . D.control . debInfo) .= Just (StandardsVersion 3 9 3 (Just 1))
                 (S.buildDepends . D.control . debInfo)
-                               %= (++ [[Rel (BinPkgName "debhelper") (Just (GRE (parseDebianVersion ("7.0" :: String)))) Nothing],
-                                       [Rel (BinPkgName "haskell-devscripts") (Just (GRE (parseDebianVersion ("0.8" :: String)))) Nothing],
-                                       [Rel (BinPkgName "cdbs") Nothing Nothing],
-                                       [Rel (BinPkgName "ghc") Nothing Nothing],
-                                       [Rel (BinPkgName "ghc-prof") Nothing Nothing]])
-                (S.buildDependsIndep . D.control . debInfo) %= (++ [[Rel (BinPkgName "ghc-doc") Nothing Nothing]]))
+                               %= (++ [[RRel (BinPkgName "debhelper") (Just (GRE (parseDebianVersion ("7.0" :: String)))) Nothing []],
+                                       [RRel (BinPkgName "haskell-devscripts") (Just (GRE (parseDebianVersion ("0.8" :: String)))) Nothing []],
+                                       [anyrel (BinPkgName "cdbs")],
+                                       [anyrel (BinPkgName "ghc")],
+                                       [anyrel (BinPkgName "ghc-prof")]])
+                (S.buildDependsIndep . D.control . debInfo) %= (++ [[anyrel (BinPkgName "ghc-doc")]]))
             atoms
       log = ChangeLog [Entry {logPackage = "haskell-cabal-debian",
                               logVersion = Debian.Version.parseDebianVersion ("2.6.2" :: String),
@@ -302,8 +302,8 @@
                 (debInfo . D.control . S.uploaders) .= [NameAddr {nameAddr_name = Just "Marco Silva", nameAddr_addr = "marcot@debian.org"},NameAddr {nameAddr_name = Just "Joachim Breitner", nameAddr_addr = "nomeata@debian.org"}]
                 (debInfo . D.control . S.priority) .= Just Extra
                 (debInfo . D.control . S.section) .= Just (MainSection "haskell")
-                (debInfo . D.control . S.buildDepends) %= (++ [[Rel (BinPkgName {unBinPkgName = "debhelper"}) (Just (GRE (Debian.Version.parseDebianVersion' ("7" :: String)))) Nothing]])
-                (debInfo . D.control . S.buildDependsIndep) %=  (++ [[Rel (BinPkgName {unBinPkgName = "perl"}) Nothing Nothing]])
+                (debInfo . D.control . S.buildDepends) %= (++ [[RRel (BinPkgName {unBinPkgName = "debhelper"}) (Just (GRE (Debian.Version.parseDebianVersion' ("7" :: String)))) Nothing []]])
+                (debInfo . D.control . S.buildDependsIndep) %=  (++ [[anyrel (BinPkgName {unBinPkgName = "perl"})]])
                 (debInfo . D.control . S.standardsVersion) .= Just (StandardsVersion 3 9 4 Nothing)
                 (debInfo . D.control . S.vcsFields) %= Set.union (Set.fromList [ S.VCSBrowser "http://darcs.debian.org/cgi-bin/darcsweb.cgi?r=pkg-haskell/haskell-devscripts"
                                                        , S.VCSDarcs "http://darcs.debian.org/pkg-haskell/haskell-devscripts"])
@@ -321,23 +321,23 @@
                                           " generate appropriate substvars entries for each one, and install the",
                                           " package in the Debian temporary area as part of the build process."])
                 (debInfo . D.binaryDebDescription (BinPkgName "haskell-devscripts") . B.relations . B.depends) .=
-                     [ [Rel (BinPkgName {unBinPkgName = "dctrl-tools"}) Nothing Nothing]
-                     , [Rel (BinPkgName {unBinPkgName = "debhelper"}) Nothing Nothing]
-                     , [Rel (BinPkgName {unBinPkgName = "dh-buildinfo"}) Nothing Nothing]
-                     , [Rel (BinPkgName {unBinPkgName = "ghc"}) (Just (GRE (Debian.Version.parseDebianVersion'("7.6" :: String)))) Nothing]
-                     , [Rel (BinPkgName {unBinPkgName = "cdbs"}) Nothing Nothing]
-                     , [Rel (BinPkgName {unBinPkgName = "${misc:Depends}"}) Nothing Nothing]
-                     , [Rel (BinPkgName {unBinPkgName = "html-xml-utils"}) Nothing Nothing]
-                     , [Rel (BinPkgName {unBinPkgName = "hscolour"}) (Just (GRE (Debian.Version.parseDebianVersion'("1.8" :: String)))) Nothing]
-                     , [Rel (BinPkgName {unBinPkgName = "ghc-haddock"}) (Just (GRE (Debian.Version.parseDebianVersion'("7.4" :: String)))) Nothing] ]
+                     [ [anyrel (BinPkgName {unBinPkgName = "dctrl-tools"})]
+                     , [anyrel (BinPkgName {unBinPkgName = "debhelper"})]
+                     , [anyrel (BinPkgName {unBinPkgName = "dh-buildinfo"})]
+                     , [RRel (BinPkgName {unBinPkgName = "ghc"}) (Just (GRE (Debian.Version.parseDebianVersion'("7.6" :: String)))) Nothing []]
+                     , [anyrel (BinPkgName {unBinPkgName = "cdbs"})]
+                     , [anyrel (BinPkgName {unBinPkgName = "${misc:Depends}"})]
+                     , [anyrel (BinPkgName {unBinPkgName = "html-xml-utils"})]
+                     , [RRel (BinPkgName {unBinPkgName = "hscolour"}) (Just (GRE (Debian.Version.parseDebianVersion'("1.8" :: String)))) Nothing []]
+                     , [RRel (BinPkgName {unBinPkgName = "ghc-haddock"}) (Just (GRE (Debian.Version.parseDebianVersion'("7.4" :: String)))) Nothing []] ]
 {-
                 control %= (\ y -> y { S.source = 
                                      , S.maintainer = Just (NameAddr {nameAddr_name = Just "Debian Haskell Group", nameAddr_addr = "pkg-haskell-maintainers@lists.alioth.debian.org"})
                                      , S.uploaders = [NameAddr {nameAddr_name = Just "Marco Silva", nameAddr_addr = "marcot@debian.org"},NameAddr {nameAddr_name = Just "Joachim Breitner", nameAddr_addr = "nomeata@debian.org"}]
                                      , S.priority = Just Extra
                                      , S.section = Just (MainSection "haskell")
-                                     , S.buildDepends = (S.buildDepends y) ++ [[Rel (BinPkgName {unBinPkgName = "debhelper"}) (Just (GRE (Debian.Version.parseDebianVersion'("7" :: String)))) Nothing]]
-                                     , S.buildDependsIndep = (S.buildDependsIndep y) ++ [[Rel (BinPkgName {unBinPkgName = "perl"}) Nothing Nothing]]
+                                     , S.buildDepends = (S.buildDepends y) ++ [[RRel (BinPkgName {unBinPkgName = "debhelper"}) (Just (GRE (Debian.Version.parseDebianVersion'("7" :: String)))) Nothing []]]
+                                     , S.buildDependsIndep = (S.buildDependsIndep y) ++ [[RRel (BinPkgName {unBinPkgName = "perl"}) Nothing Nothing []]]
                                      , S.standardsVersion = Just (StandardsVersion 3 9 4 Nothing)
                                      , S.vcsFields = Set.union (S.vcsFields y) (Set.fromList [ S.VCSBrowser "http://darcs.debian.org/cgi-bin/darcsweb.cgi?r=pkg-haskell/haskell-devscripts"
                                                                                                  , S.VCSDarcs "http://darcs.debian.org/pkg-haskell/haskell-devscripts"])
@@ -361,15 +361,15 @@
                                                                                       , B.relations =
                                                                                           B.PackageRelations
                                                                                             { B.depends =
-                                                                                              [ [Rel (BinPkgName {unBinPkgName = "dctrl-tools"}) Nothing Nothing]
-                                                                                              , [Rel (BinPkgName {unBinPkgName = "debhelper"}) Nothing Nothing]
-                                                                                              , [Rel (BinPkgName {unBinPkgName = "dh-buildinfo"}) Nothing Nothing]
-                                                                                              , [Rel (BinPkgName {unBinPkgName = "ghc"}) (Just (GRE (Debian.Version.parseDebianVersion'("7.6" :: String)))) Nothing]
-                                                                                              , [Rel (BinPkgName {unBinPkgName = "cdbs"}) Nothing Nothing]
-                                                                                              , [Rel (BinPkgName {unBinPkgName = "${misc:Depends}"}) Nothing Nothing]
-                                                                                              , [Rel (BinPkgName {unBinPkgName = "html-xml-utils"}) Nothing Nothing]
-                                                                                              , [Rel (BinPkgName {unBinPkgName = "hscolour"}) (Just (GRE (Debian.Version.parseDebianVersion'("1.8" :: String)))) Nothing]
-                                                                                              , [Rel (BinPkgName {unBinPkgName = "ghc-haddock"}) (Just (GRE (Debian.Version.parseDebianVersion'("7.4" :: String)))) Nothing] ]
+                                                                                              [ [anyrel (BinPkgName {unBinPkgName = "dctrl-tools"})]
+                                                                                              , [anyrel (BinPkgName {unBinPkgName = "debhelper"})]
+                                                                                              , [anyrel (BinPkgName {unBinPkgName = "dh-buildinfo"})]
+                                                                                              , [RRel (BinPkgName {unBinPkgName = "ghc"}) (Just (GRE (Debian.Version.parseDebianVersion'("7.6" :: String)))) Nothing []]
+                                                                                              , [anyrel (BinPkgName {unBinPkgName = "cdbs"})]
+                                                                                              , [anyrel (BinPkgName {unBinPkgName = "${misc:Depends}"})]
+                                                                                              , [anyrel (BinPkgName {unBinPkgName = "html-xml-utils"})]
+                                                                                              , [RRel (BinPkgName {unBinPkgName = "hscolour"}) (Just (GRE (Debian.Version.parseDebianVersion'("1.8" :: String)))) Nothing []]
+                                                                                              , [RRel (BinPkgName {unBinPkgName = "ghc-haddock"}) (Just (GRE (Debian.Version.parseDebianVersion'("7.4" :: String)))) Nothing []] ]
                                                                                             , B.recommends = []
                                                                                             , B.suggests = []
                                                                                             , B.preDepends = []
@@ -503,7 +503,7 @@
       json2Path = "/usr/share/clckwrks-0.13.2/json2"
 
 anyrel :: BinPkgName -> Relation
-anyrel b = Rel b Nothing Nothing
+anyrel b = RRel b Nothing Nothing []
 
 test5 :: String -> Test
 test5 label =
@@ -526,7 +526,7 @@
              doWebsite (BinPkgName "creativeprompts-production") (theSite (BinPkgName "creativeprompts-production"))
              doServer (BinPkgName "creativeprompts-development") (theServer (BinPkgName "creativeprompts-development"))
              doBackups (BinPkgName "creativeprompts-backups") "creativeprompts-backups"
-             (A.debInfo . D.execMap) %= Map.insert "trhsx" [[Rel (BinPkgName "haskell-hsx-utils") Nothing Nothing]]
+             (A.debInfo . D.execMap) %= Map.insert "trhsx" [[anyrel (BinPkgName "haskell-hsx-utils")]]
              mapM_ (\ b -> (debInfo . D.binaryDebDescription b . B.relations . B.depends) %= \ deps -> deps ++ [[anyrel (BinPkgName "markdown")]])
                    [(BinPkgName "creativeprompts-production"), (BinPkgName "creativeprompts-development")]
              (debInfo . D.binaryDebDescription (BinPkgName "creativeprompts-development") . B.description) .=
@@ -631,7 +631,7 @@
       customize Nothing = error "Missing changelog"
       customize (Just log) =
           do (debInfo . D.flags . verbosity) .= 1
-             (debInfo . D.control . S.buildDepends) %= (++ [[Rel (BinPkgName "haskell-hsx-utils") Nothing Nothing]])
+             (debInfo . D.control . S.buildDepends) %= (++ [[anyrel (BinPkgName "haskell-hsx-utils")]])
              (debInfo . D.control . S.homepage) .= Just "https://artvaluereportonline.com"
              (debInfo . D.sourceFormat) .= Native3
              (debInfo . D.changelog) .= Just log
@@ -677,7 +677,7 @@
                           (D.InstallFile {D.execName = "alex", D.destName = "alex", D.sourceDir = Nothing, D.destDir = Nothing})
              -- Bootstrap self-dependency
              (debInfo . D.allowDebianSelfBuildDeps) .= True
-             (debInfo . D.control . S.buildDepends) %= (++ [[Rel (BinPkgName "alex") Nothing Nothing]])
+             (debInfo . D.control . S.buildDepends) %= (++ [[anyrel (BinPkgName "alex")]])
 
 test10 :: String -> Test
 test10 label =
@@ -701,7 +701,7 @@
              (A.debInfo . D.compat) .= Just 13
              (A.debInfo . D.control . S.standardsVersion) .= Just (StandardsVersion 3 8 1 Nothing)
              (A.debInfo . D.control . S.maintainer) .= parseMaintainer "David Fox <dsf@seereason.com>"
-             (A.debInfo . D.binaryDebDescription (BinPkgName "seereason-darcs-backups") . B.relations . B.depends) %= (++ [[Rel (BinPkgName "anacron") Nothing Nothing]])
+             (A.debInfo . D.binaryDebDescription (BinPkgName "seereason-darcs-backups") . B.relations . B.depends) %= (++ [[anyrel (BinPkgName "anacron")]])
              (A.debInfo . D.control . S.section) .= Just (MainSection "haskell")
              (A.debInfo . D.utilsPackageNameBase) .= Just "seereason-darcs-backups"
              (A.debInfo . D.atomSet) %= (Set.insert $ D.InstallCabalExec (BinPkgName "seereason-darcs-backups") "seereason-darcs-backups" "/etc/cron.hourly")
diff --git a/cabal-debian.cabal b/cabal-debian.cabal
--- a/cabal-debian.cabal
+++ b/cabal-debian.cabal
@@ -1,6 +1,6 @@
 cabal-version:  3.0
 Name:           cabal-debian
-Version:        5.4.4
+Version:        5.5
 Copyright:      Copyright (c) 2007-2014, David Fox, Jeremy Shaw; 2017-2026 Clint Adams
 License:        BSD-3-Clause
 License-File:   LICENSE
@@ -140,7 +140,8 @@
   GHC-Options: -Wall
   Build-Depends:
     base >= 4.17 && < 5,
-    Cabal >= 3.2 && < 3.17,
+    Cabal >= 3.6 && < 3.17,
+    Cabal-syntax >= 3.6 && < 3.17,
     containers,
     data-default,
     Diff >= 0.3.1 && < 2,
@@ -152,6 +153,7 @@
     lens,
     mtl,
     network-uri,
+    ordered-containers >= 0.2,
     parsec >= 3,
     pretty >= 1.1.2,
     process,
@@ -164,7 +166,7 @@
     utf8-string,
     optparse-applicative >= 0.11 && < 0.20,
     prettyprinter,
-    debian >= 3.95
+    debian >= 4.1.2
   Exposed-Modules:
     Data.Maybe.Extended
     Debian.GHC
@@ -218,9 +220,9 @@
   Build-Depends:
     base >= 4.17 && < 5,
     cabal-debian,
-    Cabal >= 3.2 && < 3.17,
+    Cabal-syntax >= 3.6 && < 3.17,
     containers,
-    debian >= 3.95,
+    debian >= 4.1,
     Diff >= 0.3.1 && < 2,
     directory,
     filepath,
diff --git a/src/Debian/Debianize.hs b/src/Debian/Debianize.hs
--- a/src/Debian/Debianize.hs
+++ b/src/Debian/Debianize.hs
@@ -24,7 +24,7 @@
 -- > import Control.Lens
 -- > import Data.Map as Map
 -- > import Data.Set as Set
--- > import Debian.Relation (BinPkgName(BinPkgName), Relation(Rel))
+-- > import Debian.Relation (BinPkgName(BinPkgName), Relation(RRel))
 -- > import Debian.Debianize
 -- > main = performDebianization $ do
 -- >   debianDefaults
diff --git a/src/Debian/Debianize/BuildDependencies.hs b/src/Debian/Debianize/BuildDependencies.hs
--- a/src/Debian/Debianize/BuildDependencies.hs
+++ b/src/Debian/Debianize/BuildDependencies.hs
@@ -15,6 +15,7 @@
 import Data.Function (on)
 import Data.List as List (filter, groupBy, map, minimumBy, nub, sortBy)
 import Data.Map as Map (lookup, Map)
+import qualified Data.Map.Ordered as MO
 import Data.Maybe (catMaybes, fromMaybe, isJust, isNothing, listToMaybe, mapMaybe, maybeToList)
 import Data.Set as Set (empty, fold, fromList, map, member, Set, singleton, toList, union)
 import Debian.Debianize.Prelude
@@ -29,7 +30,7 @@
 import Debian.Debianize.VersionSplits (packageRangesFromVersionSplits)
 import Debian.GHC (compilerPackageName)
 import Debian.Orphans ()
-import Debian.Relation (BinPkgName(..), checkVersionReq, Relation(..), Relations)
+import Debian.Relation (BinPkgName(..), checkVersionReq, Relation(..), Relations, RestrictionList)
 import qualified Debian.Relation as D (BinPkgName(BinPkgName), Relation(..), Relations, VersionReq(EEQ, GRE, LTE, SGR, SLT))
 import Debian.Version (DebianVersion, parseDebianVersion')
 import Distribution.Compiler (CompilerFlavor(..))
@@ -38,13 +39,9 @@
 import qualified Distribution.PackageDescription as Cabal (PackageDescription(library, executables, testSuites))
 import Distribution.Pretty (prettyShow)
 import Distribution.Types.LegacyExeDependency (LegacyExeDependency(..))
-#if MIN_VERSION_Cabal(3,4,0)
 import qualified Distribution.Compat.NonEmptySet as NES
 import Distribution.Types.LibraryName (defaultLibName)
 import Distribution.Version (anyVersion, asVersionIntervals, fromVersionIntervals, intersectVersionRanges, isNoVersion, toVersionIntervals, unionVersionRanges, VersionRange, withinVersion)
-#else
-import Distribution.Version (anyVersion, asVersionIntervals, fromVersionIntervals, intersectVersionRanges, invertVersionRange, isNoVersion, toVersionIntervals, unionVersionRanges, VersionRange, withinVersion)
-#endif
 import Distribution.Types.PkgconfigDependency (PkgconfigDependency(..))
 import Prelude hiding (init, log, map, unlines, unlines, writeFile)
 import System.Directory (findExecutable)
@@ -103,7 +100,7 @@
 
       fixDeps :: CabalInfo -> [String] -> Relations
       fixDeps atoms =
-          concatMap (\ cab -> fromMaybe [[D.Rel (D.BinPkgName ("lib" ++ List.map toLower cab ++ "-dev")) Nothing Nothing]]
+          concatMap (\ cab -> fromMaybe [anyrel' (D.BinPkgName ("lib" ++ List.map toLower cab ++ "-dev"))]
                                         (Map.lookup cab (view (A.debInfo . D.extraLibMap) atoms)))
 
 setupBuildDepends :: SetupBuildInfo -> [Dependency_]
@@ -112,11 +109,7 @@
 -- | Take the intersection of all the dependencies on a given package name
 mergeCabalDependencies :: [Dependency] -> [Dependency]
 mergeCabalDependencies =
-#if MIN_VERSION_Cabal(3,4,0)
     List.map (foldl1 (\ (Dependency name range1 _) (Dependency _ range2 _) -> Dependency name (intersectVersionRanges range1 range2) (NES.singleton defaultLibName))) . groupBy ((==) `on` dependencyPackage) . sortBy (compare `on` dependencyPackage)
-#else
-    List.map (foldl1 (\ (Dependency name range1 _) (Dependency _ range2 _) -> Dependency name (intersectVersionRanges range1 range2) mempty)) . groupBy ((==) `on` dependencyPackage) . sortBy (compare `on` dependencyPackage)
-#endif
     where
       dependencyPackage (Dependency x _ _) = x
 
@@ -143,10 +136,10 @@
        testsStatus <- use (A.debInfo . D.testsStatus)
 
        cDeps <- nub . concat . concat <$> sequence
-            [ mapM (buildDependencies hcTypePairs) libDeps
-            , mapM (buildDependencies hcTypePairs) binDeps
-            , mapM (buildDependencies hcTypePairs) setupDeps
-            , mapM (buildDependencies hcTypePairs) (if testsStatus /= D.TestsDisable then testDeps else [])
+            [ mapM (buildDependencies [] hcTypePairs) libDeps
+            , mapM (buildDependencies [] hcTypePairs) binDeps
+            , mapM (buildDependencies [] hcTypePairs) setupDeps
+            , mapM (buildDependencies [MO.singleton ("nocheck", False)] hcTypePairs) (if testsStatus /= D.TestsDisable then testDeps else [])
             ]
 
        bDeps <- use (A.debInfo . D.control . S.buildDepends)
@@ -155,9 +148,9 @@
        ghcprof <- liftIO $ compilerPackageName hflavor B.Profiling
        let ghcrel = if member GHC hcs then maybe [] ((: []) . anyrel') ghcdev else []
        let ghcrelprof = if prof then maybe [] ((: []) . anyrel') ghcprof else []
-       let xs = nub $ [maybe [] (\ n -> [D.Rel (D.BinPkgName "debhelper-compat") (Just (D.EEQ (parseDebianVersion' (show n)))) Nothing]) compat,
-                       [D.Rel (D.BinPkgName "haskell-devscripts-minimal") Nothing Nothing,
-                        D.Rel (D.BinPkgName "haskell-devscripts") (Just $ D.GRE $ parseDebianVersion' ("0.16.42" :: String)) Nothing],
+       let xs = nub $ [maybe [] (\ n -> [D.RRel (D.BinPkgName "debhelper-compat") (Just (D.EEQ (parseDebianVersion' (show n)))) Nothing []]) compat,
+                       [D.RRel (D.BinPkgName "haskell-devscripts-minimal") Nothing Nothing [],
+                        D.RRel (D.BinPkgName "haskell-devscripts") (Just $ D.GRE $ parseDebianVersion' ("0.16.42" :: String)) Nothing []],
                        anyrel "dh-sequence-haskell"] ++
                       (ghcrel ++ ghcrelprof) ++
                        bDeps ++
@@ -213,20 +206,20 @@
     do hc <- use (A.debInfo . D.flags . compilerFlavor)
        let hcs = singleton hc -- vestigial
        omitProfDeps <- use (A.debInfo . D.omitProfVersionDeps)
-       concat <$> mapM (\ hc' -> dependencies hc' B.Documentation name ranges omitProfDeps) (toList hcs)
+       concat <$> mapM (\ hc' -> dependencies hc' B.Documentation name ranges omitProfDeps []) (toList hcs)
 docDependencies _ = return []
 
 -- | The Debian build dependencies for a package include the profiling
 -- libraries and the documentation packages, used for creating cross
 -- references.  Also the packages associated with extra libraries.
-buildDependencies :: (MonadIO m) => Set (CompilerFlavor, B.PackageType) -> Dependency_ -> CabalT m D.Relations
-buildDependencies hcTypePairs (BuildDepends (Dependency name ranges _)) =
+buildDependencies :: (MonadIO m) => [RestrictionList] -> Set (CompilerFlavor, B.PackageType) -> Dependency_ -> CabalT m D.Relations
+buildDependencies rlists hcTypePairs (BuildDepends (Dependency name ranges _)) =
     use (A.debInfo . D.omitProfVersionDeps) >>= \ omitProfDeps ->
-    concat <$> mapM (\ (hc, typ) -> dependencies hc typ name ranges omitProfDeps) (toList hcTypePairs)
-buildDependencies _ dep@(ExtraLibs _) =
+    concat <$> mapM (\ (hc, typ) -> dependencies hc typ name ranges omitProfDeps rlists) (toList hcTypePairs)
+buildDependencies _rlists _ dep@(ExtraLibs _) =
     do mp <- use (A.debInfo . D.execMap)
        return $ concat $ adapt mp dep
-buildDependencies _ dep =
+buildDependencies _rlists _ dep =
     case unboxDependency dep of
       Just (Dependency _name _ranges _) ->
           do mp <- view (A.debInfo . D.execMap) <$> get
@@ -240,7 +233,7 @@
 adapt mp (BuildTools (Dependency pkg _ _)) =
     maybe (aptFile (unPackageName pkg)) (: []) (Map.lookup (unPackageName pkg) mp)
 adapt _flags (ExtraLibs x) = [x]
-adapt _flags (BuildDepends (Dependency pkg _ _)) = [[[D.Rel (D.BinPkgName (unPackageName pkg)) Nothing Nothing]]]
+adapt _flags (BuildDepends (Dependency pkg _ _)) = [[anyrel' (D.BinPkgName (unPackageName pkg))]]
 
 -- There are three reasons this may not work, or may work
 -- incorrectly: (1) the build environment may be a different
@@ -261,21 +254,21 @@
                       case takeWhile (not . isSpace) out of
                         "" -> error $ "Unable to locate a debian package containing the build tool " ++ pkg ++
                                       ", try using --exec-map " ++ pkg ++ ":<debname> or execMap " ++ show pkg ++
-                                      " [[Rel (BinPkgName \"<debname>\") Nothing Nothing]]"
-                        s -> [[[D.Rel (D.BinPkgName s) Nothing Nothing]]]
+                                      " [[RRel (BinPkgName \"<debname>\") Nothing Nothing []]]"
+                        s -> [[anyrel' (D.BinPkgName s)]]
                   _ -> []
 
 anyrel :: String -> [D.Relation]
 anyrel x = anyrel' (D.BinPkgName x)
 
 anyrel' :: D.BinPkgName -> [D.Relation]
-anyrel' x = [D.Rel x Nothing Nothing]
+anyrel' x = [D.RRel x Nothing Nothing []]
 
 -- | Turn a cabal dependency into debian dependencies.  The result
 -- needs to correspond to a single debian package to be installed,
 -- so we will return just an OrRelation.
-dependencies :: MonadIO m => CompilerFlavor -> B.PackageType -> PackageName -> VersionRange -> Bool -> CabalT m Relations
-dependencies hc typ name cabalRange omitProfVersionDeps =
+dependencies :: MonadIO m => CompilerFlavor -> B.PackageType -> PackageName -> VersionRange -> Bool -> [RestrictionList] -> CabalT m Relations
+dependencies hc typ name cabalRange omitProfVersionDeps rlists =
     do nameMap <- use A.debianNameMap
        -- Compute a list of alternative debian dependencies for
        -- satisfying a cabal dependency.  The only caveat is that
@@ -296,39 +289,23 @@
             False ->
                 Just <$> (cataVersionRange rangeToRange . normaliseVersionRange) range'''
           where
-#if !MIN_VERSION_Cabal(3,4,0)
-            rangeToRange AnyVersionF                     = return $ Rel' (D.Rel dname Nothing Nothing)
-#endif
-            rangeToRange (ThisVersionF v)                = (debianVersion' name >=> \ dv -> return $ Rel' (D.Rel dname (Just (D.EEQ dv)) Nothing)) v
-            rangeToRange (LaterVersionF v)               = (debianVersion' name >=> \ dv -> return $ Rel' (D.Rel dname (Just (D.SGR dv)) Nothing)) v
-            rangeToRange (EarlierVersionF v)             = (debianVersion' name >=> \ dv -> return $ Rel' (D.Rel dname (Just (D.SLT dv)) Nothing)) v
+            rangeToRange (ThisVersionF v)                = (debianVersion' name >=> \ dv -> return $ Rel' (D.RRel dname (Just (D.EEQ dv)) Nothing rlists)) v
+            rangeToRange (LaterVersionF v)               = (debianVersion' name >=> \ dv -> return $ Rel' (D.RRel dname (Just (D.SGR dv)) Nothing rlists)) v
+            rangeToRange (EarlierVersionF v)             = (debianVersion' name >=> \ dv -> return $ Rel' (D.RRel dname (Just (D.SLT dv)) Nothing rlists)) v
             rangeToRange (OrLaterVersionF v)
-               | v == mkVersion [0] = return $ Rel' (D.Rel dname Nothing Nothing)
-               | otherwise = (debianVersion' name >=> \ dv -> return $ Rel' (D.Rel dname (Just (D.GRE dv)) Nothing)) v
-            rangeToRange (OrEarlierVersionF v)           = (debianVersion' name >=> \ dv -> return $ Rel' (D.Rel dname (Just (D.LTE dv)) Nothing)) v
-#if !MIN_VERSION_Cabal(3,4,0)
-            rangeToRange (WildcardVersionF v)            = (\ x y -> debianVersion' name x >>= \ dvx ->
-                                    debianVersion' name y >>= \ dvy ->
-                                    return $ And [Rel' (D.Rel dname (Just (D.GRE dvx)) Nothing),
-                                                  Rel' (D.Rel dname (Just (D.SLT dvy)) Nothing)]) v (wildcardUpperBound v)
-#endif
+               | v == mkVersion [0] = return $ Rel' (D.RRel dname Nothing Nothing rlists)
+               | otherwise = (debianVersion' name >=> \ dv -> return $ Rel' (D.RRel dname (Just (D.GRE dv)) Nothing rlists)) v
+            rangeToRange (OrEarlierVersionF v)           = (debianVersion' name >=> \ dv -> return $ Rel' (D.RRel dname (Just (D.LTE dv)) Nothing rlists)) v
             rangeToRange (MajorBoundVersionF v)          = (\ x y -> debianVersion' name x >>= \ dvx ->
                                     debianVersion' name y >>= \ dvy ->
-                                    return $ And [Rel' (D.Rel dname (Just (D.GRE dvx)) Nothing),
-                                                  Rel' (D.Rel dname (Just (D.SLT dvy)) Nothing)]) v (majorUpperBound v)
+                                    return $ And [Rel' (D.RRel dname (Just (D.GRE dvx)) Nothing rlists),
+                                                  Rel' (D.RRel dname (Just (D.SLT dvy)) Nothing rlists)]) v (majorUpperBound v)
             rangeToRange (UnionVersionRangesF v1 v2)     = (\ x y -> x >>= \ x' -> y >>= \ y' -> return $ Or [x', y']) v1 v2
             rangeToRange (IntersectVersionRangesF v1 v2) = (\ x y -> x >>= \ x' -> y >>= \ y' -> return $ And [x', y']) v1 v2
-#if !MIN_VERSION_Cabal(3,4,0)
-            rangeToRange (VersionRangeParensF v)         = v
-#endif
             -- Choose the simpler of the two
             range''' = canon (simpler range' range'')
             -- Unrestrict the range for versions that we know don't exist for this debian package
-#if MIN_VERSION_Cabal(3,6,0)
             range'' = range' -- inversion functions are gone
-#else
-            range'' = canon (unionVersionRanges range' (invertVersionRange range))
-#endif
             -- Restrict the range to the versions specified for this debian package
             range' = intersectVersionRanges cabalRange' range
             -- When we see a cabal equals dependency we need to turn it into
@@ -360,8 +337,8 @@
       -- If a library is built into the compiler, this is the debian
       -- package name the compiler will conflict with.
       doRel :: MonadIO m => Maybe BinPkgName -> D.Relation -> CabalT m [D.Relation]
-      doRel hcname rel@(D.Rel dname req _) = do
-        let comp = maybe [] (\x -> [D.Rel x Nothing Nothing]) hcname
+      doRel hcname rel@(D.RRel dname req _ _) = do
+        let comp = maybe [] (\x -> [D.RRel x Nothing Nothing []]) hcname
         -- gver <- use ghcVersion
         -- Look at what version of the package is provided by the compiler.
         atoms <- get
@@ -414,4 +391,4 @@
 filterMissing :: Monad m => [[Relation]] -> CabalT m [[Relation]]
 filterMissing rels =
     get >>= \ atoms -> return $
-    List.filter (/= []) (List.map (List.filter (\ (Rel name _ _) -> not (Set.member name (view (A.debInfo . D.missingDependencies) atoms)))) rels)
+    List.filter (/= []) (List.map (List.filter (\ (RRel name _ _ _) -> not (Set.member name (view (A.debInfo . D.missingDependencies) atoms)))) rels)
diff --git a/src/Debian/Debianize/CopyrightDescription.hs b/src/Debian/Debianize/CopyrightDescription.hs
--- a/src/Debian/Debianize/CopyrightDescription.hs
+++ b/src/Debian/Debianize/CopyrightDescription.hs
@@ -53,9 +53,7 @@
 import qualified Distribution.Package as Cabal
 import qualified Distribution.PackageDescription as Cabal (PackageDescription(licenseFiles, copyright, licenseRaw, package, maintainer))
 import qualified Distribution.Utils.ShortText as ST
-#if MIN_VERSION_Cabal(3,6,0)
 import qualified Distribution.Utils.Path as DUP
-#endif
 import Network.URI (URI, parseURI)
 import Prelude hiding (init, init, log, log, unlines, readFile)
 import Text.PrettyPrint.HughesPJClass (text)
@@ -253,23 +251,14 @@
 -- provided @copyright0@ value.
 defaultCopyrightDescription :: Cabal.PackageDescription -> IO CopyrightDescription
 defaultCopyrightDescription pkgDesc = do
-#if MIN_VERSION_Cabal(3,6,0)
   let (debianCopyrightPath, otherLicensePaths) = partition (== DUP.unsafeMakeSymbolicPath "debian/copyright") (Cabal.licenseFiles pkgDesc)
-#else
-  let (debianCopyrightPath, otherLicensePaths) = partition (== "debian/copyright") (Cabal.licenseFiles pkgDesc)
-#endif
       license =  either (\x -> OtherLicense ("SPDX license: " ++ show x)) fromCabalLicense $ Cabal.licenseRaw pkgDesc
       pkgname = unPackageName . Cabal.pkgName . Cabal.package $ pkgDesc
       maintainer = Cabal.maintainer $ pkgDesc
   -- This is an @Nothing@ unless debian/copyright is (for some
   -- reason) mentioned in the cabal file.
-#if MIN_VERSION_Cabal(3,6,0)
   debianCopyrightText <- mapM (readFileMaybe . DUP.getSymbolicPath) debianCopyrightPath >>= return . listToMaybe . catMaybes
   licenseCommentPairs <- mapM (readFileMaybe . DUP.getSymbolicPath) otherLicensePaths >>= return . filter (isJust . snd) . zip otherLicensePaths
-#else
-  debianCopyrightText <- mapM readFileMaybe debianCopyrightPath >>= return . listToMaybe . catMaybes
-  licenseCommentPairs <- mapM readFileMaybe otherLicensePaths >>= return . filter (isJust . snd) . zip otherLicensePaths
-#endif
   return $ case debianCopyrightText of
     Just t ->
         def { _summaryComment = Just t }
@@ -279,11 +268,7 @@
         def { _filesAndLicenses =
                   [ sourceDefaultFilesDescription copyrt license,
                     debianDefaultFilesDescription license ] ++
-#if MIN_VERSION_Cabal(3,6,0)
                   defaultLicenseDescriptions license (map (\(x,y) -> (DUP.getSymbolicPath x, y)) licenseCommentPairs)
-#else
-                  defaultLicenseDescriptions license licenseCommentPairs
-#endif
             , _upstreamName = Just . pack $ pkgname
             , _upstreamSource = Just . pack $ "https://hackage.haskell.org/package/" ++ pkgname
             , _upstreamContact = nothingIf Text.null (toText maintainer)
diff --git a/src/Debian/Debianize/Details.hs b/src/Debian/Debianize/Details.hs
--- a/src/Debian/Debianize/Details.hs
+++ b/src/Debian/Debianize/Details.hs
@@ -14,7 +14,7 @@
 import Debian.Debianize.CabalInfo as A (epochMap, debInfo)
 import Debian.Debianize.DebInfo as D (execMap)
 import Debian.Debianize.VersionSplits (DebBase(DebBase))
-import Debian.Relation (BinPkgName(BinPkgName), Relation(Rel))
+import Debian.Relation (BinPkgName(BinPkgName), Relation(RRel))
 import Distribution.Package (mkPackageName)
 import Distribution.Version (mkVersion)
 
@@ -28,7 +28,7 @@
        A.epochMap %= Map.insert (mkPackageName "HTTP") 1
        -- Associate some build tools and their corresponding
        -- (eponymous) debian package names
-       mapM_ (\name -> (A.debInfo . D.execMap) %= Map.insert name [[Rel (BinPkgName name) Nothing Nothing]])
+       mapM_ (\name -> (A.debInfo . D.execMap) %= Map.insert name [[RRel (BinPkgName name) Nothing Nothing []]])
             ["alex", "c2hs", "ghc", "happy", "hsx2hs"]
        mapCabal (mkPackageName "QuickCheck") (DebBase "quickcheck2")
        -- Something was required for this package at one time - it
diff --git a/src/Debian/Debianize/Finalize.hs b/src/Debian/Debianize/Finalize.hs
--- a/src/Debian/Debianize/Finalize.hs
+++ b/src/Debian/Debianize/Finalize.hs
@@ -43,7 +43,7 @@
 import Debian.Orphans ()
 import Debian.Policy (getCurrentDebianUser, getDebhelperCompatLevel, haskellMaintainer, maintainerOfLastResort, PackageArchitectures(Any, All), PackagePriority(Optional), parseMaintainer, parseStandardsVersion, Section(..), SourceFormat(Native3))
 import Debian.Pretty (PP(..), ppShow)
-import Debian.Relation (BinPkgName, BinPkgName(BinPkgName), Relation(Rel), Relations, SrcPkgName(SrcPkgName))
+import Debian.Relation (BinPkgName, BinPkgName(BinPkgName), Relation(RRel), Relations, SrcPkgName(SrcPkgName))
 import qualified Debian.Relation as D (BinPkgName(BinPkgName), Relation(..))
 import Debian.Time (getCurrentLocalRFC822Time)
 import qualified Debian.Version as V (buildDebianVersion, DebianVersion, parseDebianVersion', epoch, version, revision)
@@ -60,7 +60,7 @@
 import System.IO (hPutStrLn, stderr)
 import Text.Parsec.Rfc2822 (NameAddr(..))
 import Distribution.Pretty (Pretty(pretty))
-#if MIN_VERSION_Cabal(3,14,0)
+#if MIN_VERSION_Cabal_syntax(3,14,0)
 import Distribution.Utils.Path (interpretSymbolicPath)
 #endif
 
@@ -430,7 +430,7 @@
       g :: PackageDescription -> Map String Relations -> Relations
       g pkgDesc libMap = concatMap (devDep libMap) (nub $ concatMap Cabal.extraLibs $ Cabal.allBuildInfo $ pkgDesc)
       devDep :: Map String Relations -> String -> Relations
-      devDep libMap cab = maybe [[Rel (BinPkgName ("lib" ++ cab ++ "-dev")) Nothing Nothing]] id (Map.lookup cab libMap)
+      devDep libMap cab = maybe [[RRel (BinPkgName ("lib" ++ cab ++ "-dev")) Nothing Nothing []]] id (Map.lookup cab libMap)
 
 -- | Applies a few settings to official packages (unless already set)
 checkOfficialSettings :: (Monad m) => CompilerFlavor -> CabalT m ()
@@ -472,7 +472,7 @@
     List.filter (not . List.null) (List.map filterOrRelation orRels)
     where
       filterOrRelation :: [Relation] -> [Relation]
-      filterOrRelation rels = List.filter (\ (Rel name _ _) -> not (elem name badNames)) rels
+      filterOrRelation rels = List.filter (\ (RRel name _ _ _) -> not (elem name badNames)) rels
 
 cabalExecBinaryPackage :: Monad m => BinPkgName -> CabalT m ()
 cabalExecBinaryPackage b =
@@ -571,7 +571,7 @@
            installedExec = Set.unions (Map.elems installedExecMap)
 
        prefixPath <- dataTop
-#if MIN_VERSION_Cabal(3,14,0)
+#if MIN_VERSION_Cabal_syntax(3,14,0)
        let dFpD = List.map (interpretSymbolicPath Nothing) (Cabal.dataFiles pkgDesc)
 #else
        let dFpD = Cabal.dataFiles pkgDesc
@@ -752,7 +752,7 @@
 anyrel x = anyrel' (D.BinPkgName x)
 
 anyrel' :: D.BinPkgName -> [D.Relation]
-anyrel' x = [D.Rel x Nothing Nothing]
+anyrel' x = [D.RRel x Nothing Nothing []]
 
 -- Lifted from Distribution.Simple.Setup, since it's not exported.
 flagList :: String -> [(FlagName, Bool)]
diff --git a/src/Debian/Debianize/Goodies.hs b/src/Debian/Debianize/Goodies.hs
--- a/src/Debian/Debianize/Goodies.hs
+++ b/src/Debian/Debianize/Goodies.hs
@@ -32,7 +32,7 @@
 import Debian.Orphans ()
 import Debian.Policy (apacheAccessLog, apacheErrorLog, apacheLogDirectory, databaseDirectory, dataDirectory, serverAccessLog, serverAppLog)
 import Debian.Pretty (ppText)
-import Debian.Relation (BinPkgName(BinPkgName), Relation(Rel))
+import Debian.Relation (BinPkgName(BinPkgName), Relation(RRel))
 import Distribution.PackageDescription as Cabal (PackageDescription)
 import Distribution.Simple.Build.PathsModule (pkgPathEnvVar)
 import Prelude hiding (init, log, map, unlines, writeFile)
@@ -87,8 +87,8 @@
 doBackups :: Monad m => BinPkgName -> String -> CabalT m ()
 doBackups bin s =
     do (A.debInfo . D.backups) %= Map.insert bin s
-       (A.debInfo . D.binaryDebDescription bin . B.relations . B.depends) %= (++ [[Rel (BinPkgName "anacron") Nothing Nothing]])
-       -- depends +++= (bin, Rel (BinPkgName "anacron") Nothing Nothing)
+       (A.debInfo . D.binaryDebDescription bin . B.relations . B.depends) %= (++ [[RRel (BinPkgName "anacron") Nothing Nothing []]])
+       -- depends +++= (bin, RRel (BinPkgName "anacron") Nothing Nothing [])
 
 oldClckwrksSiteFlags :: D.Site -> [String]
 oldClckwrksSiteFlags x =
diff --git a/src/Debian/Debianize/InputCabal.hs b/src/Debian/Debianize/InputCabal.hs
--- a/src/Debian/Debianize/InputCabal.hs
+++ b/src/Debian/Debianize/InputCabal.hs
@@ -20,16 +20,16 @@
 import Distribution.Package (Package(packageId))
 import Distribution.PackageDescription as Cabal (PackageDescription)
 import Distribution.PackageDescription.Configuration (finalizePD)
-#if MIN_VERSION_Cabal(3,16,0)
+#if MIN_VERSION_Cabal_syntax(3,16,0)
 import Distribution.Types.DependencySatisfaction (DependencySatisfaction(Satisfied))
 #endif
-#if MIN_VERSION_Cabal(3,8,1)
+#if MIN_VERSION_Cabal_syntax(3,8,1)
 import Distribution.Simple.PackageDescription (readGenericPackageDescription)
 #else
 import Distribution.PackageDescription.Parsec (readGenericPackageDescription)
 #endif
 import Distribution.Types.ComponentRequestedSpec (ComponentRequestedSpec(ComponentRequestedSpec))
-#if MIN_VERSION_Cabal(3,14,0)
+#if MIN_VERSION_Cabal_syntax(3,14,0)
 import Distribution.Simple.Utils (defaultPackageDescCwd, die', setupMessage)
 import Distribution.Utils.Path (relativeSymbolicPath)
 #else
@@ -37,11 +37,7 @@
 #endif
 import Distribution.System as Cabal (buildArch, Platform(..))
 import qualified Distribution.System as Cabal (buildOS)
-#if MIN_VERSION_Cabal(3,2,0)
 import Distribution.Types.Flag (mkFlagAssignment)
-#else
-import Distribution.Types.GenericPackageDescription (mkFlagAssignment)
-#endif
 import Distribution.Verbosity (Verbosity)
 import Prelude hiding (break, lines, log, null, readFile, sum)
 import System.Directory (doesFileExist, getCurrentDirectory)
@@ -62,7 +58,7 @@
         -- Load a GenericPackageDescription from the current directory
         -- and from that create a finalized PackageDescription for the
         -- given CompilerId.
-#if MIN_VERSION_Cabal(3,14,0)
+#if MIN_VERSION_Cabal_syntax(3,14,0)
         genPkgDesc <- liftIO $ defaultPackageDescCwd vb >>= readGenericPackageDescription vb Nothing . relativeSymbolicPath
 #else
         genPkgDesc <- liftIO $ defaultPackageDesc vb >>= readGenericPackageDescription vb
@@ -78,7 +74,7 @@
                ePkgDesc
       vb = intToVerbosity' $ view verbosity flags
       fs = view cabalFlagAssignments flags
-#if MIN_VERSION_Cabal(3,16,0)
+#if MIN_VERSION_Cabal_syntax(3,16,0)
       satisfied = Satisfied
 #else
       satisfied = True
diff --git a/src/Debian/Debianize/InputDebian.hs b/src/Debian/Debianize/InputDebian.hs
--- a/src/Debian/Debianize/InputDebian.hs
+++ b/src/Debian/Debianize/InputDebian.hs
@@ -39,7 +39,7 @@
 --import Debug.Trace (trace)
 import Distribution.Package (PackageIdentifier(..), unPackageName)
 import qualified Distribution.PackageDescription as Cabal (dataDir, PackageDescription(package))
-#if MIN_VERSION_Cabal(3,14,0)
+#if MIN_VERSION_Cabal_syntax(3,14,0)
 import Distribution.Utils.Path (interpretSymbolicPath)
 #endif
 import Prelude hiding (break, lines, log, null, readFile, sum, words)
@@ -302,7 +302,7 @@
 dataTop :: Monad m => CabalT m FilePath
 dataTop = do
   d <- use packageDescription
-#if MIN_VERSION_Cabal(3,14,0)
+#if MIN_VERSION_Cabal_syntax(3,14,0)
   return $ case interpretSymbolicPath Nothing (Cabal.dataDir d) of
 #else
   return $ case Cabal.dataDir d of
diff --git a/src/Debian/Orphans.hs b/src/Debian/Orphans.hs
--- a/src/Debian/Orphans.hs
+++ b/src/Debian/Orphans.hs
@@ -34,21 +34,21 @@
 deriving instance Data Compiler
 deriving instance Data CompilerId
 
-#if !MIN_VERSION_Cabal(3,10,1)
+#if !MIN_VERSION_Cabal_syntax(3,10,1)
 deriving instance Ord Language
 #endif
 deriving instance Ord Compiler
 deriving instance Ord NameAddr
-#if !MIN_VERSION_Cabal(3,10,1)
+#if !MIN_VERSION_Cabal_syntax(3,10,1)
 deriving instance Ord License
 #endif
 
-#if !MIN_VERSION_Cabal(3,10,1)
+#if !MIN_VERSION_Cabal_syntax(3,10,1)
 instance Ord Executable where
     compare = compare `on` exeName
 #endif
 
-#if !MIN_VERSION_Cabal(3,8,1)
+#if !MIN_VERSION_Cabal_syntax(3,8,1)
 instance Ord PackageDescription where
     compare = compare `on` package
 #endif
@@ -103,23 +103,14 @@
     pretty (PP range) = (cataVersionRange prettyRange . normaliseVersionRange) range
 
 prettyRange :: VersionRangeF Text.PrettyPrint.HughesPJ.Doc -> Text.PrettyPrint.HughesPJ.Doc
-#if !MIN_VERSION_Cabal(3,4,0)
-prettyRange AnyVersionF                     = (text "*")
-#endif
 prettyRange (ThisVersionF v)                = text "=" <> pretty (PP v)
 prettyRange (LaterVersionF v)               = text ">" <> pretty (PP v)
 prettyRange (EarlierVersionF v)             = text "<" <> pretty (PP v)
 prettyRange (OrLaterVersionF v)             = text ">=" <> pretty (PP v)
 prettyRange (OrEarlierVersionF v)           = text "<=" <> pretty (PP v)
-#if !MIN_VERSION_Cabal(3,4,0)
-prettyRange (WildcardVersionF v)            = text "=" <> pretty (PP v) <> text ".*" -- not exactly right
-#endif
 prettyRange (MajorBoundVersionF v)          = text " >= " <> pretty (PP v) -- maybe this will do?
 prettyRange (UnionVersionRangesF v1 v2)     = text "(" <> v1 <> text " || " <> v2 <> text ")"
 prettyRange (IntersectVersionRangesF v1 v2) = text "(" <> v1 <> text " && " <> v2 <> text ")"
-#if !MIN_VERSION_Cabal(3,4,0)
-prettyRange (VersionRangeParensF v)         = text "(" <> v <> text ")"
-#endif
 
 instance Pretty (PP Version) where
     pretty = text . prettyShow . unPP
