update `installGhcBindist` to take a "Maybe FilePath" to work with isolated installs

This commit is contained in:
Arjun Kathuria 2021-07-25 13:35:41 +05:30
parent ba51cbad6f
commit 338f5f309d
1 changed files with 23 additions and 6 deletions

View File

@ -183,6 +183,7 @@ installGHCBindist :: ( MonadFail m
)
=> DownloadInfo -- ^ where/how to download
-> Version -- ^ the version to install
-> Maybe FilePath -- ^ isolated filepath if user passed any
-> Excepts
'[ AlreadyInstalled
, BuildFailed
@ -198,10 +199,16 @@ installGHCBindist :: ( MonadFail m
]
m
()
installGHCBindist dlinfo ver = do
installGHCBindist dlinfo ver isoFilepath = do
let tver = mkTVer ver
let isIsolatedInstall = isJust isoFilepath
lift $ $(logDebug) [i|Requested to install GHC with #{ver}|]
whenM (lift $ ghcInstalled tver) (throwE $ AlreadyInstalled GHC ver)
-- we only care for already installed errors in regular (non-isolated) installs
when (not isIsolatedInstall) $
whenM (lift $ ghcInstalled tver) (throwE $ AlreadyInstalled GHC ver)
-- download (or use cached version)
dl <- liftE $ downloadCached dlinfo Nothing
@ -209,11 +216,21 @@ installGHCBindist dlinfo ver = do
-- prepare paths
ghcdir <- lift $ ghcupGHCDir tver
toolchainSanityChecks
liftE $ installPackedGHC dl (view dlSubdir dlinfo) ghcdir ver
let isoDir = if isIsolatedInstall
then fromJust isoFilepath
else mempty :: FilePath
liftE $ postGHCInstall tver
if isIsolatedInstall
then do
lift $ $(logInfo) [i|isolated installing GHC to #{isoDir}|]
liftE $ installPackedGHC dl (view dlSubdir dlinfo) isoDir ver
else do
toolchainSanityChecks
liftE $ installPackedGHC dl (view dlSubdir dlinfo) ghcdir ver
-- make symlinks & stuff when regular install,
-- don't make any for isolated installs.
whenM (pure $ not isIsolatedInstall) (liftE $ postGHCInstall tver)
where
toolchainSanityChecks = do