From 1a3ed1bcc9089b2d42c9d57afc171757c8f70932 Mon Sep 17 00:00:00 2001 From: Bodigrim Date: Tue, 26 May 2026 23:49:51 +0100 Subject: [PATCH 1/2] Decomission build-type: Make It's been broken at least since Cabal 3.4, which is 7 releases back, and no one ever complained. That's been enough of "deprecation" period ;) (One of the reasons it was broken is that `Distribution.Make.buildAction` is from the epoch when Cabal packages didn't have any components and mandates `noExtraFlags`, while the rest of Cabal expects that `buildAction` should be able to take a component target and supplies one by default, even if a user didn't.) The only Hackage package, whose latest release uses `build-type: Make`, is `lvmrun`: last released in 2014 and long broken because of the above. --- .../src/Distribution/CabalSpecVersion.hs | 5 + .../src/Distribution/Types/BuildType.hs | 9 +- .../Distribution/Utils/Structured.hs | 4 +- Cabal/Cabal.cabal | 1 - Cabal/src/Distribution/Make.hs | 222 ------------------ Cabal/src/Distribution/Simple.hs | 3 +- Cabal/src/Distribution/Simple/UserHooks.hs | 2 +- cabal-install/src/Distribution/Client/Main.hs | 3 +- .../Distribution/Client/ProjectPlanning.hs | 2 +- .../Client/ProjectPlanning/Types.hs | 2 - .../src/Distribution/Client/SetupWrapper.hs | 8 +- changelog.d/pr-11894.md | 15 ++ doc/cabal-package-description-file.rst | 26 +- 13 files changed, 38 insertions(+), 264 deletions(-) delete mode 100644 Cabal/src/Distribution/Make.hs create mode 100644 changelog.d/pr-11894.md diff --git a/Cabal-syntax/src/Distribution/CabalSpecVersion.hs b/Cabal-syntax/src/Distribution/CabalSpecVersion.hs index 2e6cbc2b19d..1f9c0a23459 100644 --- a/Cabal-syntax/src/Distribution/CabalSpecVersion.hs +++ b/Cabal-syntax/src/Distribution/CabalSpecVersion.hs @@ -36,6 +36,8 @@ data CabalSpecVersion CabalSpecV3_12 | CabalSpecV3_14 | CabalSpecV3_16 + | -- 3.18: remove build-type: Make + CabalSpecV3_18 deriving (Eq, Ord, Show, Read, Enum, Bounded, Data, Generic) instance Binary CabalSpecVersion @@ -46,6 +48,7 @@ instance NFData CabalSpecVersion where rnf = genericRnf -- -- @since 3.0.0.0 showCabalSpecVersion :: CabalSpecVersion -> String +showCabalSpecVersion CabalSpecV3_18 = "3.18" showCabalSpecVersion CabalSpecV3_16 = "3.16" showCabalSpecVersion CabalSpecV3_14 = "3.14" showCabalSpecVersion CabalSpecV3_12 = "3.12" @@ -76,6 +79,7 @@ cabalSpecLatest = CabalSpecV3_16 -- It may fail if for recent versions the version is not exact. cabalSpecFromVersionDigits :: [Int] -> Maybe CabalSpecVersion cabalSpecFromVersionDigits v + | v == [3, 18] = Just CabalSpecV3_18 | v == [3, 16] = Just CabalSpecV3_16 | v == [3, 14] = Just CabalSpecV3_14 | v == [3, 12] = Just CabalSpecV3_12 @@ -101,6 +105,7 @@ cabalSpecFromVersionDigits v -- | @since 3.4.0.0 cabalSpecToVersionDigits :: CabalSpecVersion -> [Int] +cabalSpecToVersionDigits CabalSpecV3_18 = [3, 18] cabalSpecToVersionDigits CabalSpecV3_16 = [3, 16] cabalSpecToVersionDigits CabalSpecV3_14 = [3, 14] cabalSpecToVersionDigits CabalSpecV3_12 = [3, 12] diff --git a/Cabal-syntax/src/Distribution/Types/BuildType.hs b/Cabal-syntax/src/Distribution/Types/BuildType.hs index eba66ec5d1d..f8600659668 100644 --- a/Cabal-syntax/src/Distribution/Types/BuildType.hs +++ b/Cabal-syntax/src/Distribution/Types/BuildType.hs @@ -25,7 +25,8 @@ data BuildType -- which invokes @configure@ to generate additional build -- information used by later phases. Configure - | -- | calls @Distribution.Make.defaultMain@ + | -- | @build-type: Make@ is no longer functional, but we must keep parsing + -- old Cabal files, even if only to throw an error later. Make | -- | uses user-supplied @Setup.hs@ or @Setup.lhs@ (default) Custom @@ -49,7 +50,11 @@ instance Parsec BuildType where "Simple" -> return Simple "Configure" -> return Configure "Custom" -> return Custom - "Make" -> return Make + "Make" -> do + v <- askCabalSpecVersion + if v < CabalSpecV3_18 + then return Make + else fail "build-type: 'Make'. This feature requires cabal-version <= 3.18." "Hooks" -> do v <- askCabalSpecVersion if v >= CabalSpecV3_14 diff --git a/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs b/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs index 079d522275a..c0b2de9a011 100644 --- a/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs +++ b/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs @@ -29,8 +29,8 @@ md5Check proxy md5Int = structureHash proxy @?= md5FromInteger md5Int md5CheckGenericPackageDescription :: Proxy GenericPackageDescription -> Assertion md5CheckGenericPackageDescription proxy = md5Check proxy - 0xaa065de51286b8f80733ffff51a44a20 + 0xd0df09480e91e08ae600d3ba4d9c3740 md5CheckLocalBuildInfo :: Proxy LocalBuildInfo -> Assertion md5CheckLocalBuildInfo proxy = md5Check proxy - 0xff2e1755aa2473b9d10c1236ef3ec80e + 0x8190203d49e950335b62db3978880e45 diff --git a/Cabal/Cabal.cabal b/Cabal/Cabal.cabal index c91d2c11d89..716e39d8595 100644 --- a/Cabal/Cabal.cabal +++ b/Cabal/Cabal.cabal @@ -102,7 +102,6 @@ library Distribution.Compat.Stack Distribution.Compat.SysInfo Distribution.Compat.Time - Distribution.Make Distribution.PackageDescription.Check Distribution.ReadE Distribution.Simple diff --git a/Cabal/src/Distribution/Make.hs b/Cabal/src/Distribution/Make.hs deleted file mode 100644 index 716347ec8fb..00000000000 --- a/Cabal/src/Distribution/Make.hs +++ /dev/null @@ -1,222 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} - ------------------------------------------------------------------------------ - --- copy : --- $(MAKE) install prefix=$(destdir)/$(prefix) \ --- bindir=$(destdir)/$(bindir) \ - --- | --- Module : Distribution.Make --- Copyright : Martin Sjögren 2004 --- License : BSD3 --- --- Maintainer : cabal-devel@haskell.org --- Portability : portable --- --- This is an alternative build system that delegates everything to the @make@ --- program. All the commands just end up calling @make@ with appropriate --- arguments. The intention was to allow preexisting packages that used --- makefiles to be wrapped into Cabal packages. In practice essentially all --- such packages were converted over to the \"Simple\" build system instead. --- Consequently this module is not used much and it certainly only sees cursory --- maintenance and no testing. Perhaps at some point we should stop pretending --- that it works. --- --- Uses the parsed command-line from "Distribution.Simple.Setup" in order to build --- Haskell tools using a back-end build system based on make. Obviously we --- assume that there is a configure script, and that after the ConfigCmd has --- been run, there is a Makefile. Further assumptions: --- --- [ConfigCmd] We assume the configure script accepts --- @--with-hc@, --- @--with-hc-pkg@, --- @--prefix@, --- @--bindir@, --- @--libdir@, --- @--libexecdir@, --- @--datadir@. --- --- [BuildCmd] We assume that the default Makefile target will build everything. --- --- [InstallCmd] We assume there is an @install@ target. Note that we assume that --- this does *not* register the package! --- --- [CopyCmd] We assume there is a @copy@ target, and a variable @$(destdir)@. --- The @copy@ target should probably just invoke @make install@ --- recursively (e.g. @$(MAKE) install prefix=$(destdir)\/$(prefix) --- bindir=$(destdir)\/$(bindir)@. The reason we can\'t invoke @make --- install@ directly here is that we don\'t know the value of @$(prefix)@. --- --- [SDistCmd] We assume there is a @dist@ target. --- --- [RegisterCmd] We assume there is a @register@ target and a variable @$(user)@. --- --- [UnregisterCmd] We assume there is an @unregister@ target. --- --- [HaddockCmd] We assume there is a @docs@ or @doc@ target. -module Distribution.Make - ( module Distribution.Package - , License (..) - , Version - , defaultMain - , defaultMainArgs - , defaultMainArgsWithHandles - ) where - -import Distribution.Compat.Prelude -import Prelude () - --- local -import Distribution.License -import Distribution.Package -import Distribution.Pretty -import Distribution.Simple.Command -import Distribution.Simple.Program -import Distribution.Simple.Setup -import Distribution.Simple.Utils -import Distribution.Verbosity -import Distribution.Version - -import System.Environment (getArgs, getProgName) -import System.IO (hPutStr, hPutStrLn) - -defaultMain :: IO () -defaultMain = getArgs >>= defaultMainArgs - -defaultMainArgs :: [String] -> IO () -defaultMainArgs = defaultMainHelper - -defaultMainArgsWithHandles :: VerbosityHandles -> [String] -> IO () -defaultMainArgsWithHandles = defaultMainHelperWithHandles - -defaultMainHelper :: [String] -> IO () -defaultMainHelper = defaultMainHelperWithHandles defaultVerbosityHandles - -defaultMainHelperWithHandles :: VerbosityHandles -> [String] -> IO () -defaultMainHelperWithHandles verbHandles args = do - command <- commandsRun (globalCommand commands) commands args - case command of - CommandHelp help -> printHelp help - CommandList opts -> printOptionsList opts - CommandErrors errs -> printErrors errs - CommandReadyToGo (flags, commandParse) -> - case commandParse of - _ - | fromFlag (globalVersion flags) -> printVersion - | fromFlag (globalFullVersion flags) -> printFullVersion - | fromFlag (globalNumericVersion flags) -> printNumericVersion - CommandHelp help -> printHelp help - CommandList opts -> printOptionsList opts - CommandErrors errs -> printErrors errs - CommandReadyToGo action -> action - where - outHandle = vStdoutHandle verbHandles - printHelp help = getProgName >>= hPutStr outHandle . help - printOptionsList = hPutStr outHandle . unlines - printErrors errs = do - hPutStr outHandle (intercalate "\n" errs) - exitWith (ExitFailure 1) - printNumericVersion = hPutStrLn outHandle $ prettyShow cabalVersion - printVersion = - hPutStrLn outHandle $ - "Cabal library version " - ++ prettyShow cabalVersion - printFullVersion = - hPutStrLn outHandle $ - "Cabal library version " - ++ prettyShow cabalVersion - ++ cabalGitInfo' - ++ "\nwith " - ++ cabalCompilerInfo - cabalGitInfo' - | null cabalGitInfo = [] - | otherwise = ' ' : cabalGitInfo - progs = defaultProgramDb - commands = - [ configureCommand progs `commandAddAction` configureAction verbHandles - , buildCommand progs `commandAddAction` buildAction verbHandles - , installCommand `commandAddAction` installAction verbHandles - , copyCommand `commandAddAction` copyAction verbHandles - , haddockCommand `commandAddAction` haddockAction verbHandles - , cleanCommand `commandAddAction` cleanAction verbHandles - , sdistCommand `commandAddAction` sdistAction verbHandles - , registerCommand `commandAddAction` registerAction verbHandles - , unregisterCommand `commandAddAction` unregisterAction verbHandles - ] - -configureAction :: VerbosityHandles -> ConfigFlags -> [String] -> IO () -configureAction verbHandles flags args = do - noExtraFlags args - let verbosity = mkVerbosity verbHandles $ fromFlag $ configVerbosity flags - mbWorkDir = flagToMaybe $ configWorkingDir flags - rawSystemExit verbosity mbWorkDir "sh" $ - "configure" - : configureArgs backwardsCompatHack flags - where - backwardsCompatHack = True - -copyAction :: VerbosityHandles -> CopyFlags -> [String] -> IO () -copyAction verbHandles flags args = do - noExtraFlags args - let verbosity = mkVerbosity verbHandles $ fromFlag $ copyVerbosity flags - mbWorkDir = flagToMaybe $ copyWorkingDir flags - destArgs = case fromFlag $ copyDest flags of - NoCopyDest -> ["install"] - CopyTo path -> ["copy", "destdir=" ++ path] - CopyToDb _ -> error "CopyToDb not supported via Make" - - rawSystemExit verbosity mbWorkDir "make" destArgs - -installAction :: VerbosityHandles -> InstallFlags -> [String] -> IO () -installAction verbHandles flags args = do - noExtraFlags args - let verbosity = mkVerbosity verbHandles $ fromFlag $ installVerbosity flags - mbWorkDir = flagToMaybe $ installWorkingDir flags - rawSystemExit verbosity mbWorkDir "make" ["install"] - rawSystemExit verbosity mbWorkDir "make" ["register"] - -haddockAction :: VerbosityHandles -> HaddockFlags -> [String] -> IO () -haddockAction verbHandles flags args = do - noExtraFlags args - let verbosity = mkVerbosity verbHandles $ fromFlag $ haddockVerbosity flags - mbWorkDir = flagToMaybe $ haddockWorkingDir flags - rawSystemExit verbosity mbWorkDir "make" ["docs"] - `catchIO` \_ -> - rawSystemExit verbosity mbWorkDir "make" ["doc"] - -buildAction :: VerbosityHandles -> BuildFlags -> [String] -> IO () -buildAction verbHandles flags args = do - noExtraFlags args - let verbosity = mkVerbosity verbHandles $ fromFlag $ buildVerbosity flags - mbWorkDir = flagToMaybe $ buildWorkingDir flags - rawSystemExit verbosity mbWorkDir "make" [] - -cleanAction :: VerbosityHandles -> CleanFlags -> [String] -> IO () -cleanAction verbHandles flags args = do - noExtraFlags args - let verbosity = mkVerbosity verbHandles $ fromFlag $ cleanVerbosity flags - mbWorkDir = flagToMaybe $ cleanWorkingDir flags - rawSystemExit verbosity mbWorkDir "make" ["clean"] - -sdistAction :: VerbosityHandles -> SDistFlags -> [String] -> IO () -sdistAction verbHandles flags args = do - noExtraFlags args - let verbosity = mkVerbosity verbHandles $ fromFlag $ sDistVerbosity flags - mbWorkDir = flagToMaybe $ sDistWorkingDir flags - rawSystemExit verbosity mbWorkDir "make" ["dist"] - -registerAction :: VerbosityHandles -> RegisterFlags -> [String] -> IO () -registerAction verbHandles flags args = do - noExtraFlags args - let verbosity = mkVerbosity verbHandles $ fromFlag $ registerVerbosity flags - mbWorkDir = flagToMaybe $ registerWorkingDir flags - rawSystemExit verbosity mbWorkDir "make" ["register"] - -unregisterAction :: VerbosityHandles -> RegisterFlags -> [String] -> IO () -unregisterAction verbHandles flags args = do - noExtraFlags args - let verbosity = mkVerbosity verbHandles $ fromFlag $ registerVerbosity flags - mbWorkDir = flagToMaybe $ registerWorkingDir flags - rawSystemExit verbosity mbWorkDir "make" ["unregister"] diff --git a/Cabal/src/Distribution/Simple.hs b/Cabal/src/Distribution/Simple.hs index d6f91c24402..677884ec3ec 100644 --- a/Cabal/src/Distribution/Simple.hs +++ b/Cabal/src/Distribution/Simple.hs @@ -38,8 +38,7 @@ libraries/Cabal/Distribution/Simple.hs:78:0: -- simple software. -- -- The original idea was that there could be different build systems that all --- presented the same compatible command line interfaces. There is still a --- "Distribution.Make" system but in practice no packages use it. +-- presented the same compatible command line interfaces. module Distribution.Simple ( module Distribution.Package , module Distribution.Version diff --git a/Cabal/src/Distribution/Simple/UserHooks.hs b/Cabal/src/Distribution/Simple/UserHooks.hs index 75ab4a6bedf..6546e532ff2 100644 --- a/Cabal/src/Distribution/Simple/UserHooks.hs +++ b/Cabal/src/Distribution/Simple/UserHooks.hs @@ -13,7 +13,7 @@ -- -- This defines the API that @Setup.hs@ scripts can use to customise the way -- the build works. This module just defines the 'UserHooks' type. The --- predefined sets of hooks that implement the @Simple@, @Make@ and @Configure@ +-- predefined sets of hooks that implement the @Simple@ and @Configure@ -- build systems are defined in "Distribution.Simple". The 'UserHooks' is a big -- record of functions. There are 3 for each action, a pre, post and the action -- itself. There are few other miscellaneous hooks, ones to extend the set of diff --git a/cabal-install/src/Distribution/Client/Main.hs b/cabal-install/src/Distribution/Client/Main.hs index c2874093e6c..44219370612 100644 --- a/cabal-install/src/Distribution/Client/Main.hs +++ b/cabal-install/src/Distribution/Client/Main.hs @@ -186,7 +186,6 @@ import Distribution.PackageDescription import Distribution.Client.Errors import Distribution.Compat.ResponseFile -import qualified Distribution.Make as Make import Distribution.PackageDescription.PrettyPrint ( writeGenericPackageDescription ) @@ -1575,7 +1574,7 @@ actAsSetupAction actAsSetupFlags args _globalFlags = Simple.autoconfSetupHooks defaultVerbosityHandles args - Make -> Make.defaultMainArgs args + Make -> error "actAsSetupAction Main" Hooks -> error "actAsSetupAction Hooks" Custom -> error "actAsSetupAction Custom" diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning.hs b/cabal-install/src/Distribution/Client/ProjectPlanning.hs index f2ace7ff3b5..b25a43232d2 100644 --- a/cabal-install/src/Distribution/Client/ProjectPlanning.hs +++ b/cabal-install/src/Distribution/Client/ProjectPlanning.hs @@ -1782,7 +1782,7 @@ elaborateInstallPlan -- main library in cabal. Other components will need to depend -- on the main library for configured data. PD.Custom -> [CuzBuildType CuzCustomBuildType] - PD.Make -> [CuzBuildType CuzMakeBuildType] + PD.Make -> error "build-type: Make is no longer supported" PD.Simple -> [] -- TODO: remove the following, once we make Setup a separate -- component (task tracked at #9986). diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning/Types.hs b/cabal-install/src/Distribution/Client/ProjectPlanning/Types.hs index adbd8a85f5e..ef572d17680 100644 --- a/cabal-install/src/Distribution/Client/ProjectPlanning/Types.hs +++ b/cabal-install/src/Distribution/Client/ProjectPlanning/Types.hs @@ -766,7 +766,6 @@ data NotPerComponentBuildType = CuzConfigureBuildType | CuzCustomBuildType | CuzHooksBuildType - | CuzMakeBuildType deriving (Eq, Show, Generic) instance Binary NotPerComponentBuildType @@ -784,7 +783,6 @@ whyNotPerComponent = \case CuzConfigureBuildType -> "Configure" CuzCustomBuildType -> "Custom" CuzHooksBuildType -> "Hooks" - CuzMakeBuildType -> "Make" CuzCabalSpecVersion -> "cabal-version is less than 1.8" CuzNoBuildableComponents -> "there are no buildable components" CuzDisablePerComponent -> "you passed --disable-per-component" diff --git a/cabal-install/src/Distribution/Client/SetupWrapper.hs b/cabal-install/src/Distribution/Client/SetupWrapper.hs index 2f62822f3d4..bfac3b7cdb9 100644 --- a/cabal-install/src/Distribution/Client/SetupWrapper.hs +++ b/cabal-install/src/Distribution/Client/SetupWrapper.hs @@ -367,8 +367,8 @@ data SetupScriptOptions = SetupScriptOptions -- overhead, we use a shared setup script cache -- ('$XDG_CACHE_HOME/cabal/setup-exe-cache'). For each (compiler, platform, Cabal -- version) combination the cache holds a compiled setup script - -- executable. This only affects the Simple build type; for the Custom, - -- Configure and Make build types we always compile the setup script anew. + -- executable. This only affects the Simple build type; for the Custom + -- and Configure build types we always compile the setup script anew. setupCacheLock :: Maybe Lock , isInteractive :: Bool -- ^ Is the task we are going to run an interactive foreground task, @@ -816,7 +816,7 @@ externalSetupMethod path verbosity options _ args NotInLibrary = useCachedSetupExecutable :: BuildType -> Bool useCachedSetupExecutable bt = - bt == Simple || bt == Configure || bt == Make + bt == Simple || bt == Configure data ExternalExe = HooksExe | SetupExe data WantedExternalExe (meth :: ExternalExe) where @@ -971,7 +971,7 @@ buildTypeScript bt cabalLibVersion = "{-# LANGUAGE NoImplicitPrelude #-}\n" <> c -> "import Distribution.Simple; main = defaultMainWithHooks autoconfUserHooks\n" | otherwise -> "import Distribution.Simple; main = defaultMainWithHooks defaultUserHooks\n" - Make -> "import Distribution.Make; main = defaultMain\n" + Make -> error "buildtypeScript Make is no longer supported" Hooks | cabalLibVersion >= mkVersion [3, 13, 0] -> "import Distribution.Simple; import SetupHooks; main = defaultMainWithSetupHooks setupHooks\n" diff --git a/changelog.d/pr-11894.md b/changelog.d/pr-11894.md new file mode 100644 index 00000000000..90e7b8d1250 --- /dev/null +++ b/changelog.d/pr-11894.md @@ -0,0 +1,15 @@ +--- +synopsis: Decomission build-type Make +packages: [Cabal-syntax,Cabal,cabal-install] +issues: 11610 +prs: 11894 +significance: significant +--- + +`build-type: Make` is no longer functional. Cabal files with `build-type: Make` remain parseable unless they specify `cabal-version: 3.18` or newer, but that's it. + +`Cabal-syntax` package retains ability to parse `build-type: Make` as long as the package file specifies Cabal format prior to 3.18. But for packages specifying `cabal-version: 3.18` or newer `build-type: Make` is no longer a valid syntax. + +`Cabal`-the-library no longer contains `Distribution.Make` module. + +`cabal-install` used to fail in the middle of compilation process with a cryptic error about `Unrecognised flags`. Now it will say it clear that `build-type: Make is no longer supported`. diff --git a/doc/cabal-package-description-file.rst b/doc/cabal-package-description-file.rst index 184c2abae56..c3d54d6fa52 100644 --- a/doc/cabal-package-description-file.rst +++ b/doc/cabal-package-description-file.rst @@ -472,13 +472,7 @@ describe the package as a whole: import Distribution.Simple main = defaultMainWithHooks autoconfUserHooks - For build type ``Make`` (see the section on `more complex packages`_ below), - the contents of ``Setup.hs`` must be: - - .. code-block:: haskell - - import Distribution.Make - main = defaultMain + Build type ``Make`` is no longer supported. For build type ``Custom``, the file ``Setup.hs`` can be customized, and will be used both by ``cabal`` and other tools. @@ -3432,24 +3426,6 @@ a few options: :pkg-field:`custom-setup:setup-depends` field to ensure that your setup script does not break with future dependency versions. -- You could delegate all the work to ``make``, though this is unlikely - to be very portable. Cabal supports this with the :pkg-field:`build-type` - ``Make`` and a trivial setup library - `Distribution.Make `__, - which simply parses the command line arguments and invokes ``make``. - Here ``Setup.hs`` should look like this: - - .. code-block:: haskell - - import Distribution.Make - main = defaultMain - - The root directory of the package should contain a ``configure`` - script, and, after that has run, a ``Makefile`` with a default target - that builds the package, plus targets ``install``, ``register``, - ``unregister``, ``clean``, ``dist`` and ``docs``. Some options to - commands are passed through as follows: - - The ``--with-hc-pkg``, ``--prefix``, ``--bindir``, ``--libdir``, ``--dynlibdir``, ``--datadir``, ``--libexecdir`` and ``--sysconfdir`` options to the ``configure`` command are passed on to the ``configure`` From 981574f61a4ed3118b2498785427efd48026e995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CB=8Cbod=CA=B2=C9=AA=CB=88=C9=A1r=CA=B2im?= Date: Thu, 28 May 2026 21:40:46 +0100 Subject: [PATCH 2/2] Refine changelog wording Co-authored-by: Artem Pelenitsyn --- changelog.d/pr-11894.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/pr-11894.md b/changelog.d/pr-11894.md index 90e7b8d1250..efb6c213a6a 100644 --- a/changelog.d/pr-11894.md +++ b/changelog.d/pr-11894.md @@ -6,7 +6,7 @@ prs: 11894 significance: significant --- -`build-type: Make` is no longer functional. Cabal files with `build-type: Make` remain parseable unless they specify `cabal-version: 3.18` or newer, but that's it. +`build-type: Make` has not been functional since at least version 3.4, and we communicate this more clearly now. Cabal files with `build-type: Make` remain parseable unless they specify `cabal-version: 3.18` or newer. `Cabal-syntax` package retains ability to parse `build-type: Make` as long as the package file specifies Cabal format prior to 3.18. But for packages specifying `cabal-version: 3.18` or newer `build-type: Make` is no longer a valid syntax.