Cabal 3.10.1.0 → 3.10.2.0
raw patch · 5 files changed
+119/−79 lines, 5 filesdep ~bytestringdep ~deepseqdep ~textnew-uploaderPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: bytestring, deepseq, text
API changes (from Hackage documentation)
Files
- Cabal.cabal +4/−4
- ChangeLog.md +3/−0
- src/Distribution/PackageDescription/Check.hs +19/−8
- src/Distribution/Simple/GHC.hs +81/−60
- src/Distribution/Simple/Haddock.hs +12/−7
Cabal.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: Cabal-version: 3.10.1.0+version: 3.10.2.0 copyright: 2003-2023, Cabal Development Team (see AUTHORS file) license: BSD-3-Clause license-file: LICENSE@@ -37,9 +37,9 @@ Cabal-syntax ^>= 3.10, array >= 0.4.0.1 && < 0.6, base >= 4.9 && < 5,- bytestring >= 0.10.0.0 && < 0.12,+ bytestring >= 0.10.0.0 && < 0.13, containers >= 0.5.0.0 && < 0.7,- deepseq >= 1.3.0.1 && < 1.5,+ deepseq >= 1.3.0.1 && < 1.6, directory >= 1.2 && < 1.4, filepath >= 1.3.0.1 && < 1.5, pretty >= 1.1.1 && < 1.2,@@ -302,7 +302,7 @@ -- See also https://github.com/ekmett/transformers-compat/issues/35 transformers (>= 0.3 && < 0.4) || (>=0.4.1.0 && <0.7), mtl >= 2.1 && < 2.4,- text (>= 1.2.3.0 && < 1.3) || (>= 2.0 && < 2.1),+ text (>= 1.2.3.0 && < 1.3) || (>= 2.0 && < 2.2), parsec >= 3.1.13.0 && < 3.2 other-modules:
ChangeLog.md view
@@ -1,3 +1,6 @@+# 3.10.2.0 [Hécate](mailto:hecate+github@glitchbra.in) August 2023+* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.10.2.0.md+ # 3.10.1.0 [Mikolaj Konarski](mailto:mikolaj@well-typed.com) March 2023 * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.10.1.0.md
src/Distribution/PackageDescription/Check.hs view
@@ -70,6 +70,7 @@ import qualified Data.ByteString.Lazy as BS import qualified Data.Map as Map+import qualified Control.Monad as CM import qualified Distribution.Compat.DList as DList import qualified Distribution.SPDX as SPDX import qualified System.Directory as System@@ -1209,17 +1210,13 @@ | (compiler, vr) <- testedWith pkg , isNoVersion vr ] - internalLibraries =- map (maybe (packageName pkg) unqualComponentNameToPackageName . libraryNameString . libName)- (allLibraries pkg)- internalExecutables = map exeName $ executables pkg internalLibDeps = [ dep | bi <- allBuildInfo pkg , dep@(Dependency name _ _) <- targetBuildDepends bi- , name `elem` internalLibraries+ , name == packageName pkg ] internalExeDeps =@@ -1385,7 +1382,7 @@ , checkFlags ["-prof"] $ PackageBuildWarning (OptProf fieldName) - , checkFlags ["-o"] $+ , unlessScript . checkFlags ["-o"] $ PackageBuildWarning (OptO fieldName) , checkFlags ["-hide-package"] $@@ -1478,6 +1475,10 @@ checkFlags :: [String] -> PackageCheck -> Maybe PackageCheck checkFlags flags = check (any (`elem` flags) all_ghc_options) + unlessScript :: Maybe PackageCheck -> Maybe PackageCheck+ unlessScript pc | packageId pkg == fakePackageId = Nothing+ | otherwise = pc+ checkTestAndBenchmarkFlags :: [String] -> PackageCheck -> Maybe PackageCheck checkTestAndBenchmarkFlags flags = check (any (`elem` flags) test_and_benchmark_ghc_options) @@ -1895,7 +1896,7 @@ baseErrors where baseErrors = PackageDistInexcusable BaseNoUpperBounds <$ bases- deps = toDependencyVersionsMap allBuildDepends pkg+ deps = toDependencyVersionsMap allNonInternalBuildDepends pkg -- base gets special treatment (it's more critical) (bases, others) = partition (("base" ==) . unPackageName) $ [ name@@ -1903,6 +1904,16 @@ , not (hasUpperBound vr) ] + -- Get the combined build-depends entries of all components.+ allNonInternalBuildDepends :: PackageDescription -> [Dependency]+ allNonInternalBuildDepends = targetBuildDepends CM.<=< allNonInternalBuildInfo++ allNonInternalBuildInfo :: PackageDescription -> [BuildInfo]+ allNonInternalBuildInfo pkg_descr =+ [bi | lib <- allLibraries pkg_descr, let bi = libBuildInfo lib]+ ++ [bi | flib <- foreignLibs pkg_descr, let bi = foreignLibBuildInfo flib]+ ++ [bi | exe <- executables pkg_descr, let bi = buildInfo exe]+ checkConditionals :: GenericPackageDescription -> [PackageCheck] checkConditionals pkg = catMaybes [@@ -1917,7 +1928,7 @@ PackageDistInexcusable (UnknownCompiler unknownImpls) ] where- unknownOSs = [ os | OS (OtherOS os) <- conditions ]+ unknownOSs = [ os | OS (OtherOS os) <- conditions, os /= "haiku" ] unknownArches = [ arch | Arch (OtherArch arch) <- conditions ] unknownImpls = [ impl | Impl (OtherCompiler impl) _ <- conditions ] conditions = concatMap fvs (maybeToList (condLibrary pkg))
src/Distribution/Simple/GHC.hs view
@@ -140,12 +140,12 @@ (userMaybeSpecifyPath "ghc" hcPath conf0) let implInfo = ghcVersionImplInfo ghcVersion - -- Cabal currently supports ghc >= 7.0.1 && < 9.8+ -- Cabal currently supports ghc >= 7.0.1 && < 9.10 -- ... and the following odd development version- unless (ghcVersion < mkVersion [9,8]) $+ unless (ghcVersion < mkVersion [9,10]) $ warn verbosity $ "Unknown/unsupported 'ghc' version detected "- ++ "(Cabal " ++ prettyShow cabalVersion ++ " supports 'ghc' version < 9.8): "+ ++ "(Cabal " ++ prettyShow cabalVersion ++ " supports 'ghc' version < 9.10): " ++ programPath ghcProg ++ " is version " ++ prettyShow ghcVersion -- This is slightly tricky, we have to configure ghc first, then we use the@@ -185,10 +185,13 @@ ghcInfo <- Internal.getGhcInfo verbosity implInfo ghcProg let ghcInfoMap = Map.fromList ghcInfo- extensions = -- workaround https://gitlab.haskell.org/ghc/ghc/-/issues/11214- filterExt JavaScriptFFI $- -- see 'filterExtTH' comment below- filterExtTH $ extensions0+ filterJS = if ghcVersion < mkVersion [9, 8] then filterExt JavaScriptFFI else id+ extensions =+ -- workaround https://gitlab.haskell.org/ghc/ghc/-/issues/11214+ filterJS $+ -- see 'filterExtTH' comment below+ filterExtTH $+ extensions0 -- starting with GHC 8.0, `TemplateHaskell` will be omitted from -- `--supported-extensions` when it's not available.@@ -702,35 +705,45 @@ | filename <- cxxSources libBi] -- build any C sources- unless (not has_code || null (cSources libBi)) $ do+ let (cSrcs', others) = partition (\filepath -> ".c"`isSuffixOf` filepath) (cSources libBi)+ unless (not has_code || null cSrcs') $ do info verbosity "Building C Sources..."- sequence_- [ do let baseCcOpts = Internal.componentCcGhcOptions verbosity implInfo- lbi libBi clbi relLibTargetDir filename- vanillaCcOpts = if isGhcDynamic- -- Dynamic GHC requires C sources to be built- -- with -fPIC for REPL to work. See #2207.- then baseCcOpts { ghcOptFPic = toFlag True }- else baseCcOpts- profCcOpts = vanillaCcOpts `mappend` mempty {- ghcOptProfilingMode = toFlag True,- ghcOptObjSuffix = toFlag "p_o"- }- sharedCcOpts = vanillaCcOpts `mappend` mempty {- ghcOptFPic = toFlag True,- ghcOptDynLinkMode = toFlag GhcDynamicOnly,- ghcOptObjSuffix = toFlag "dyn_o"- }- odir = fromFlag (ghcOptObjDir vanillaCcOpts)- createDirectoryIfMissingVerbose verbosity True odir- let runGhcProgIfNeeded ccOpts = do- needsRecomp <- checkNeedsRecompilation filename ccOpts- when needsRecomp $ runGhcProg ccOpts- runGhcProgIfNeeded vanillaCcOpts- unless forRepl $- whenSharedLib forceSharedLib (runGhcProgIfNeeded sharedCcOpts)- unless forRepl $ whenProfLib (runGhcProgIfNeeded profCcOpts)- | filename <- cSources libBi]+ unless (null others) $ do+ let files = intercalate ", " others+ let libraryName = case libName lib of+ LMainLibName -> "the main library"+ LSubLibName name -> "library " <> prettyShow name+ warn verbosity $ unlines+ [ "The following files listed in " <> libraryName <> "'s c-sources will not be used: " <> files <> "."+ , "Header files should be in the 'include' or 'install-include' stanza."+ , "See https://cabal.readthedocs.io/en/3.10/cabal-package.html#pkg-field-includes"+ ]+ forM_ cSrcs' $ \filename -> do+ let baseCcOpts = Internal.componentCcGhcOptions verbosity implInfo+ lbi libBi clbi relLibTargetDir filename+ vanillaCcOpts = if isGhcDynamic+ -- Dynamic GHC requires C sources to be built+ -- with -fPIC for REPL to work. See #2207.+ then baseCcOpts { ghcOptFPic = toFlag True }+ else baseCcOpts+ profCcOpts = vanillaCcOpts `mappend` mempty {+ ghcOptProfilingMode = toFlag True,+ ghcOptObjSuffix = toFlag "p_o"+ }+ sharedCcOpts = vanillaCcOpts `mappend` mempty {+ ghcOptFPic = toFlag True,+ ghcOptDynLinkMode = toFlag GhcDynamicOnly,+ ghcOptObjSuffix = toFlag "dyn_o"+ }+ odir = fromFlag (ghcOptObjDir vanillaCcOpts)+ createDirectoryIfMissingVerbose verbosity True odir+ let runGhcProgIfNeeded ccOpts = do+ needsRecomp <- checkNeedsRecompilation filename ccOpts+ when needsRecomp $ runGhcProg ccOpts+ runGhcProgIfNeeded vanillaCcOpts+ unless forRepl $+ whenSharedLib forceSharedLib (runGhcProgIfNeeded sharedCcOpts)+ unless forRepl $ whenProfLib (runGhcProgIfNeeded profCcOpts) -- build any JS sources unless (not has_code || not hasJsSupport || null (jsSources libBi)) $ do@@ -1524,32 +1537,40 @@ | filename <- cxxSrcs ] -- build any C sources- unless (null cSrcs) $ do- info verbosity "Building C Sources..."- sequence_- [ do let baseCcOpts = Internal.componentCcGhcOptions verbosity implInfo+ let (cSrcs', others) = partition (\filepath -> ".c"`isSuffixOf` filepath) cSrcs+ unless (null cSrcs') $ do+ info verbosity "Building C Sources..."+ unless (null others) $ do+ let files = intercalate ", " others+ let currentComponentName = gbuildName bm+ warn verbosity $ unlines+ [ "The following files listed in " <> currentComponentName <> "'s c-sources will not be used: " <> files <> "."+ , "Header files should be in the 'include' or 'install-include' stanza."+ , "See https://cabal.readthedocs.io/en/3.10/cabal-package.html#pkg-field-includes"+ ]+ forM_ cSrcs' $ \filename -> do+ let baseCcOpts = Internal.componentCcGhcOptions verbosity implInfo lbi bnfo clbi tmpDir filename- vanillaCcOpts = if isGhcDynamic- -- Dynamic GHC requires C sources to be built- -- with -fPIC for REPL to work. See #2207.- then baseCcOpts { ghcOptFPic = toFlag True }- else baseCcOpts- profCcOpts = vanillaCcOpts `mappend` mempty {- ghcOptProfilingMode = toFlag True- }- sharedCcOpts = vanillaCcOpts `mappend` mempty {- ghcOptFPic = toFlag True,- ghcOptDynLinkMode = toFlag GhcDynamicOnly- }- opts | needProfiling = profCcOpts- | needDynamic = sharedCcOpts- | otherwise = vanillaCcOpts- odir = fromFlag (ghcOptObjDir opts)- createDirectoryIfMissingVerbose verbosity True odir- needsRecomp <- checkNeedsRecompilation filename opts- when needsRecomp $- runGhcProg opts- | filename <- cSrcs ]+ let vanillaCcOpts = if isGhcDynamic+ -- Dynamic GHC requires C sources to be built+ -- with -fPIC for REPL to work. See #2207.+ then baseCcOpts { ghcOptFPic = toFlag True }+ else baseCcOpts+ let profCcOpts = vanillaCcOpts `mappend` mempty {+ ghcOptProfilingMode = toFlag True+ }+ let sharedCcOpts = vanillaCcOpts `mappend` mempty {+ ghcOptFPic = toFlag True,+ ghcOptDynLinkMode = toFlag GhcDynamicOnly+ }+ let opts | needProfiling = profCcOpts+ | needDynamic = sharedCcOpts+ | otherwise = vanillaCcOpts+ let odir = fromFlag (ghcOptObjDir opts)+ createDirectoryIfMissingVerbose verbosity True odir+ needsRecomp <- checkNeedsRecompilation filename opts+ when needsRecomp $+ runGhcProg opts -- TODO: problem here is we need the .c files built first, so we can load them -- with ghci, but .c files can depend on .h files generated by ghc by ffi
src/Distribution/Simple/Haddock.hs view
@@ -360,7 +360,7 @@ createHaddockIndex verbosity programDb comp platform flags = do let args = fromHaddockProjectFlags flags (haddockProg, _version) <-- getHaddockProg verbosity programDb comp args (haddockProjectQuickJump flags)+ getHaddockProg verbosity programDb comp args (Flag True) runHaddock verbosity defaultTempFileOptions comp platform haddockProg False args -- ------------------------------------------------------------------------------@@ -405,12 +405,12 @@ fromHaddockProjectFlags flags = mempty { argOutputDir = Dir (fromFlag $ haddockProjectDir flags)- , argQuickJump = haddockProjectQuickJump flags- , argGenContents = haddockProjectGenContents flags- , argGenIndex = haddockProjectGenIndex flags+ , argQuickJump = Flag True+ , argGenContents = Flag True+ , argGenIndex = Flag True , argPrologueFile = haddockProjectPrologue flags , argInterfaces = fromFlagOrDefault [] (haddockProjectInterfaces flags)- , argLinkedSource = haddockProjectLinkedSource flags+ , argLinkedSource = Flag True , argLib = haddockProjectLib flags } @@ -684,7 +684,12 @@ result = intercalate ", " . map (\o -> outputDir </> case o of- Html -> "index.html"+ Html+ | fromFlagOrDefault False (argGenIndex args) ->+ "index.html"+ Html+ | otherwise ->+ mempty Hoogle -> pkgstr <.> "txt") . fromFlagOrDefault [Html] . argOutput@@ -709,7 +714,7 @@ , [ "--since-qual=external" | isVersion 2 20 ] , [ "--quickjump" | isVersion 2 19- , _ <- flagToList . argQuickJump $ args ]+ , True <- flagToList . argQuickJump $ args ] , [ "--hyperlinked-source" | isVersion 2 17 , True <- flagToList . argLinkedSource $ args ]