diff --git a/Cabal-tests/tests/ParserTests/regressions/haddock-api-2.18.1-check.cabal b/Cabal-tests/tests/ParserTests/regressions/haddock-api-2.18.1-check.cabal index 5ecfcd13e79..e4495d5116a 100644 --- a/Cabal-tests/tests/ParserTests/regressions/haddock-api-2.18.1-check.cabal +++ b/Cabal-tests/tests/ParserTests/regressions/haddock-api-2.18.1-check.cabal @@ -1,147 +1,147 @@ -name: haddock-api -version: 2.18.1 -synopsis: A documentation-generation tool for Haskell libraries -description: Haddock is a documentation-generation tool for Haskell - libraries -license: BSD3 -license-file: LICENSE -author: Simon Marlow, David Waern -maintainer: Alex Biehl , Simon Hengel , Mateusz Kowalczyk -homepage: http://www.haskell.org/haddock/ -bug-reports: https://github.com/haskell/haddock/issues -copyright: (c) Simon Marlow, David Waern -category: Documentation -build-type: Simple -cabal-version: >= 1.10 - -extra-source-files: - CHANGES.md - -data-dir: - resources -data-files: - html/solarized.css - html/haddock-util.js - html/highlight.js - html/Classic.theme/haskell_icon.gif - html/Classic.theme/minus.gif - html/Classic.theme/plus.gif - html/Classic.theme/xhaddock.css - html/Ocean.std-theme/hslogo-16.png - html/Ocean.std-theme/minus.gif - html/Ocean.std-theme/ocean.css - html/Ocean.std-theme/plus.gif - html/Ocean.std-theme/synopsis.png - latex/haddock.sty - -library - default-language: Haskell2010 - - -- this package typically supports only single major versions - build-depends: base ^>= 4.10.0 - , Cabal ^>= 2.0.0 - , ghc ^>= 8.2 - , ghc-paths ^>= 0.1.0.9 - , haddock-library == 1.4.4.* - , xhtml ^>= 3000.2.2 - - -- Versions for the dependencies below are transitively pinned by - -- the non-reinstallable `ghc` package and hence need no version - -- bounds - build-depends: array - , bytestring - , containers - , deepseq - , directory - , filepath - , ghc-boot - , transformers - - hs-source-dirs: src - - ghc-options: -funbox-strict-fields -Wall -fwarn-tabs -O2 - ghc-options: -Wall - if impl(ghc >= 8.0) - ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances - - exposed-modules: - Documentation.Haddock - - other-modules: - Haddock - Haddock.Interface - Haddock.Interface.Rename - Haddock.Interface.Create - Haddock.Interface.AttachInstances - Haddock.Interface.LexParseRn - Haddock.Interface.ParseModuleHeader - Haddock.Interface.Specialize - Haddock.Parser - Haddock.Utils - Haddock.Backends.Xhtml - Haddock.Backends.Xhtml.Decl - Haddock.Backends.Xhtml.DocMarkup - Haddock.Backends.Xhtml.Layout - Haddock.Backends.Xhtml.Names - Haddock.Backends.Xhtml.Themes - Haddock.Backends.Xhtml.Types - Haddock.Backends.Xhtml.Utils - Haddock.Backends.LaTeX - Haddock.Backends.HaddockDB - Haddock.Backends.Hoogle - Haddock.Backends.Hyperlinker - Haddock.Backends.Hyperlinker.Ast - Haddock.Backends.Hyperlinker.Parser - Haddock.Backends.Hyperlinker.Renderer - Haddock.Backends.Hyperlinker.Types - Haddock.Backends.Hyperlinker.Utils - Haddock.ModuleTree - Haddock.Types - Haddock.Doc - Haddock.Version - Haddock.InterfaceFile - Haddock.Options - Haddock.GhcUtils - Haddock.Syb - Haddock.Convert - Paths_haddock_api - - autogen-modules: - Paths_haddock_api - -test-suite spec - type: exitcode-stdio-1.0 - default-language: Haskell2010 - main-is: Spec.hs - ghc-options: -Wall - - hs-source-dirs: - test - , src - - -- NB: We only use a small subset of lib:haddock-api here, which - -- explains why this component has a smaller build-depends set - other-modules: - Haddock.Backends.Hyperlinker.ParserSpec - Haddock.Backends.Hyperlinker.Parser - Haddock.Backends.Hyperlinker.Types - - build-depends: - ghc ^>= 8.2 - , hspec ^>= 2.4.4 - , QuickCheck ^>= 2.10 - - -- Versions for the dependencies below are transitively pinned by - -- the non-reinstallable `ghc` package and hence need no version - -- bounds - build-depends: - base - , containers - - build-tool-depends: - hspec-discover:hspec-discover ^>= 2.4.4 - -source-repository head - type: git - subdir: haddock-api - location: https://github.com/haskell/haddock.git +name: haddock-api +version: 2.18.1 +synopsis: A documentation-generation tool for Haskell libraries +description: Haddock is a documentation-generation tool for Haskell + libraries +license: BSD3 +license-file: LICENSE +author: Simon Marlow, David Waern +maintainer: Alex Biehl , Simon Hengel , Mateusz Kowalczyk +homepage: http://www.haskell.org/haddock/ +bug-reports: https://github.com/haskell/haddock/issues +copyright: (c) Simon Marlow, David Waern +category: Documentation +build-type: Simple +cabal-version: >= 1.10 + +extra-source-files: + CHANGES.md + +data-dir: + resources +data-files: + html/solarized.css + html/haddock-util.js + html/highlight.js + html/Classic.theme/haskell_icon.gif + html/Classic.theme/minus.gif + html/Classic.theme/plus.gif + html/Classic.theme/xhaddock.css + html/Ocean.std-theme/hslogo-16.png + html/Ocean.std-theme/minus.gif + html/Ocean.std-theme/ocean.css + html/Ocean.std-theme/plus.gif + html/Ocean.std-theme/synopsis.png + latex/haddock.sty + +library + default-language: Haskell2010 + + -- this package typically supports only single major versions + build-depends: base ^>= 4.10.0 + , Cabal ^>= 2.0.0 + , ghc ^>= 8.2 + , ghc-paths ^>= 0.1.0.9 + , haddock-library == 1.4.4.* + , xhtml ^>= 3000.2.2 + + -- Versions for the dependencies below are transitively pinned by + -- the non-reinstallable `ghc` package and hence need no version + -- bounds + build-depends: array + , bytestring + , containers + , deepseq + , directory + , filepath + , ghc-boot + , transformers + + hs-source-dirs: src + + ghc-options: -funbox-strict-fields -Wall -fwarn-tabs -O2 + ghc-options: -Wall + if impl(ghc >= 8.0) + ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances + + exposed-modules: + Documentation.Haddock + + other-modules: + Haddock + Haddock.Interface + Haddock.Interface.Rename + Haddock.Interface.Create + Haddock.Interface.AttachInstances + Haddock.Interface.LexParseRn + Haddock.Interface.ParseModuleHeader + Haddock.Interface.Specialize + Haddock.Parser + Haddock.Utils + Haddock.Backends.Xhtml + Haddock.Backends.Xhtml.Decl + Haddock.Backends.Xhtml.DocMarkup + Haddock.Backends.Xhtml.Layout + Haddock.Backends.Xhtml.Names + Haddock.Backends.Xhtml.Themes + Haddock.Backends.Xhtml.Types + Haddock.Backends.Xhtml.Utils + Haddock.Backends.LaTeX + Haddock.Backends.HaddockDB + Haddock.Backends.Hoogle + Haddock.Backends.Hyperlinker + Haddock.Backends.Hyperlinker.Ast + Haddock.Backends.Hyperlinker.Parser + Haddock.Backends.Hyperlinker.Renderer + Haddock.Backends.Hyperlinker.Types + Haddock.Backends.Hyperlinker.Utils + Haddock.ModuleTree + Haddock.Types + Haddock.Doc + Haddock.Version + Haddock.InterfaceFile + Haddock.Options + Haddock.GhcUtils + Haddock.Syb + Haddock.Convert + Paths_haddock_api + + autogen-modules: + Paths_haddock_api + +test-suite spec + type: exitcode-stdio-1.0 + default-language: Haskell2010 + main-is: Spec.hs + ghc-options: -Wall + + hs-source-dirs: + test + , src + + -- NB: We only use a small subset of lib:haddock-api here, which + -- explains why this component has a smaller build-depends set + other-modules: + Haddock.Backends.Hyperlinker.ParserSpec + Haddock.Backends.Hyperlinker.Parser + Haddock.Backends.Hyperlinker.Types + + build-depends: + ghc ^>= 8.2 + , hspec ^>= 2.4.4 + , QuickCheck ^>= 2.10 + + -- Versions for the dependencies below are transitively pinned by + -- the non-reinstallable `ghc` package and hence need no version + -- bounds + build-depends: + base + , containers + + build-tool-depends: + hspec-discover:hspec-discover ^>= 2.4.4 + +source-repository head + type: git + subdir: haddock-api + location: https://github.com/haskell/haddock.git diff --git a/Cabal-tests/tests/ParserTests/regressions/issue-7776-a.cabal b/Cabal-tests/tests/ParserTests/regressions/issue-7776-a.cabal index 477ec159ca9..b5517d56b1e 100644 --- a/Cabal-tests/tests/ParserTests/regressions/issue-7776-a.cabal +++ b/Cabal-tests/tests/ParserTests/regressions/issue-7776-a.cabal @@ -1,26 +1,26 @@ -cabal-version: 3.4 -name: issue -version: 7776 -build-type: Simple -synopsis: duplicate-module check -category: Test -description: - With duplicate modules guarded by exclusive conditions, it should be buildable but should show a warning. - It *could* be smart enough to don't show the warning but we have to teach it about -license: BSD-3-Clause -license-file: LICENSE -maintainer: Cabal Contributors - --- Example taken from ghc-source-gen -library - exposed-modules: Foo - if impl(ghc<8.10) - other-modules: - GHC.Hs.Type - hs-source-dirs: - compat - if impl(ghc>=8.10) && impl(ghc<9.0) - other-modules: - GHC.Hs.Type - hs-source-dirs: +cabal-version: 3.4 +name: issue +version: 7776 +build-type: Simple +synopsis: duplicate-module check +category: Test +description: + With duplicate modules guarded by exclusive conditions, it should be buildable but should show a warning. + It *could* be smart enough to don't show the warning but we have to teach it about +license: BSD-3-Clause +license-file: LICENSE +maintainer: Cabal Contributors + +-- Example taken from ghc-source-gen +library + exposed-modules: Foo + if impl(ghc<8.10) + other-modules: + GHC.Hs.Type + hs-source-dirs: + compat + if impl(ghc>=8.10) && impl(ghc<9.0) + other-modules: + GHC.Hs.Type + hs-source-dirs: compat-8.10 diff --git a/Cabal-tests/tests/ParserTests/regressions/issue-7776-b.cabal b/Cabal-tests/tests/ParserTests/regressions/issue-7776-b.cabal index c3cde22e1e8..464d6ba334f 100644 --- a/Cabal-tests/tests/ParserTests/regressions/issue-7776-b.cabal +++ b/Cabal-tests/tests/ParserTests/regressions/issue-7776-b.cabal @@ -1,27 +1,27 @@ -cabal-version: 3.4 -name: issue -version: 7776 -build-type: Simple -synopsis: duplicate-module check -category: Test -description: With duplicate modules, even with overlapping conditions, it should be buildable but should show a warning. -license: BSD-3-Clause -license-file: LICENSE -maintainer: Cabal Contributors - --- Example taken from hashable-1.3.0 -library - exposed-modules: Foo - -- the base lower bound makes the package not buildable with ghc < 6.8 - -- but cabal is not smart enough to know it :-P - build-depends: base >= 4.5 && < 4.15 - -benchmark benchmarks - main-is: Benchmarks.hs - other-modules: - Data.Hashable.RandomSource - type: exitcode-stdio-1.0 - if impl(ghc >= 6.8) - Ghc-options: -fwarn-tabs - else - other-modules: Data.Hashable.RandomSource +cabal-version: 3.4 +name: issue +version: 7776 +build-type: Simple +synopsis: duplicate-module check +category: Test +description: With duplicate modules, even with overlapping conditions, it should be buildable but should show a warning. +license: BSD-3-Clause +license-file: LICENSE +maintainer: Cabal Contributors + +-- Example taken from hashable-1.3.0 +library + exposed-modules: Foo + -- the base lower bound makes the package not buildable with ghc < 6.8 + -- but cabal is not smart enough to know it :-P + build-depends: base >= 4.5 && < 4.15 + +benchmark benchmarks + main-is: Benchmarks.hs + other-modules: + Data.Hashable.RandomSource + type: exitcode-stdio-1.0 + if impl(ghc >= 6.8) + Ghc-options: -fwarn-tabs + else + other-modules: Data.Hashable.RandomSource diff --git a/Cabal-tests/tests/ParserTests/regressions/issue-7776-c.cabal b/Cabal-tests/tests/ParserTests/regressions/issue-7776-c.cabal index 75d40d451dd..07755c16e5a 100644 --- a/Cabal-tests/tests/ParserTests/regressions/issue-7776-c.cabal +++ b/Cabal-tests/tests/ParserTests/regressions/issue-7776-c.cabal @@ -1,19 +1,19 @@ -cabal-version: 3.4 -name: issue -version: 7776 -build-type: Simple -synopsis: duplicate-module check -category: Test -description: With duplicate modules not guarded by any condition, it should throw an error. -license: BSD-3-Clause -license-file: LICENSE -maintainer: Cabal Contributors - -library - exposed-modules: Foo - other-modules: - GHC.Hs.Type - hs-source-dirs: - compat - other-modules: - GHC.Hs.Type +cabal-version: 3.4 +name: issue +version: 7776 +build-type: Simple +synopsis: duplicate-module check +category: Test +description: With duplicate modules not guarded by any condition, it should throw an error. +license: BSD-3-Clause +license-file: LICENSE +maintainer: Cabal Contributors + +library + exposed-modules: Foo + other-modules: + GHC.Hs.Type + hs-source-dirs: + compat + other-modules: + GHC.Hs.Type diff --git a/Cabal/src/Distribution/Simple/Configure.hs b/Cabal/src/Distribution/Simple/Configure.hs index 45f91ac5c9c..4324d67a095 100644 --- a/Cabal/src/Distribution/Simple/Configure.hs +++ b/Cabal/src/Distribution/Simple/Configure.hs @@ -85,7 +85,7 @@ import Distribution.Simple.PackageIndex (InstalledPackageIndex, lookupUnitId) import qualified Distribution.Simple.PackageIndex as PackageIndex import Distribution.Simple.PreProcess import Distribution.Simple.Program -import Distribution.Simple.Program.Db (lookupProgramByName) +import Distribution.Simple.Program.Db (appendProgramSearchPath, lookupProgramByName) import Distribution.Simple.Setup.Common as Setup import Distribution.Simple.Setup.Config as Setup import Distribution.Simple.Utils @@ -488,6 +488,7 @@ preConfigurePackage cfg g_pkg_descr = do checkDeprecatedFlags verbosity cfg checkExactConfiguration verbosity g_pkg_descr cfg + programDbPre <- mkProgramDb cfg (configPrograms cfg) -- comp: the compiler we're building with -- compPlatform: the platform we're building for -- programDb: location and args of all programs we're @@ -500,7 +501,7 @@ preConfigurePackage cfg g_pkg_descr = do (flagToMaybe (configHcFlavor cfg)) (flagToMaybe (configHcPath cfg)) (flagToMaybe (configHcPkg cfg)) - (mkProgramDb cfg (configPrograms cfg)) + programDbPre (lessVerbose verbosity) -- Where to build the package @@ -1230,19 +1231,18 @@ configureComponents mkPromisedDepsSet :: [GivenComponent] -> Map (PackageName, ComponentName) ComponentId mkPromisedDepsSet comps = Map.fromList [((pn, CLibName ln), cid) | GivenComponent pn ln cid <- comps] -mkProgramDb :: ConfigFlags -> ProgramDb -> ProgramDb -mkProgramDb cfg initialProgramDb = programDb +-- | Adds the extra program paths from the flags provided to @configure@ as +-- well as specified locations for certain known programs and their default +-- arguments. +mkProgramDb :: ConfigFlags -> ProgramDb -> IO ProgramDb +mkProgramDb cfg initialProgramDb = do + programDb <- appendProgramSearchPath (fromFlagOrDefault normal (configVerbosity cfg)) searchpath initialProgramDb + pure + . userSpecifyArgss (configProgramArgs cfg) + . userSpecifyPaths (configProgramPaths cfg) + $ programDb where - programDb = - userSpecifyArgss (configProgramArgs cfg) - . userSpecifyPaths (configProgramPaths cfg) - . setProgramSearchPath searchpath - $ initialProgramDb - searchpath = - getProgramSearchPath initialProgramDb - ++ map - ProgramSearchPathDir - (fromNubList $ configProgramPathExtra cfg) + searchpath = fromNubList $ configProgramPathExtra cfg -- Note. We try as much as possible to _prepend_ rather than postpend the extra-prog-path -- so that we can override the system path. However, in a v2-build, at this point, the "system" path @@ -2253,15 +2253,14 @@ ccLdOptionsBuildInfo cflags ldflags ldflags_static = configCompilerAuxEx :: ConfigFlags -> IO (Compiler, Platform, ProgramDb) -configCompilerAuxEx cfg = +configCompilerAuxEx cfg = do + programDb <- mkProgramDb cfg defaultProgramDb configCompilerEx (flagToMaybe $ configHcFlavor cfg) (flagToMaybe $ configHcPath cfg) (flagToMaybe $ configHcPkg cfg) programDb (fromFlag (configVerbosity cfg)) - where - programDb = mkProgramDb cfg defaultProgramDb configCompilerEx :: Maybe CompilerFlavor diff --git a/Cabal/src/Distribution/Simple/ConfigureScript.hs b/Cabal/src/Distribution/Simple/ConfigureScript.hs index c4ec2fc0f95..2572f4949c1 100644 --- a/Cabal/src/Distribution/Simple/ConfigureScript.hs +++ b/Cabal/src/Distribution/Simple/ConfigureScript.hs @@ -169,10 +169,7 @@ runConfigureScript verbosity flags lbi = do maybeHostFlag = if hp == buildPlatform then [] else ["--host=" ++ show (pretty hp)] args' = configureFile' : args ++ ["CC=" ++ ccProgShort] ++ maybeHostFlag shProg = simpleProgram "sh" - progDb = - modifyProgramSearchPath - (\p -> map ProgramSearchPathDir extraPath ++ p) - emptyProgramDb + progDb <- appendProgramSearchPath verbosity extraPath emptyProgramDb shConfiguredProg <- lookupProgram shProg `fmap` configureProgram verbosity shProg progDb diff --git a/Cabal/src/Distribution/Simple/GHC.hs b/Cabal/src/Distribution/Simple/GHC.hs index 65aa733684f..22933370233 100644 --- a/Cabal/src/Distribution/Simple/GHC.hs +++ b/Cabal/src/Distribution/Simple/GHC.hs @@ -697,10 +697,12 @@ libAbiHash verbosity _pkg_descr lbi lib clbi = do | otherwise = error "libAbiHash: Can't find an enabled library way" (ghcProg, _) <- requireProgram verbosity ghcProgram (withPrograms lbi) + hash <- getProgramInvocationOutput verbosity - (ghcInvocation ghcProg comp platform ghcArgs) + =<< ghcInvocation verbosity ghcProg comp platform ghcArgs + return (takeWhile (not . isSpace) hash) componentCcGhcOptions diff --git a/Cabal/src/Distribution/Simple/GHCJS.hs b/Cabal/src/Distribution/Simple/GHCJS.hs index 53f78b7e5e6..12860ca104f 100644 --- a/Cabal/src/Distribution/Simple/GHCJS.hs +++ b/Cabal/src/Distribution/Simple/GHCJS.hs @@ -1769,7 +1769,7 @@ libAbiHash verbosity _pkg_descr lbi lib clbi = do hash <- getProgramInvocationOutput verbosity - (ghcInvocation ghcjsProg comp platform ghcArgs) + =<< ghcInvocation verbosity ghcjsProg comp platform ghcArgs return (takeWhile (not . isSpace) hash) componentGhcOptions diff --git a/Cabal/src/Distribution/Simple/Program/Db.hs b/Cabal/src/Distribution/Simple/Program/Db.hs index 1407230b93b..4b02a7e6f2e 100644 --- a/Cabal/src/Distribution/Simple/Program/Db.hs +++ b/Cabal/src/Distribution/Simple/Program/Db.hs @@ -34,6 +34,7 @@ module Distribution.Simple.Program.Db -- ** Query and manipulate the program db , addKnownProgram , addKnownPrograms + , appendProgramSearchPath , lookupKnownProgram , knownPrograms , getProgramSearchPath @@ -221,6 +222,21 @@ modifyProgramSearchPath modifyProgramSearchPath f db = setProgramSearchPath (f $ getProgramSearchPath db) db +-- | Modify the current 'ProgramSearchPath' used by the 'ProgramDb' +-- by appending the provided extra paths. Also logs the added paths +-- in info verbosity. +appendProgramSearchPath + :: Verbosity + -> [FilePath] + -> ProgramDb + -> IO ProgramDb +appendProgramSearchPath verbosity extraPaths db = + if not $ null extraPaths + then do + logExtraProgramSearchPath verbosity extraPaths + pure $ modifyProgramSearchPath (map ProgramSearchPathDir extraPaths ++) db + else pure db + -- | User-specify this path. Basically override any path information -- for this program in the configuration. If it's not a known -- program ignore it. diff --git a/Cabal/src/Distribution/Simple/Program/Find.hs b/Cabal/src/Distribution/Simple/Program/Find.hs index 73506949e49..4bebe2a19b6 100644 --- a/Cabal/src/Distribution/Simple/Program/Find.hs +++ b/Cabal/src/Distribution/Simple/Program/Find.hs @@ -32,7 +32,9 @@ module Distribution.Simple.Program.Find , defaultProgramSearchPath , findProgramOnSearchPath , programSearchPathAsPATHVar + , logExtraProgramSearchPath , getSystemSearchPath + , getExtraPathEnv , simpleProgram ) where @@ -63,6 +65,15 @@ import qualified System.Win32 as Win32 defaultProgramSearchPath :: ProgramSearchPath defaultProgramSearchPath = [ProgramSearchPathDefault] +logExtraProgramSearchPath + :: Verbosity + -> [FilePath] + -> IO () +logExtraProgramSearchPath verbosity extraPaths = + info verbosity . unlines $ + "Including the following directories in PATH:" + : map ("- " ++) extraPaths + findProgramOnSearchPath :: Verbosity -> ProgramSearchPath @@ -133,6 +144,25 @@ findProgramOnSearchPath verbosity searchpath prog = do Just _ -> return a Nothing -> firstJustM mas +-- | Adds some paths to the "PATH" entry in the key-value environment provided +-- or if there is none, looks up @$PATH@ in the real environment. +getExtraPathEnv + :: Verbosity + -> [(String, Maybe String)] + -> [FilePath] + -> IO [(String, Maybe String)] +getExtraPathEnv _ _ [] = return [] +getExtraPathEnv verbosity env extras = do + mb_path <- case lookup "PATH" env of + Just x -> return x + Nothing -> lookupEnv "PATH" + logExtraProgramSearchPath verbosity extras + let extra = intercalate [searchPathSeparator] extras + path' = case mb_path of + Nothing -> extra + Just path -> extra ++ searchPathSeparator : path + return [("PATH", Just path')] + -- | Interpret a 'ProgramSearchPath' to construct a new @$PATH@ env var. -- Note that this is close but not perfect because on Windows the search -- algorithm looks at more than just the @%PATH%@. diff --git a/Cabal/src/Distribution/Simple/Program/GHC.hs b/Cabal/src/Distribution/Simple/Program/GHC.hs index 537e008c17f..b8b1cc496c7 100644 --- a/Cabal/src/Distribution/Simple/Program/GHC.hs +++ b/Cabal/src/Distribution/Simple/Program/GHC.hs @@ -28,6 +28,7 @@ import Distribution.Pretty import Distribution.Simple.Compiler import Distribution.Simple.Flag import Distribution.Simple.GHC.ImplInfo +import Distribution.Simple.Program.Find (getExtraPathEnv) import Distribution.Simple.Program.Run import Distribution.Simple.Program.Types import Distribution.System @@ -554,8 +555,6 @@ data GhcOptions = GhcOptions , ghcOptExtraPath :: NubListR FilePath -- ^ Put the extra folders in the PATH environment variable we invoke -- GHC with - -- | Put the extra folders in the PATH environment variable we invoke - -- GHC with , ghcOptCabal :: Flag Bool -- ^ Let GHC know that it is Cabal that's calling it. -- Modifies some of the GHC error messages. @@ -616,18 +615,24 @@ runGHC -> GhcOptions -> IO () runGHC verbosity ghcProg comp platform opts = do - runProgramInvocation verbosity (ghcInvocation ghcProg comp platform opts) + runProgramInvocation verbosity =<< ghcInvocation verbosity ghcProg comp platform opts ghcInvocation - :: ConfiguredProgram + :: Verbosity + -> ConfiguredProgram -> Compiler -> Platform -> GhcOptions - -> ProgramInvocation -ghcInvocation prog comp platform opts = - (programInvocation prog (renderGhcOptions comp platform opts)) - { progInvokePathEnv = fromNubListR (ghcOptExtraPath opts) - } + -> IO ProgramInvocation +ghcInvocation verbosity ghcProg comp platform opts = do + -- NOTE: GHC is the only program whose path we modify with more values than + -- the standard @extra-prog-path@, namely the folders of the executables in + -- the components, see @componentGhcOptions@. + let envOverrides = programOverrideEnv ghcProg + extraPath <- getExtraPathEnv verbosity envOverrides (fromNubListR (ghcOptExtraPath opts)) + let ghcProg' = ghcProg{programOverrideEnv = envOverrides ++ extraPath} + + pure $ programInvocation ghcProg' (renderGhcOptions comp platform opts) renderGhcOptions :: Compiler -> Platform -> GhcOptions -> [String] renderGhcOptions comp _platform@(Platform _arch os) opts diff --git a/Cabal/src/Distribution/Simple/Program/Run.hs b/Cabal/src/Distribution/Simple/Program/Run.hs index 27ff33dce01..268cb794505 100644 --- a/Cabal/src/Distribution/Simple/Program/Run.hs +++ b/Cabal/src/Distribution/Simple/Program/Run.hs @@ -36,7 +36,6 @@ import Distribution.Simple.Program.Types import Distribution.Simple.Utils import Distribution.Utils.Generic import Distribution.Verbosity -import System.FilePath (searchPathSeparator) import qualified Data.ByteString.Lazy as LBS import qualified Data.Map as Map @@ -51,8 +50,6 @@ data ProgramInvocation = ProgramInvocation { progInvokePath :: FilePath , progInvokeArgs :: [String] , progInvokeEnv :: [(String, Maybe String)] - , -- Extra paths to add to PATH - progInvokePathEnv :: [FilePath] , progInvokeCwd :: Maybe FilePath , progInvokeInput :: Maybe IOData , progInvokeInputEncoding :: IOEncoding @@ -75,7 +72,6 @@ emptyProgramInvocation = { progInvokePath = "" , progInvokeArgs = [] , progInvokeEnv = [] - , progInvokePathEnv = [] , progInvokeCwd = Nothing , progInvokeInput = Nothing , progInvokeInputEncoding = IOEncodingText @@ -107,7 +103,6 @@ runProgramInvocation { progInvokePath = path , progInvokeArgs = args , progInvokeEnv = [] - , progInvokePathEnv = [] , progInvokeCwd = Nothing , progInvokeInput = Nothing } = @@ -118,12 +113,10 @@ runProgramInvocation { progInvokePath = path , progInvokeArgs = args , progInvokeEnv = envOverrides - , progInvokePathEnv = extraPath , progInvokeCwd = mcwd , progInvokeInput = Nothing } = do - pathOverride <- getExtraPathEnv envOverrides extraPath - menv <- getEffectiveEnvironment (envOverrides ++ pathOverride) + menv <- getEffectiveEnvironment envOverrides maybeExit $ rawSystemIOWithEnv verbosity @@ -140,13 +133,11 @@ runProgramInvocation { progInvokePath = path , progInvokeArgs = args , progInvokeEnv = envOverrides - , progInvokePathEnv = extraPath , progInvokeCwd = mcwd , progInvokeInput = Just inputStr , progInvokeInputEncoding = encoding } = do - pathOverride <- getExtraPathEnv envOverrides extraPath - menv <- getEffectiveEnvironment (envOverrides ++ pathOverride) + menv <- getEffectiveEnvironment envOverrides (_, errors, exitCode) <- rawSystemStdInOut verbosity @@ -202,30 +193,16 @@ getProgramInvocationIODataAndErrors { progInvokePath = path , progInvokeArgs = args , progInvokeEnv = envOverrides - , progInvokePathEnv = extraPath , progInvokeCwd = mcwd , progInvokeInput = minputStr , progInvokeInputEncoding = encoding } mode = do - pathOverride <- getExtraPathEnv envOverrides extraPath - menv <- getEffectiveEnvironment (envOverrides ++ pathOverride) + menv <- getEffectiveEnvironment envOverrides rawSystemStdInOut verbosity path args mcwd menv input mode where input = encodeToIOData encoding <$> minputStr -getExtraPathEnv :: [(String, Maybe String)] -> [FilePath] -> IO [(String, Maybe String)] -getExtraPathEnv _ [] = return [] -getExtraPathEnv env extras = do - mb_path <- case lookup "PATH" env of - Just x -> return x - Nothing -> lookupEnv "PATH" - let extra = intercalate [searchPathSeparator] extras - path' = case mb_path of - Nothing -> extra - Just path -> extra ++ searchPathSeparator : path - return [("PATH", Just path')] - -- | Return the current environment extended with the given overrides. -- If an entry is specified twice in @overrides@, the second entry takes -- precedence. diff --git a/Cabal/src/Distribution/Simple/Program/Types.hs b/Cabal/src/Distribution/Simple/Program/Types.hs index 30f35b57a7a..f1b42f63853 100644 --- a/Cabal/src/Distribution/Simple/Program/Types.hs +++ b/Cabal/src/Distribution/Simple/Program/Types.hs @@ -93,6 +93,13 @@ type ProgArg = String -- dir to search after the usual ones. -- -- > ['ProgramSearchPathDefault', 'ProgramSearchPathDir' dir] +-- +-- We also use this path to set the environment when running child processes. +-- +-- The @ProgramDb@ is created with a @ProgramSearchPath@ to which we +-- @appendProgramSearchPath@ to add the ones that come from cli flags and from +-- configurations. Then each of the programs that are configured in the db +-- inherits the same path as part of @configureProgram@. type ProgramSearchPath = [ProgramSearchPathEntry] data ProgramSearchPathEntry diff --git a/bootstrap/linux-8.10.7.json b/bootstrap/linux-8.10.7.json index 52852989fe0..e3a52ace4fc 100644 --- a/bootstrap/linux-8.10.7.json +++ b/bootstrap/linux-8.10.7.json @@ -63,14 +63,14 @@ ], "dependencies": [ { - "cabal_sha256": "458d4794a5ced371a844e325fe539dd5fee8fe41f78b6f00e6c70920b7dd18e3", + "cabal_sha256": "446ad0a558ee7efcb0aeebfe147bf3897c50241231a9131ff7d7d24f2c3c1f2f", "component": "lib:bytestring", "flags": [], "package": "bytestring", "revision": 0, "source": "hackage", - "src_sha256": "76193d39b66197107f452184597a4e458194c64731efbba1e9605550c732f7f4", - "version": "0.11.5.0" + "src_sha256": "043a323d506c37e6c71e822f54bca11631c86919d02bc414940935700bfc5c8d", + "version": "0.11.5.2" }, { "cabal_sha256": "2de84756d3907308230e34fcc7c1917a73f218f6d53838618b7d5b95dd33e2c3", @@ -85,21 +85,21 @@ "version": "1.4.100.4" }, { - "cabal_sha256": "91cbc951a742fc2c95d5902be38fcf1b859c2891241bc353ff16154a8f7c35ae", + "cabal_sha256": "6dfdbb57fcfe5b0b6ecdaf633bc1cceb98a87800a22544f42354375016c6e66c", "component": "lib:unix", "flags": [], "package": "unix", "revision": 0, "source": "hackage", - "src_sha256": "cc287659427c80f3598c199387ba7eb7d4cc3270cbb31f75e2f677e879f26384", - "version": "2.8.1.1" + "src_sha256": "a9dc7868d42ec10e38c4d785eaec7f98d401590d4ebfd8f17ef59da3f18a5dab", + "version": "2.8.3.0" }, { - "cabal_sha256": "e384a4831b0ac0f8908a1d99d14ce44bf9c5fe2092eec5b2c47ea072d477a493", + "cabal_sha256": "bd3b0a0947a365d2da80b9f4a960a864d42ffa7a46577fdc7a0611703486a7f9", "component": "lib:directory", "flags": [], "package": "directory", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "bd8253197587d32d4553070d2de89d3817176860932b0e9ab7bb7ba3759d8e9c", "version": "1.3.8.1" @@ -125,27 +125,37 @@ "version": "0.8.9.1" }, { - "cabal_sha256": "71b5fa8c64d3c1fd0a08f993463220867b08290a2256e94b0952bf0e8f5a45cc", + "cabal_sha256": "ad89e28b2b046175698fbf542af2ce43e5d2af50aae9f48d12566b1bb3de1d3c", + "component": "lib:data-array-byte", + "flags": [], + "package": "data-array-byte", + "revision": 2, + "source": "hackage", + "src_sha256": "1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600", + "version": "0.1.0.1" + }, + { + "cabal_sha256": "471b9a22f88b1d51bc343e7d1db7bf88b84e1582eb6d5fbe643fe7afc683c256", "component": "lib:text", "flags": [ "-developer", "+simdutf" ], "package": "text", - "revision": 1, + "revision": 0, "source": "hackage", - "src_sha256": "c735be650a898606ce9f2c8642bc6ac6123eea82871d5e90f92797801f59efad", - "version": "2.0.2" + "src_sha256": "cbe65b04a28a96a1de364d19c5ee33dc63cd253aa2716d22ceb8496b2062b6c8", + "version": "2.1" }, { - "cabal_sha256": "5769242043b01bf759b07b7efedcb19607837ee79015fcddde34645664136aed", + "cabal_sha256": "6cf18e59d9f1c5b40385457b82ab679dc18d3c5bd3c2c67b2f94e1e8732e6624", "component": "lib:parsec", "flags": [], "package": "parsec", "revision": 0, "source": "hackage", - "src_sha256": "a41962e5d76ea68658876735b8d5b755e0eff336b079d0a2f439c364755d1246", - "version": "3.1.16.1" + "src_sha256": "58c500bec1ec3c849c8243ddfd675a5983b17a8e5da55acea6adade5ae179d36", + "version": "3.1.17.0" }, { "cabal_sha256": null, @@ -158,14 +168,14 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "49d8a7f372d35363011591b253cae4c8db8b9ec594590448e20b7bed7acaee98", + "cabal_sha256": "69fbbca4151e1a6d1a5da41a1e17c254871675a4f2aed5213bbdfb10b5e52742", "component": "lib:process", "flags": [], "package": "process", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "4c5c454e0f5c864c79b9fabd850307b26d8ac4037e45a6a39ab87e20b583bf06", - "version": "1.6.17.0" + "src_sha256": "aa5f4c4fe4974f89f5ab998c7509daa4bda3926cfb06daacd5eba892aad8a37e", + "version": "1.6.18.0" }, { "cabal_sha256": null, @@ -178,16 +188,16 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "115b8c34b9f83603cfd9eb8b1e2d7ac520da0a4a43d96be435f06ce01a7bc95e", + "cabal_sha256": "488cca2a179a5141da8f35a3a7e6699a0ef690f834f589d6b152c4947aa8fe2d", "component": "exe:hsc2hs", "flags": [ "-in-ghc-tree" ], "package": "hsc2hs", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "c95b10ce0b2c881480e35118d738dcc9cefc435ec72baa0031af81d0d4d3bc0a", - "version": "0.68.9" + "src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76", + "version": "0.68.10" }, { "cabal_sha256": "e152cdb03243afb52bbc740cfbe96905ca298a6f6342f0c47b3f2e227ff19def", @@ -202,27 +212,27 @@ "version": "3.1.4.0" }, { - "cabal_sha256": "e5ae7c083ef3a22248558f8451669bb1c55ea8090f5908b86b9033743c161730", + "cabal_sha256": "3e7d1b8f9c72cab04c8dfdfd26589dd7f31e015ad640a207aca3b654577532ff", "component": "lib:th-compat", "flags": [], "package": "th-compat", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8", "version": "0.1.4" }, { - "cabal_sha256": "1fde59abf5d82a9666b4415bc2b2e9e33f6c1309074fda12d50410c7dbd95f3b", + "cabal_sha256": "6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588", "component": "lib:network-uri", "flags": [], "package": "network-uri", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228", "version": "2.6.4.2" }, { - "cabal_sha256": "d9220cc1b8c1f287248d650910710b96e62e54530772e3bcd19dbdec6547f8ae", + "cabal_sha256": "0e37572590743e49d7a610f472e1618a594dc861410846f64d9f2347923c4f5b", "component": "lib:HTTP", "flags": [ "-conduit10", @@ -231,33 +241,23 @@ "-warp-tests" ], "package": "HTTP", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453", "version": "4000.4.1" }, { - "cabal_sha256": "0bdd3486d3a1bcbed0513b46af4a13ca74b395313fa5b6e0068d6b7413b76a04", + "cabal_sha256": "c4733d09f798fc4304e936924a1a7d9fc2425aefad6c46ad4592035254b46051", "component": "lib:base-orphans", "flags": [], "package": "base-orphans", "revision": 0, "source": "hackage", - "src_sha256": "613ed4d8241ed5a648a59ae6569a6962990bb545711d020d49fb83fa12d16e62", - "version": "0.9.0" - }, - { - "cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada", - "component": "lib:data-array-byte", - "flags": [], - "package": "data-array-byte", - "revision": 1, - "source": "hackage", - "src_sha256": "1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600", - "version": "0.1.0.1" + "src_sha256": "5bbf2da382c5b212d6a8be2f8c49edee0eba30f272a15fd32c13e6e4091ef172", + "version": "0.9.1" }, { - "cabal_sha256": "585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a", + "cabal_sha256": "f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194", "component": "lib:hashable", "flags": [ "+integer-gmp", @@ -266,27 +266,27 @@ "package": "hashable", "revision": 1, "source": "hackage", - "src_sha256": "1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8", - "version": "1.4.2.0" + "src_sha256": "32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5", + "version": "1.4.3.0" }, { - "cabal_sha256": "46367dc0c8326dcbeb7b93f200b567491c2f6029bccf822b8bb26ee660397e08", + "cabal_sha256": "9b8ceefce014e490f9e1335fa5f511161309926c55d01cec795016f4363b5d2d", "component": "lib:async", "flags": [ "-bench" ], "package": "async", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "484df85be0e76c4fed9376451e48e1d0c6e97952ce79735b72d54297e7e0a725", "version": "2.2.4" }, { - "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a", + "cabal_sha256": "a694e88f9ec9fc79f0b03f233d3fea592b68f70a34aac2ddb5bcaecb6562e2fd", "component": "lib:base16-bytestring", "flags": [], "package": "base16-bytestring", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784", "version": "1.0.2.0" @@ -302,23 +302,23 @@ "version": "1.2.1.0" }, { - "cabal_sha256": "db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e", + "cabal_sha256": "bac0ae8d46a04e410666b0c8081cff63f060f29157983b569ca86ddb6e6e0dc6", "component": "lib:splitmix", "flags": [ "-optimised-mixer" ], "package": "splitmix", - "revision": 2, + "revision": 0, "source": "hackage", - "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa", - "version": "0.1.0.4" + "src_sha256": "9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002", + "version": "0.1.0.5" }, { - "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9", + "cabal_sha256": "e7c1f881159d5cc788619c9ee8b8f340ba2ff0db571cdf3d1a1968ebc5108789", "component": "lib:random", "flags": [], "package": "random", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76", "version": "1.2.1.1" @@ -347,14 +347,14 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc", + "cabal_sha256": "03db065161987f614a3a2bbcd16264f78e47efe231fb5bd161be2043eaf20488", "component": "lib:cryptohash-sha256", "flags": [ "-exe", "+use-cbits" ], "package": "cryptohash-sha256", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6", "version": "0.11.102.1" @@ -372,7 +372,7 @@ "version": "0.1.4" }, { - "cabal_sha256": "3db04d7c18b9e68ba5eef3fa7eeca05e1e248958dd182290c8e6b010c81ef73e", + "cabal_sha256": "48383789821af5cc624498f3ee1d0939a070cda9468c0bfe63c951736be81c75", "component": "lib:ed25519", "flags": [ "+no-donna", @@ -381,38 +381,38 @@ "+test-properties" ], "package": "ed25519", - "revision": 7, + "revision": 8, "source": "hackage", "src_sha256": "d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d", "version": "0.0.5.0" }, { - "cabal_sha256": "9ab54ee4f80bbd8a3fddd639ea142b7039ee2deb27f7df031a93de1819e34146", + "cabal_sha256": "17786545dce60c4d5783ba6125c0a6499a1abddd3d7417b15500ccd767c35f07", "component": "lib:lukko", "flags": [ "+ofd-locking" ], "package": "lukko", - "revision": 4, + "revision": 5, "source": "hackage", "src_sha256": "a80efb60cfa3dae18682c01980d76d5f7e413e191cd186992e1bf7388d48ab1f", "version": "0.1.1.3" }, { - "cabal_sha256": "63dbcb0f507273a8331363e4c13a1fe91f4ea0c495883cf65f314629582a2630", + "cabal_sha256": "aaf5dd3ef327aaf203b1cb199760efd463fac2256453dd0e05d5cd707cdbd6e1", "component": "lib:tar", "flags": [ "-old-bytestring", "-old-time" ], "package": "tar", - "revision": 6, + "revision": 10, "source": "hackage", "src_sha256": "b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de", "version": "0.5.1.1" }, { - "cabal_sha256": "386dd93bc0352bf6ad5c6bca4dee0442b52d95b4c34e85901064f3eb05c81731", + "cabal_sha256": "19eb7759af71957811d5ec10ddb1e2f4c98700ddb9c0da6860c0441d811f0e6d", "component": "lib:zlib", "flags": [ "-bundled-c-zlib", @@ -420,13 +420,13 @@ "-pkg-config" ], "package": "zlib", - "revision": 2, + "revision": 4, "source": "hackage", "src_sha256": "9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da", "version": "0.6.3.0" }, { - "cabal_sha256": "2e5893334ee8967a990349a04953331b28e83bebd64d4f7cb46b71603d183d0c", + "cabal_sha256": "2b2e560ac449e49f86a10d79957b2409da5be4b77edabd7425696780334cf3bf", "component": "lib:hackage-security", "flags": [ "+base48", @@ -437,49 +437,59 @@ "+use-network-uri" ], "package": "hackage-security", - "revision": 5, + "revision": 8, "source": "hackage", "src_sha256": "52ee0576971955571d846b8e6c09638f89f4f7881f4a95173e44ccc0d856a066", "version": "0.6.2.3" }, { - "cabal_sha256": "3a76c313f9f75e8e0b3c103c1bff5bbaf754da30cbddedc1d5b7061d001030e0", + "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", + "component": "lib:open-browser", + "flags": [], + "package": "open-browser", + "revision": 0, + "source": "hackage", + "src_sha256": "0bed2e63800f738e78a4803ed22902accb50ac02068b96c17ce83a267244ca66", + "version": "0.2.1.0" + }, + { + "cabal_sha256": "0322b2fcd1358f3355e0c8608efa60d27b14d1c9d476451dbcb9181363bd8b27", "component": "lib:regex-base", "flags": [], "package": "regex-base", - "revision": 2, + "revision": 4, "source": "hackage", "src_sha256": "7b99408f580f5bb67a1c413e0bc735886608251331ad36322020f2169aea2ef1", "version": "0.94.0.2" }, { - "cabal_sha256": "d479ca2cc6274c15801169f83dae883c9b62b78af3c7b30ed3fbd4b4612156b8", + "cabal_sha256": "816d6acc560cb86672f347a7bef8129578dde26ed760f9e79b4976ed9bd7b9fd", "component": "lib:regex-posix", "flags": [ "-_regex-posix-clib" ], "package": "regex-posix", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "c7827c391919227711e1cff0a762b1678fd8739f9c902fc183041ff34f59259c", "version": "0.96.0.1" }, { - "cabal_sha256": "a42b4a473478db92f4728f755403db232b55445e3091a957be073fc8e84e5d46", + "cabal_sha256": "4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045", "component": "lib:resolv", "flags": [], "package": "resolv", - "revision": 1, + "revision": 3, "source": "hackage", "src_sha256": "880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b", "version": "0.2.0.2" }, { - "cabal_sha256": "f4aad0eca90044cb1eba53b84f75d5fa142d25d695117730bf31178d409c4fe0", + "cabal_sha256": "8bb7261bd54bd58acfcb154be6a161fb6d0d31a1852aadc8e927d2ad2d7651d1", "component": "lib:safe-exceptions", "flags": [], "package": "safe-exceptions", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "3c51d8d50c9b60ff8bf94f942fd92e3bea9e62c5afa778dfc9f707b79da41ef6", "version": "0.1.7.4" @@ -519,6 +529,16 @@ "source": "local", "src_sha256": null, "version": "3.11.0.0" + }, + { + "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", + "component": "exe:example", + "flags": [], + "package": "open-browser", + "revision": 0, + "source": "hackage", + "src_sha256": "0bed2e63800f738e78a4803ed22902accb50ac02068b96c17ce83a267244ca66", + "version": "0.2.1.0" } ] } diff --git a/bootstrap/linux-9.0.2.json b/bootstrap/linux-9.0.2.json index e870c3f507e..5b328ccc3d2 100644 --- a/bootstrap/linux-9.0.2.json +++ b/bootstrap/linux-9.0.2.json @@ -63,14 +63,14 @@ ], "dependencies": [ { - "cabal_sha256": "458d4794a5ced371a844e325fe539dd5fee8fe41f78b6f00e6c70920b7dd18e3", + "cabal_sha256": "446ad0a558ee7efcb0aeebfe147bf3897c50241231a9131ff7d7d24f2c3c1f2f", "component": "lib:bytestring", "flags": [], "package": "bytestring", "revision": 0, "source": "hackage", - "src_sha256": "76193d39b66197107f452184597a4e458194c64731efbba1e9605550c732f7f4", - "version": "0.11.5.0" + "src_sha256": "043a323d506c37e6c71e822f54bca11631c86919d02bc414940935700bfc5c8d", + "version": "0.11.5.2" }, { "cabal_sha256": "2de84756d3907308230e34fcc7c1917a73f218f6d53838618b7d5b95dd33e2c3", @@ -85,21 +85,21 @@ "version": "1.4.100.4" }, { - "cabal_sha256": "91cbc951a742fc2c95d5902be38fcf1b859c2891241bc353ff16154a8f7c35ae", + "cabal_sha256": "6dfdbb57fcfe5b0b6ecdaf633bc1cceb98a87800a22544f42354375016c6e66c", "component": "lib:unix", "flags": [], "package": "unix", "revision": 0, "source": "hackage", - "src_sha256": "cc287659427c80f3598c199387ba7eb7d4cc3270cbb31f75e2f677e879f26384", - "version": "2.8.1.1" + "src_sha256": "a9dc7868d42ec10e38c4d785eaec7f98d401590d4ebfd8f17ef59da3f18a5dab", + "version": "2.8.3.0" }, { - "cabal_sha256": "e384a4831b0ac0f8908a1d99d14ce44bf9c5fe2092eec5b2c47ea072d477a493", + "cabal_sha256": "bd3b0a0947a365d2da80b9f4a960a864d42ffa7a46577fdc7a0611703486a7f9", "component": "lib:directory", "flags": [], "package": "directory", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "bd8253197587d32d4553070d2de89d3817176860932b0e9ab7bb7ba3759d8e9c", "version": "1.3.8.1" @@ -125,27 +125,37 @@ "version": "0.8.9.1" }, { - "cabal_sha256": "71b5fa8c64d3c1fd0a08f993463220867b08290a2256e94b0952bf0e8f5a45cc", + "cabal_sha256": "ad89e28b2b046175698fbf542af2ce43e5d2af50aae9f48d12566b1bb3de1d3c", + "component": "lib:data-array-byte", + "flags": [], + "package": "data-array-byte", + "revision": 2, + "source": "hackage", + "src_sha256": "1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600", + "version": "0.1.0.1" + }, + { + "cabal_sha256": "471b9a22f88b1d51bc343e7d1db7bf88b84e1582eb6d5fbe643fe7afc683c256", "component": "lib:text", "flags": [ "-developer", "+simdutf" ], "package": "text", - "revision": 1, + "revision": 0, "source": "hackage", - "src_sha256": "c735be650a898606ce9f2c8642bc6ac6123eea82871d5e90f92797801f59efad", - "version": "2.0.2" + "src_sha256": "cbe65b04a28a96a1de364d19c5ee33dc63cd253aa2716d22ceb8496b2062b6c8", + "version": "2.1" }, { - "cabal_sha256": "5769242043b01bf759b07b7efedcb19607837ee79015fcddde34645664136aed", + "cabal_sha256": "6cf18e59d9f1c5b40385457b82ab679dc18d3c5bd3c2c67b2f94e1e8732e6624", "component": "lib:parsec", "flags": [], "package": "parsec", "revision": 0, "source": "hackage", - "src_sha256": "a41962e5d76ea68658876735b8d5b755e0eff336b079d0a2f439c364755d1246", - "version": "3.1.16.1" + "src_sha256": "58c500bec1ec3c849c8243ddfd675a5983b17a8e5da55acea6adade5ae179d36", + "version": "3.1.17.0" }, { "cabal_sha256": null, @@ -158,14 +168,14 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "49d8a7f372d35363011591b253cae4c8db8b9ec594590448e20b7bed7acaee98", + "cabal_sha256": "69fbbca4151e1a6d1a5da41a1e17c254871675a4f2aed5213bbdfb10b5e52742", "component": "lib:process", "flags": [], "package": "process", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "4c5c454e0f5c864c79b9fabd850307b26d8ac4037e45a6a39ab87e20b583bf06", - "version": "1.6.17.0" + "src_sha256": "aa5f4c4fe4974f89f5ab998c7509daa4bda3926cfb06daacd5eba892aad8a37e", + "version": "1.6.18.0" }, { "cabal_sha256": null, @@ -178,16 +188,16 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "115b8c34b9f83603cfd9eb8b1e2d7ac520da0a4a43d96be435f06ce01a7bc95e", + "cabal_sha256": "488cca2a179a5141da8f35a3a7e6699a0ef690f834f589d6b152c4947aa8fe2d", "component": "exe:hsc2hs", "flags": [ "-in-ghc-tree" ], "package": "hsc2hs", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "c95b10ce0b2c881480e35118d738dcc9cefc435ec72baa0031af81d0d4d3bc0a", - "version": "0.68.9" + "src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76", + "version": "0.68.10" }, { "cabal_sha256": "e152cdb03243afb52bbc740cfbe96905ca298a6f6342f0c47b3f2e227ff19def", @@ -202,27 +212,27 @@ "version": "3.1.4.0" }, { - "cabal_sha256": "e5ae7c083ef3a22248558f8451669bb1c55ea8090f5908b86b9033743c161730", + "cabal_sha256": "3e7d1b8f9c72cab04c8dfdfd26589dd7f31e015ad640a207aca3b654577532ff", "component": "lib:th-compat", "flags": [], "package": "th-compat", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8", "version": "0.1.4" }, { - "cabal_sha256": "1fde59abf5d82a9666b4415bc2b2e9e33f6c1309074fda12d50410c7dbd95f3b", + "cabal_sha256": "6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588", "component": "lib:network-uri", "flags": [], "package": "network-uri", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228", "version": "2.6.4.2" }, { - "cabal_sha256": "d9220cc1b8c1f287248d650910710b96e62e54530772e3bcd19dbdec6547f8ae", + "cabal_sha256": "0e37572590743e49d7a610f472e1618a594dc861410846f64d9f2347923c4f5b", "component": "lib:HTTP", "flags": [ "-conduit10", @@ -231,33 +241,23 @@ "-warp-tests" ], "package": "HTTP", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453", "version": "4000.4.1" }, { - "cabal_sha256": "0bdd3486d3a1bcbed0513b46af4a13ca74b395313fa5b6e0068d6b7413b76a04", + "cabal_sha256": "c4733d09f798fc4304e936924a1a7d9fc2425aefad6c46ad4592035254b46051", "component": "lib:base-orphans", "flags": [], "package": "base-orphans", "revision": 0, "source": "hackage", - "src_sha256": "613ed4d8241ed5a648a59ae6569a6962990bb545711d020d49fb83fa12d16e62", - "version": "0.9.0" - }, - { - "cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada", - "component": "lib:data-array-byte", - "flags": [], - "package": "data-array-byte", - "revision": 1, - "source": "hackage", - "src_sha256": "1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600", - "version": "0.1.0.1" + "src_sha256": "5bbf2da382c5b212d6a8be2f8c49edee0eba30f272a15fd32c13e6e4091ef172", + "version": "0.9.1" }, { - "cabal_sha256": "585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a", + "cabal_sha256": "f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194", "component": "lib:hashable", "flags": [ "+integer-gmp", @@ -266,27 +266,27 @@ "package": "hashable", "revision": 1, "source": "hackage", - "src_sha256": "1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8", - "version": "1.4.2.0" + "src_sha256": "32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5", + "version": "1.4.3.0" }, { - "cabal_sha256": "46367dc0c8326dcbeb7b93f200b567491c2f6029bccf822b8bb26ee660397e08", + "cabal_sha256": "9b8ceefce014e490f9e1335fa5f511161309926c55d01cec795016f4363b5d2d", "component": "lib:async", "flags": [ "-bench" ], "package": "async", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "484df85be0e76c4fed9376451e48e1d0c6e97952ce79735b72d54297e7e0a725", "version": "2.2.4" }, { - "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a", + "cabal_sha256": "a694e88f9ec9fc79f0b03f233d3fea592b68f70a34aac2ddb5bcaecb6562e2fd", "component": "lib:base16-bytestring", "flags": [], "package": "base16-bytestring", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784", "version": "1.0.2.0" @@ -302,23 +302,23 @@ "version": "1.2.1.0" }, { - "cabal_sha256": "db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e", + "cabal_sha256": "bac0ae8d46a04e410666b0c8081cff63f060f29157983b569ca86ddb6e6e0dc6", "component": "lib:splitmix", "flags": [ "-optimised-mixer" ], "package": "splitmix", - "revision": 2, + "revision": 0, "source": "hackage", - "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa", - "version": "0.1.0.4" + "src_sha256": "9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002", + "version": "0.1.0.5" }, { - "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9", + "cabal_sha256": "e7c1f881159d5cc788619c9ee8b8f340ba2ff0db571cdf3d1a1968ebc5108789", "component": "lib:random", "flags": [], "package": "random", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76", "version": "1.2.1.1" @@ -347,14 +347,14 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc", + "cabal_sha256": "03db065161987f614a3a2bbcd16264f78e47efe231fb5bd161be2043eaf20488", "component": "lib:cryptohash-sha256", "flags": [ "-exe", "+use-cbits" ], "package": "cryptohash-sha256", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6", "version": "0.11.102.1" @@ -372,7 +372,7 @@ "version": "0.1.4" }, { - "cabal_sha256": "3db04d7c18b9e68ba5eef3fa7eeca05e1e248958dd182290c8e6b010c81ef73e", + "cabal_sha256": "48383789821af5cc624498f3ee1d0939a070cda9468c0bfe63c951736be81c75", "component": "lib:ed25519", "flags": [ "+no-donna", @@ -381,38 +381,38 @@ "+test-properties" ], "package": "ed25519", - "revision": 7, + "revision": 8, "source": "hackage", "src_sha256": "d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d", "version": "0.0.5.0" }, { - "cabal_sha256": "9ab54ee4f80bbd8a3fddd639ea142b7039ee2deb27f7df031a93de1819e34146", + "cabal_sha256": "17786545dce60c4d5783ba6125c0a6499a1abddd3d7417b15500ccd767c35f07", "component": "lib:lukko", "flags": [ "+ofd-locking" ], "package": "lukko", - "revision": 4, + "revision": 5, "source": "hackage", "src_sha256": "a80efb60cfa3dae18682c01980d76d5f7e413e191cd186992e1bf7388d48ab1f", "version": "0.1.1.3" }, { - "cabal_sha256": "63dbcb0f507273a8331363e4c13a1fe91f4ea0c495883cf65f314629582a2630", + "cabal_sha256": "aaf5dd3ef327aaf203b1cb199760efd463fac2256453dd0e05d5cd707cdbd6e1", "component": "lib:tar", "flags": [ "-old-bytestring", "-old-time" ], "package": "tar", - "revision": 6, + "revision": 10, "source": "hackage", "src_sha256": "b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de", "version": "0.5.1.1" }, { - "cabal_sha256": "386dd93bc0352bf6ad5c6bca4dee0442b52d95b4c34e85901064f3eb05c81731", + "cabal_sha256": "19eb7759af71957811d5ec10ddb1e2f4c98700ddb9c0da6860c0441d811f0e6d", "component": "lib:zlib", "flags": [ "-bundled-c-zlib", @@ -420,13 +420,13 @@ "-pkg-config" ], "package": "zlib", - "revision": 2, + "revision": 4, "source": "hackage", "src_sha256": "9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da", "version": "0.6.3.0" }, { - "cabal_sha256": "2e5893334ee8967a990349a04953331b28e83bebd64d4f7cb46b71603d183d0c", + "cabal_sha256": "2b2e560ac449e49f86a10d79957b2409da5be4b77edabd7425696780334cf3bf", "component": "lib:hackage-security", "flags": [ "+base48", @@ -437,49 +437,59 @@ "+use-network-uri" ], "package": "hackage-security", - "revision": 5, + "revision": 8, "source": "hackage", "src_sha256": "52ee0576971955571d846b8e6c09638f89f4f7881f4a95173e44ccc0d856a066", "version": "0.6.2.3" }, { - "cabal_sha256": "3a76c313f9f75e8e0b3c103c1bff5bbaf754da30cbddedc1d5b7061d001030e0", + "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", + "component": "lib:open-browser", + "flags": [], + "package": "open-browser", + "revision": 0, + "source": "hackage", + "src_sha256": "0bed2e63800f738e78a4803ed22902accb50ac02068b96c17ce83a267244ca66", + "version": "0.2.1.0" + }, + { + "cabal_sha256": "0322b2fcd1358f3355e0c8608efa60d27b14d1c9d476451dbcb9181363bd8b27", "component": "lib:regex-base", "flags": [], "package": "regex-base", - "revision": 2, + "revision": 4, "source": "hackage", "src_sha256": "7b99408f580f5bb67a1c413e0bc735886608251331ad36322020f2169aea2ef1", "version": "0.94.0.2" }, { - "cabal_sha256": "d479ca2cc6274c15801169f83dae883c9b62b78af3c7b30ed3fbd4b4612156b8", + "cabal_sha256": "816d6acc560cb86672f347a7bef8129578dde26ed760f9e79b4976ed9bd7b9fd", "component": "lib:regex-posix", "flags": [ "-_regex-posix-clib" ], "package": "regex-posix", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "c7827c391919227711e1cff0a762b1678fd8739f9c902fc183041ff34f59259c", "version": "0.96.0.1" }, { - "cabal_sha256": "a42b4a473478db92f4728f755403db232b55445e3091a957be073fc8e84e5d46", + "cabal_sha256": "4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045", "component": "lib:resolv", "flags": [], "package": "resolv", - "revision": 1, + "revision": 3, "source": "hackage", "src_sha256": "880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b", "version": "0.2.0.2" }, { - "cabal_sha256": "f4aad0eca90044cb1eba53b84f75d5fa142d25d695117730bf31178d409c4fe0", + "cabal_sha256": "8bb7261bd54bd58acfcb154be6a161fb6d0d31a1852aadc8e927d2ad2d7651d1", "component": "lib:safe-exceptions", "flags": [], "package": "safe-exceptions", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "3c51d8d50c9b60ff8bf94f942fd92e3bea9e62c5afa778dfc9f707b79da41ef6", "version": "0.1.7.4" @@ -519,6 +529,16 @@ "source": "local", "src_sha256": null, "version": "3.11.0.0" + }, + { + "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", + "component": "exe:example", + "flags": [], + "package": "open-browser", + "revision": 0, + "source": "hackage", + "src_sha256": "0bed2e63800f738e78a4803ed22902accb50ac02068b96c17ce83a267244ca66", + "version": "0.2.1.0" } ] } diff --git a/bootstrap/linux-9.2.7.json b/bootstrap/linux-9.2.7.json index 408cd0f322b..b156917e3ee 100644 --- a/bootstrap/linux-9.2.7.json +++ b/bootstrap/linux-9.2.7.json @@ -91,21 +91,21 @@ "version": "1.4.100.4" }, { - "cabal_sha256": "91cbc951a742fc2c95d5902be38fcf1b859c2891241bc353ff16154a8f7c35ae", + "cabal_sha256": "6dfdbb57fcfe5b0b6ecdaf633bc1cceb98a87800a22544f42354375016c6e66c", "component": "lib:unix", "flags": [], "package": "unix", "revision": 0, "source": "hackage", - "src_sha256": "cc287659427c80f3598c199387ba7eb7d4cc3270cbb31f75e2f677e879f26384", - "version": "2.8.1.1" + "src_sha256": "a9dc7868d42ec10e38c4d785eaec7f98d401590d4ebfd8f17ef59da3f18a5dab", + "version": "2.8.3.0" }, { - "cabal_sha256": "e384a4831b0ac0f8908a1d99d14ce44bf9c5fe2092eec5b2c47ea072d477a493", + "cabal_sha256": "bd3b0a0947a365d2da80b9f4a960a864d42ffa7a46577fdc7a0611703486a7f9", "component": "lib:directory", "flags": [], "package": "directory", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "bd8253197587d32d4553070d2de89d3817176860932b0e9ab7bb7ba3759d8e9c", "version": "1.3.8.1" @@ -131,14 +131,14 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "49d8a7f372d35363011591b253cae4c8db8b9ec594590448e20b7bed7acaee98", + "cabal_sha256": "69fbbca4151e1a6d1a5da41a1e17c254871675a4f2aed5213bbdfb10b5e52742", "component": "lib:process", "flags": [], "package": "process", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "4c5c454e0f5c864c79b9fabd850307b26d8ac4037e45a6a39ab87e20b583bf06", - "version": "1.6.17.0" + "src_sha256": "aa5f4c4fe4974f89f5ab998c7509daa4bda3926cfb06daacd5eba892aad8a37e", + "version": "1.6.18.0" }, { "cabal_sha256": null, @@ -151,16 +151,16 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "115b8c34b9f83603cfd9eb8b1e2d7ac520da0a4a43d96be435f06ce01a7bc95e", + "cabal_sha256": "488cca2a179a5141da8f35a3a7e6699a0ef690f834f589d6b152c4947aa8fe2d", "component": "exe:hsc2hs", "flags": [ "-in-ghc-tree" ], "package": "hsc2hs", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "c95b10ce0b2c881480e35118d738dcc9cefc435ec72baa0031af81d0d4d3bc0a", - "version": "0.68.9" + "src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76", + "version": "0.68.10" }, { "cabal_sha256": "e152cdb03243afb52bbc740cfbe96905ca298a6f6342f0c47b3f2e227ff19def", @@ -175,27 +175,27 @@ "version": "3.1.4.0" }, { - "cabal_sha256": "e5ae7c083ef3a22248558f8451669bb1c55ea8090f5908b86b9033743c161730", + "cabal_sha256": "3e7d1b8f9c72cab04c8dfdfd26589dd7f31e015ad640a207aca3b654577532ff", "component": "lib:th-compat", "flags": [], "package": "th-compat", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8", "version": "0.1.4" }, { - "cabal_sha256": "1fde59abf5d82a9666b4415bc2b2e9e33f6c1309074fda12d50410c7dbd95f3b", + "cabal_sha256": "6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588", "component": "lib:network-uri", "flags": [], "package": "network-uri", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228", "version": "2.6.4.2" }, { - "cabal_sha256": "d9220cc1b8c1f287248d650910710b96e62e54530772e3bcd19dbdec6547f8ae", + "cabal_sha256": "0e37572590743e49d7a610f472e1618a594dc861410846f64d9f2347923c4f5b", "component": "lib:HTTP", "flags": [ "-conduit10", @@ -204,23 +204,23 @@ "-warp-tests" ], "package": "HTTP", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453", "version": "4000.4.1" }, { - "cabal_sha256": "2ef1bd3511e82ba56f7f23cd793dd2da84338a1e7c2cbea5b151417afe3baada", + "cabal_sha256": "ad89e28b2b046175698fbf542af2ce43e5d2af50aae9f48d12566b1bb3de1d3c", "component": "lib:data-array-byte", "flags": [], "package": "data-array-byte", - "revision": 1, + "revision": 2, "source": "hackage", "src_sha256": "1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600", "version": "0.1.0.1" }, { - "cabal_sha256": "585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a", + "cabal_sha256": "f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194", "component": "lib:hashable", "flags": [ "+integer-gmp", @@ -229,27 +229,27 @@ "package": "hashable", "revision": 1, "source": "hackage", - "src_sha256": "1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8", - "version": "1.4.2.0" + "src_sha256": "32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5", + "version": "1.4.3.0" }, { - "cabal_sha256": "46367dc0c8326dcbeb7b93f200b567491c2f6029bccf822b8bb26ee660397e08", + "cabal_sha256": "9b8ceefce014e490f9e1335fa5f511161309926c55d01cec795016f4363b5d2d", "component": "lib:async", "flags": [ "-bench" ], "package": "async", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "484df85be0e76c4fed9376451e48e1d0c6e97952ce79735b72d54297e7e0a725", "version": "2.2.4" }, { - "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a", + "cabal_sha256": "a694e88f9ec9fc79f0b03f233d3fea592b68f70a34aac2ddb5bcaecb6562e2fd", "component": "lib:base16-bytestring", "flags": [], "package": "base16-bytestring", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784", "version": "1.0.2.0" @@ -265,23 +265,23 @@ "version": "1.2.1.0" }, { - "cabal_sha256": "db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e", + "cabal_sha256": "bac0ae8d46a04e410666b0c8081cff63f060f29157983b569ca86ddb6e6e0dc6", "component": "lib:splitmix", "flags": [ "-optimised-mixer" ], "package": "splitmix", - "revision": 2, + "revision": 0, "source": "hackage", - "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa", - "version": "0.1.0.4" + "src_sha256": "9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002", + "version": "0.1.0.5" }, { - "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9", + "cabal_sha256": "e7c1f881159d5cc788619c9ee8b8f340ba2ff0db571cdf3d1a1968ebc5108789", "component": "lib:random", "flags": [], "package": "random", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76", "version": "1.2.1.1" @@ -310,14 +310,14 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc", + "cabal_sha256": "03db065161987f614a3a2bbcd16264f78e47efe231fb5bd161be2043eaf20488", "component": "lib:cryptohash-sha256", "flags": [ "-exe", "+use-cbits" ], "package": "cryptohash-sha256", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6", "version": "0.11.102.1" @@ -335,7 +335,7 @@ "version": "0.1.4" }, { - "cabal_sha256": "3db04d7c18b9e68ba5eef3fa7eeca05e1e248958dd182290c8e6b010c81ef73e", + "cabal_sha256": "48383789821af5cc624498f3ee1d0939a070cda9468c0bfe63c951736be81c75", "component": "lib:ed25519", "flags": [ "+no-donna", @@ -344,38 +344,38 @@ "+test-properties" ], "package": "ed25519", - "revision": 7, + "revision": 8, "source": "hackage", "src_sha256": "d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d", "version": "0.0.5.0" }, { - "cabal_sha256": "9ab54ee4f80bbd8a3fddd639ea142b7039ee2deb27f7df031a93de1819e34146", + "cabal_sha256": "17786545dce60c4d5783ba6125c0a6499a1abddd3d7417b15500ccd767c35f07", "component": "lib:lukko", "flags": [ "+ofd-locking" ], "package": "lukko", - "revision": 4, + "revision": 5, "source": "hackage", "src_sha256": "a80efb60cfa3dae18682c01980d76d5f7e413e191cd186992e1bf7388d48ab1f", "version": "0.1.1.3" }, { - "cabal_sha256": "63dbcb0f507273a8331363e4c13a1fe91f4ea0c495883cf65f314629582a2630", + "cabal_sha256": "aaf5dd3ef327aaf203b1cb199760efd463fac2256453dd0e05d5cd707cdbd6e1", "component": "lib:tar", "flags": [ "-old-bytestring", "-old-time" ], "package": "tar", - "revision": 6, + "revision": 10, "source": "hackage", "src_sha256": "b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de", "version": "0.5.1.1" }, { - "cabal_sha256": "386dd93bc0352bf6ad5c6bca4dee0442b52d95b4c34e85901064f3eb05c81731", + "cabal_sha256": "19eb7759af71957811d5ec10ddb1e2f4c98700ddb9c0da6860c0441d811f0e6d", "component": "lib:zlib", "flags": [ "-bundled-c-zlib", @@ -383,13 +383,13 @@ "-pkg-config" ], "package": "zlib", - "revision": 2, + "revision": 4, "source": "hackage", "src_sha256": "9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da", "version": "0.6.3.0" }, { - "cabal_sha256": "2e5893334ee8967a990349a04953331b28e83bebd64d4f7cb46b71603d183d0c", + "cabal_sha256": "2b2e560ac449e49f86a10d79957b2409da5be4b77edabd7425696780334cf3bf", "component": "lib:hackage-security", "flags": [ "+base48", @@ -400,49 +400,59 @@ "+use-network-uri" ], "package": "hackage-security", - "revision": 5, + "revision": 8, "source": "hackage", "src_sha256": "52ee0576971955571d846b8e6c09638f89f4f7881f4a95173e44ccc0d856a066", "version": "0.6.2.3" }, { - "cabal_sha256": "3a76c313f9f75e8e0b3c103c1bff5bbaf754da30cbddedc1d5b7061d001030e0", + "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", + "component": "lib:open-browser", + "flags": [], + "package": "open-browser", + "revision": 0, + "source": "hackage", + "src_sha256": "0bed2e63800f738e78a4803ed22902accb50ac02068b96c17ce83a267244ca66", + "version": "0.2.1.0" + }, + { + "cabal_sha256": "0322b2fcd1358f3355e0c8608efa60d27b14d1c9d476451dbcb9181363bd8b27", "component": "lib:regex-base", "flags": [], "package": "regex-base", - "revision": 2, + "revision": 4, "source": "hackage", "src_sha256": "7b99408f580f5bb67a1c413e0bc735886608251331ad36322020f2169aea2ef1", "version": "0.94.0.2" }, { - "cabal_sha256": "d479ca2cc6274c15801169f83dae883c9b62b78af3c7b30ed3fbd4b4612156b8", + "cabal_sha256": "816d6acc560cb86672f347a7bef8129578dde26ed760f9e79b4976ed9bd7b9fd", "component": "lib:regex-posix", "flags": [ "-_regex-posix-clib" ], "package": "regex-posix", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "c7827c391919227711e1cff0a762b1678fd8739f9c902fc183041ff34f59259c", "version": "0.96.0.1" }, { - "cabal_sha256": "a42b4a473478db92f4728f755403db232b55445e3091a957be073fc8e84e5d46", + "cabal_sha256": "4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045", "component": "lib:resolv", "flags": [], "package": "resolv", - "revision": 1, + "revision": 3, "source": "hackage", "src_sha256": "880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b", "version": "0.2.0.2" }, { - "cabal_sha256": "f4aad0eca90044cb1eba53b84f75d5fa142d25d695117730bf31178d409c4fe0", + "cabal_sha256": "8bb7261bd54bd58acfcb154be6a161fb6d0d31a1852aadc8e927d2ad2d7651d1", "component": "lib:safe-exceptions", "flags": [], "package": "safe-exceptions", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "3c51d8d50c9b60ff8bf94f942fd92e3bea9e62c5afa778dfc9f707b79da41ef6", "version": "0.1.7.4" @@ -482,6 +492,16 @@ "source": "local", "src_sha256": null, "version": "3.11.0.0" + }, + { + "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", + "component": "exe:example", + "flags": [], + "package": "open-browser", + "revision": 0, + "source": "hackage", + "src_sha256": "0bed2e63800f738e78a4803ed22902accb50ac02068b96c17ce83a267244ca66", + "version": "0.2.1.0" } ] } diff --git a/bootstrap/linux-9.4.4.json b/bootstrap/linux-9.4.4.json index 7d266473342..1235c077120 100644 --- a/bootstrap/linux-9.4.4.json +++ b/bootstrap/linux-9.4.4.json @@ -91,21 +91,21 @@ "version": "1.4.100.4" }, { - "cabal_sha256": "91cbc951a742fc2c95d5902be38fcf1b859c2891241bc353ff16154a8f7c35ae", + "cabal_sha256": "6dfdbb57fcfe5b0b6ecdaf633bc1cceb98a87800a22544f42354375016c6e66c", "component": "lib:unix", "flags": [], "package": "unix", "revision": 0, "source": "hackage", - "src_sha256": "cc287659427c80f3598c199387ba7eb7d4cc3270cbb31f75e2f677e879f26384", - "version": "2.8.1.1" + "src_sha256": "a9dc7868d42ec10e38c4d785eaec7f98d401590d4ebfd8f17ef59da3f18a5dab", + "version": "2.8.3.0" }, { - "cabal_sha256": "e384a4831b0ac0f8908a1d99d14ce44bf9c5fe2092eec5b2c47ea072d477a493", + "cabal_sha256": "bd3b0a0947a365d2da80b9f4a960a864d42ffa7a46577fdc7a0611703486a7f9", "component": "lib:directory", "flags": [], "package": "directory", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "bd8253197587d32d4553070d2de89d3817176860932b0e9ab7bb7ba3759d8e9c", "version": "1.3.8.1" @@ -131,14 +131,14 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "49d8a7f372d35363011591b253cae4c8db8b9ec594590448e20b7bed7acaee98", + "cabal_sha256": "69fbbca4151e1a6d1a5da41a1e17c254871675a4f2aed5213bbdfb10b5e52742", "component": "lib:process", "flags": [], "package": "process", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "4c5c454e0f5c864c79b9fabd850307b26d8ac4037e45a6a39ab87e20b583bf06", - "version": "1.6.17.0" + "src_sha256": "aa5f4c4fe4974f89f5ab998c7509daa4bda3926cfb06daacd5eba892aad8a37e", + "version": "1.6.18.0" }, { "cabal_sha256": null, @@ -151,16 +151,16 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "115b8c34b9f83603cfd9eb8b1e2d7ac520da0a4a43d96be435f06ce01a7bc95e", + "cabal_sha256": "488cca2a179a5141da8f35a3a7e6699a0ef690f834f589d6b152c4947aa8fe2d", "component": "exe:hsc2hs", "flags": [ "-in-ghc-tree" ], "package": "hsc2hs", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "c95b10ce0b2c881480e35118d738dcc9cefc435ec72baa0031af81d0d4d3bc0a", - "version": "0.68.9" + "src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76", + "version": "0.68.10" }, { "cabal_sha256": "e152cdb03243afb52bbc740cfbe96905ca298a6f6342f0c47b3f2e227ff19def", @@ -175,27 +175,27 @@ "version": "3.1.4.0" }, { - "cabal_sha256": "e5ae7c083ef3a22248558f8451669bb1c55ea8090f5908b86b9033743c161730", + "cabal_sha256": "3e7d1b8f9c72cab04c8dfdfd26589dd7f31e015ad640a207aca3b654577532ff", "component": "lib:th-compat", "flags": [], "package": "th-compat", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8", "version": "0.1.4" }, { - "cabal_sha256": "1fde59abf5d82a9666b4415bc2b2e9e33f6c1309074fda12d50410c7dbd95f3b", + "cabal_sha256": "6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588", "component": "lib:network-uri", "flags": [], "package": "network-uri", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228", "version": "2.6.4.2" }, { - "cabal_sha256": "d9220cc1b8c1f287248d650910710b96e62e54530772e3bcd19dbdec6547f8ae", + "cabal_sha256": "0e37572590743e49d7a610f472e1618a594dc861410846f64d9f2347923c4f5b", "component": "lib:HTTP", "flags": [ "-conduit10", @@ -204,13 +204,13 @@ "-warp-tests" ], "package": "HTTP", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453", "version": "4000.4.1" }, { - "cabal_sha256": "585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a", + "cabal_sha256": "f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194", "component": "lib:hashable", "flags": [ "+integer-gmp", @@ -219,27 +219,27 @@ "package": "hashable", "revision": 1, "source": "hackage", - "src_sha256": "1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8", - "version": "1.4.2.0" + "src_sha256": "32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5", + "version": "1.4.3.0" }, { - "cabal_sha256": "46367dc0c8326dcbeb7b93f200b567491c2f6029bccf822b8bb26ee660397e08", + "cabal_sha256": "9b8ceefce014e490f9e1335fa5f511161309926c55d01cec795016f4363b5d2d", "component": "lib:async", "flags": [ "-bench" ], "package": "async", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "484df85be0e76c4fed9376451e48e1d0c6e97952ce79735b72d54297e7e0a725", "version": "2.2.4" }, { - "cabal_sha256": "64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a", + "cabal_sha256": "a694e88f9ec9fc79f0b03f233d3fea592b68f70a34aac2ddb5bcaecb6562e2fd", "component": "lib:base16-bytestring", "flags": [], "package": "base16-bytestring", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784", "version": "1.0.2.0" @@ -255,23 +255,23 @@ "version": "1.2.1.0" }, { - "cabal_sha256": "db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e", + "cabal_sha256": "bac0ae8d46a04e410666b0c8081cff63f060f29157983b569ca86ddb6e6e0dc6", "component": "lib:splitmix", "flags": [ "-optimised-mixer" ], "package": "splitmix", - "revision": 2, + "revision": 0, "source": "hackage", - "src_sha256": "6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa", - "version": "0.1.0.4" + "src_sha256": "9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002", + "version": "0.1.0.5" }, { - "cabal_sha256": "dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9", + "cabal_sha256": "e7c1f881159d5cc788619c9ee8b8f340ba2ff0db571cdf3d1a1968ebc5108789", "component": "lib:random", "flags": [], "package": "random", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76", "version": "1.2.1.1" @@ -300,14 +300,14 @@ "version": "3.11.0.0" }, { - "cabal_sha256": "72ce9095872eae653addca5f412ac8070d6282d8e1c8578c2237c33f2cbbf4bc", + "cabal_sha256": "03db065161987f614a3a2bbcd16264f78e47efe231fb5bd161be2043eaf20488", "component": "lib:cryptohash-sha256", "flags": [ "-exe", "+use-cbits" ], "package": "cryptohash-sha256", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6", "version": "0.11.102.1" @@ -325,7 +325,7 @@ "version": "0.1.4" }, { - "cabal_sha256": "3db04d7c18b9e68ba5eef3fa7eeca05e1e248958dd182290c8e6b010c81ef73e", + "cabal_sha256": "48383789821af5cc624498f3ee1d0939a070cda9468c0bfe63c951736be81c75", "component": "lib:ed25519", "flags": [ "+no-donna", @@ -334,38 +334,38 @@ "+test-properties" ], "package": "ed25519", - "revision": 7, + "revision": 8, "source": "hackage", "src_sha256": "d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d", "version": "0.0.5.0" }, { - "cabal_sha256": "9ab54ee4f80bbd8a3fddd639ea142b7039ee2deb27f7df031a93de1819e34146", + "cabal_sha256": "17786545dce60c4d5783ba6125c0a6499a1abddd3d7417b15500ccd767c35f07", "component": "lib:lukko", "flags": [ "+ofd-locking" ], "package": "lukko", - "revision": 4, + "revision": 5, "source": "hackage", "src_sha256": "a80efb60cfa3dae18682c01980d76d5f7e413e191cd186992e1bf7388d48ab1f", "version": "0.1.1.3" }, { - "cabal_sha256": "63dbcb0f507273a8331363e4c13a1fe91f4ea0c495883cf65f314629582a2630", + "cabal_sha256": "aaf5dd3ef327aaf203b1cb199760efd463fac2256453dd0e05d5cd707cdbd6e1", "component": "lib:tar", "flags": [ "-old-bytestring", "-old-time" ], "package": "tar", - "revision": 6, + "revision": 10, "source": "hackage", "src_sha256": "b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de", "version": "0.5.1.1" }, { - "cabal_sha256": "386dd93bc0352bf6ad5c6bca4dee0442b52d95b4c34e85901064f3eb05c81731", + "cabal_sha256": "19eb7759af71957811d5ec10ddb1e2f4c98700ddb9c0da6860c0441d811f0e6d", "component": "lib:zlib", "flags": [ "-bundled-c-zlib", @@ -373,13 +373,13 @@ "-pkg-config" ], "package": "zlib", - "revision": 2, + "revision": 4, "source": "hackage", "src_sha256": "9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da", "version": "0.6.3.0" }, { - "cabal_sha256": "2e5893334ee8967a990349a04953331b28e83bebd64d4f7cb46b71603d183d0c", + "cabal_sha256": "2b2e560ac449e49f86a10d79957b2409da5be4b77edabd7425696780334cf3bf", "component": "lib:hackage-security", "flags": [ "+base48", @@ -390,49 +390,59 @@ "+use-network-uri" ], "package": "hackage-security", - "revision": 5, + "revision": 8, "source": "hackage", "src_sha256": "52ee0576971955571d846b8e6c09638f89f4f7881f4a95173e44ccc0d856a066", "version": "0.6.2.3" }, { - "cabal_sha256": "3a76c313f9f75e8e0b3c103c1bff5bbaf754da30cbddedc1d5b7061d001030e0", + "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", + "component": "lib:open-browser", + "flags": [], + "package": "open-browser", + "revision": 0, + "source": "hackage", + "src_sha256": "0bed2e63800f738e78a4803ed22902accb50ac02068b96c17ce83a267244ca66", + "version": "0.2.1.0" + }, + { + "cabal_sha256": "0322b2fcd1358f3355e0c8608efa60d27b14d1c9d476451dbcb9181363bd8b27", "component": "lib:regex-base", "flags": [], "package": "regex-base", - "revision": 2, + "revision": 4, "source": "hackage", "src_sha256": "7b99408f580f5bb67a1c413e0bc735886608251331ad36322020f2169aea2ef1", "version": "0.94.0.2" }, { - "cabal_sha256": "d479ca2cc6274c15801169f83dae883c9b62b78af3c7b30ed3fbd4b4612156b8", + "cabal_sha256": "816d6acc560cb86672f347a7bef8129578dde26ed760f9e79b4976ed9bd7b9fd", "component": "lib:regex-posix", "flags": [ "-_regex-posix-clib" ], "package": "regex-posix", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "c7827c391919227711e1cff0a762b1678fd8739f9c902fc183041ff34f59259c", "version": "0.96.0.1" }, { - "cabal_sha256": "a42b4a473478db92f4728f755403db232b55445e3091a957be073fc8e84e5d46", + "cabal_sha256": "4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045", "component": "lib:resolv", "flags": [], "package": "resolv", - "revision": 1, + "revision": 3, "source": "hackage", "src_sha256": "880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b", "version": "0.2.0.2" }, { - "cabal_sha256": "f4aad0eca90044cb1eba53b84f75d5fa142d25d695117730bf31178d409c4fe0", + "cabal_sha256": "8bb7261bd54bd58acfcb154be6a161fb6d0d31a1852aadc8e927d2ad2d7651d1", "component": "lib:safe-exceptions", "flags": [], "package": "safe-exceptions", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "3c51d8d50c9b60ff8bf94f942fd92e3bea9e62c5afa778dfc9f707b79da41ef6", "version": "0.1.7.4" @@ -472,6 +482,16 @@ "source": "local", "src_sha256": null, "version": "3.11.0.0" + }, + { + "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", + "component": "exe:example", + "flags": [], + "package": "open-browser", + "revision": 0, + "source": "hackage", + "src_sha256": "0bed2e63800f738e78a4803ed22902accb50ac02068b96c17ce83a267244ca66", + "version": "0.2.1.0" } ] } diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal index 373152e8f64..f842d4d3157 100644 --- a/cabal-install/cabal-install.cabal +++ b/cabal-install/cabal-install.cabal @@ -238,6 +238,7 @@ library hackage-security >= 0.6.2.0 && < 0.7, text >= 1.2.3 && < 1.3 || >= 2.0 && < 2.2, parsec >= 3.1.13.0 && < 3.2, + open-browser >= 0.2.1.0 && < 0.3, regex-base >= 0.94.0.0 && <0.95, regex-posix >= 0.96.0.0 && <0.97, safe-exceptions >= 0.1.7.0 && < 0.2, diff --git a/cabal-install/src/Distribution/Client/CmdExec.hs b/cabal-install/src/Distribution/Client/CmdExec.hs index 20a1ee9756e..82fada98463 100644 --- a/cabal-install/src/Distribution/Client/CmdExec.hs +++ b/cabal-install/src/Distribution/Client/CmdExec.hs @@ -26,6 +26,10 @@ import Distribution.Client.NixStyleOptions , defaultNixStyleFlags , nixStyleOptions ) +import Distribution.Client.ProjectConfig.Types + ( ProjectConfig (projectConfigShared) + , ProjectConfigShared (projectConfigProgPathExtra) + ) import Distribution.Client.ProjectFlags ( removeIgnoreProjectOption ) @@ -72,13 +76,10 @@ import Distribution.Simple.Program , simpleProgram ) import Distribution.Simple.Program.Db - ( configuredPrograms - , modifyProgramSearchPath + ( appendProgramSearchPath + , configuredPrograms , requireProgram ) -import Distribution.Simple.Program.Find - ( ProgramSearchPathEntry (..) - ) import Distribution.Simple.Program.Run ( programInvocation , runProgramInvocation @@ -86,11 +87,13 @@ import Distribution.Simple.Program.Run import Distribution.Simple.Utils ( createDirectoryIfMissingVerbose , dieWithException - , info , notice , withTempDirectory , wrapText ) +import Distribution.Utils.NubList + ( fromNubList + ) import Distribution.Verbosity ( normal ) @@ -162,13 +165,15 @@ execAction flags@NixStyleFlags{..} extraArgs globalFlags = do mempty -- Some dependencies may have executables. Let's put those on the PATH. - extraPaths <- pathAdditions verbosity baseCtx buildCtx - let programDb = - modifyProgramSearchPath - (map ProgramSearchPathDir extraPaths ++) - . pkgConfigCompilerProgs - . elaboratedShared - $ buildCtx + let extraPaths = pathAdditions baseCtx buildCtx + + programDb <- + appendProgramSearchPath + verbosity + extraPaths + . pkgConfigCompilerProgs + . elaboratedShared + $ buildCtx -- Now that we have the packages, set up the environment. We accomplish this -- by creating an environment file that selects the databases and packages we @@ -263,17 +268,21 @@ withTempEnvFile verbosity baseCtx buildCtx buildStatus action = do action envOverrides ) -pathAdditions :: Verbosity -> ProjectBaseContext -> ProjectBuildContext -> IO [FilePath] -pathAdditions verbosity ProjectBaseContext{..} ProjectBuildContext{..} = do - info verbosity . unlines $ - "Including the following directories in PATH:" - : paths - return paths +-- | Get paths to all dependency executables to be included in PATH. +pathAdditions :: ProjectBaseContext -> ProjectBuildContext -> [FilePath] +pathAdditions ProjectBaseContext{..} ProjectBuildContext{..} = + paths ++ cabalConfigPaths where + cabalConfigPaths = + fromNubList + . projectConfigProgPathExtra + . projectConfigShared + $ projectConfig paths = S.toList $ binDirectories distDirLayout elaboratedShared elaboratedPlanToExecute +-- | Get paths to all dependency executables to be included in PATH. binDirectories :: DistDirLayout -> ElaboratedSharedConfig diff --git a/cabal-install/src/Distribution/Client/CmdInstall.hs b/cabal-install/src/Distribution/Client/CmdInstall.hs index 5de704430f5..60549656b4d 100644 --- a/cabal-install/src/Distribution/Client/CmdInstall.hs +++ b/cabal-install/src/Distribution/Client/CmdInstall.hs @@ -150,14 +150,11 @@ import Distribution.Simple.GHC import qualified Distribution.Simple.InstallDirs as InstallDirs import qualified Distribution.Simple.PackageIndex as PI import Distribution.Simple.Program.Db - ( defaultProgramDb - , modifyProgramSearchPath + ( appendProgramSearchPath + , defaultProgramDb , userSpecifyArgss , userSpecifyPaths ) -import Distribution.Simple.Program.Find - ( ProgramSearchPathEntry (..) - ) import Distribution.Simple.Setup ( Flag (..) , installDirsOptions @@ -496,6 +493,7 @@ installAction flags@NixStyleFlags{extraFlags = clientInstallFlags', ..} targetSt , projectConfigHcPath , projectConfigHcPkg , projectConfigStoreDir + , projectConfigProgPathExtra } , projectConfigLocalPackages = PackageConfig @@ -509,17 +507,13 @@ installAction flags@NixStyleFlags{extraFlags = clientInstallFlags', ..} targetSt hcPath = flagToMaybe projectConfigHcPath hcPkg = flagToMaybe projectConfigHcPkg + configProgDb <- appendProgramSearchPath verbosity ((fromNubList packageConfigProgramPathExtra) ++ (fromNubList projectConfigProgPathExtra)) defaultProgramDb + let -- ProgramDb with directly user specified paths preProgDb = userSpecifyPaths (Map.toList (getMapLast packageConfigProgramPaths)) . userSpecifyArgss (Map.toList (getMapMappend packageConfigProgramArgs)) - . modifyProgramSearchPath - ( ++ - [ ProgramSearchPathDir dir - | dir <- fromNubList packageConfigProgramPathExtra - ] - ) - $ defaultProgramDb + $ configProgDb -- progDb is a program database with compiler tools configured properly ( compiler@Compiler diff --git a/cabal-install/src/Distribution/Client/CmdRun.hs b/cabal-install/src/Distribution/Client/CmdRun.hs index 2ad1b992369..b390dacb22e 100644 --- a/cabal-install/src/Distribution/Client/CmdRun.hs +++ b/cabal-install/src/Distribution/Client/CmdRun.hs @@ -48,6 +48,10 @@ import Distribution.Client.NixStyleOptions , defaultNixStyleFlags , nixStyleOptions ) +import Distribution.Client.ProjectConfig.Types + ( ProjectConfig (projectConfigShared) + , ProjectConfigShared (projectConfigProgPathExtra) + ) import Distribution.Client.ProjectOrchestration import Distribution.Client.ProjectPlanning ( ElaboratedConfiguredPackage (..) @@ -56,6 +60,7 @@ import Distribution.Client.ProjectPlanning ) import Distribution.Client.ProjectPlanning.Types ( dataDirsEnvironmentForPlan + , elabExeDependencyPaths ) import Distribution.Client.ScriptUtils ( AcceptNoTargets (..) @@ -82,6 +87,12 @@ import Distribution.Simple.Command import Distribution.Simple.Flag ( fromFlagOrDefault ) +import Distribution.Simple.Program.Find + ( ProgramSearchPathEntry (ProgramSearchPathDir) + , defaultProgramSearchPath + , logExtraProgramSearchPath + , programSearchPathAsPATHVar + ) import Distribution.Simple.Program.Run ( ProgramInvocation (..) , emptyProgramInvocation @@ -105,6 +116,9 @@ import Distribution.Types.UnqualComponentName ( UnqualComponentName , unUnqualComponentName ) +import Distribution.Utils.NubList + ( fromNubList + ) import Distribution.Verbosity ( normal , silent @@ -288,6 +302,19 @@ runAction flags@NixStyleFlags{..} targetAndArgs globalFlags = buildSettingDryRun (buildSettings baseCtx) || buildSettingOnlyDownload (buildSettings baseCtx) + let extraPath = + elabExeDependencyPaths pkg + ++ ( fromNubList + . projectConfigProgPathExtra + . projectConfigShared + . projectConfig + $ baseCtx + ) + + logExtraProgramSearchPath verbosity extraPath + + progPath <- programSearchPathAsPATHVar (map ProgramSearchPathDir extraPath ++ defaultProgramSearchPath) + if dryRun then notice verbosity "Running of executable suppressed by flag(s)" else @@ -297,9 +324,10 @@ runAction flags@NixStyleFlags{..} targetAndArgs globalFlags = { progInvokePath = exePath , progInvokeArgs = args , progInvokeEnv = - dataDirsEnvironmentForPlan - (distDirLayout baseCtx) - elaboratedPlan + ("PATH", Just $ progPath) + : dataDirsEnvironmentForPlan + (distDirLayout baseCtx) + elaboratedPlan } where (targetStr, args) = splitAt 1 targetAndArgs diff --git a/cabal-install/src/Distribution/Client/Config.hs b/cabal-install/src/Distribution/Client/Config.hs index 0fe93081bd7..1c2b4dabb27 100644 --- a/cabal-install/src/Distribution/Client/Config.hs +++ b/cabal-install/src/Distribution/Client/Config.hs @@ -1540,6 +1540,14 @@ parseConfig src initial = \str -> do splitMultiPath (configConfigureArgs scf) } + , savedGlobalFlags = + let sgf = savedGlobalFlags conf + in sgf + { globalProgPathExtra = + toNubList $ + splitMultiPath + (fromNubList $ globalProgPathExtra sgf) + } } parse = diff --git a/cabal-install/src/Distribution/Client/Get.hs b/cabal-install/src/Distribution/Client/Get.hs index 99ebe749161..39ace2f2652 100644 --- a/cabal-install/src/Distribution/Client/Get.hs +++ b/cabal-install/src/Distribution/Client/Get.hs @@ -78,6 +78,9 @@ import Distribution.Solver.Types.SourcePackage import Control.Monad (mapM_) import qualified Data.Map as Map import Distribution.Client.Errors +import Distribution.Utils.NubList + ( fromNubList + ) import System.Directory ( createDirectoryIfMissing , doesDirectoryExist @@ -99,7 +102,7 @@ get -> IO () get verbosity _ _ _ [] = notice verbosity "No packages requested. Nothing to do." -get verbosity repoCtxt _ getFlags userTargets = do +get verbosity repoCtxt globalFlags getFlags userTargets = do let useSourceRepo = case getSourceRepository getFlags of NoFlag -> False _ -> True @@ -154,7 +157,7 @@ get verbosity repoCtxt _ getFlags userTargets = do clone :: [UnresolvedSourcePackage] -> IO () clone = - clonePackagesFromSourceRepo verbosity prefix kind + clonePackagesFromSourceRepo verbosity prefix kind (fromNubList $ globalProgPathExtra globalFlags) . map (\pkg -> (packageId pkg, packageSourceRepos pkg)) where kind :: Maybe RepoKind @@ -337,6 +340,8 @@ clonePackagesFromSourceRepo -- ^ destination dir prefix -> Maybe RepoKind -- ^ preferred 'RepoKind' + -> [FilePath] + -- ^ Extra prog paths -> [(PackageId, [PD.SourceRepo])] -- ^ the packages and their -- available 'SourceRepo's @@ -345,13 +350,14 @@ clonePackagesFromSourceRepo verbosity destDirPrefix preferredRepoKind + progPaths pkgrepos = do -- Do a bunch of checks and collect the required info pkgrepos' <- traverse preCloneChecks pkgrepos -- Configure the VCS drivers for all the repository types we may need vcss <- - configureVCSs verbosity $ + configureVCSs verbosity progPaths $ Map.fromList [ (vcsRepoType vcs, vcs) | (_, _, vcs, _) <- pkgrepos' diff --git a/cabal-install/src/Distribution/Client/HttpUtils.hs b/cabal-install/src/Distribution/Client/HttpUtils.hs index 39251039a36..39bd264c744 100644 --- a/cabal-install/src/Distribution/Client/HttpUtils.hs +++ b/cabal-install/src/Distribution/Client/HttpUtils.hs @@ -38,7 +38,6 @@ import Distribution.Simple.Program ( ConfiguredProgram , Program , ProgramInvocation (..) - , ProgramSearchPathEntry (..) , getProgramInvocationOutput , programInvocation , programPath @@ -47,10 +46,10 @@ import Distribution.Simple.Program import Distribution.Simple.Program.Db ( ProgramDb , addKnownPrograms + , appendProgramSearchPath , configureAllKnownPrograms , emptyProgramDb , lookupProgram - , modifyProgramSearchPath , requireProgram ) import Distribution.Simple.Program.Run @@ -409,7 +408,7 @@ configureTransport verbosity extraPath (Just name) = case find (\(name', _, _, _) -> name' == name) supportedTransports of Just (_, mprog, _tls, mkTrans) -> do - let baseProgDb = modifyProgramSearchPath (\p -> map ProgramSearchPathDir extraPath ++ p) emptyProgramDb + baseProgDb <- appendProgramSearchPath verbosity extraPath emptyProgramDb progdb <- case mprog of Nothing -> return emptyProgramDb Just prog -> snd <$> requireProgram verbosity prog baseProgDb @@ -425,7 +424,7 @@ configureTransport verbosity extraPath Nothing = do -- for all the transports except plain-http we need to try and find -- their external executable - let baseProgDb = modifyProgramSearchPath (\p -> map ProgramSearchPathDir extraPath ++ p) emptyProgramDb + baseProgDb <- appendProgramSearchPath verbosity extraPath emptyProgramDb progdb <- configureAllKnownPrograms verbosity $ addKnownPrograms diff --git a/cabal-install/src/Distribution/Client/ProjectBuilding/UnpackedPackage.hs b/cabal-install/src/Distribution/Client/ProjectBuilding/UnpackedPackage.hs index aec2aadf81b..0cbb6f0104f 100644 --- a/cabal-install/src/Distribution/Client/ProjectBuilding/UnpackedPackage.hs +++ b/cabal-install/src/Distribution/Client/ProjectBuilding/UnpackedPackage.hs @@ -2,6 +2,7 @@ {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE ScopedTypeVariables #-} -- | This module exposes functions to build and register unpacked packages. -- @@ -58,7 +59,6 @@ import Distribution.Client.Types hiding ) import Distribution.Client.Utils ( ProgressPhase (..) - , findOpenProgramLocation , progressMessage ) @@ -85,6 +85,7 @@ import Distribution.Types.BuildType import Distribution.Types.PackageDescription.Lens (componentModules) import Distribution.Simple.Utils +import Distribution.System (Platform (..)) import Distribution.Version import qualified Data.ByteString as BS @@ -92,12 +93,14 @@ import qualified Data.ByteString.Lazy as LBS import qualified Data.ByteString.Lazy.Char8 as LBS.Char8 import qualified Data.List.NonEmpty as NE -import Control.Exception (Handler (..), SomeAsyncException, assert, catches) +import Control.Exception (ErrorCall, Handler (..), SomeAsyncException, assert, catches) import System.Directory (canonicalizePath, createDirectoryIfMissing, doesDirectoryExist, doesFileExist, removeFile) import System.FilePath (dropDrive, normalise, takeDirectory, (<.>), ()) import System.IO (Handle, IOMode (AppendMode), withFile) import System.Semaphore (SemaphoreName (..)) +import Web.Browser (openBrowser) + import Distribution.Client.Errors import Distribution.Compat.Directory (listDirectory) @@ -420,7 +423,7 @@ buildInplaceUnpackedPackage buildSettings@BuildTimeSettings{buildSettingHaddockOpen} registerLock cacheLock - pkgshared@ElaboratedSharedConfig{pkgConfigPlatform = platform} + pkgshared@ElaboratedSharedConfig{pkgConfigPlatform = Platform _ os} plan rpkg@(ReadyPackage pkg) buildStatus @@ -527,10 +530,13 @@ buildInplaceUnpackedPackage docDir = case distHaddockOutputDir of Nothing -> distBuildDirectory distDirLayout dparams "doc" "html" name Just dir -> dir - exe <- findOpenProgramLocation platform - case exe of - Right open -> runProgramInvocation verbosity (simpleProgramInvocation open [dest]) - Left err -> dieWithException verbosity $ FindOpenProgramLocationErr err + catch + (void $ openBrowser dest) + ( \(_ :: ErrorCall) -> + dieWithException verbosity $ + FindOpenProgramLocationErr $ + "Unsupported OS: " <> show os + ) PBInstallPhase{runCopy = _runCopy, runRegister} -> do -- PURPOSELY omitted: no copy! diff --git a/cabal-install/src/Distribution/Client/ProjectConfig.hs b/cabal-install/src/Distribution/Client/ProjectConfig.hs index 53313bf9214..06c81a5d87e 100644 --- a/cabal-install/src/Distribution/Client/ProjectConfig.hs +++ b/cabal-install/src/Distribution/Client/ProjectConfig.hs @@ -1371,11 +1371,10 @@ syncAndReadSourcePackagesRemoteRepos | (repo, rloc, rtype, vcs) <- repos' ] - -- TODO: pass progPathExtra on to 'configureVCS' - let _progPathExtra = fromNubList projectConfigProgPathExtra + let progPathExtra = fromNubList projectConfigProgPathExtra getConfiguredVCS <- delayInitSharedResources $ \repoType -> let vcs = Map.findWithDefault (error $ "Unknown VCS: " ++ prettyShow repoType) repoType knownVCSs - in configureVCS verbosity {-progPathExtra-} vcs + in configureVCS verbosity progPathExtra vcs concat <$> sequenceA diff --git a/cabal-install/src/Distribution/Client/ProjectOrchestration.hs b/cabal-install/src/Distribution/Client/ProjectOrchestration.hs index a13d35011b1..db99b2576b9 100644 --- a/cabal-install/src/Distribution/Client/ProjectOrchestration.hs +++ b/cabal-install/src/Distribution/Client/ProjectOrchestration.hs @@ -231,7 +231,7 @@ data CurrentCommand = InstallCommand | HaddockCommand | BuildCommand | ReplComma deriving (Show, Eq) -- | This holds the context of a project prior to solving: the content of the --- @cabal.project@ and all the local package @.cabal@ files. +-- @cabal.project@, @cabal/config@ and all the local package @.cabal@ files. data ProjectBaseContext = ProjectBaseContext { distDirLayout :: DistDirLayout , cabalDirLayout :: CabalDirLayout diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning.hs b/cabal-install/src/Distribution/Client/ProjectPlanning.hs index f3154c724b4..6febd27b69c 100644 --- a/cabal-install/src/Distribution/Client/ProjectPlanning.hs +++ b/cabal-install/src/Distribution/Client/ProjectPlanning.hs @@ -469,13 +469,15 @@ configureCompiler ) $ do liftIO $ info verbosity "Compiler settings changed, reconfiguring..." - result@(_, _, progdb') <- + progdb <- liftIO $ appendProgramSearchPath verbosity (fromNubList packageConfigProgramPathExtra) defaultProgramDb + let progdb' = userSpecifyPaths (Map.toList (getMapLast packageConfigProgramPaths)) progdb + result@(_, _, progdb'') <- liftIO $ Cabal.configCompilerEx hcFlavor hcPath hcPkg - progdb + progdb' verbosity -- Note that we added the user-supplied program locations and args @@ -484,7 +486,7 @@ configureCompiler -- the compiler will configure (and it does vary between compilers). -- We do know however that the compiler will only configure the -- programs it cares about, and those are the ones we monitor here. - monitorFiles (programsMonitorFiles progdb') + monitorFiles (programsMonitorFiles progdb'') return result where diff --git a/cabal-install/src/Distribution/Client/SetupWrapper.hs b/cabal-install/src/Distribution/Client/SetupWrapper.hs index 8a9b1c01707..eba9b833d9d 100644 --- a/cabal-install/src/Distribution/Client/SetupWrapper.hs +++ b/cabal-install/src/Distribution/Client/SetupWrapper.hs @@ -88,9 +88,11 @@ import Distribution.Simple.Program , ghcjsProgram , runDbProgram ) +import Distribution.Simple.Program.Db + ( appendProgramSearchPath + ) import Distribution.Simple.Program.Find - ( ProgramSearchPathEntry (ProgramSearchPathDir) - , programSearchPathAsPATHVar + ( programSearchPathAsPATHVar ) import Distribution.Simple.Program.Run ( getEffectiveEnvironment @@ -537,11 +539,11 @@ invoke verbosity path args options = do Nothing -> return () Just logHandle -> info verbosity $ "Redirecting build log to " ++ show logHandle + progDb <- appendProgramSearchPath verbosity (useExtraPathEnv options) (useProgramDb options) + searchpath <- - programSearchPathAsPATHVar - ( map ProgramSearchPathDir (useExtraPathEnv options) - ++ getProgramSearchPath (useProgramDb options) - ) + programSearchPathAsPATHVar $ getProgramSearchPath progDb + env <- getEffectiveEnvironment $ [ ("PATH", Just searchpath) diff --git a/cabal-install/src/Distribution/Client/Utils.hs b/cabal-install/src/Distribution/Client/Utils.hs index 59158ffd2a5..f5a10da789a 100644 --- a/cabal-install/src/Distribution/Client/Utils.hs +++ b/cabal-install/src/Distribution/Client/Utils.hs @@ -28,7 +28,6 @@ module Distribution.Client.Utils , existsAndIsMoreRecentThan , tryFindAddSourcePackageDesc , tryFindPackageDesc - , findOpenProgramLocation , relaxEncodingErrors , ProgressPhase (..) , progressMessage @@ -69,13 +68,11 @@ import Distribution.Compat.Environment import Distribution.Compat.Time (getModTime) import Distribution.Simple.Setup (Flag (..)) import Distribution.Simple.Utils (dieWithException, findPackageDesc, noticeNoWrap) -import Distribution.System (OS (..), Platform (..)) import Distribution.Version import System.Directory ( canonicalizePath , doesDirectoryExist , doesFileExist - , findExecutable , getCurrentDirectory , getDirectoryContents , removeFile @@ -397,26 +394,6 @@ tryFindPackageDesc verbosity depPath err = do Right file -> return file Left _ -> dieWithException verbosity $ TryFindPackageDescErr err -findOpenProgramLocation :: Platform -> IO (Either String FilePath) -findOpenProgramLocation (Platform _ os) = - let - locate name = do - exe <- findExecutable name - case exe of - Just s -> pure (Right s) - Nothing -> pure (Left ("Couldn't find file-opener program `" <> name <> "`")) - xdg = locate "xdg-open" - in - case os of - Windows -> pure (Right "start") - OSX -> locate "open" - Linux -> xdg - FreeBSD -> xdg - OpenBSD -> xdg - NetBSD -> xdg - DragonFly -> xdg - _ -> pure (Left ("Couldn't determine file-opener program for " <> show os)) - -- | Phase of building a dependency. Represents current status of package -- dependency processing. See #4040 for details. data ProgressPhase diff --git a/cabal-install/src/Distribution/Client/VCS.hs b/cabal-install/src/Distribution/Client/VCS.hs index 7322253e692..f3403029827 100644 --- a/cabal-install/src/Distribution/Client/VCS.hs +++ b/cabal-install/src/Distribution/Client/VCS.hs @@ -61,6 +61,9 @@ import Distribution.Simple.Program , runProgramInvocation , simpleProgram ) +import Distribution.Simple.Program.Db + ( appendProgramSearchPath + ) import Distribution.Types.SourceRepo ( KnownRepoType (..) , RepoType (..) @@ -198,18 +201,23 @@ validateSourceRepos rs = configureVCS :: Verbosity + -> [FilePath] + -- ^ Extra prog paths -> VCS Program -> IO (VCS ConfiguredProgram) -configureVCS verbosity vcs@VCS{vcsProgram = prog} = - asVcsConfigured <$> requireProgram verbosity prog emptyProgramDb +configureVCS verbosity progPaths vcs@VCS{vcsProgram = prog} = do + progPath <- appendProgramSearchPath verbosity progPaths emptyProgramDb + asVcsConfigured <$> requireProgram verbosity prog progPath where asVcsConfigured (prog', _) = vcs{vcsProgram = prog'} configureVCSs :: Verbosity + -> [FilePath] + -- ^ Extra prog paths -> Map RepoType (VCS Program) -> IO (Map RepoType (VCS ConfiguredProgram)) -configureVCSs verbosity = traverse (configureVCS verbosity) +configureVCSs verbosity progPaths = traverse (configureVCS verbosity progPaths) -- ------------------------------------------------------------ diff --git a/cabal-install/tests/UnitTests/Distribution/Client/Get.hs b/cabal-install/tests/UnitTests/Distribution/Client/Get.hs index 55ce4180f8f..c033c05f93a 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/Get.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/Get.hs @@ -64,7 +64,7 @@ testNoRepos :: Assertion testNoRepos = do e <- assertException $ - clonePackagesFromSourceRepo verbosity "." Nothing pkgrepos + clonePackagesFromSourceRepo verbosity "." Nothing [] pkgrepos e @?= ClonePackageNoSourceRepos pkgidfoo where pkgrepos = [(pkgidfoo, [])] @@ -73,7 +73,7 @@ testNoReposOfKind :: Assertion testNoReposOfKind = do e <- assertException $ - clonePackagesFromSourceRepo verbosity "." repokind pkgrepos + clonePackagesFromSourceRepo verbosity "." repokind [] pkgrepos e @?= ClonePackageNoSourceReposOfKind pkgidfoo repokind where pkgrepos = [(pkgidfoo, [repo])] @@ -84,7 +84,7 @@ testNoRepoType :: Assertion testNoRepoType = do e <- assertException $ - clonePackagesFromSourceRepo verbosity "." Nothing pkgrepos + clonePackagesFromSourceRepo verbosity "." Nothing [] pkgrepos e @?= ClonePackageNoRepoType pkgidfoo repo where pkgrepos = [(pkgidfoo, [repo])] @@ -94,7 +94,7 @@ testUnsupportedRepoType :: Assertion testUnsupportedRepoType = do e <- assertException $ - clonePackagesFromSourceRepo verbosity "." Nothing pkgrepos + clonePackagesFromSourceRepo verbosity "." Nothing [] pkgrepos e @?= ClonePackageUnsupportedRepoType pkgidfoo repo' repotype where pkgrepos = [(pkgidfoo, [repo])] @@ -118,7 +118,7 @@ testNoRepoLocation :: Assertion testNoRepoLocation = do e <- assertException $ - clonePackagesFromSourceRepo verbosity "." Nothing pkgrepos + clonePackagesFromSourceRepo verbosity "." Nothing [] pkgrepos e @?= ClonePackageNoRepoLocation pkgidfoo repo where pkgrepos = [(pkgidfoo, [repo])] @@ -139,7 +139,7 @@ testSelectRepoKind = e' @?= ClonePackageNoRepoType pkgidfoo expectedRepo | let test rt rs = assertException $ - clonePackagesFromSourceRepo verbosity "." rt rs + clonePackagesFromSourceRepo verbosity "." rt [] rs , (requestedRepoType, expectedRepo) <- cases ] where @@ -161,14 +161,14 @@ testRepoDestinationExists = createDirectory pkgdir e1 <- assertException $ - clonePackagesFromSourceRepo verbosity tmpdir Nothing pkgrepos + clonePackagesFromSourceRepo verbosity tmpdir Nothing [] pkgrepos e1 @?= ClonePackageDestinationExists pkgidfoo pkgdir True {- isdir -} removeDirectory pkgdir writeFile pkgdir "" e2 <- assertException $ - clonePackagesFromSourceRepo verbosity tmpdir Nothing pkgrepos + clonePackagesFromSourceRepo verbosity tmpdir Nothing [] pkgrepos e2 @?= ClonePackageDestinationExists pkgidfoo pkgdir False {- isfile -} where pkgrepos = [(pkgidfoo, [repo])] @@ -199,7 +199,7 @@ testGitFetchFailed = pkgrepos = [(pkgidfoo, [repo])] e1 <- assertException $ - clonePackagesFromSourceRepo verbosity tmpdir Nothing pkgrepos + clonePackagesFromSourceRepo verbosity tmpdir Nothing [] pkgrepos e1 @?= ClonePackageFailedWithExitCode pkgidfoo repo' "git" (ExitFailure 128) testNetworkGitClone :: Assertion @@ -214,6 +214,7 @@ testNetworkGitClone = verbosity tmpdir Nothing + [] [(mkpkgid "zlib1", [repo1])] assertFileContains (tmpdir "zlib1/zlib.cabal") ["name:", "zlib"] @@ -226,6 +227,7 @@ testNetworkGitClone = verbosity tmpdir Nothing + [] [(mkpkgid "zlib2", [repo2])] assertFileContains (tmpdir "zlib2/zlib.cabal") ["name:", "zlib"] @@ -239,6 +241,7 @@ testNetworkGitClone = verbosity tmpdir Nothing + [] [(mkpkgid "zlib3", [repo3])] assertFileContains (tmpdir "zlib3/zlib.cabal") ["version:", "0.5.0.0"] where diff --git a/cabal-install/tests/UnitTests/Distribution/Client/VCS.hs b/cabal-install/tests/UnitTests/Distribution/Client/VCS.hs index 64c517c10e9..0bd49355913 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/VCS.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/VCS.hs @@ -57,7 +57,7 @@ tests :: MTimeChange -> [TestTree] tests mtimeChange = map (localOption $ QuickCheckTests 10) - [ ignoreInWindows "See issue #8048" $ + [ ignoreInWindows "See issue #8048 and #9519" $ testGroup "git" [ testProperty "check VCS test framework" prop_framework_git @@ -227,7 +227,7 @@ testSetup -> IO a testSetup vcs mkVCSTestDriver repoRecipe theTest = do -- test setup - vcs' <- configureVCS verbosity vcs + vcs' <- configureVCS verbosity [] vcs withTestDir verbosity "vcstest" $ \tmpdir -> do let srcRepoPath = tmpdir "src" submodulesPath = tmpdir "submodules" diff --git a/cabal-testsuite/PackageTests/Help/HelpPrintsConfigFile/help-prints-config-file.out b/cabal-testsuite/PackageTests/Help/HelpPrintsConfigFile/help-prints-config-file.out new file mode 100644 index 00000000000..8f859e4c506 --- /dev/null +++ b/cabal-testsuite/PackageTests/Help/HelpPrintsConfigFile/help-prints-config-file.out @@ -0,0 +1 @@ +# cabal --help diff --git a/cabal-testsuite/PackageTests/Help/HelpPrintsConfigFile/help-prints-config-file.test.hs b/cabal-testsuite/PackageTests/Help/HelpPrintsConfigFile/help-prints-config-file.test.hs new file mode 100644 index 00000000000..e725142bc24 --- /dev/null +++ b/cabal-testsuite/PackageTests/Help/HelpPrintsConfigFile/help-prints-config-file.test.hs @@ -0,0 +1,25 @@ +-- Andreas Abel, 2024-01-13 +-- +-- Ensure that the last line of the help text is the name of the config file. +-- This invariant is used by clients such as the Haskell setup github action. +-- See: https://github.com/haskell-actions/setup/pull/63 + +import Distribution.Utils.String (trim) +import Test.Cabal.Prelude + +main = cabalTest $ do + env <- getTestEnv + res <- cabal' "--help" [] + + -- The end of the help text should be something like: + -- + -- > You can edit the cabal configuration file to set defaults: + -- > <>/.cabal/config + -- + -- So trimming the last line will give us the name of the config file. + let configFile = trim . last . lines . resultOutput $ res + + -- Verify that this is indeed the config file. + assertEqual "Last line of help text should be name of the config file" + (testUserCabalConfigFile env) + configFile diff --git a/cabal-testsuite/PackageTests/NewHaddock/Fails/Example.hs b/cabal-testsuite/PackageTests/NewHaddock/Fails/Example.hs index 76287b43f72..c29012fc826 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/Fails/Example.hs +++ b/cabal-testsuite/PackageTests/NewHaddock/Fails/Example.hs @@ -1,6 +1,6 @@ -module Example where - -import Prelude - -example :: Int -example = False +module Example where + +import Prelude + +example :: Int +example = False diff --git a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/Main.hs b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/Main.hs index ed19e6004cc..8e366f26a96 100644 --- a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/Main.hs +++ b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/Main.hs @@ -1,4 +1,4 @@ -module Main (main) where - -main :: IO () -main = putStrLn "Hello, World!" +module Main (main) where + +main :: IO () +main = putStrLn "Hello, World!" diff --git a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/cabal.project b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/cabal.project index f95e96bf5b5..e6fdbadb439 100644 --- a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/cabal.project +++ b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/cabal.project @@ -1 +1 @@ -packages: . +packages: . diff --git a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.cabal b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.cabal index 4bc31217b98..3ac52d11163 100644 --- a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.cabal +++ b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.cabal @@ -1,9 +1,9 @@ -cabal-version: 2.2 -name: many-data-files -version: 0 - -data-files: data/*.txt - -executable dummy - default-language: Haskell2010 - main-is: Main.hs +cabal-version: 2.2 +name: many-data-files +version: 0 + +data-files: data/*.txt + +executable dummy + default-language: Haskell2010 + main-is: Main.hs diff --git a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.out b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.out index d1d7884f33a..7303a453b6e 100644 --- a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.out +++ b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.out @@ -1,2 +1,2 @@ -# cabal v2-sdist -Wrote tarball sdist to /many-data-files.dist/source/dist-newstyle/sdist/many-data-files-0.tar.gz +# cabal v2-sdist +Wrote tarball sdist to /many-data-files.dist/source/dist-newstyle/sdist/many-data-files-0.tar.gz diff --git a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.test.hs b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.test.hs index 2db0070c4ed..e414b19b093 100644 --- a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.test.hs +++ b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.test.hs @@ -1,17 +1,17 @@ -import Test.Cabal.Prelude - -import Control.Applicative ((<$>)) -import System.Directory ( createDirectoryIfMissing ) -import qualified Data.ByteString.Char8 as BS - -main = cabalTest . withSourceCopy $ do - limit <- getOpenFilesLimit - cwd <- testCurrentDir <$> getTestEnv - - case limit of - Just n -> do - liftIO $ createDirectoryIfMissing False (cwd "data") - forM_ [1 .. n + 100] $ \i -> - liftIO $ BS.writeFile (cwd "data" ("data-file-" ++ show i) <.> "txt") (BS.pack "a data file\n") - cabal "v2-sdist" ["many-data-files"] - Nothing -> skip "no open file limit" +import Test.Cabal.Prelude + +import Control.Applicative ((<$>)) +import System.Directory ( createDirectoryIfMissing ) +import qualified Data.ByteString.Char8 as BS + +main = cabalTest . withSourceCopy $ do + limit <- getOpenFilesLimit + cwd <- testCurrentDir <$> getTestEnv + + case limit of + Just n -> do + liftIO $ createDirectoryIfMissing False (cwd "data") + forM_ [1 .. n + 100] $ \i -> + liftIO $ BS.writeFile (cwd "data" ("data-file-" ++ show i) <.> "txt") (BS.pack "a data file\n") + cabal "v2-sdist" ["many-data-files"] + Nothing -> skip "no open file limit" diff --git a/cabal-testsuite/PackageTests/ProfLate/cabal.out b/cabal-testsuite/PackageTests/ProfLate/cabal.out index e420dc33c70..e6a1d4ad751 100644 --- a/cabal-testsuite/PackageTests/ProfLate/cabal.out +++ b/cabal-testsuite/PackageTests/ProfLate/cabal.out @@ -1,2 +1,2 @@ -# cabal clean -# cabal build +# cabal clean +# cabal build diff --git a/cabal-testsuite/PackageTests/ProfLate/setup.cabal.out b/cabal-testsuite/PackageTests/ProfLate/setup.cabal.out index 2ec51f2ad09..12c885de8ff 100644 --- a/cabal-testsuite/PackageTests/ProfLate/setup.cabal.out +++ b/cabal-testsuite/PackageTests/ProfLate/setup.cabal.out @@ -1,5 +1,5 @@ -# Setup configure -Configuring profLate-0.1... -# Setup build -Preprocessing executable 'main' for profLate-0.1... -Building executable 'main' for profLate-0.1... +# Setup configure +Configuring profLate-0.1... +# Setup build +Preprocessing executable 'main' for profLate-0.1... +Building executable 'main' for profLate-0.1... diff --git a/cabal-testsuite/PackageTests/ProfLate/setup.out b/cabal-testsuite/PackageTests/ProfLate/setup.out index 2ec51f2ad09..12c885de8ff 100644 --- a/cabal-testsuite/PackageTests/ProfLate/setup.out +++ b/cabal-testsuite/PackageTests/ProfLate/setup.out @@ -1,5 +1,5 @@ -# Setup configure -Configuring profLate-0.1... -# Setup build -Preprocessing executable 'main' for profLate-0.1... -Building executable 'main' for profLate-0.1... +# Setup configure +Configuring profLate-0.1... +# Setup build +Preprocessing executable 'main' for profLate-0.1... +Building executable 'main' for profLate-0.1... diff --git a/changelog.d/base16-script-cache b/changelog.d/base16-script-cache index b395f946a09..a2473271635 100644 --- a/changelog.d/base16-script-cache +++ b/changelog.d/base16-script-cache @@ -1,9 +1,9 @@ -synopsis: Script cache dir is the base16 hash of the canonical path of the script. -prs: #9459 -packages: cabal-install - -description: { - -Script cache dir is the base16 hash of the canonical path of the script. - -} +synopsis: Script cache dir is the base16 hash of the canonical path of the script. +prs: #9459 +packages: cabal-install + +description: { + +Script cache dir is the base16 hash of the canonical path of the script. + +} diff --git a/changelog.d/pr-9018 b/changelog.d/pr-9018 index bdce59ead14..b823fc4c33a 100644 --- a/changelog.d/pr-9018 +++ b/changelog.d/pr-9018 @@ -1,11 +1,11 @@ -synopsis: Structured Errors and Error Codes for Cabal -packages: cabal -prs: #9018 -issues: #8618 #8543 - - -description: { - -This will replace the `die'` function with `dieWithException` function which will throw structured errors rather than mere strings and also assign codes to corresponding errors that can be added to the error index. - -} +synopsis: Structured Errors and Error Codes for Cabal +packages: cabal +prs: #9018 +issues: #8618 #8543 + + +description: { + +This will replace the `die'` function with `dieWithException` function which will throw structured errors rather than mere strings and also assign codes to corresponding errors that can be added to the error index. + +} diff --git a/changelog.d/pr-9332 b/changelog.d/pr-9332 index c5d4c3d4ac4..c2851a647d4 100644 --- a/changelog.d/pr-9332 +++ b/changelog.d/pr-9332 @@ -1,4 +1,4 @@ -synopsis: Don't report `index.html` file as created, if not created by Haddock -packages: Cabal cabal-install -prs: #9332 -issues: #5120 +synopsis: Don't report `index.html` file as created, if not created by Haddock +packages: Cabal cabal-install +prs: #9332 +issues: #5120 diff --git a/changelog.d/pr-9341 b/changelog.d/pr-9341 new file mode 100644 index 00000000000..dc6c65a802d --- /dev/null +++ b/changelog.d/pr-9341 @@ -0,0 +1,11 @@ +synopsis: Fix run command environment +packages: cabal-install +prs: #9341 +issues: #8391 + +description: { + +- The Run command will now add binary paths of dependencies + (build-tool-depends) to PATH, just like Exec and Test commands. + +} \ No newline at end of file diff --git a/changelog.d/propagate-extra-prog-path b/changelog.d/propagate-extra-prog-path new file mode 100644 index 00000000000..9938736f7a1 --- /dev/null +++ b/changelog.d/propagate-extra-prog-path @@ -0,0 +1,13 @@ +synopsis: Fix extra-prog-path propagation +packages: cabal-install Cabal +prs: #9527 +issues: #7649 #9519 + +description: { + +- extra-prog-paths are now propagated to all commands. This in particular helps + when running a MinGW cabal in the PowerShell, where the MSYS2 paths are + usually not available in the PowerShell PATH. GHCup already sets them up for + us but they were sometimes lost on the way. + +} diff --git a/doc/requirements.in b/doc/requirements.in index d8de16ca602..c8a3a7692a2 100644 --- a/doc/requirements.in +++ b/doc/requirements.in @@ -8,3 +8,5 @@ Pygments >= 2.7.4 certifi >= 2023.07.22 # CVE-2023-45803 urllib3 >= 2.0.7 +# CVE-2024-22195 +jinja2 == 3.1.3 diff --git a/doc/requirements.txt b/doc/requirements.txt index 55019a68dc9..8ec8934d93e 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -23,8 +23,10 @@ idna==3.4 # via requests imagesize==1.4.1 # via sphinx -jinja2==3.1.2 - # via sphinx +jinja2==3.1.3 + # via + # -r requirements.in + # sphinx jsonpointer==2.3 # via sphinx-jsonschema markupsafe==2.1.2