summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2021-07-28 16:37:33 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-08-02 04:17:26 -0400
commit20ef67a3776e3d2737dc385f67cb89c90199b20f (patch)
treed4986d3359567893fb31c53f1b94ed4de7787cde
parent8631ccf2ad221dfc04b66d1ad137bf4057dd2c06 (diff)
downloadhaskell-20ef67a3776e3d2737dc385f67cb89c90199b20f.tar.gz
hadrian: Drop --configure support
Hadrian's `--configure` support has long been a point of contention. While it's convenient, it also introduces a fair bit of implementation complexity and quite a few non-trivial failure modes (see #19804, 17883, and #15948). Moreover, the feature is actively misleading to the user: `./configure` is the primary means for the user to inform the build system about the system environment and in general will require input from the user. This commits removes the feature, replacing the flag with a stub message informing the user of the deprecation. Closes #20167.
-rw-r--r--hadrian/hadrian.cabal1
-rw-r--r--hadrian/src/CommandLine.hs9
-rw-r--r--hadrian/src/Rules.hs2
-rw-r--r--hadrian/src/Rules/Configure.hs84
4 files changed, 3 insertions, 93 deletions
diff --git a/hadrian/hadrian.cabal b/hadrian/hadrian.cabal
index 783de96934..173fc84459 100644
--- a/hadrian/hadrian.cabal
+++ b/hadrian/hadrian.cabal
@@ -67,7 +67,6 @@ executable hadrian
, Rules.BinaryDist
, Rules.Clean
, Rules.Compile
- , Rules.Configure
, Rules.Dependencies
, Rules.Docspec
, Rules.Documentation
diff --git a/hadrian/src/CommandLine.hs b/hadrian/src/CommandLine.hs
index c08eb6a2f4..2c5b90c499 100644
--- a/hadrian/src/CommandLine.hs
+++ b/hadrian/src/CommandLine.hs
@@ -1,6 +1,6 @@
module CommandLine (
optDescrs, cmdLineArgsMap, cmdFlavour, lookupFreeze1, lookupFreeze2, lookupSkipDepends,
- cmdBignum, cmdBignumCheck, cmdProgressInfo, cmdConfigure, cmdCompleteSetting,
+ cmdBignum, cmdBignumCheck, cmdProgressInfo, cmdCompleteSetting,
cmdDocsArgs, lookupBuildRoot, TestArgs(..), TestSpeed(..), defaultTestArgs,
cmdPrefix
) where
@@ -95,7 +95,7 @@ defaultTestArgs = TestArgs
, testAccept = False }
readConfigure :: Either String (CommandLineArgs -> CommandLineArgs)
-readConfigure = Right $ \flags -> flags { configure = True }
+readConfigure = Left "hadrian --configure has been deprecated (see #20167). Please run ./boot; ./configure manually"
readFlavour :: Maybe String -> Either String (CommandLineArgs -> CommandLineArgs)
readFlavour ms = Right $ \flags -> flags { flavour = lower <$> ms }
@@ -250,7 +250,7 @@ readDocsArg ms = maybe (Left "Cannot parse docs argument") (Right . set) (go =<<
optDescrs :: [OptDescr (Either String (CommandLineArgs -> CommandLineArgs))]
optDescrs =
[ Option ['c'] ["configure"] (NoArg readConfigure)
- "Run the boot and configure scripts (if you do not want to run them manually)."
+ "Deprecated: Run the boot and configure scripts."
, Option ['o'] ["build-root"] (OptArg readBuildRoot "BUILD_ROOT")
"Where to store build artifacts. (Default _build)."
, Option [] ["flavour"] (OptArg readFlavour "FLAVOUR")
@@ -345,9 +345,6 @@ cmdLineArgsMap = do
cmdLineArgs :: Action CommandLineArgs
cmdLineArgs = userSetting defaultCommandLineArgs
-cmdConfigure :: Action Bool
-cmdConfigure = configure <$> cmdLineArgs
-
cmdFlavour :: Action (Maybe String)
cmdFlavour = flavour <$> cmdLineArgs
diff --git a/hadrian/src/Rules.hs b/hadrian/src/Rules.hs
index e06a99136d..99cf293c99 100644
--- a/hadrian/src/Rules.hs
+++ b/hadrian/src/Rules.hs
@@ -13,7 +13,6 @@ import qualified Oracles.ModuleFiles
import Packages
import qualified Rules.BinaryDist
import qualified Rules.Compile
-import qualified Rules.Configure
import qualified Rules.Dependencies
import qualified Rules.Documentation
import qualified Rules.Generate
@@ -130,7 +129,6 @@ packageRules = do
buildRules :: Rules ()
buildRules = do
Rules.BinaryDist.bindistRules
- Rules.Configure.configureRules
Rules.Generate.copyRules
Rules.Generate.generateRules
Rules.Gmp.gmpRules
diff --git a/hadrian/src/Rules/Configure.hs b/hadrian/src/Rules/Configure.hs
deleted file mode 100644
index 6787bacf04..0000000000
--- a/hadrian/src/Rules/Configure.hs
+++ /dev/null
@@ -1,84 +0,0 @@
-module Rules.Configure (configureRules) where
-
-import Base
-import Builder
-import CommandLine
-import Context
-import Packages
-import Target
-import Utilities
-
-import qualified System.Info.Extra as System
-
--- | Files generated by running the @configure@ script.
-configureResults :: [FilePath]
-configureResults =
- [ configFile
- , configH
- , "compiler/ghc.cabal"
- , "rts/rts.cabal"
- , "ghc/ghc-bin.cabal"
- , "utils/iserv/iserv.cabal"
- , "utils/iserv-proxy/iserv-proxy.cabal"
- , "utils/remote-iserv/remote-iserv.cabal"
- , "utils/ghc-pkg/ghc-pkg.cabal"
- , "utils/runghc/runghc.cabal"
- , "utils/gen-dll/gen-dll.cabal"
- , "libraries/ghc-boot/ghc-boot.cabal"
- , "libraries/ghc-boot-th/ghc-boot-th.cabal"
- , "libraries/ghci/ghci.cabal"
- , "libraries/ghc-heap/ghc-heap.cabal"
- , "libraries/libiserv/libiserv.cabal"
- , "libraries/template-haskell/template-haskell.cabal"
- , "docs/users_guide/ghc_config.py"
- , "docs/index.html"
- , "libraries/prologue.txt"
- , "distrib/configure.ac"
- ]
-
-configureRules :: Rules ()
-configureRules = do
- configureResults &%> \outs -> do
- -- Do not cache the results. The true dependencies of the configure
- -- script are not tracked. This includes e.g. the ghc source path.
- historyDisable
-
- skip <- not <$> cmdConfigure
- if skip
- then unlessM (doesFileExist configFile) $
- error $ "Configuration file " ++ configFile ++ " is missing.\n"
- ++ "Run the configure script manually or let Hadrian run it "
- ++ "automatically by passing the flag --configure."
- else do
- -- We cannot use windowsHost here due to a cyclic dependency.
- when windowsHost $ do
- putBuild "| Checking for Windows tarballs..."
- pythonPath <- builderPath Python
- quietly $ cmd [pythonPath, "mk/get-win32-tarballs.py", "download", System.arch]
- let srcs = map (<.> "in") outs
- context = vanillaContext Stage0 compiler
- need srcs
- build $ target context (Configure ".") srcs outs
- -- TODO: This is fragile: we should remove this from behind the
- -- @--configure@ flag and add a proper dependency tracking.
- -- We need to copy the directory with unpacked Windows tarball to
- -- the build directory, so that the built GHC has access to it.
- -- See https://github.com/snowleopard/hadrian/issues/564.
- when windowsHost $ do
- root <- buildRoot
- copyDirectory "inplace/mingw" (root -/- "mingw")
- mingwFiles <- liftIO $ getDirectoryFilesIO "." [root -/- "mingw/**"]
- produces mingwFiles
-
- ["configure", configH <.> "in"] &%> \_ -> do
- skip <- not <$> cmdConfigure
- if skip
- then unlessM (doesFileExist "configure") $
- error $ "The configure script is missing.\nRun the boot script "
- ++ "manually let Hadrian run it automatically by passing the "
- ++ "flag --configure."
- else do
- need ["configure.ac"]
- putBuild "| Running boot..."
- verbosity <- getVerbosity
- quietly $ cmd [EchoStdout (verbosity >= Loud)] "python3 boot --hadrian"