Compare commits
15 Commits
PR/ubunbu-
...
PR/issue-1
| Author | SHA1 | Date | |
|---|---|---|---|
| 4189c5de69 | |||
| dee3218723 | |||
| 3c803a9f58 | |||
| a9b0c0fbc9 | |||
| 38b6c918f9 | |||
| 6e584c96c4 | |||
| 20338f7d14 | |||
| 1a995a5d63 | |||
| f964382175 | |||
| 0c7f60fae6 | |||
| 413e63d1ca | |||
| 8b000f4e48 | |||
| b0522507be | |||
| d4bcf7021e | |||
| d82e189c01 |
@@ -126,7 +126,7 @@ test:linux:bootstrap_script:
|
|||||||
- ./.gitlab/script/ghcup_bootstrap.sh
|
- ./.gitlab/script/ghcup_bootstrap.sh
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
extends:
|
extends:
|
||||||
- .debian
|
- .debian
|
||||||
|
|
||||||
@@ -136,13 +136,13 @@ test:linux:recommended:
|
|||||||
extends: .test_ghcup_version:linux
|
extends: .test_ghcup_version:linux
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
|
||||||
test:linux:latest:
|
test:linux:latest:
|
||||||
extends: .test_ghcup_version:linux
|
extends: .test_ghcup_version:linux
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
######## linux 32bit test ########
|
######## linux 32bit test ########
|
||||||
@@ -159,13 +159,13 @@ test:mac:recommended:
|
|||||||
extends: .test_ghcup_version:darwin
|
extends: .test_ghcup_version:darwin
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
|
||||||
test:mac:latest:
|
test:mac:latest:
|
||||||
extends: .test_ghcup_version:darwin
|
extends: .test_ghcup_version:darwin
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
|
|
||||||
@@ -175,13 +175,13 @@ test:freebsd:recommended:
|
|||||||
extends: .test_ghcup_version:freebsd
|
extends: .test_ghcup_version:freebsd
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
|
||||||
test:freebsd:latest:
|
test:freebsd:latest:
|
||||||
extends: .test_ghcup_version:freebsd
|
extends: .test_ghcup_version:freebsd
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@ release:linux:64bit:
|
|||||||
variables:
|
variables:
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
ARTIFACT: "x86_64-linux-ghcup"
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
|
||||||
|
|
||||||
release:linux:32bit:
|
release:linux:32bit:
|
||||||
@@ -223,7 +223,7 @@ release:darwin:
|
|||||||
variables:
|
variables:
|
||||||
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
||||||
|
|
||||||
|
|
||||||
@@ -239,5 +239,5 @@ release:freebsd:
|
|||||||
variables:
|
variables:
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
||||||
GHC_VERSION: "8.10.3"
|
GHC_VERSION: "8.10.3"
|
||||||
CABAL_VERSION: "3.4.0.0-rc4"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,9 @@ mkdir -p "${TMPDIR}"
|
|||||||
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-apple-darwin-ghcup > ./ghcup-bin
|
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-apple-darwin-ghcup > ./ghcup-bin
|
||||||
chmod +x ghcup-bin
|
chmod +x ghcup-bin
|
||||||
|
|
||||||
./ghcup-bin install ${GHC_VERSION}
|
./ghcup-bin upgrade -i -f
|
||||||
./ghcup-bin set ${GHC_VERSION}
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml install ${GHC_VERSION}
|
||||||
./ghcup-bin install-cabal ${CABAL_VERSION}
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml set ${GHC_VERSION}
|
||||||
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml install-cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -11,8 +11,9 @@ mkdir -p "${TMPDIR}"
|
|||||||
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-portbld-freebsd-ghcup > ./ghcup-bin
|
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-portbld-freebsd-ghcup > ./ghcup-bin
|
||||||
chmod +x ghcup-bin
|
chmod +x ghcup-bin
|
||||||
|
|
||||||
./ghcup-bin install ${GHC_VERSION}
|
./ghcup-bin upgrade -i -f
|
||||||
./ghcup-bin install-cabal ${CABAL_VERSION}
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml install ${GHC_VERSION}
|
||||||
./ghcup-bin set ${GHC_VERSION}
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml set ${GHC_VERSION}
|
||||||
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml install-cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -24,8 +24,9 @@ else
|
|||||||
curl -sSfL https://downloads.haskell.org/ghcup/x86_64-linux-ghcup > ./ghcup-bin
|
curl -sSfL https://downloads.haskell.org/ghcup/x86_64-linux-ghcup > ./ghcup-bin
|
||||||
fi
|
fi
|
||||||
chmod +x ghcup-bin
|
chmod +x ghcup-bin
|
||||||
./ghcup-bin install ${GHC_VERSION}
|
./ghcup-bin upgrade -i -f
|
||||||
./ghcup-bin install-cabal ${CABAL_VERSION}
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml install ${GHC_VERSION}
|
||||||
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml install-cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev li
|
|||||||
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup > ./ghcup-bin
|
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup > ./ghcup-bin
|
||||||
chmod +x ghcup-bin
|
chmod +x ghcup-bin
|
||||||
|
|
||||||
./ghcup-bin install ${GHC_VERSION}
|
./ghcup-bin upgrade -i -f
|
||||||
./ghcup-bin set ${GHC_VERSION}
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml install ${GHC_VERSION}
|
||||||
./ghcup-bin install-cabal ${CABAL_VERSION}
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml set ${GHC_VERSION}
|
||||||
|
./ghcup-bin -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml install-cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
## 0.1.13 -- ????-??-??
|
## 0.1.13 -- ????-??-??
|
||||||
|
|
||||||
|
* Fix item selection with unavailable versions wrt [#107](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/107)
|
||||||
|
* Allow for dynamic post-install, post-remove and pre-compile msgs wrt [MR #68](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/68)
|
||||||
|
* Alert user if upgraded ghcup is shadowed by old ghcup wrt [#111](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/111)
|
||||||
* Fix to `ghcup` directory creation and placement for the XDG install mode ([MR #49](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/49))
|
* Fix to `ghcup` directory creation and placement for the XDG install mode ([MR #49](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/49))
|
||||||
* Do 755 permissions on executables, wrt #97
|
* Do 755 permissions on executables, wrt #97
|
||||||
* Add [NO_COLOR](https://no-color.org/) support wrt [MR #47](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/47)
|
* Add [NO_COLOR](https://no-color.org/) support wrt [MR #47](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/47)
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ validate dls = do
|
|||||||
forM_ (M.toList dls) $ \(t, versions) ->
|
forM_ (M.toList dls) $ \(t, versions) ->
|
||||||
forM_ (M.toList versions) $ \(v, vi) ->
|
forM_ (M.toList versions) $ \(v, vi) ->
|
||||||
forM_ (M.toList $ _viArch vi) $ \(arch, pspecs) -> do
|
forM_ (M.toList $ _viArch vi) $ \(arch, pspecs) -> do
|
||||||
checkHasRequiredPlatforms t v arch (M.keys pspecs)
|
checkHasRequiredPlatforms t v (_viTags vi) arch (M.keys pspecs)
|
||||||
|
|
||||||
checkGHCVerIsValid
|
checkGHCVerIsValid
|
||||||
forM_ (M.toList dls) $ \(t, _) -> checkMandatoryTags t
|
forM_ (M.toList dls) $ \(t, _) -> checkMandatoryTags t
|
||||||
@@ -81,17 +81,18 @@ validate dls = do
|
|||||||
lift $ $(logInfo) [i|All good|]
|
lift $ $(logInfo) [i|All good|]
|
||||||
pure ExitSuccess
|
pure ExitSuccess
|
||||||
where
|
where
|
||||||
checkHasRequiredPlatforms t v arch pspecs = do
|
checkHasRequiredPlatforms t v tags arch pspecs = do
|
||||||
let v' = prettyVer v
|
let v' = prettyVer v
|
||||||
|
arch' = prettyArch arch
|
||||||
when (not $ any (== Linux UnknownLinux) pspecs) $ do
|
when (not $ any (== Linux UnknownLinux) pspecs) $ do
|
||||||
lift $ $(logError)
|
lift $ $(logError)
|
||||||
[i|Linux UnknownLinux missing for for #{t} #{v'} #{arch}|]
|
[i|Linux UnknownLinux missing for for #{t} #{v'} #{arch'}|]
|
||||||
addError
|
addError
|
||||||
when ((not $ any (== Darwin) pspecs) && arch == A_64) $ do
|
when ((not $ any (== Darwin) pspecs) && arch == A_64) $ do
|
||||||
lift $ $(logError) [i|Darwin missing for #{t} #{v'} #{arch}|]
|
lift $ $(logError) [i|Darwin missing for #{t} #{v'} #{arch'}|]
|
||||||
addError
|
addError
|
||||||
when ((not $ any (== FreeBSD) pspecs) && arch == A_64) $ lift $ $(logWarn)
|
when ((not $ any (== FreeBSD) pspecs) && arch == A_64) $ lift $ $(logWarn)
|
||||||
[i|FreeBSD missing for #{t} #{v'} #{arch}|]
|
[i|FreeBSD missing for #{t} #{v'} #{arch'}|]
|
||||||
|
|
||||||
-- alpine needs to be set explicitly, because
|
-- alpine needs to be set explicitly, because
|
||||||
-- we cannot assume that "Linux UnknownLinux" runs on Alpine
|
-- we cannot assume that "Linux UnknownLinux" runs on Alpine
|
||||||
@@ -99,8 +100,9 @@ validate dls = do
|
|||||||
when (not $ any (== Linux Alpine) pspecs) $
|
when (not $ any (== Linux Alpine) pspecs) $
|
||||||
case t of
|
case t of
|
||||||
GHCup -> (lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch}|]) >> addError
|
GHCup -> (lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch}|]) >> addError
|
||||||
Cabal | v > [vver|2.4.1.0|] -> (lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch}|]) >> addError
|
Cabal | v > [vver|2.4.1.0|] -> (lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch'}|]) >> addError
|
||||||
_ -> lift $ $(logWarn) [i|Linux Alpine missing for #{t} #{v'} #{arch}|]
|
GHC | Latest `elem` tags || Recommended `elem` tags -> lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch'}|]
|
||||||
|
_ -> lift $ $(logWarn) [i|Linux Alpine missing for #{t} #{v'} #{arch'}|]
|
||||||
|
|
||||||
checkUniqueTags tool = do
|
checkUniqueTags tool = do
|
||||||
let allTags = join $ M.elems $ availableToolVersions dls tool
|
let allTags = join $ M.elems $ availableToolVersions dls tool
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import GHCup.Types
|
|||||||
import GHCup.Utils
|
import GHCup.Utils
|
||||||
import GHCup.Utils.File
|
import GHCup.Utils.File
|
||||||
import GHCup.Utils.Logger
|
import GHCup.Utils.Logger
|
||||||
|
import GHCup.Utils.Prelude hiding ((!?))
|
||||||
|
|
||||||
import Brick
|
import Brick
|
||||||
import Brick.Widgets.Border
|
import Brick.Widgets.Border
|
||||||
@@ -152,7 +153,10 @@ ui dimAttrs BrickState { appSettings = as@(BrickSettings {}), ..}
|
|||||||
Nothing -> T.unpack . prettyVer $ lVer
|
Nothing -> T.unpack . prettyVer $ lVer
|
||||||
Just c -> T.unpack (c <> "-" <> prettyVer lVer)
|
Just c -> T.unpack (c <> "-" <> prettyVer lVer)
|
||||||
dim
|
dim
|
||||||
| lNoBindist = updateAttrMap (const dimAttrs) . withAttr "no-bindist"
|
| lNoBindist && (not lInstalled)
|
||||||
|
&& (not b) -- TODO: overloading dim and active ignores active
|
||||||
|
-- so we hack around it here
|
||||||
|
= updateAttrMap (const dimAttrs) . withAttr "no-bindist"
|
||||||
| otherwise = id
|
| otherwise = id
|
||||||
hooray
|
hooray
|
||||||
| elem Latest lTag && not lInstalled =
|
| elem Latest lTag && not lInstalled =
|
||||||
@@ -277,7 +281,7 @@ defaultAttributes no_color = attrMap
|
|||||||
dimAttributes :: Bool -> AttrMap
|
dimAttributes :: Bool -> AttrMap
|
||||||
dimAttributes no_color = attrMap
|
dimAttributes no_color = attrMap
|
||||||
(Vty.defAttr `Vty.withStyle` Vty.dim)
|
(Vty.defAttr `Vty.withStyle` Vty.dim)
|
||||||
[ ("active" , Vty.defAttr `withBackColor` Vty.blue)
|
[ ("active" , Vty.defAttr `withBackColor` Vty.blue) -- has no effect ??
|
||||||
, ("no-bindist", Vty.defAttr `Vty.withStyle` Vty.dim)
|
, ("no-bindist", Vty.defAttr `Vty.withStyle` Vty.dim)
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
@@ -414,17 +418,32 @@ install' BrickState { appData = BrickData {..} } (_, ListResult {..}) = do
|
|||||||
, DownloadFailed
|
, DownloadFailed
|
||||||
, NoUpdate
|
, NoUpdate
|
||||||
, TarDirDoesNotExist
|
, TarDirDoesNotExist
|
||||||
|
, VerNotFound
|
||||||
]
|
]
|
||||||
|
|
||||||
(run $ do
|
(run $ do
|
||||||
case lTool of
|
case lTool of
|
||||||
GHC -> liftE $ installGHCBin dls lVer pfreq
|
GHC -> do
|
||||||
Cabal -> liftE $ installCabalBin dls lVer pfreq
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo lVer GHC dls
|
||||||
GHCup -> liftE $ upgradeGHCup dls Nothing False pfreq $> ()
|
?? VerNotFound lVer GHC
|
||||||
HLS -> liftE $ installHLSBin dls lVer pfreq $> ()
|
liftE $ installGHCBin dls lVer pfreq $> vi
|
||||||
|
Cabal -> do
|
||||||
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo lVer Cabal dls
|
||||||
|
?? VerNotFound lVer Cabal
|
||||||
|
liftE $ installCabalBin dls lVer pfreq $> vi
|
||||||
|
GHCup -> do
|
||||||
|
let vi = fromJust $ snd <$> getLatest dls GHCup
|
||||||
|
liftE $ upgradeGHCup dls Nothing False pfreq $> vi
|
||||||
|
HLS -> do
|
||||||
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo lVer HLS dls
|
||||||
|
?? VerNotFound lVer HLS
|
||||||
|
liftE $ installHLSBin dls lVer pfreq $> vi
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
VRight _ -> pure $ Right ()
|
VRight vi -> do
|
||||||
|
forM_ (_viPostInstall vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
|
pure $ Right ()
|
||||||
VLeft (V (AlreadyInstalled _ _)) -> pure $ Right ()
|
VLeft (V (AlreadyInstalled _ _)) -> pure $ Right ()
|
||||||
VLeft (V (BuildFailed _ e)) ->
|
VLeft (V (BuildFailed _ e)) ->
|
||||||
pure $ Left [i|Build failed with #{e}|]
|
pure $ Left [i|Build failed with #{e}|]
|
||||||
@@ -459,21 +478,34 @@ set' _ (_, ListResult {..}) = do
|
|||||||
|
|
||||||
|
|
||||||
del' :: BrickState -> (Int, ListResult) -> IO (Either String ())
|
del' :: BrickState -> (Int, ListResult) -> IO (Either String ())
|
||||||
del' _ (_, ListResult {..}) = do
|
del' BrickState { appData = BrickData {..} } (_, ListResult {..}) = do
|
||||||
settings <- readIORef settings'
|
settings <- readIORef settings'
|
||||||
l <- readIORef logger'
|
l <- readIORef logger'
|
||||||
let runLogger = myLoggerT l
|
let runLogger = myLoggerT l
|
||||||
|
|
||||||
let run = runLogger . flip runReaderT settings . runE @'[NotInstalled]
|
let run = runLogger . flip runReaderT settings . runE @'[NotInstalled, VerNotFound]
|
||||||
|
|
||||||
(run $ do
|
(run $ do
|
||||||
case lTool of
|
case lTool of
|
||||||
GHC -> liftE $ rmGHCVer (GHCTargetVersion lCross lVer) $> ()
|
GHC -> do
|
||||||
Cabal -> liftE $ rmCabalVer lVer $> ()
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo lVer Cabal dls
|
||||||
HLS -> liftE $ rmHLSVer lVer $> ()
|
?? VerNotFound lVer Cabal
|
||||||
GHCup -> pure ()
|
liftE $ rmGHCVer (GHCTargetVersion lCross lVer) $> Just vi
|
||||||
|
Cabal -> do
|
||||||
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo lVer Cabal dls
|
||||||
|
?? VerNotFound lVer Cabal
|
||||||
|
liftE $ rmCabalVer lVer $> Just vi
|
||||||
|
HLS -> do
|
||||||
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo lVer Cabal dls
|
||||||
|
?? VerNotFound lVer Cabal
|
||||||
|
liftE $ rmHLSVer lVer $> Just vi
|
||||||
|
GHCup -> pure Nothing
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
|
VRight (Just vi) -> do
|
||||||
|
forM_ (_viPostRemove vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
|
pure $ Right ()
|
||||||
VRight _ -> pure $ Right ()
|
VRight _ -> pure $ Right ()
|
||||||
VLeft e -> pure $ Left [i|#{e}|]
|
VLeft e -> pure $ Left [i|#{e}|]
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import GHCup.Version
|
|||||||
#if !defined(TAR)
|
#if !defined(TAR)
|
||||||
import Codec.Archive
|
import Codec.Archive
|
||||||
#endif
|
#endif
|
||||||
|
import Control.Concurrent
|
||||||
import Control.Exception.Safe
|
import Control.Exception.Safe
|
||||||
#if !MIN_VERSION_base(4,13,0)
|
#if !MIN_VERSION_base(4,13,0)
|
||||||
import Control.Monad.Fail ( MonadFail )
|
import Control.Monad.Fail ( MonadFail )
|
||||||
@@ -1040,6 +1041,7 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
, NotInstalled
|
, NotInstalled
|
||||||
, BuildFailed
|
, BuildFailed
|
||||||
, TagNotFound
|
, TagNotFound
|
||||||
|
, VerNotFound
|
||||||
, DigestError
|
, DigestError
|
||||||
, DownloadFailed
|
, DownloadFailed
|
||||||
, TarDirDoesNotExist
|
, TarDirDoesNotExist
|
||||||
@@ -1055,6 +1057,7 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
@'[ FileDoesNotExistError
|
@'[ FileDoesNotExistError
|
||||||
, NotInstalled
|
, NotInstalled
|
||||||
, TagNotFound
|
, TagNotFound
|
||||||
|
, VerNotFound
|
||||||
]
|
]
|
||||||
|
|
||||||
let
|
let
|
||||||
@@ -1064,6 +1067,7 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
. runE
|
. runE
|
||||||
@'[ NotInstalled
|
@'[ NotInstalled
|
||||||
, TagNotFound
|
, TagNotFound
|
||||||
|
, VerNotFound
|
||||||
]
|
]
|
||||||
|
|
||||||
let
|
let
|
||||||
@@ -1073,12 +1077,13 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
. runE
|
. runE
|
||||||
@'[ NotInstalled
|
@'[ NotInstalled
|
||||||
, TagNotFound
|
, TagNotFound
|
||||||
|
, VerNotFound
|
||||||
]
|
]
|
||||||
|
|
||||||
let runListGHC = runLogger . flip runReaderT appstate
|
let runListGHC = runLogger . flip runReaderT appstate
|
||||||
|
|
||||||
let runRm =
|
let runRm =
|
||||||
runLogger . flip runReaderT appstate . runE @'[NotInstalled]
|
runLogger . flip runReaderT appstate . runE @'[NotInstalled, VerNotFound]
|
||||||
|
|
||||||
let runDebugInfo =
|
let runDebugInfo =
|
||||||
runLogger
|
runLogger
|
||||||
@@ -1102,6 +1107,7 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
, UnknownArchive
|
, UnknownArchive
|
||||||
, TarDirDoesNotExist
|
, TarDirDoesNotExist
|
||||||
, NotInstalled
|
, NotInstalled
|
||||||
|
, VerNotFound
|
||||||
#if !defined(TAR)
|
#if !defined(TAR)
|
||||||
, ArchiveResult
|
, ArchiveResult
|
||||||
#endif
|
#endif
|
||||||
@@ -1162,20 +1168,24 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
let installGHC InstallOptions{..} =
|
let installGHC InstallOptions{..} =
|
||||||
(case instBindist of
|
(case instBindist of
|
||||||
Nothing -> runInstTool $ do
|
Nothing -> runInstTool $ do
|
||||||
v <- liftE $ fromVersion dls instVer GHC
|
(v, vi) <- liftE $ fromVersion dls instVer GHC
|
||||||
liftE $ installGHCBin dls (_tvVersion v) (fromMaybe pfreq instPlatform)
|
liftE $ installGHCBin dls (_tvVersion v) (fromMaybe pfreq instPlatform)
|
||||||
when instSet $ void $ liftE $ setGHC v SetGHCOnly
|
when instSet $ void $ liftE $ setGHC v SetGHCOnly
|
||||||
|
pure vi
|
||||||
Just uri -> runInstTool' appstate{ settings = settings {noVerify = True}} $ do
|
Just uri -> runInstTool' appstate{ settings = settings {noVerify = True}} $ do
|
||||||
v <- liftE $ fromVersion dls instVer GHC
|
(v, vi) <- liftE $ fromVersion dls instVer GHC
|
||||||
liftE $ installGHCBindist
|
liftE $ installGHCBindist
|
||||||
(DownloadInfo uri (Just $ RegexDir "ghc-.*") "")
|
(DownloadInfo uri (Just $ RegexDir "ghc-.*") "")
|
||||||
(_tvVersion v)
|
(_tvVersion v)
|
||||||
(fromMaybe pfreq instPlatform)
|
(fromMaybe pfreq instPlatform)
|
||||||
when instSet $ void $ liftE $ setGHC v SetGHCOnly
|
when instSet $ void $ liftE $ setGHC v SetGHCOnly
|
||||||
|
pure vi
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
VRight _ -> do
|
VRight vi -> do
|
||||||
runLogger $ $(logInfo) ("GHC installation successful")
|
runLogger $ $(logInfo) ("GHC installation successful")
|
||||||
|
forM_ (_viPostInstall vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
pure ExitSuccess
|
pure ExitSuccess
|
||||||
VLeft (V (AlreadyInstalled _ v)) -> do
|
VLeft (V (AlreadyInstalled _ v)) -> do
|
||||||
runLogger $ $(logWarn)
|
runLogger $ $(logWarn)
|
||||||
@@ -1205,18 +1215,22 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
let installCabal InstallOptions{..} =
|
let installCabal InstallOptions{..} =
|
||||||
(case instBindist of
|
(case instBindist of
|
||||||
Nothing -> runInstTool $ do
|
Nothing -> runInstTool $ do
|
||||||
v <- liftE $ fromVersion dls instVer Cabal
|
(v, vi) <- liftE $ fromVersion dls instVer Cabal
|
||||||
liftE $ installCabalBin dls (_tvVersion v) (fromMaybe pfreq instPlatform)
|
liftE $ installCabalBin dls (_tvVersion v) (fromMaybe pfreq instPlatform)
|
||||||
|
pure vi
|
||||||
Just uri -> runInstTool' appstate{ settings = settings { noVerify = True}} $ do
|
Just uri -> runInstTool' appstate{ settings = settings { noVerify = True}} $ do
|
||||||
v <- liftE $ fromVersion dls instVer Cabal
|
(v, vi) <- liftE $ fromVersion dls instVer Cabal
|
||||||
liftE $ installCabalBindist
|
liftE $ installCabalBindist
|
||||||
(DownloadInfo uri Nothing "")
|
(DownloadInfo uri Nothing "")
|
||||||
(_tvVersion v)
|
(_tvVersion v)
|
||||||
(fromMaybe pfreq instPlatform)
|
(fromMaybe pfreq instPlatform)
|
||||||
|
pure vi
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
VRight _ -> do
|
VRight vi -> do
|
||||||
runLogger $ $(logInfo) ("Cabal installation successful")
|
runLogger $ $(logInfo) ("Cabal installation successful")
|
||||||
|
forM_ (_viPostInstall vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
pure ExitSuccess
|
pure ExitSuccess
|
||||||
VLeft (V (AlreadyInstalled _ v)) -> do
|
VLeft (V (AlreadyInstalled _ v)) -> do
|
||||||
runLogger $ $(logWarn)
|
runLogger $ $(logWarn)
|
||||||
@@ -1238,18 +1252,22 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
let installHLS InstallOptions{..} =
|
let installHLS InstallOptions{..} =
|
||||||
(case instBindist of
|
(case instBindist of
|
||||||
Nothing -> runInstTool $ do
|
Nothing -> runInstTool $ do
|
||||||
v <- liftE $ fromVersion dls instVer HLS
|
(v, vi) <- liftE $ fromVersion dls instVer HLS
|
||||||
liftE $ installHLSBin dls (_tvVersion v) (fromMaybe pfreq instPlatform)
|
liftE $ installHLSBin dls (_tvVersion v) (fromMaybe pfreq instPlatform)
|
||||||
|
pure vi
|
||||||
Just uri -> runInstTool' appstate{ settings = settings { noVerify = True}} $ do
|
Just uri -> runInstTool' appstate{ settings = settings { noVerify = True}} $ do
|
||||||
v <- liftE $ fromVersion dls instVer HLS
|
(v, vi) <- liftE $ fromVersion dls instVer HLS
|
||||||
liftE $ installHLSBindist
|
liftE $ installHLSBindist
|
||||||
(DownloadInfo uri Nothing "")
|
(DownloadInfo uri Nothing "")
|
||||||
(_tvVersion v)
|
(_tvVersion v)
|
||||||
(fromMaybe pfreq instPlatform)
|
(fromMaybe pfreq instPlatform)
|
||||||
|
pure vi
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
VRight _ -> do
|
VRight vi -> do
|
||||||
runLogger $ $(logInfo) ("HLS installation successful")
|
runLogger $ $(logInfo) ("HLS installation successful")
|
||||||
|
forM_ (_viPostInstall vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
pure ExitSuccess
|
pure ExitSuccess
|
||||||
VLeft (V (AlreadyInstalled _ v)) -> do
|
VLeft (V (AlreadyInstalled _ v)) -> do
|
||||||
runLogger $ $(logWarn)
|
runLogger $ $(logWarn)
|
||||||
@@ -1271,7 +1289,7 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
|
|
||||||
let setGHC' SetOptions{..} =
|
let setGHC' SetOptions{..} =
|
||||||
(runSetGHC $ do
|
(runSetGHC $ do
|
||||||
v <- liftE $ fromVersion dls sToolVer GHC
|
v <- liftE $ fst <$> fromVersion dls sToolVer GHC
|
||||||
liftE $ setGHC v SetGHCOnly
|
liftE $ setGHC v SetGHCOnly
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
@@ -1286,7 +1304,7 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
|
|
||||||
let setCabal' SetOptions{..} =
|
let setCabal' SetOptions{..} =
|
||||||
(runSetCabal $ do
|
(runSetCabal $ do
|
||||||
v <- liftE $ fromVersion dls sToolVer Cabal
|
v <- liftE $ fst <$> fromVersion dls sToolVer Cabal
|
||||||
liftE $ setCabal (_tvVersion v)
|
liftE $ setCabal (_tvVersion v)
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
@@ -1297,7 +1315,7 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
|
|
||||||
let setHLS' SetOptions{..} =
|
let setHLS' SetOptions{..} =
|
||||||
(runSetHLS $ do
|
(runSetHLS $ do
|
||||||
v <- liftE $ fromVersion dls sToolVer HLS
|
v <- liftE $ fst <$> fromVersion dls sToolVer HLS
|
||||||
liftE $ setHLS (_tvVersion v)
|
liftE $ setHLS (_tvVersion v)
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
@@ -1308,30 +1326,51 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
|
|
||||||
let rmGHC' RmOptions{..} =
|
let rmGHC' RmOptions{..} =
|
||||||
(runRm $ do
|
(runRm $ do
|
||||||
liftE $ rmGHCVer ghcVer
|
liftE $
|
||||||
|
rmGHCVer ghcVer
|
||||||
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo (_tvVersion ghcVer) GHC dls
|
||||||
|
?? VerNotFound (_tvVersion ghcVer) GHC
|
||||||
|
pure vi
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
VRight _ -> pure ExitSuccess
|
VRight vi -> do
|
||||||
|
forM_ (_viPostRemove vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
|
pure ExitSuccess
|
||||||
VLeft e -> do
|
VLeft e -> do
|
||||||
runLogger ($(logError) [i|#{e}|])
|
runLogger ($(logError) [i|#{e}|])
|
||||||
pure $ ExitFailure 7
|
pure $ ExitFailure 7
|
||||||
|
|
||||||
let rmCabal' tv =
|
let rmCabal' tv =
|
||||||
(runRm $ do
|
(runRm $ do
|
||||||
liftE $ rmCabalVer tv
|
liftE $
|
||||||
|
rmCabalVer tv
|
||||||
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo tv Cabal dls
|
||||||
|
?? VerNotFound tv Cabal
|
||||||
|
pure vi
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
VRight _ -> pure ExitSuccess
|
VRight vi -> do
|
||||||
|
forM_ (_viPostRemove vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
|
pure ExitSuccess
|
||||||
VLeft e -> do
|
VLeft e -> do
|
||||||
runLogger ($(logError) [i|#{e}|])
|
runLogger ($(logError) [i|#{e}|])
|
||||||
pure $ ExitFailure 15
|
pure $ ExitFailure 15
|
||||||
|
|
||||||
let rmHLS' tv =
|
let rmHLS' tv =
|
||||||
(runRm $ do
|
(runRm $ do
|
||||||
liftE $ rmHLSVer tv
|
liftE $
|
||||||
|
rmHLSVer tv
|
||||||
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo tv HLS dls
|
||||||
|
?? VerNotFound tv HLS
|
||||||
|
pure vi
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
VRight _ -> pure ExitSuccess
|
VRight vi -> do
|
||||||
|
forM_ (_viPostRemove vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
|
pure ExitSuccess
|
||||||
VLeft e -> do
|
VLeft e -> do
|
||||||
runLogger ($(logError) [i|#{e}|])
|
runLogger ($(logError) [i|#{e}|])
|
||||||
pure $ ExitFailure 15
|
pure $ ExitFailure 15
|
||||||
@@ -1385,6 +1424,13 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
|
|
||||||
Compile (CompileGHC GHCCompileOptions {..}) ->
|
Compile (CompileGHC GHCCompileOptions {..}) ->
|
||||||
(runCompileGHC $ do
|
(runCompileGHC $ do
|
||||||
|
vi <- liftE @_ @'[VerNotFound] $ getVersionInfo targetVer GHC dls
|
||||||
|
?? VerNotFound targetVer GHC
|
||||||
|
forM_ (_viPreCompile vi) $ \msg -> do
|
||||||
|
lift $ $(logInfo) msg
|
||||||
|
lift $ $(logInfo)
|
||||||
|
("...waiting for 5 seconds, you can still abort...")
|
||||||
|
liftIO $ threadDelay 5000000 -- for compilation, give the user a sec to intervene
|
||||||
liftE $ compileGHC dls
|
liftE $ compileGHC dls
|
||||||
(GHCTargetVersion crossTarget targetVer)
|
(GHCTargetVersion crossTarget targetVer)
|
||||||
bootstrapGhc
|
bootstrapGhc
|
||||||
@@ -1393,13 +1439,16 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
patchDir
|
patchDir
|
||||||
addConfArgs
|
addConfArgs
|
||||||
pfreq
|
pfreq
|
||||||
when setCompile $ void $ liftE
|
when setCompile $ void $ liftE $
|
||||||
$ setGHC (GHCTargetVersion crossTarget targetVer) SetGHCOnly
|
setGHC (GHCTargetVersion crossTarget targetVer) SetGHCOnly
|
||||||
|
pure vi
|
||||||
)
|
)
|
||||||
>>= \case
|
>>= \case
|
||||||
VRight _ -> do
|
VRight vi -> do
|
||||||
runLogger $ $(logInfo)
|
runLogger $ $(logInfo)
|
||||||
("GHC successfully compiled and installed")
|
("GHC successfully compiled and installed")
|
||||||
|
forM_ (_viPostInstall vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
pure ExitSuccess
|
pure ExitSuccess
|
||||||
VLeft (V (AlreadyInstalled _ v)) -> do
|
VLeft (V (AlreadyInstalled _ v)) -> do
|
||||||
runLogger $ $(logWarn)
|
runLogger $ $(logWarn)
|
||||||
@@ -1429,8 +1478,11 @@ Make sure to clean up #{tmpdir} afterwards.|])
|
|||||||
(runUpgrade $ (liftE $ upgradeGHCup dls target force pfreq)) >>= \case
|
(runUpgrade $ (liftE $ upgradeGHCup dls target force pfreq)) >>= \case
|
||||||
VRight v' -> do
|
VRight v' -> do
|
||||||
let pretty_v = prettyVer v'
|
let pretty_v = prettyVer v'
|
||||||
|
let vi = fromJust $ snd <$> getLatest dls GHCup
|
||||||
runLogger $ $(logInfo)
|
runLogger $ $(logInfo)
|
||||||
[i|Successfully upgraded GHCup to version #{pretty_v}|]
|
[i|Successfully upgraded GHCup to version #{pretty_v}|]
|
||||||
|
forM_ (_viPostInstall vi) $ \msg ->
|
||||||
|
runLogger $ $(logInfo) msg
|
||||||
pure ExitSuccess
|
pure ExitSuccess
|
||||||
VLeft (V NoUpdate) -> do
|
VLeft (V NoUpdate) -> do
|
||||||
runLogger $ $(logWarn) [i|No GHCup update available|]
|
runLogger $ $(logWarn) [i|No GHCup update available|]
|
||||||
@@ -1506,23 +1558,25 @@ fromVersion :: Monad m
|
|||||||
=> GHCupDownloads
|
=> GHCupDownloads
|
||||||
-> Maybe ToolVersion
|
-> Maybe ToolVersion
|
||||||
-> Tool
|
-> Tool
|
||||||
-> Excepts '[TagNotFound] m GHCTargetVersion
|
-> Excepts '[TagNotFound, VerNotFound] m (GHCTargetVersion, VersionInfo)
|
||||||
fromVersion av Nothing tool =
|
fromVersion av Nothing tool =
|
||||||
mkTVer <$> getRecommended av tool ?? TagNotFound Recommended tool
|
(\(x, y) -> (mkTVer x, y)) <$> getRecommended av tool
|
||||||
fromVersion av (Just (ToolVersion v)) _ = do
|
?? TagNotFound Recommended tool
|
||||||
|
fromVersion av (Just (ToolVersion v)) tool = do
|
||||||
|
vi <- getVersionInfo (_tvVersion v) tool av ?? VerNotFound (_tvVersion v) tool
|
||||||
case pvp $ prettyVer (_tvVersion v) of
|
case pvp $ prettyVer (_tvVersion v) of
|
||||||
Left _ -> pure v
|
Left _ -> pure (v, vi)
|
||||||
Right (PVP (major' :|[minor'])) ->
|
Right (PVP (major' :|[minor'])) ->
|
||||||
case getLatestGHCFor (fromIntegral major') (fromIntegral minor') av of
|
case getLatestGHCFor (fromIntegral major') (fromIntegral minor') av of
|
||||||
Just v' -> pure $ GHCTargetVersion (_tvTarget v) v'
|
Just (v', vi') -> pure (GHCTargetVersion (_tvTarget v) v', vi')
|
||||||
Nothing -> pure v
|
Nothing -> pure (v, vi)
|
||||||
Right _ -> pure v
|
Right _ -> pure (v, vi)
|
||||||
fromVersion av (Just (ToolTag Latest)) tool =
|
fromVersion av (Just (ToolTag Latest)) tool =
|
||||||
mkTVer <$> getLatest av tool ?? TagNotFound Latest tool
|
(\(x, y) -> (mkTVer x, y)) <$> getLatest av tool ?? TagNotFound Latest tool
|
||||||
fromVersion av (Just (ToolTag Recommended)) tool =
|
fromVersion av (Just (ToolTag Recommended)) tool =
|
||||||
mkTVer <$> getRecommended av tool ?? TagNotFound Recommended tool
|
(\(x, y) -> (mkTVer x, y)) <$> getRecommended av tool ?? TagNotFound Recommended tool
|
||||||
fromVersion av (Just (ToolTag (Base pvp''))) GHC =
|
fromVersion av (Just (ToolTag (Base pvp''))) GHC =
|
||||||
mkTVer <$> getLatestBaseVersion av pvp'' ?? TagNotFound (Base pvp'') GHC
|
(\(x, y) -> (mkTVer x, y)) <$> getLatestBaseVersion av pvp'' ?? TagNotFound (Base pvp'') GHC
|
||||||
fromVersion _ (Just (ToolTag t')) tool =
|
fromVersion _ (Just (ToolTag t')) tool =
|
||||||
throwE $ TagNotFound t' tool
|
throwE $ TagNotFound t' tool
|
||||||
|
|
||||||
@@ -1688,27 +1742,27 @@ checkForUpdates :: ( MonadReader AppState m
|
|||||||
-> PlatformRequest
|
-> PlatformRequest
|
||||||
-> m ()
|
-> m ()
|
||||||
checkForUpdates dls pfreq = do
|
checkForUpdates dls pfreq = do
|
||||||
forM_ (getLatest dls GHCup) $ \l -> do
|
forM_ (getLatest dls GHCup) $ \(l, _) -> do
|
||||||
(Right ghc_ver) <- pure $ version $ prettyPVP ghcUpVer
|
(Right ghc_ver) <- pure $ version $ prettyPVP ghcUpVer
|
||||||
when (l > ghc_ver)
|
when (l > ghc_ver)
|
||||||
$ $(logWarn)
|
$ $(logWarn)
|
||||||
[i|New GHCup version available: #{prettyVer l}. To upgrade, run 'ghcup upgrade'|]
|
[i|New GHCup version available: #{prettyVer l}. To upgrade, run 'ghcup upgrade'|]
|
||||||
|
|
||||||
forM_ (getLatest dls GHC) $ \l -> do
|
forM_ (getLatest dls GHC) $ \(l, _) -> do
|
||||||
mghc_ver <- latestInstalled GHC
|
mghc_ver <- latestInstalled GHC
|
||||||
forM mghc_ver $ \ghc_ver ->
|
forM mghc_ver $ \ghc_ver ->
|
||||||
when (l > ghc_ver)
|
when (l > ghc_ver)
|
||||||
$ $(logWarn)
|
$ $(logWarn)
|
||||||
[i|New GHC version available: #{prettyVer l}. To upgrade, run 'ghcup install ghc #{prettyVer l}'|]
|
[i|New GHC version available: #{prettyVer l}. To upgrade, run 'ghcup install ghc #{prettyVer l}'|]
|
||||||
|
|
||||||
forM_ (getLatest dls Cabal) $ \l -> do
|
forM_ (getLatest dls Cabal) $ \(l, _) -> do
|
||||||
mcabal_ver <- latestInstalled Cabal
|
mcabal_ver <- latestInstalled Cabal
|
||||||
forM mcabal_ver $ \cabal_ver ->
|
forM mcabal_ver $ \cabal_ver ->
|
||||||
when (l > cabal_ver)
|
when (l > cabal_ver)
|
||||||
$ $(logWarn)
|
$ $(logWarn)
|
||||||
[i|New Cabal version available: #{prettyVer l}. To upgrade, run 'ghcup install cabal #{prettyVer l}'|]
|
[i|New Cabal version available: #{prettyVer l}. To upgrade, run 'ghcup install cabal #{prettyVer l}'|]
|
||||||
|
|
||||||
forM_ (getLatest dls HLS) $ \l -> do
|
forM_ (getLatest dls HLS) $ \(l, _) -> do
|
||||||
mcabal_ver <- latestInstalled HLS
|
mcabal_ver <- latestInstalled HLS
|
||||||
forM mcabal_ver $ \cabal_ver ->
|
forM mcabal_ver $ \cabal_ver ->
|
||||||
when (l > cabal_ver)
|
when (l > cabal_ver)
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-802-64-deb8
|
unknown_versioning: *ghc-802-64-deb8
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.0.2-x86_64-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.0.2/ghc-8.0.2-x86_64-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.0.2
|
dlSubdir: ghc-8.0.2
|
||||||
dlHash: 517783b660a27ebf95b2568d47292fd633d5f9a4de4c80ad1ccf05e1b9d7313f
|
dlHash: 517783b660a27ebf95b2568d47292fd633d5f9a4de4c80ad1ccf05e1b9d7313f
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
@@ -232,7 +232,7 @@ ghcupDownloads:
|
|||||||
dlHash: 818621342a2161b8afcc995a0765816bb40aefbfa1db2c8a7d59c04d8b18228a
|
dlHash: 818621342a2161b8afcc995a0765816bb40aefbfa1db2c8a7d59c04d8b18228a
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.0.2-i386-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.0.2/ghc-8.0.2-i386-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.0.2
|
dlSubdir: ghc-8.0.2
|
||||||
dlHash: b4cd12a1048b2fff2f23c9eec0dd3a1174d54d017f8d79ec79af4534118e6881
|
dlHash: b4cd12a1048b2fff2f23c9eec0dd3a1174d54d017f8d79ec79af4534118e6881
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
@@ -263,7 +263,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-822-64-deb8
|
unknown_versioning: *ghc-822-64-deb8
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.2.2-x86_64-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.2.2/ghc-8.2.2-x86_64-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.2.2
|
dlSubdir: ghc-8.2.2
|
||||||
dlHash: adcf3a320a3c402aba07ae9586990dc3c0b550e96aeffb1b9e194313d3ba716d
|
dlHash: adcf3a320a3c402aba07ae9586990dc3c0b550e96aeffb1b9e194313d3ba716d
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
@@ -299,7 +299,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-822-32-deb8
|
unknown_versioning: *ghc-822-32-deb8
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.2.2-i386-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.2.2/ghc-8.2.2-i386-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.2.2
|
dlSubdir: ghc-8.2.2
|
||||||
dlHash: 467534c32552cfd318753112dbc70af003693aad4b0081f2a07e61f5b5ea2c22
|
dlHash: 467534c32552cfd318753112dbc70af003693aad4b0081f2a07e61f5b5ea2c22
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
@@ -494,7 +494,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-844-64-centos
|
unknown_versioning: *ghc-844-64-centos
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.4.4-x86_64-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.4.4/ghc-8.4.4-x86_64-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.4.4
|
dlSubdir: ghc-8.4.4
|
||||||
dlHash: 336affff8314d3dc5e85d9c09015ae2ba8a7658b459c8c8ae77ecaa551a56ae7
|
dlHash: 336affff8314d3dc5e85d9c09015ae2ba8a7658b459c8c8ae77ecaa551a56ae7
|
||||||
Linux_AmazonLinux:
|
Linux_AmazonLinux:
|
||||||
@@ -523,7 +523,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-844-32-deb8
|
unknown_versioning: *ghc-844-32-deb8
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.4.4-i386-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.4.4/ghc-8.4.4-i386-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.4.4
|
dlSubdir: ghc-8.4.4
|
||||||
dlHash: 892888d388ef5c9cadf5cfba1146d62237c25b9b066fb62fee940b2b285fd308
|
dlHash: 892888d388ef5c9cadf5cfba1146d62237c25b9b066fb62fee940b2b285fd308
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
@@ -777,7 +777,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-865-64-centos
|
unknown_versioning: *ghc-865-64-centos
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.6.5-x86_64-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.6.5/ghc-8.6.5-x86_64-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.6.5
|
dlSubdir: ghc-8.6.5
|
||||||
dlHash: b9d3ed7f7aa24ef2d58bb579252289caa0b8877adee3685e3af2fb73d440afdc
|
dlHash: b9d3ed7f7aa24ef2d58bb579252289caa0b8877adee3685e3af2fb73d440afdc
|
||||||
Linux_AmazonLinux:
|
Linux_AmazonLinux:
|
||||||
@@ -791,7 +791,7 @@ ghcupDownloads:
|
|||||||
dlHash: dfc1bdb1d303a87a8552aa17f5b080e61351f2823c2b99071ec23d0837422169
|
dlHash: dfc1bdb1d303a87a8552aa17f5b080e61351f2823c2b99071ec23d0837422169
|
||||||
FreeBSD:
|
FreeBSD:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.6.5-x86_64-portbld-freebsd.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.6.5/ghc-8.6.5-x86_64-portbld-freebsd.tar.xz
|
||||||
dlSubdir: ghc-8.6.5
|
dlSubdir: ghc-8.6.5
|
||||||
dlHash: 83a3059a630d40a98e26cb5b520354e12094a96e36ba2f5ab002dad94cf2fb37
|
dlHash: 83a3059a630d40a98e26cb5b520354e12094a96e36ba2f5ab002dad94cf2fb37
|
||||||
A_32:
|
A_32:
|
||||||
@@ -806,7 +806,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-865-32-deb9
|
unknown_versioning: *ghc-865-32-deb9
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.6.5-i386-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.6.5/ghc-8.6.5-i386-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.6.5
|
dlSubdir: ghc-8.6.5
|
||||||
dlHash: 3737837550d9b177acfe150e3a3cd4545427ded020487c2ed5194d7b8f116349
|
dlHash: 3737837550d9b177acfe150e3a3cd4545427ded020487c2ed5194d7b8f116349
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
@@ -975,7 +975,7 @@ ghcupDownloads:
|
|||||||
dlHash: 7016de90dd226b06fc79d0759c5d4c83c2ab01d8c678905442c28bd948dbb782
|
dlHash: 7016de90dd226b06fc79d0759c5d4c83c2ab01d8c678905442c28bd948dbb782
|
||||||
FreeBSD:
|
FreeBSD:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.8.3-x86_64-portbld-freebsd.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.8.3/ghc-8.8.3-x86_64-portbld-freebsd.tar.xz
|
||||||
dlSubdir: ghc-8.8.3
|
dlSubdir: ghc-8.8.3
|
||||||
dlHash: 569719075b4d14b3875a899df522090ae31e6fe085e6dffe518e875b09a2f0be
|
dlHash: 569719075b4d14b3875a899df522090ae31e6fe085e6dffe518e875b09a2f0be
|
||||||
A_32:
|
A_32:
|
||||||
@@ -1028,7 +1028,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-884-64-centos
|
unknown_versioning: *ghc-884-64-centos
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.8.4-x86_64-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.8.4/ghc-8.8.4-x86_64-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.8.4
|
dlSubdir: ghc-8.8.4
|
||||||
dlHash: 90c6a1661de7f20c7d169cd6270125035b3332063e45103ce028df0beecf434e
|
dlHash: 90c6a1661de7f20c7d169cd6270125035b3332063e45103ce028df0beecf434e
|
||||||
Linux_AmazonLinux:
|
Linux_AmazonLinux:
|
||||||
@@ -1042,7 +1042,7 @@ ghcupDownloads:
|
|||||||
dlHash: e80a789e9d8cfb41dd87f3284b75432427c4461c1731d220d04ead8733ccdb5e
|
dlHash: e80a789e9d8cfb41dd87f3284b75432427c4461c1731d220d04ead8733ccdb5e
|
||||||
FreeBSD:
|
FreeBSD:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.8.4-x86_64-portbld-freebsd.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.8.4/ghc-8.8.4-x86_64-portbld-freebsd.tar.xz
|
||||||
dlSubdir: ghc-8.8.4
|
dlSubdir: ghc-8.8.4
|
||||||
dlHash: 8cebe5ccf454e82acd1ff52ca57590d1ab0f3f44a981b46257ec12158c8c447e
|
dlHash: 8cebe5ccf454e82acd1ff52ca57590d1ab0f3f44a981b46257ec12158c8c447e
|
||||||
A_32:
|
A_32:
|
||||||
@@ -1057,7 +1057,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-884-32-deb9
|
unknown_versioning: *ghc-884-32-deb9
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.8.4-i386-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.8.4/ghc-8.8.4-i386-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.8.4
|
dlSubdir: ghc-8.8.4
|
||||||
dlHash: 1d18e89ee031197e55c48683e78a7ffc67601ac5fd9f73aac555eb064b3859a2
|
dlHash: 1d18e89ee031197e55c48683e78a7ffc67601ac5fd9f73aac555eb064b3859a2
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
@@ -1118,7 +1118,7 @@ ghcupDownloads:
|
|||||||
dlHash: 65b1ca361093de4804a7e40b3e68178e1ef720f84f743641ec8d95e56a45b3a8
|
dlHash: 65b1ca361093de4804a7e40b3e68178e1ef720f84f743641ec8d95e56a45b3a8
|
||||||
FreeBSD:
|
FreeBSD:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.10.1-x86_64-portbld-freebsd.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.10.1/ghc-8.10.1-x86_64-portbld-freebsd.tar.xz
|
||||||
dlSubdir: ghc-8.10.1
|
dlSubdir: ghc-8.10.1
|
||||||
dlHash: e8646ec9b60fd40aa9505ee055f22f04601290ab7a1342c2cf37c34de9d3f142
|
dlHash: e8646ec9b60fd40aa9505ee055f22f04601290ab7a1342c2cf37c34de9d3f142
|
||||||
A_32:
|
A_32:
|
||||||
@@ -1134,7 +1134,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-8101-32-deb9
|
unknown_versioning: *ghc-8101-32-deb9
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.10.1-i386-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.10.1/ghc-8.10.1-i386-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.10.1
|
dlSubdir: ghc-8.10.1
|
||||||
dlHash: 7360cc6b29e9b4ab08f6ea5bc3bcca6f5c216933e81ef1620dcdd700f1fdb289
|
dlHash: 7360cc6b29e9b4ab08f6ea5bc3bcca6f5c216933e81ef1620dcdd700f1fdb289
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
@@ -1213,7 +1213,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-8102-32-deb9
|
unknown_versioning: *ghc-8102-32-deb9
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.10.2-i386-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.10.2/ghc-8.10.2-i386-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.10.2
|
dlSubdir: ghc-8.10.2
|
||||||
dlHash: 9ee1cf1e85e9536088b3c9e80e975074e525ea378cd4eb156071bbc4b7b38327
|
dlHash: 9ee1cf1e85e9536088b3c9e80e975074e525ea378cd4eb156071bbc4b7b38327
|
||||||
8.10.3:
|
8.10.3:
|
||||||
@@ -1289,7 +1289,7 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-8103-32-deb9
|
unknown_versioning: *ghc-8103-32-deb9
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://files.hasufell.de/ghc/ghc-8.10.3-i386-alpine-linux.tar.xz
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.10.3/ghc-8.10.3-i386-alpine-linux.tar.xz
|
||||||
dlSubdir: ghc-8.10.3
|
dlSubdir: ghc-8.10.3
|
||||||
dlHash: 309201cdefd2d13b8b3fd09c26c6137048c490d219a0a9c7407c3ce1d011f60c
|
dlHash: 309201cdefd2d13b8b3fd09c26c6137048c490d219a0a9c7407c3ce1d011f60c
|
||||||
8.10.4:
|
8.10.4:
|
||||||
@@ -1364,6 +1364,11 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-8104-32-deb9
|
unknown_versioning: *ghc-8104-32-deb9
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
unknown_versioning: *ghc-8104-32-deb9
|
unknown_versioning: *ghc-8104-32-deb9
|
||||||
|
Linux_Alpine:
|
||||||
|
unknown_versioning:
|
||||||
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.10.4/ghc-8.10.4-i386-alpine-linux.tar.xz
|
||||||
|
dlSubdir: ghc-8.10.4
|
||||||
|
dlHash: 9161a98bed763692101854d83af69c1316030cfe5ee6f6acde283d04ef139735
|
||||||
9.0.1:
|
9.0.1:
|
||||||
viTags:
|
viTags:
|
||||||
- Latest
|
- Latest
|
||||||
@@ -1436,6 +1441,11 @@ ghcupDownloads:
|
|||||||
unknown_versioning: *ghc-901-32-deb9
|
unknown_versioning: *ghc-901-32-deb9
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
unknown_versioning: *ghc-901-32-deb9
|
unknown_versioning: *ghc-901-32-deb9
|
||||||
|
Linux_Alpine:
|
||||||
|
unknown_versioning:
|
||||||
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/9.0.1/ghc-9.0.1-i386-alpine-linux.tar.xz
|
||||||
|
dlSubdir: ghc-9.0.1
|
||||||
|
dlHash: ebfeb3b91e6f2bb5a49fd3376746f7fd1b89e62e9838bf5b1530a8756ff1e6aa
|
||||||
Cabal:
|
Cabal:
|
||||||
2.4.1.0:
|
2.4.1.0:
|
||||||
viTags:
|
viTags:
|
||||||
@@ -1502,8 +1512,7 @@ ghcupDownloads:
|
|||||||
dlHash: 6898ccd6e6dc0872999c06daaf61d546164e12f60a1880d09852c9f0c59c5cf6
|
dlHash: 6898ccd6e6dc0872999c06daaf61d546164e12f60a1880d09852c9f0c59c5cf6
|
||||||
3.2.0.0:
|
3.2.0.0:
|
||||||
viTags:
|
viTags:
|
||||||
- Recommended
|
- old
|
||||||
- Latest
|
|
||||||
viChangeLog: https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/changelog
|
viChangeLog: https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/changelog
|
||||||
viArch:
|
viArch:
|
||||||
A_64:
|
A_64:
|
||||||
@@ -1532,30 +1541,40 @@ ghcupDownloads:
|
|||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-i386-unknown-linux.tar.xz
|
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-i386-unknown-linux.tar.xz
|
||||||
dlHash: 2b3ac28549916de5f3379241797eaf60e84b6c001f2abbe73d9fadbbaf768e93
|
dlHash: 2b3ac28549916de5f3379241797eaf60e84b6c001f2abbe73d9fadbbaf768e93
|
||||||
3.4.0.0-rc4:
|
3.4.0.0:
|
||||||
viTags:
|
viTags:
|
||||||
- Prerelease
|
- Recommended
|
||||||
|
- Latest
|
||||||
viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.4.0.0.md
|
viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.4.0.0.md
|
||||||
viArch:
|
viArch:
|
||||||
A_64:
|
A_64:
|
||||||
Linux_Ubuntu:
|
Linux_Ubuntu:
|
||||||
unknown_versioning: &cabal-3400rc4-ubuntu
|
unknown_versioning: &cabal-3400-ubuntu
|
||||||
dlUri: http://oleg.fi/cabal-install-3.4.0.0-rc4/cabal-install-3.4.0.0-x86_64-ubuntu-16.04.tar.xz
|
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.0.0/cabal-install-3.4.0.0-x86_64-ubuntu-16.04.tar.xz
|
||||||
dlHash: a1be168876816a624b206c55596d9bb5f442541c889ee2438d664698122b9ffe
|
dlHash: cf28f9ffd763476aa2b1730d85cbf155d366fac541f78ee3951e8cb2d6de63e6
|
||||||
Linux_Alpine:
|
Linux_Alpine:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: http://oleg.fi/cabal-install-3.4.0.0-rc4/cabal-install-3.4.0.0-x86_64-alpine-3.11.6-static-noofd.tar.xz
|
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.0.0/cabal-install-3.4.0.0-x86_64-alpine-3.11.6-static-noofd.tar.xz
|
||||||
dlHash: 49dab6684483594e4c7c3e561ec477268002605253ad34701b471277efbe91bc
|
dlHash: c74073fe79110946182e522fcadc8dcabf07c87583e8cf7801ed4e0c327241f6
|
||||||
Linux_UnknownLinux:
|
Linux_UnknownLinux:
|
||||||
unknown_versioning: *cabal-3400rc4-ubuntu
|
unknown_versioning: *cabal-3400-ubuntu
|
||||||
Darwin:
|
Darwin:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: http://oleg.fi/cabal-install-3.4.0.0-rc4/cabal-install-3.4.0.0-x86_64-darwin-sierra.tar.xz
|
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.0.0/cabal-install-3.4.0.0-x86_64-darwin-sierra.tar.xz
|
||||||
dlHash: a3f809a3388e90b9fdf52444e30ea9aad3894e2cbe53c37fc3311ceb106eda9e
|
dlHash: cb10be9a53e856aa2d852fd88fb6944f138783ffe0ea84d93c9a69244e34ea91
|
||||||
FreeBSD:
|
FreeBSD:
|
||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: http://oleg.fi/cabal-install-3.4.0.0-rc4/cabal-install-3.4.0.0-x86_64-freebsd-12.1-release.tar.xz
|
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.0.0/cabal-install-3.4.0.0-x86_64-freebsd-12.1-release.tar.xz
|
||||||
dlHash: 9705e16d03497b46be4ad477e6c64d10890af853eafa8a9adf6dba89aa9e05f7
|
dlHash: a1e2db664ec00e42a1e071a4181f6476f6e0bad321f1ddc0cf27831119f4c6d4
|
||||||
|
A_32:
|
||||||
|
Linux_UnknownLinux:
|
||||||
|
unknown_versioning:
|
||||||
|
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.0.0/cabal-install-3.4.0.0-i386-debian-9.tar.xz
|
||||||
|
dlHash: ef3750644a53f7b1fad141b2ad02d4c7a3b239ec0cbfa7f0528fb02c1dfcebce
|
||||||
|
Linux_Alpine:
|
||||||
|
unknown_versioning:
|
||||||
|
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/cabal/3.4.0.0/cabal-install-3.4.0.0-i386-alpine-linux-musl.tar.gz
|
||||||
|
dlHash: 95adb65f3a72aa8d9ce83685bc06e1eee5b801f56e204e27e957e8a35abd9cf8
|
||||||
GHCup:
|
GHCup:
|
||||||
0.1.12:
|
0.1.12:
|
||||||
viTags:
|
viTags:
|
||||||
|
|||||||
27931
golden/GHCupInfo.json
27931
golden/GHCupInfo.json
File diff suppressed because it is too large
Load Diff
22
lib/GHCup.hs
22
lib/GHCup.hs
@@ -1308,18 +1308,30 @@ upgradeGHCup :: ( MonadMask m
|
|||||||
upgradeGHCup dls mtarget force pfreq = do
|
upgradeGHCup dls mtarget force pfreq = do
|
||||||
AppState {dirs = Dirs {..}} <- lift ask
|
AppState {dirs = Dirs {..}} <- lift ask
|
||||||
lift $ $(logInfo) [i|Upgrading GHCup...|]
|
lift $ $(logInfo) [i|Upgrading GHCup...|]
|
||||||
let latestVer = fromJust $ getLatest dls GHCup
|
let latestVer = fromJust $ fst <$> getLatest dls GHCup
|
||||||
when (not force && (latestVer <= pvpToVersion ghcUpVer)) $ throwE NoUpdate
|
when (not force && (latestVer <= pvpToVersion ghcUpVer)) $ throwE NoUpdate
|
||||||
dli <- lE $ getDownloadInfo GHCup latestVer pfreq dls
|
dli <- lE $ getDownloadInfo GHCup latestVer pfreq dls
|
||||||
tmp <- lift withGHCupTmpDir
|
tmp <- lift withGHCupTmpDir
|
||||||
let fn = [rel|ghcup|]
|
let fn = [rel|ghcup|]
|
||||||
p <- liftE $ download dli tmp (Just fn)
|
p <- liftE $ download dli tmp (Just fn)
|
||||||
let fullDest = fromMaybe (binDir </> fn) mtarget
|
let destDir = dirname destFile
|
||||||
liftIO $ hideError NoSuchThing $ deleteFile fullDest
|
destFile = fromMaybe (binDir </> fn) mtarget
|
||||||
|
lift $ $(logDebug) [i|mkdir -p #{toFilePath destDir}|]
|
||||||
|
liftIO $ createDirRecursive' destDir
|
||||||
|
lift $ $(logDebug) [i|rm -f #{toFilePath destFile}|]
|
||||||
|
liftIO $ hideError NoSuchThing $ deleteFile destFile
|
||||||
|
lift $ $(logDebug) [i|cp #{toFilePath p} #{toFilePath destFile}|]
|
||||||
handleIO (throwE . CopyError . show) $ liftIO $ copyFile p
|
handleIO (throwE . CopyError . show) $ liftIO $ copyFile p
|
||||||
fullDest
|
destFile
|
||||||
Overwrite
|
Overwrite
|
||||||
lift $ chmod_755 fullDest
|
lift $ chmod_755 destFile
|
||||||
|
|
||||||
|
liftIO (isInPath destFile) >>= \b -> when (not b) $
|
||||||
|
lift $ $(logWarn) [i|"#{toFilePath (dirname destFile)}" is not in PATH! You have to add it in order to use ghcup.|]
|
||||||
|
liftIO (isShadowed destFile) >>= \case
|
||||||
|
Nothing -> pure ()
|
||||||
|
Just pa -> lift $ $(logWarn) [i|ghcup is shadowed by "#{toFilePath pa}". The upgrade will not be in effect, unless you remove "#{toFilePath pa}" or make sure "#{toFilePath destDir}" comes before "#{toFilePath (dirname pa)}" in PATH.|]
|
||||||
|
|
||||||
pure latestVer
|
pure latestVer
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,10 @@ data CopyError = CopyError String
|
|||||||
data TagNotFound = TagNotFound Tag Tool
|
data TagNotFound = TagNotFound Tag Tool
|
||||||
deriving Show
|
deriving Show
|
||||||
|
|
||||||
|
-- | Unable to find a version of a tool.
|
||||||
|
data VerNotFound = VerNotFound Version Tool
|
||||||
|
deriving Show
|
||||||
|
|
||||||
-- | The tool (such as GHC) is already installed with that version.
|
-- | The tool (such as GHC) is already installed with that version.
|
||||||
data AlreadyInstalled = AlreadyInstalled Tool Version
|
data AlreadyInstalled = AlreadyInstalled Tool Version
|
||||||
deriving Show
|
deriving Show
|
||||||
|
|||||||
@@ -85,10 +85,14 @@ data Tool = GHC
|
|||||||
-- | All necessary information of a tool version, including
|
-- | All necessary information of a tool version, including
|
||||||
-- source download and per-architecture downloads.
|
-- source download and per-architecture downloads.
|
||||||
data VersionInfo = VersionInfo
|
data VersionInfo = VersionInfo
|
||||||
{ _viTags :: [Tag] -- ^ version specific tag
|
{ _viTags :: [Tag] -- ^ version specific tag
|
||||||
, _viChangeLog :: Maybe URI
|
, _viChangeLog :: Maybe URI
|
||||||
, _viSourceDL :: Maybe DownloadInfo -- ^ source tarball
|
, _viSourceDL :: Maybe DownloadInfo -- ^ source tarball
|
||||||
, _viArch :: ArchitectureSpec -- ^ descend for binary downloads per arch
|
, _viArch :: ArchitectureSpec -- ^ descend for binary downloads per arch
|
||||||
|
-- informative messages
|
||||||
|
, _viPostInstall :: Maybe Text
|
||||||
|
, _viPostRemove :: Maybe Text
|
||||||
|
, _viPreCompile :: Maybe Text
|
||||||
}
|
}
|
||||||
deriving (Eq, GHC.Generic, Show)
|
deriving (Eq, GHC.Generic, Show)
|
||||||
|
|
||||||
|
|||||||
@@ -497,11 +497,11 @@ getGHCForMajor major' minor' mt = do
|
|||||||
getLatestGHCFor :: Int -- ^ major version component
|
getLatestGHCFor :: Int -- ^ major version component
|
||||||
-> Int -- ^ minor version component
|
-> Int -- ^ minor version component
|
||||||
-> GHCupDownloads
|
-> GHCupDownloads
|
||||||
-> Maybe Version
|
-> Maybe (Version, VersionInfo)
|
||||||
getLatestGHCFor major' minor' dls = do
|
getLatestGHCFor major' minor' dls = do
|
||||||
join
|
join
|
||||||
. fmap (lastMay . filter (\v -> matchMajor v major' minor'))
|
. fmap (lastMay . filter (\(v, _) -> matchMajor v major' minor'))
|
||||||
. preview (ix GHC % to Map.keys)
|
. preview (ix GHC % to Map.toDescList)
|
||||||
$ dls
|
$ dls
|
||||||
|
|
||||||
|
|
||||||
@@ -596,17 +596,17 @@ getTagged tag =
|
|||||||
% _head
|
% _head
|
||||||
)
|
)
|
||||||
|
|
||||||
getLatest :: GHCupDownloads -> Tool -> Maybe Version
|
getLatest :: GHCupDownloads -> Tool -> Maybe (Version, VersionInfo)
|
||||||
getLatest av tool = headOf (ix tool % getTagged Latest % to fst) $ av
|
getLatest av tool = headOf (ix tool % getTagged Latest) $ av
|
||||||
|
|
||||||
getRecommended :: GHCupDownloads -> Tool -> Maybe Version
|
getRecommended :: GHCupDownloads -> Tool -> Maybe (Version, VersionInfo)
|
||||||
getRecommended av tool = headOf (ix tool % getTagged Recommended % to fst) $ av
|
getRecommended av tool = headOf (ix tool % getTagged Recommended) $ av
|
||||||
|
|
||||||
|
|
||||||
-- | Gets the latest GHC with a given base version.
|
-- | Gets the latest GHC with a given base version.
|
||||||
getLatestBaseVersion :: GHCupDownloads -> PVP -> Maybe Version
|
getLatestBaseVersion :: GHCupDownloads -> PVP -> Maybe (Version, VersionInfo)
|
||||||
getLatestBaseVersion av pvpVer =
|
getLatestBaseVersion av pvpVer =
|
||||||
headOf (ix GHC % getTagged (Base pvpVer) % to fst) av
|
headOf (ix GHC % getTagged (Base pvpVer)) av
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -795,3 +795,16 @@ createDirRecursive' p =
|
|||||||
_ -> throwIO e
|
_ -> throwIO e
|
||||||
_ -> throwIO e
|
_ -> throwIO e
|
||||||
|
|
||||||
|
|
||||||
|
getVersionInfo :: Version
|
||||||
|
-> Tool
|
||||||
|
-> GHCupDownloads
|
||||||
|
-> Maybe VersionInfo
|
||||||
|
getVersionInfo v' tool dls =
|
||||||
|
headOf
|
||||||
|
( ix tool
|
||||||
|
% to (Map.filterWithKey (\k _ -> k == v'))
|
||||||
|
% to Map.elems
|
||||||
|
% _head
|
||||||
|
)
|
||||||
|
dls
|
||||||
|
|||||||
@@ -407,6 +407,32 @@ searchPath paths needle = go paths
|
|||||||
else pure False
|
else pure False
|
||||||
|
|
||||||
|
|
||||||
|
-- | Check wether a binary is shadowed by another one that comes before
|
||||||
|
-- it in PATH. Returns the path to said binary, if any.
|
||||||
|
isShadowed :: Path Abs -> IO (Maybe (Path Abs))
|
||||||
|
isShadowed p = do
|
||||||
|
let dir = dirname p
|
||||||
|
fn <- basename p
|
||||||
|
spaths <- catMaybes . fmap parseAbs <$> (liftIO getSearchPath)
|
||||||
|
if dir `elem` spaths
|
||||||
|
then do
|
||||||
|
let shadowPaths = takeWhile (/= dir) spaths
|
||||||
|
searchPath shadowPaths fn
|
||||||
|
else pure Nothing
|
||||||
|
|
||||||
|
|
||||||
|
-- | Check whether the binary is in PATH. This returns only `True`
|
||||||
|
-- if the directory containing the binary is part of PATH.
|
||||||
|
isInPath :: Path Abs -> IO Bool
|
||||||
|
isInPath p = do
|
||||||
|
let dir = dirname p
|
||||||
|
fn <- basename p
|
||||||
|
spaths <- catMaybes . fmap parseAbs <$> (liftIO getSearchPath)
|
||||||
|
if dir `elem` spaths
|
||||||
|
then isJust <$> searchPath [dir] fn
|
||||||
|
else pure False
|
||||||
|
|
||||||
|
|
||||||
findFiles :: Path Abs -> Regex -> IO [Path Rel]
|
findFiles :: Path Abs -> Regex -> IO [Path Rel]
|
||||||
findFiles path regex = do
|
findFiles path regex = do
|
||||||
dirStream <- openDirStream (toFilePath path)
|
dirStream <- openDirStream (toFilePath path)
|
||||||
|
|||||||
Reference in New Issue
Block a user