update installGhcBindist
to take a "Maybe FilePath" to work with isolated installs
This commit is contained in:
parent
ba51cbad6f
commit
338f5f309d
27
lib/GHCup.hs
27
lib/GHCup.hs
@ -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
|
||||
let isoDir = if isIsolatedInstall
|
||||
then fromJust isoFilepath
|
||||
else mempty :: FilePath
|
||||
|
||||
liftE $ installPackedGHC dl (view dlSubdir dlinfo) ghcdir ver
|
||||
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
|
||||
|
||||
liftE $ postGHCInstall tver
|
||||
-- make symlinks & stuff when regular install,
|
||||
-- don't make any for isolated installs.
|
||||
whenM (pure $ not isIsolatedInstall) (liftE $ postGHCInstall tver)
|
||||
|
||||
where
|
||||
toolchainSanityChecks = do
|
||||
|
Loading…
Reference in New Issue
Block a user