diff --git a/Tests.hs b/Tests.hs
--- a/Tests.hs
+++ b/Tests.hs
@@ -645,7 +645,9 @@
                  new <- withCurrentDirectory inTop $
                         newFlags >>= newCabalInfo >>=
                         either (error "test9 - newCabalInfo failed") (execCabalT (debianize (defaultAtoms >> customize)))
-                 let Just (ChangeLog (entry : _)) = view (debInfo . D.changelog) new
+                 let entry = case view (debInfo . D.changelog) new of
+                                 Just (ChangeLog (x : _)) -> x
+                                 _ -> error "unexpected changelog"
                  old <- withCurrentDirectory outTop $ newFlags >>= execDebianT (inputDebianization >> copyChangelogDate (logDate entry)) . D.makeDebInfo
                  diff <- diffDebianizations old (view debInfo new)
                  assertEmptyDiff label diff)
@@ -683,7 +685,9 @@
     TestCase (do let inTop = "test-data/archive/input"
                      outTop = "test-data/archive/output"
                  old <- withCurrentDirectory outTop $ newFlags >>= execDebianT inputDebianization . D.makeDebInfo
-                 let Just (ChangeLog (entry : _)) = view D.changelog old
+                 let entry = case view D.changelog old of
+                                 Just (ChangeLog (x : _)) -> x
+                                 _ -> error "unexpected changelog"
                  new <- withCurrentDirectory inTop $
                         newFlags >>= newCabalInfo >>= react entry
                  diff <- diffDebianizations old (view debInfo new)
@@ -707,7 +711,10 @@
 
 copyChangelogDate :: Monad m => String -> DebianT m ()
 copyChangelogDate date =
-    D.changelog %= (\ (Just (ChangeLog (entry : older))) -> Just (ChangeLog (entry {logDate = date} : older)))
+    D.changelog %= (mapped %~ substDate)
+    where
+        substDate (ChangeLog (entry : older)) = ChangeLog (entry {logDate = date} : older)
+        substDate (ChangeLog []) = ChangeLog []
 
 data Change k a
     = Created k a
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.3
+Version:        5.4.4
 Copyright:      Copyright (c) 2007-2014, David Fox, Jeremy Shaw; 2017-2026 Clint Adams
 License:        BSD-3-Clause
 License-File:   LICENSE
@@ -140,7 +140,7 @@
   GHC-Options: -Wall
   Build-Depends:
     base >= 4.17 && < 5,
-    Cabal >= 3.0 && < 3.17,
+    Cabal >= 3.2 && < 3.17,
     containers,
     data-default,
     Diff >= 0.3.1 && < 2,
@@ -218,7 +218,7 @@
   Build-Depends:
     base >= 4.17 && < 5,
     cabal-debian,
-    Cabal >= 3.0 && < 3.17,
+    Cabal >= 3.2 && < 3.17,
     containers,
     debian >= 3.95,
     Diff >= 0.3.1 && < 2,
diff --git a/src/Debian/Debianize/Bundled.hs b/src/Debian/Debianize/Bundled.hs
--- a/src/Debian/Debianize/Bundled.hs
+++ b/src/Debian/Debianize/Bundled.hs
@@ -167,6 +167,7 @@
                          missing (Just "9.0.2") = Set.fromList ["bin-package-db", "hoopl"]
                          missing (Just "9.4.6") = Set.fromList ["bin-package-db", "hoopl"]
                          missing (Just "9.6.6") = Set.fromList ["bin-package-db", "hoopl"]
+                         missing (Just "9.10.3") = Set.fromList ["bin-package-db", "hoopl"]
                          missing _ = mempty
                          extra (Just "7.8.4") = Set.fromList ["haskell2010","haskell98","old-locale","old-time"]
                          extra (Just "8.0.1") = Set.fromList ["ghc-boot","ghc-boot-th","ghci"]
@@ -175,6 +176,7 @@
                          extra (Just "9.0.2") = Set.fromList ["exceptions", "ghc-bignum", "ghc-boot", "ghc-boot-th", "ghc-compact", "ghc-heap", "ghci", "libiserv", "mtl", "parsec", "stm", "text"]
                          extra (Just "9.4.6") = Set.fromList ["exceptions", "ghc-bignum", "ghc-boot", "ghc-boot-th", "ghc-compact", "ghc-heap", "ghci", "libiserv", "mtl", "parsec", "stm", "text"]
                          extra (Just "9.6.6") = Set.fromList ["Cabal-syntax","exceptions","ghc-bignum","ghc-boot","ghc-boot-th","ghc-compact","ghc-heap","ghci","libiserv","mtl","parsec","rts","stm","system-cxx-std-lib","text"]
+                         extra (Just "9.10.3") = Set.fromList ["Cabal-syntax","exceptions","ghc-bignum","ghc-boot","ghc-boot-th","ghc-compact","ghc-experimental","ghc-heap","ghc-internal","ghc-platform","ghc-toolchain","ghci","mtl","os-string","parsec","rts","semaphore-compat","stm","system-cxx-std-lib","text"]
                          extra _ = mempty
                      assertEqual "Bundled4"
                        (missing ver, extra ver)
diff --git a/src/Debian/Debianize/CabalInfo.hs b/src/Debian/Debianize/CabalInfo.hs
--- a/src/Debian/Debianize/CabalInfo.hs
+++ b/src/Debian/Debianize/CabalInfo.hs
@@ -36,9 +36,7 @@
 import Debian.Version (DebianVersion)
 import Distribution.Package (PackageName)
 import Distribution.PackageDescription as Cabal (PackageDescription(homepage))
-#if MIN_VERSION_Cabal(3,2,0)
 import qualified Distribution.Utils.ShortText as ST
-#endif
 import Prelude hiding (init, init, log, log, null)
 
 -- | Bits and pieces of information about the mapping from cabal package
@@ -88,11 +86,7 @@
                                                     x | Text.null x -> Nothing
                                                     x -> Just x)
           (makeCabalInfo flags' pkgDesc)
-#if MIN_VERSION_Cabal(3,2,0)
       toText = pack . ST.fromShortText
-#else
-      toText = pack
-#endif
 
 makeCabalInfo :: Flags -> PackageDescription -> CabalInfo
 makeCabalInfo fs pkgDesc =
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
@@ -52,9 +52,7 @@
 import qualified Distribution.License as Cabal (License(UnknownLicense))
 import qualified Distribution.Package as Cabal
 import qualified Distribution.PackageDescription as Cabal (PackageDescription(licenseFiles, copyright, licenseRaw, package, maintainer))
-#if MIN_VERSION_Cabal(3,2,0)
 import qualified Distribution.Utils.ShortText as ST
-#endif
 #if MIN_VERSION_Cabal(3,6,0)
 import qualified Distribution.Utils.Path as DUP
 #endif
@@ -292,11 +290,7 @@
             }
   where
     toText =
