Skip to content

Commit 184a7b8

Browse files
committed
Add explicit import list to Stack.Setup
1 parent b000c10 commit 184a7b8

File tree

1 file changed

+97
-80
lines changed

1 file changed

+97
-80
lines changed

src/Stack/Setup.hs

Lines changed: 97 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
{-# LANGUAGE LambdaCase #-}
77
{-# LANGUAGE MultiWayIf #-}
88
{-# LANGUAGE OverloadedStrings #-}
9-
{-# LANGUAGE PackageImports #-}
109
{-# LANGUAGE ScopedTypeVariables #-}
1110
{-# LANGUAGE TypeFamilies #-}
1211
{-# LANGUAGE ViewPatterns #-}
@@ -28,76 +27,94 @@ module Stack.Setup
2827
, downloadStackExe
2928
) where
3029

31-
import qualified Codec.Archive.Tar as Tar
32-
import Conduit
33-
import Control.Applicative (empty)
34-
import "cryptonite" Crypto.Hash (SHA1(..), SHA256(..))
35-
import Pantry.Internal.AesonExtended
36-
import qualified Data.Aeson.KeyMap as KeyMap
37-
import qualified Data.ByteString as S
38-
import qualified Data.ByteString.Lazy as LBS
39-
import qualified Data.Conduit.Binary as CB
40-
import Data.Conduit.Lazy (lazyConsume)
41-
import qualified Data.Conduit.List as CL
42-
import Data.Conduit.Process.Typed (createSource)
43-
import Data.Conduit.Zlib (ungzip)
44-
import qualified Data.Map as Map
45-
import qualified Data.Set as Set
46-
import qualified Data.Text as T
47-
import qualified Data.Text.Lazy as TL
48-
import qualified Data.Text.Encoding as T
49-
import qualified Data.Text.Lazy.Encoding as TL
50-
import qualified Data.Text.Encoding.Error as T
51-
import qualified Data.Yaml as Yaml
52-
import Distribution.System (OS, Arch (..), Platform (..))
53-
import qualified Distribution.System as Cabal
54-
import Distribution.Text (simpleParse)
55-
import Distribution.Types.PackageName (mkPackageName)
56-
import Distribution.Version (mkVersion)
57-
import Network.HTTP.Client (redirectCount)
58-
import Network.HTTP.StackClient (CheckHexDigest (..), HashCheck (..),
59-
getResponseBody, getResponseStatusCode, httpLbs, httpJSON,
60-
mkDownloadRequest, parseRequest, parseUrlThrow, setGitHubHeaders,
61-
setHashChecks, setLengthCheck, verifiedDownloadWithProgress, withResponse,
62-
setRequestMethod)
63-
import Network.HTTP.Simple (getResponseHeader)
64-
import Path hiding (fileExtension)
65-
import Path.CheckInstall (warnInstallSearchPathIssues)
66-
import Path.Extended (fileExtension)
67-
import Path.Extra (toFilePathNoTrailingSep)
68-
import Path.IO hiding (findExecutable, withSystemTempDir)
69-
import qualified Pantry
70-
import qualified RIO
71-
import RIO.List
72-
import RIO.Process
73-
import Stack.Build.Haddock (shouldHaddockDeps)
74-
import Stack.Build.Source (loadSourceMap, hashSourceMapData)
75-
import Stack.Build.Target (NeedTargets(..), parseTargets)
76-
import Stack.Constants
77-
import Stack.Constants.Config (distRelativeDir)
78-
import Stack.GhcPkg (createDatabase, getGlobalDB, mkGhcPackagePath, ghcPkgPathEnvVar)
79-
import Stack.Prelude hiding (Display (..))
80-
import Stack.SourceMap
81-
import Stack.Setup.Installed (Tool (..), extraDirs, filterTools,
82-
installDir, getCompilerVersion,
83-
listInstalled, markInstalled, tempInstallDir,
84-
toolString, unmarkInstalled)
85-
import Stack.Storage.User (loadCompilerPaths, saveCompilerPaths)
86-
import Stack.Types.Build
87-
import Stack.Types.Compiler
88-
import Stack.Types.CompilerBuild
89-
import Stack.Types.Config
90-
import Stack.Types.Docker
91-
import Stack.Types.SourceMap
92-
import Stack.Types.Version
93-
import qualified System.Directory as D
94-
import System.Environment (getExecutablePath, lookupEnv)
95-
import System.IO.Error (isPermissionError)
96-
import System.FilePath (searchPathSeparator)
97-
import qualified System.FilePath as FP
98-
import System.Permissions (setFileExecutable)
99-
import System.Uname (getRelease)
100-
import Data.List.Split (splitOn)
30+
import qualified Codec.Archive.Tar as Tar
31+
import Conduit
32+
( ConduitT, await, concatMapMC, filterCE, foldMC, yield )
33+
import Control.Applicative ( empty )
34+
import Crypto.Hash ( SHA1 (..), SHA256 (..) )
35+
import qualified Data.Aeson.KeyMap as KeyMap
36+
import qualified Data.ByteString as S
37+
import qualified Data.ByteString.Lazy as LBS
38+
import qualified Data.Conduit.Binary as CB
39+
import Data.Conduit.Lazy ( lazyConsume )
40+
import qualified Data.Conduit.List as CL
41+
import Data.Conduit.Process.Typed ( createSource )
42+
import Data.Conduit.Zlib ( ungzip )
43+
import Data.List.Split ( splitOn )
44+
import qualified Data.Map as Map
45+
import qualified Data.Set as Set
46+
import qualified Data.Text as T
47+
import qualified Data.Text.Lazy as TL
48+
import qualified Data.Text.Encoding as T
49+
import qualified Data.Text.Lazy.Encoding as TL
50+
import qualified Data.Text.Encoding.Error as T
51+
import qualified Data.Yaml as Yaml
52+
import Distribution.System ( Arch (..), OS, Platform (..) )
53+
import qualified Distribution.System as Cabal
54+
import Distribution.Text ( simpleParse )
55+
import Distribution.Types.PackageName ( mkPackageName )
56+
import Distribution.Version ( mkVersion )
57+
import Network.HTTP.Client ( redirectCount )
58+
import Network.HTTP.StackClient
59+
( CheckHexDigest (..), HashCheck (..), getResponseBody
60+
, getResponseStatusCode, httpLbs, httpJSON
61+
, mkDownloadRequest, parseRequest, parseUrlThrow
62+
, setGitHubHeaders, setHashChecks, setLengthCheck
63+
, verifiedDownloadWithProgress, withResponse
64+
, setRequestMethod
65+
)
66+
import Network.HTTP.Simple ( getResponseHeader )
67+
import Pantry.Internal.AesonExtended
68+
( Value (..), WithJSONWarnings (..), logJSONWarnings )
69+
import Path
70+
( (</>), dirname, filename, parent, parseAbsDir, parseAbsFile
71+
, parseRelDir, parseRelFile, toFilePath
72+
)
73+
import Path.CheckInstall ( warnInstallSearchPathIssues )
74+
import Path.Extended ( fileExtension )
75+
import Path.Extra ( toFilePathNoTrailingSep )
76+
import Path.IO hiding ( findExecutable, withSystemTempDir )
77+
import RIO.List
78+
( headMaybe, intercalate, intersperse, isPrefixOf
79+
, maximumByMaybe, sort, sortBy, stripPrefix )
80+
import RIO.Process
81+
( EnvVars, HasProcessContext (..), ProcessContext
82+
, augmentPath, augmentPathMap, doesExecutableExist, envVarsL
83+
, exeSearchPathL, getStdout, mkProcessContext, modifyEnvVars
84+
, proc, readProcess_, readProcessStdout, runProcess
85+
, runProcess_, setStdout, waitExitCode, withModifyEnvVars
86+
, withProcessWait, withWorkingDir, workingDirL
87+
)
88+
import Stack.Build.Haddock ( shouldHaddockDeps )
89+
import Stack.Build.Source ( hashSourceMapData, loadSourceMap )
90+
import Stack.Build.Target ( NeedTargets (..), parseTargets )
91+
import Stack.Constants
92+
import Stack.Constants.Config ( distRelativeDir )
93+
import Stack.GhcPkg
94+
( createDatabase, getGlobalDB, ghcPkgPathEnvVar
95+
, mkGhcPackagePath )
96+
import Stack.Prelude
97+
import Stack.SourceMap
98+
import Stack.Setup.Installed
99+
( Tool (..), extraDirs, filterTools, getCompilerVersion
100+
, installDir, listInstalled, markInstalled, tempInstallDir
101+
, toolString, unmarkInstalled
102+
)
103+
import Stack.Storage.User ( loadCompilerPaths, saveCompilerPaths )
104+
import Stack.Types.Build
105+
import Stack.Types.Compiler
106+
import Stack.Types.CompilerBuild
107+
import Stack.Types.Config
108+
import Stack.Types.Docker
109+
import Stack.Types.SourceMap
110+
import Stack.Types.Version
111+
import qualified System.Directory as D
112+
import System.Environment ( getExecutablePath, lookupEnv )
113+
import System.IO.Error ( isPermissionError )
114+
import System.FilePath ( searchPathSeparator )
115+
import qualified System.FilePath as FP
116+
import System.Permissions ( setFileExecutable )
117+
import System.Uname ( getRelease )
101118

102119
-- | Type representing exceptions thrown by functions exported by the
103120
-- "Stack.Setup" module
@@ -161,7 +178,7 @@ instance Exception SetupException where
161178
displayException (UnknownCompilerVersion oskeys wanted known) = concat
162179
[ "Error: [S-9443]\n"
163180
, "No setup information found for "
164-
, T.unpack $ utf8BuilderToText $ RIO.display wanted
181+
, T.unpack $ utf8BuilderToText $ display wanted
165182
, " on your platform.\nThis probably means a GHC bindist has not yet been added for OS key '"
166183
, T.unpack (T.intercalate "', '" (sort $ Set.toList oskeys))
167184
, "'.\nSupported versions: "
@@ -1136,7 +1153,7 @@ buildGhcFromSource getSetupInfo' installed (CompilerRepository url) commitId fla
11361153
then pure (compilerTool,CompilerBuildStandard)
11371154
else do
11381155
-- clone the repository and execute the given commands
1139-
Pantry.withRepo (Pantry.SimpleRepo url commitId RepoGit) $ do
1156+
withRepo (SimpleRepo url commitId RepoGit) $ do
11401157
-- withRepo is guaranteed to set workingDirL, so let's get it
11411158
mcwd <- traverse parseAbsDir =<< view workingDirL
11421159
cwd <- maybe (throwIO WorkingDirectoryInvalidBug) pure mcwd
@@ -1157,7 +1174,7 @@ buildGhcFromSource getSetupInfo' installed (CompilerRepository url) commitId fla
11571174
maybe (throwIO HadrianScriptNotFound) pure $ listToMaybe foundHadrianPaths
11581175

11591176
logSticky $ "Building GHC from source with `"
1160-
<> RIO.display flavour
1177+
<> display flavour
11611178
<> "` flavour. It can take a long time (more than one hour)..."
11621179

11631180
-- We need to provide an absolute path to the script since
@@ -1844,13 +1861,13 @@ setup7z si = do
18441861
.| foldMC
18451862
(\count bs -> do
18461863
let count' = count + S.length bs
1847-
logSticky $ "Extracted " <> RIO.display count' <> " files"
1864+
logSticky $ "Extracted " <> display count' <> " files"
18481865
pure count'
18491866
)
18501867
0
18511868
logStickyDone $
18521869
"Extracted total of " <>
1853-
RIO.display total <>
1870+
display total <>
18541871
" files from " <>
18551872
archiveDisplay
18561873
waitExitCode p
@@ -1869,11 +1886,11 @@ chattyDownload label downloadInfo path = do
18691886
req <- parseUrlThrow $ T.unpack url
18701887
logSticky $
18711888
"Preparing to download " <>
1872-
RIO.display label <>
1889+
display label <>
18731890
" ..."
18741891
logDebug $
18751892
"Downloading from " <>
1876-
RIO.display url <>
1893+
display url <>
18771894
" to " <>
18781895
fromString (toFilePath path) <>
18791896
" ..."
@@ -1899,7 +1916,7 @@ chattyDownload label downloadInfo path = do
18991916
mkDownloadRequest req
19001917
x <- verifiedDownloadWithProgress dReq path label mtotalSize
19011918
if x
1902-
then logStickyDone ("Downloaded " <> RIO.display label <> ".")
1919+
then logStickyDone ("Downloaded " <> display label <> ".")
19031920
else logStickyDone "Already downloaded."
19041921
where
19051922
mtotalSize = downloadInfoContentLength downloadInfo
@@ -2224,7 +2241,7 @@ downloadStackExe platforms0 archiveInfo destDir checkPath testExe = do
22242241
, destDir </> relFileStackDotTmp
22252242
)
22262243

2227-
logInfo $ "Downloading from: " <> RIO.display archiveURL
2244+
logInfo $ "Downloading from: " <> display archiveURL
22282245

22292246
liftIO $ do
22302247
case () of

0 commit comments

Comments
 (0)