--- darcs-2.18.5-orig/Setup.hs	2001-09-09 11:46:40.000000000 +1000
+++ darcs-2.18.5/Setup.hs	2026-10-25 11:21:23.258491483 +1100
@@ -2,13 +2,14 @@
 -- portions copyright (c) 2008 David Roundy
 -- portions copyright (c) 2007-2009 Judah Jacobson
 {-# OPTIONS_GHC -Wall #-}
+{-# LANGUAGE CPP #-}
 import Distribution.Simple
          ( defaultMainWithHooks, UserHooks(..), simpleUserHooks )
 import Distribution.PackageDescription ( PackageDescription )
 import Distribution.Package ( packageVersion )
 import Distribution.Version( Version )
 import Distribution.Simple.LocalBuildInfo
-         ( LocalBuildInfo(..), absoluteInstallDirs )
+         ( LocalBuildInfo(..), absoluteInstallDirs, buildDir )
 import Distribution.Simple.InstallDirs (mandir, CopyDest (NoCopyDest))
 import Distribution.Simple.Setup
     (buildVerbosity, copyDest, copyVerbosity, fromFlag,
@@ -19,13 +20,18 @@
      rewriteFileEx)
 import Distribution.Verbosity ( Verbosity, silent )
 import Distribution.Text ( display )
+#if MIN_VERSION_Cabal(3,14,0)
+import Distribution.Utils.Path ( makeRelativePathEx, getSymbolicPath, (</>) )
+#endif
 
 import Control.Monad ( unless, when, void )
 import System.Directory ( doesDirectoryExist, doesFileExist )
 import System.IO ( openFile, IOMode(..) )
 import System.Process (callProcess, runProcess)
 import Data.List( isInfixOf )
+#if !MIN_VERSION_Cabal(3,14,0)
 import System.FilePath ( (</>) )
+#endif
 
 import qualified Control.Exception as Exception
 
@@ -73,22 +79,39 @@
 
 buildManpage :: LocalBuildInfo -> IO ()
 buildManpage lbi = do
+#if MIN_VERSION_Cabal(3,14,0)
+  have_darcs_exe_dir <- doesDirectoryExist (getSymbolicPath $ buildDir lbi </> (makeRelativePathEx "darcs"))
+#else
   have_darcs_exe_dir <- doesDirectoryExist (buildDir lbi </> "darcs")
+#endif
   when have_darcs_exe_dir $ do
+#if MIN_VERSION_Cabal(3,14,0)
+    let darcs = getSymbolicPath $ buildDir lbi </> (makeRelativePathEx "darcs/darcs")
+        manpage = getSymbolicPath $ buildDir lbi </> (makeRelativePathEx "darcs/darcs.1")
+#else
     let darcs = buildDir lbi </> "darcs/darcs"
         manpage = buildDir lbi </> "darcs/darcs.1"
+#endif
     manpageHandle <- openFile manpage WriteMode
     void $ runProcess darcs ["help","manpage"]
             Nothing Nothing Nothing (Just manpageHandle) Nothing
 
 installManpage :: PackageDescription -> LocalBuildInfo -> Verbosity -> CopyDest -> IO ()
 installManpage pkg lbi verbosity copy = do
+#if MIN_VERSION_Cabal(3,14,0)
+  have_manpage <- doesFileExist (getSymbolicPath $ buildDir lbi </> (makeRelativePathEx $ "darcs" </> "darcs.1"))
+#else
   have_manpage <- doesFileExist (buildDir lbi </> "darcs" </> "darcs.1")
+#endif
   when have_manpage $
     copyFiles
       verbosity
       (mandir (absoluteInstallDirs pkg lbi copy) </> "man1")
+#if MIN_VERSION_Cabal(3,14,0)
+      [(getSymbolicPath $ buildDir lbi </> (makeRelativePathEx "darcs"), "darcs.1")]
+#else
       [(buildDir lbi </> "darcs", "darcs.1")]
+#endif
 
 -- ---------------------------------------------------------------------
 -- version module
@@ -125,10 +148,18 @@
 generateVersionModule :: Verbosity -> LocalBuildInfo -> String -> String -> IO ()
 generateVersionModule verbosity lbi version state = do
   let dir = autogenPackageModulesDir lbi
+#if MIN_VERSION_Cabal(3,14,0)
+  createDirectoryIfMissingVerbose verbosity True ( getSymbolicPath dir )
+#else
   createDirectoryIfMissingVerbose verbosity True dir
+#endif
   ctx <- context verbosity
   hash <- weakhash verbosity
+#if MIN_VERSION_Cabal(3,14,0)
+  rewriteFileEx silent ( getSymbolicPath $ dir </> (makeRelativePathEx "Version.hs")) $ unlines
+#else
   rewriteFileEx silent (dir </> "Version.hs") $ unlines
+#endif
     ["module Version where"
     ,"import Darcs.Prelude"
     ,"version, weakhash, context :: String"
--- darcs-2.18.5-orig/darcs.cabal	2026-10-25 10:37:01.554724465 +1100
+++ darcs-2.18.5/darcs.cabal	2026-10-25 11:16:02.211589935 +1100
@@ -123,10 +123,10 @@
 -- ----------------------------------------------------------------------
 
 custom-setup
-    setup-depends: base      >= 4.10 && < 4.20,
-                   Cabal     >= 2.4 && < 3.11,
+    setup-depends: base      >= 4.10 && < 4.23,
+                   Cabal     >= 2.4 && < 3.17,
                    process   >= 1.2.3.0 && < 1.7,
-                   filepath  >= 1.4.1 && < 1.5.0.0,
+                   filepath  >= 1.4.1 && < 1.6.0.0,
                    directory >= 1.2.7 && < 1.4
 
 -- ----------------------------------------------------------------------
@@ -416,11 +416,11 @@
       build-depends:  unix              >= 2.7.1.0 && < 2.9,
                       directory         >= 1.2.7 && < 1.4
 
-    build-depends:    base              >= 4.10 && < 4.20,
+    build-depends:    base              >= 4.10 && < 4.23,
                       safe              >= 0.3.20 && < 0.4,
                       stm               >= 2.1 && < 2.6,
                       binary            >= 0.5 && < 0.11,
-                      containers        >= 0.5.11 && < 0.8,
+                      containers        >= 0.5.11 && < 0.9,
                       regex-base        >= 0.94.0.1 && < 0.94.1,
                       regex-tdfa        >= 1.3.2 && < 1.4,
                       regex-applicative >= 0.2 && < 0.4,
@@ -436,7 +436,7 @@
                       base16-bytestring >= 1.0 && < 1.1,
                       utf8-string       >= 1 && < 1.1,
                       vector            >= 0.11 && < 0.14,
-                      tar               >= 0.5 && < 0.7,
+                      tar               >= 0.5 && < 0.8,
                       data-ordlist      == 0.4.*
 
     if impl(ghc < 8.10)
@@ -450,12 +450,12 @@
                       unix-compat       >= 0.6 && < 0.8,
                       bytestring        >= 0.10.6 && < 0.13,
                       old-time          >= 1.1.0.3 && < 1.2,
-                      time              >= 1.9 && < 1.15,
+                      time              >= 1.9 && < 1.16,
                       text              >= 1.2.1.3 && < 2.2,
                       temporary         >= 1.2.1 && < 1.4,
                       process           >= 1.2.3.0 && < 1.7,
                       array             >= 0.5.1.0 && < 0.6,
-                      hashable          >= 1.2.3.3 && < 1.5,
+                      hashable          >= 1.2.3.3 && < 1.6,
                       mmap              >= 0.5.9 && < 0.6,
                       zlib              >= 0.6.1.2 && < 0.8,
                       network-uri       >= 2.6 && < 2.8,
@@ -593,7 +593,7 @@
                     text,
                     directory,
                     FindBin      >= 0.0.5 && < 0.1,
-                    QuickCheck   >= 2.13 && < 2.16,
+                    QuickCheck   >= 2.13 && < 2.20,
                     quickcheck-instances       >= 0.3.29.1 && < 0.4,
                     leancheck    >= 0.9 && < 1.1,
                     HUnit        >= 1.3 && < 1.7,