-#if MIN_VERSION_Cabal(3,2,0)
         pack . ST.fromShortText
-#else
-        pack
-#endif
 
 {-
   -- We don't really have a way to associate licenses with
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
@@ -53,9 +53,7 @@
 import Distribution.PackageDescription as Cabal (allBuildInfo, author, BuildInfo(buildable, extraLibs), Executable(buildInfo, exeName), FlagName, mkFlagName, unFlagName, maintainer, PackageDescription(testSuites, description))
 import Distribution.Types.UnqualComponentName
 import Distribution.PackageDescription as Cabal (PackageDescription(dataFiles, {-description,-} executables, library, package, synopsis))
-#if MIN_VERSION_Cabal(3,2,0)
 import qualified Distribution.Utils.ShortText as ST
-#endif
 import Prelude hiding (init, log, map, unlines, unlines, writeFile)
 import System.Directory (doesFileExist)
 import System.FilePath ((<.>), (</>), makeRelative, splitFileName, takeDirectory, takeFileName)
@@ -261,11 +259,7 @@
   pkgDesc <- use A.packageDescription
   maintainerOption <- use (A.debInfo . D.maintainerOption)
   uploadersOption <- use (A.debInfo . D.uploadersOption)
-#if MIN_VERSION_Cabal(3,2,0)
   let toString = ST.fromShortText
-#else
-  let toString = id
-#endif
       cabalAuthorString = takeWhile (\ c -> c /= ',' && c /= '\n') (toString (Cabal.author pkgDesc))
       cabalMaintainerString = takeWhile (\ c -> c /= ',' && c /= '\n') (toString (Cabal.maintainer pkgDesc))
       cabalMaintainerString' = cabalAuthorString <> " <" <> cabalMaintainerString <> ">"
@@ -377,11 +371,7 @@
       desc' :: [String]
       desc' = List.map addDot . stripWith List.null $ fmap (dropWhileEnd isSpace) $ lines $ toString $ Cabal.description p
       addDot line = if List.null line then "." else line
-#if MIN_VERSION_Cabal(3,2,0)
       toString = ST.fromShortText
-#else
-      toString = id
-#endif
 
 -- | Make sure there is a changelog entry with the version number and
 -- source package name implied by the debianization.  This means
diff --git a/src/Debian/Debianize/Output.hs b/src/Debian/Debianize/Output.hs
--- a/src/Debian/Debianize/Output.hs
+++ b/src/Debian/Debianize/Output.hs
@@ -29,7 +29,7 @@
 import Data.Algorithm.DiffContext (getContextDiff, prettyContextDiff)
 #endif
 import Data.Map as Map (elems, toList)
-import Data.Maybe (fromMaybe)
+import Data.Maybe (fromMaybe, fromJust)
 import Data.Text as Text (split, Text, unpack)
 import Debian.Debianize.CabalInfo (newCabalInfo)
 import Debian.Changes (ChangeLog(..), ChangeLogEntry(..))
@@ -166,8 +166,8 @@
 -- describing the differences.
 compareDebianization :: D.DebInfo -> D.DebInfo -> [String]
 compareDebianization old new =
-    let ~(Just oldFiles) = evalDebianT debianizationFileMap (canonical old)
-        ~(Just newFiles) = evalDebianT debianizationFileMap (canonical new) in
+    let ~(oldFiles) = fromJust $ evalDebianT debianizationFileMap (canonical old)
+        ~(newFiles) = fromJust $ evalDebianT debianizationFileMap (canonical new) in
     elems $ zipMaps doFile oldFiles newFiles
     where
       doFile :: FilePath -> Maybe Text -> Maybe Text -> Maybe String
diff --git a/src/Debian/Policy.hs b/src/Debian/Policy.hs
--- a/src/Debian/Policy.hs
+++ b/src/Debian/Policy.hs
@@ -48,9 +48,11 @@
 import Control.Monad (mplus)
 import Data.Char (isSpace, toLower)
 import Data.Generics (Data, Typeable)
-import Data.List (groupBy, intercalate)
+import Data.List (groupBy)
 import Data.Maybe (fromMaybe, mapMaybe)
 import Data.Text (pack, strip, Text, unpack)
+import Debian.Arch (parseArch, prettyArch)
+import qualified Debian.Arch as Arch
 import Debian.Debianize.Prelude (read')
 import Debian.Pretty (PP(..))
 import Debian.Relation (BinPkgName)
@@ -64,7 +66,7 @@
 import System.Process (readProcess)
 import Text.Parsec (parse)
 import Text.Parsec.Rfc2822 (address, NameAddr(..))
-import Text.PrettyPrint.HughesPJClass (text)
+import Text.PrettyPrint.HughesPJClass (text, (<+>))
 import Distribution.Pretty (Pretty(pretty))
 import Text.Read (readMaybe)
 
@@ -181,20 +183,21 @@
 
 -- | The architectures for which a binary deb can be built.
 data PackageArchitectures
-    = All            -- ^ The package is architecture independenct
-    | Any            -- ^ The package can be built for any architecture
-    | Names [String] -- ^ The list of suitable architectures
+    = All               -- ^ The package is architecture independenct
+    | Any               -- ^ The package can be built for any architecture
+    | Names [Arch.Arch] -- ^ The list of suitable architectures
     deriving (Read, Eq, Ord, Show, Data, Typeable)
 
 instance Pretty (PP PackageArchitectures) where
     pretty (PP All) = text "all"
     pretty (PP Any) = text "any"
-    pretty (PP (Names xs)) = text $ intercalate " " xs
+    pretty (PP (Names xs)) = foldr ((<+>) . prettyArch) mempty xs
 
 parsePackageArchitectures :: String -> PackageArchitectures
 parsePackageArchitectures "all" = All
 parsePackageArchitectures "any" = Any
-parsePackageArchitectures s = error $ "FIXME: parsePackageArchitectures " ++ show s
+parsePackageArchitectures "source" = error $ "'source' does not make sense here"
+parsePackageArchitectures s = Names . map parseArch . words $ s
 
 data Section
     = MainSection String -- Equivalent to AreaSection Main s?
@@ -313,7 +316,10 @@
 -- | Maintainer is a mandatory field, so we need a value we can use
 -- when all else fails.
 maintainerOfLastResort :: NameAddr
-Right maintainerOfLastResort = parseMaintainer "nobody <nobody@nowhere>"
+maintainerOfLastResort =
+    case parseMaintainer "nobody <nobody@nowhere>" of
+        Left _ -> error "fatal error in parseMaintainer"
+        Right na -> na
 
 -- | Official Debian license types as described in
 -- <https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/#license-specification>.
