From 0af7aaef3c8c646fe9ca64dba88d69273105441a Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Wed, 29 Sep 2021 22:33:17 +0200 Subject: [PATCH 1/2] Fix ``--overwrite-version` for `ghcup compile ghc` Fixes #253 --- lib/GHCup.hs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/GHCup.hs b/lib/GHCup.hs index cc32996..9f70b50 100644 --- a/lib/GHCup.hs +++ b/lib/GHCup.hs @@ -2189,13 +2189,14 @@ compileGHC targetGhc ov bstrap jobs mbuildConfig patchdir aargs buildFlavour had let installVer = maybe tver (\ov' -> tver { _tvVersion = ov' }) ov alreadyInstalled <- lift $ ghcInstalled installVer - alreadySet <- fmap (== Just tver) $ lift $ ghcSet (_tvTarget tver) + alreadySet <- fmap (== Just installVer) $ lift $ ghcSet (_tvTarget installVer) + when alreadyInstalled $ do case isolateDir of Just isoDir -> - lift $ logWarn $ "GHC " <> T.pack (prettyShow tver) <> " already installed. Isolate installing to " <> T.pack isoDir + lift $ logWarn $ "GHC " <> T.pack (prettyShow installVer) <> " already installed. Isolate installing to " <> T.pack isoDir Nothing -> - lift $ logWarn $ "GHC " <> T.pack (prettyShow tver) <> " already installed. Will overwrite existing version." + lift $ logWarn $ "GHC " <> T.pack (prettyShow installVer) <> " already installed. Will overwrite existing version." lift $ logWarn "...waiting for 10 seconds before continuing, you can still abort..." liftIO $ threadDelay 10000000 -- give the user a sec to intervene @@ -2220,7 +2221,7 @@ compileGHC targetGhc ov bstrap jobs mbuildConfig patchdir aargs buildFlavour had -- only remove old ghc in regular installs when alreadyInstalled $ do lift $ logInfo "Deleting existing installation" - liftE $ rmGHCVer tver + liftE $ rmGHCVer installVer _ -> pure () @@ -2228,7 +2229,7 @@ compileGHC targetGhc ov bstrap jobs mbuildConfig patchdir aargs buildFlavour had liftE $ installPackedGHC bindist (Just $ RegexDir "ghc-.*") ghcdir - (tver ^. tvVersion) + (installVer ^. tvVersion) False -- not a force install, since we already overwrite when compiling. liftIO $ B.writeFile (ghcdir ghcUpSrcBuiltFile) bmk @@ -2236,13 +2237,13 @@ compileGHC targetGhc ov bstrap jobs mbuildConfig patchdir aargs buildFlavour had case isolateDir of -- set and make symlinks for regular (non-isolated) installs Nothing -> do - reThrowAll GHCupSetError $ postGHCInstall tver + reThrowAll GHCupSetError $ postGHCInstall installVer -- restore - when alreadySet $ liftE $ void $ setGHC tver SetGHCOnly + when alreadySet $ liftE $ void $ setGHC installVer SetGHCOnly _ -> pure () - pure tver + pure installVer where defaultConf = From 3b8f2e83074536d39c106dcdbd10a89c8d602fcf Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Wed, 29 Sep 2021 23:08:55 +0200 Subject: [PATCH 2/2] Apply patches before bootstrap --- lib/GHCup.hs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/GHCup.hs b/lib/GHCup.hs index 9f70b50..8d25869 100644 --- a/lib/GHCup.hs +++ b/lib/GHCup.hs @@ -2144,6 +2144,7 @@ compileGHC targetGhc ov bstrap jobs mbuildConfig patchdir aargs buildFlavour had workdir <- maybe (pure tmpUnpack) (liftE . intoSubdir tmpUnpack) (view dlSubdir dlInfo) + forM_ patchdir (\dir -> liftE $ applyPatches dir workdir) pure (workdir, tmpUnpack, tver) @@ -2151,7 +2152,7 @@ compileGHC targetGhc ov bstrap jobs mbuildConfig patchdir aargs buildFlavour had Right GitBranch{..} -> do tmpUnpack <- lift mkGhcupTmpDir let git args = execLogged "git" ("--no-pager":args) (Just tmpUnpack) "git" Nothing - tver <- reThrowAll @_ @'[ProcessError, NotFoundInPATH] DownloadFailed $ do + tver <- reThrowAll @_ @'[PatchFailed, ProcessError, NotFoundInPATH] DownloadFailed $ do let rep = fromMaybe "https://gitlab.haskell.org/ghc/ghc.git" repo lift $ logInfo $ "Fetching git repo " <> T.pack rep <> " at ref " <> T.pack ref <> " (this may take a while)" lEM $ git [ "init" ] @@ -2171,6 +2172,7 @@ compileGHC targetGhc ov bstrap jobs mbuildConfig patchdir aargs buildFlavour had lEM $ git [ "checkout", "FETCH_HEAD" ] lEM $ git [ "submodule", "update", "--init", "--depth", "1" ] + forM_ patchdir (\dir -> liftE $ applyPatches dir tmpUnpack) env <- liftE $ ghcEnv bghc lEM $ execLogged "python3" ["./boot"] (Just tmpUnpack) "ghc-bootstrap" (Just env) lEM $ execLogged "sh" ["./configure"] (Just tmpUnpack) "ghc-bootstrap" (Just env) @@ -2477,9 +2479,6 @@ compileGHC targetGhc ov bstrap jobs mbuildConfig patchdir aargs buildFlavour had () configureBindist bghc tver workdir ghcdir = do lift $ logInfo [s|configuring build|] - - forM_ patchdir (\dir -> liftE $ applyPatches dir workdir) - if | _tvVersion tver >= [vver|8.8.0|] -> do env <- liftE $ ghcEnv bghc