cabal-hoogle 3.10.0.0 → 3.16.0.0
raw patch · 4 files changed
+123/−38 lines, 4 filesdep ~Cabaldep ~Cabal-syntaxdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: Cabal, Cabal-syntax, base, cabal-install, extra, text, typed-process
API changes (from Hackage documentation)
Files
- CHANGELOG.md +9/−0
- cabal-hoogle.cabal +21/−21
- src/Hoogle/Cabal/Command/Common.hs +86/−17
- src/Hoogle/Cabal/Command/Generate.hs +7/−0
CHANGELOG.md view
@@ -1,5 +1,14 @@ # Revision history for cabal-hoogle +## 3.16.0.0 -- 2026-01-09++* Support Cabal 3.16++## 3.14.0.0 -- 2026-01-02++* Support Cabal 3.14+* Drop GHC 9.2+ ## 3.10.0.0 -- 2024-02-25 * Switch to Cabal 3.10
cabal-hoogle.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: cabal-hoogle-version: 3.10.0.0+version: 3.16.0.0 synopsis: generate hoogle database for cabal project and dependencies description: Please see the README on GitHub at <https://github.com/kokobd/cabal-hoogle>@@ -23,24 +23,24 @@ library build-depends:- , base >=4.14 && <5- , Cabal ^>=3.10- , cabal-install ^>=3.10- , Cabal-syntax ^>=3.10- , co-log-core >=0.2 && <0.4- , containers ^>=0.6.2.1- , directory ^>=1.3.6- , extra ^>=1.7.10- , filepath ^>=1.4.2+ , base >=4.17 && <4.23+ , Cabal >=3.10 && <3.17+ , cabal-install >=3.10 && <3.17+ , Cabal-syntax >=3.10 && <3.17+ , co-log-core >=0.2 && <0.4+ , containers >=0.6 && <0.8+ , directory ^>=1.3+ , extra >=1.7 && <1.9+ , filepath >=1.4.2 && <1.6 , hoogle ^>=5.0.18- , lens >=5 && <6- , optparse-applicative >=0.16 && <1- , regex-tdfa ^>=1.3.1- , string-interpolate ^>=0.3.1.2- , text ^>=1.2.4 || ^>=2.0- , time >=1.10 && <2- , transformers ^>=0.5.6 || ^>=0.6- , typed-process ^>=0.2.10+ , lens >=5 && <6+ , optparse-applicative >=0.16 && <1+ , regex-tdfa ^>=1.3+ , string-interpolate ^>=0.3+ , text ^>=1.2.4 || ^>=2.0 || ^>=2.1+ , time >=1.10 && <2+ , transformers ^>=0.5.6 || ^>=0.6+ , typed-process >=0.2.10 && <0.2.14 default-language: Haskell2010 ghc-options: -Wall@@ -77,8 +77,8 @@ build-depends: , base , cabal-hoogle- , silently ^>=1.2.5.2- , tasty ^>=1.4.2.3- , tasty-hunit ^>=0.10.0.3+ , silently ^>=1.2.5+ , tasty >=1.4 && <1.6+ , tasty-hunit ^>=0.10 build-tool-depends: tasty-discover:tasty-discover
src/Hoogle/Cabal/Command/Common.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} module Hoogle.Cabal.Command.Common@@ -15,14 +17,21 @@ import Distribution.Client.DistDirLayout (distDirectory) import Distribution.Client.NixStyleOptions import Distribution.Client.ProjectOrchestration+import Distribution.Client.ProjectPlanning.Types (ElaboratedInstallPlan) import Distribution.Client.ScriptUtils import Distribution.Client.Setup (GlobalFlags, InstallFlags (..), defaultGlobalFlags)+import Distribution.Client.TargetProblem (TargetProblem)+import Distribution.Client.Types.SourcePackageDb (SourcePackageDb) import Distribution.Simple (OptimisationLevel (NoOptimisation))-import Distribution.Simple.Setup (ConfigFlags (..), Flag (..), HaddockFlags (..))+import Distribution.Simple.Setup (ConfigFlags (..), HaddockFlags (..), toFlag) import Distribution.Simple.Utils (die') import qualified Distribution.Verbosity as Verbosity import Options.Applicative import System.FilePath ((</>))+# if MIN_VERSION_Cabal(3,14,0)+import Distribution.Simple.Setup (CommonSetupFlags (..))+import Distribution.Utils.Path (makeSymbolicPath)+#endif data GlobalOptions = GlobalOptions { _globalOptions_builddir :: FilePath,@@ -61,7 +70,7 @@ [String] -> IO Context readContext GlobalOptions {..} targetStrings =- withContextAndSelectors RejectNoTargets Nothing flags targetStrings' globalFlags HaddockCommand $ \targetCtx ctx targetSelectors -> do+ withContextAndSelectors' RejectNoTargets Nothing flags targetStrings' globalFlags HaddockCommand $ \targetCtx ctx targetSelectors -> do let targetAction = TargetActionBuild baseCtx <- case targetCtx of@@ -69,13 +78,12 @@ GlobalContext -> return ctx ScriptContext path exemeta -> updateContextAndWriteProjectFile ctx path exemeta - let verbosity = Verbosity.normal- buildCtx <- runProjectPreBuildPhase verbosity baseCtx $ \elaboratedPlan -> do+ buildCtx <- runProjectPreBuildPhase defaultVerbosity baseCtx $ \elaboratedPlan -> do -- Interpret the targets on the command line as build targets -- (as opposed to say repl or haddock targets). targets <-- either (reportTargetProblems verbosity "build") return $- resolveTargets+ either (reportTargetProblems defaultVerbosity "build") return $+ resolveTargets' selectPackageTargets selectComponentTarget elaboratedPlan@@ -90,7 +98,7 @@ elaboratedPlan'' <- if buildSettingOnlyDeps (buildSettings baseCtx) then- either (die' verbosity . renderCannotPruneDependencies) return $+ either (die' defaultVerbosity . renderCannotPruneDependencies) return $ pruneInstallPlanToDependencies (Map.keysSet targets) elaboratedPlan'@@ -109,23 +117,84 @@ defaultFlags = defaultNixStyleFlags defaultBuildFlags flags = defaultFlags- { configFlags =- (configFlags defaultFlags)- { configOptimization = Flag NoOptimisation,- configDistPref = Flag _globalOptions_builddir- },+ { configFlags = setBuildDir _globalOptions_builddir . disableOptimization $ configFlags defaultFlags, haddockFlags = (haddockFlags defaultFlags)- { haddockHoogle = Flag True,- haddockHtml = Flag True,- haddockLinkedSource = Flag True,- haddockQuickJump = Flag True+ { haddockHoogle = toFlag True,+ haddockHtml = toFlag True,+ haddockLinkedSource = toFlag True,+ haddockQuickJump = toFlag True }, installFlags = (installFlags defaultFlags)- { installDocumentation = Flag True+ { installDocumentation = toFlag True } } targetStrings' :: [String] targetStrings' = if null targetStrings then ["all"] else targetStrings globalFlags = defaultGlobalFlags++disableOptimization :: ConfigFlags -> ConfigFlags+disableOptimization flags = flags {configOptimization = toFlag NoOptimisation}++setBuildDir :: FilePath -> ConfigFlags -> ConfigFlags+#if MIN_VERSION_Cabal(3,14,0)+setBuildDir buildDir flags =+ flags+ { configCommonFlags =+ (configCommonFlags flags)+ { setupDistPref = toFlag $ makeSymbolicPath buildDir+ }+ }+#else+setBuildDir buildDir flags =+ flags { configDistPref = toFlag buildDir }+#endif++withContextAndSelectors' ::+ AcceptNoTargets ->+ Maybe ComponentKind ->+ NixStyleFlags a ->+ [String] ->+ GlobalFlags ->+ CurrentCommand ->+ ( TargetContext ->+ ProjectBaseContext ->+ [TargetSelector] ->+ IO b+ ) ->+ IO b+#if MIN_VERSION_Cabal(3,16,0)+withContextAndSelectors' = withContextAndSelectors defaultVerbosity+#else+withContextAndSelectors' = withContextAndSelectors+#endif++resolveTargets' ::+ ( forall k.+ TargetSelector ->+ [AvailableTarget k] ->+ Either+ (TargetProblem err)+ [k]+ ) ->+ ( forall k.+ SubComponentTarget ->+ AvailableTarget k ->+ Either (TargetProblem err) k+ ) ->+ ElaboratedInstallPlan ->+ Maybe SourcePackageDb ->+ [TargetSelector] ->+ Either+ [TargetProblem err]+ TargetsMap+#if MIN_VERSION_Cabal(3,16,0)+-- resolveTargetsFromSolver is a drop-in replacement of resolveTargets. See https://github.com/haskell/cabal/commit/0f1f67cb97dca952123f262e7670a200a783acf4+resolveTargets' = resolveTargetsFromSolver+#else+resolveTargets' = resolveTargets+#endif++defaultVerbosity :: Verbosity.Verbosity+defaultVerbosity = Verbosity.normal
src/Hoogle/Cabal/Command/Generate.hs view
@@ -40,6 +40,9 @@ import Distribution.Simple.Configure (ConfigStateFileError, tryGetPersistBuildConfig) import Distribution.Simple.PackageIndex (allPackagesByName) import Distribution.Types.LocalBuildInfo (LocalBuildInfo)+#if MIN_VERSION_Cabal(3,14,0)+import Distribution.Utils.Path (makeSymbolicPath)+#endif import qualified Distribution.Types.LocalBuildInfo as LocalBuildInfo import qualified Distribution.Types.PackageDescription as PackageDescription import qualified Distribution.Types.PackageId as PackageId@@ -126,7 +129,11 @@ symlinkLocalPackages :: Logger Log -> [FilePath] -> FilePath -> IO [(String, LocalBuildInfo)] symlinkLocalPackages logger pkgsPath destDir = do fmap catMaybes . forM pkgsPath $ \pkgPath -> runMaybeT $ do+#if MIN_VERSION_Cabal(3,14,0)+ lbiEither <- liftIO $ tryGetPersistBuildConfig Nothing (makeSymbolicPath pkgPath)+#else lbiEither <- liftIO $ tryGetPersistBuildConfig pkgPath+#endif lbi <- MaybeT $ case lbiEither of Left configStateFileErr -> do logWith logger Error $ LogCanNotReadSetupConfig pkgPath configStateFileErr