diff --git a/Distribution/Cab/Printer.hs b/Distribution/Cab/Printer.hs
--- a/Distribution/Cab/Printer.hs
+++ b/Distribution/Cab/Printer.hs
@@ -17,6 +17,10 @@
 import Distribution.License (License(..))
 import Distribution.Simple.PackageIndex (allPackages)
 
+#if MIN_VERSION_Cabal(2,2,0)
+import Distribution.License (licenseFromSPDX)
+#endif
+
 ----------------------------------------------------------------
 
 type RevDB = Map UnitId [UnitId]
@@ -80,8 +84,15 @@
 extraInfo False _ = return ()
 extraInfo True pkgi = putStr $ " " ++ lcns ++ " \"" ++  auth ++ "\""
   where
-    lcns = showLicense (license pkgi)
+    lcns = showLicense (pkgInfoLicense pkgi)
     auth = author pkgi
+
+pkgInfoLicense :: PkgInfo -> License
+#if MIN_VERSION_Cabal(2,2,0)
+pkgInfoLicense = either licenseFromSPDX id . license
+#else
+pkgInfoLicense = license
+#endif
 
 showLicense :: License -> String
 showLicense (GPL (Just v))     = "GPL" ++ versionToString v
diff --git a/Distribution/Cab/Utils.hs b/Distribution/Cab/Utils.hs
--- a/Distribution/Cab/Utils.hs
+++ b/Distribution/Cab/Utils.hs
@@ -30,10 +30,17 @@
 #if MIN_VERSION_Cabal(2,0,0)
 import qualified Distribution.Package as Cabal
     (mkPackageName, unPackageName)
+#else
+import qualified Distribution.Package as Cabal (PackageName(..))
+#endif
+
+#if MIN_VERSION_Cabal(2,2,0)
+import qualified Distribution.PackageDescription.Parsec as Cabal
+    (readGenericPackageDescription)
+#elif MIN_VERSION_Cabal(2,0,0)
 import qualified Distribution.PackageDescription.Parse as Cabal
     (readGenericPackageDescription)
 #else
-import qualified Distribution.Package as Cabal (PackageName(..))
 import qualified Distribution.PackageDescription.Parse as Cabal
     (readPackageDescription)
 #endif
diff --git a/cab.cabal b/cab.cabal
--- a/cab.cabal
+++ b/cab.cabal
@@ -1,5 +1,5 @@
 Name:                   cab
-Version:                0.2.17
+Version:                0.2.18
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
@@ -21,7 +21,7 @@
   Default-Language:     Haskell2010
   GHC-Options:          -Wall
   Build-Depends:        base >= 4.0 && < 5
-                      , Cabal >= 1.18 && < 2.1
+                      , Cabal >= 1.18
                       , attoparsec >= 0.10
                       , bytestring
                       , conduit >= 1.1
