From c7cf8e2a1c360fdc7e77a30bc2ededf0ea9b0134 Mon Sep 17 00:00:00 2001 From: Alexis Williams Date: Tue, 12 Jun 2018 02:12:10 -0700 Subject: [PATCH] Musical chairs, part 1: add warnings and aliases --- Cabal/Distribution/Simple/Setup.hs | 1 + Cabal/doc/nix-local-build-overview.rst | 9 +- .../Distribution/Client/CmdLegacy.hs | 109 ++++++++++ cabal-install/Distribution/Client/Setup.hs | 199 ++++++++++++++---- cabal-install/cabal-install.cabal | 8 +- cabal-install/changelog | 3 + cabal-install/main/Main.hs | 38 ++-- .../use-local-version-of-package.out | 2 +- .../use-local-package-as-setup-dep.out | 2 +- .../PackageTests/CustomDep/sandbox.test.hs | 2 +- .../PackageTests/Exec/T4049/sandbox.out | 4 +- .../PackageTests/Exec/T4049/sandbox.test.hs | 4 +- .../Exec/legacy-autoconfigure.out | 2 +- .../Exec/legacy-autoconfigure.test.hs | 2 +- .../PackageTests/Exec/legacy-no-args.out | 2 +- .../PackageTests/Exec/legacy-no-args.test.hs | 2 +- cabal-testsuite/PackageTests/Exec/legacy.out | 4 +- .../PackageTests/Exec/legacy.test.hs | 4 +- .../PackageTests/Exec/sandbox-ghc-pkg.out | 6 +- .../PackageTests/Exec/sandbox-ghc-pkg.test.hs | 6 +- .../PackageTests/Exec/sandbox-hc-pkg.out | 6 +- .../PackageTests/Exec/sandbox-hc-pkg.test.hs | 6 +- .../PackageTests/Exec/sandbox-path.out | 6 +- .../PackageTests/Exec/sandbox-path.test.hs | 6 +- cabal-testsuite/PackageTests/Exec/sandbox.out | 6 +- .../PackageTests/Exec/sandbox.test.hs | 6 +- .../Freeze/disable-benchmarks.out | 4 +- .../Freeze/disable-benchmarks.test.hs | 2 +- .../PackageTests/Freeze/disable-tests.out | 4 +- .../PackageTests/Freeze/disable-tests.test.hs | 2 +- .../PackageTests/Freeze/dry-run.out | 2 +- .../PackageTests/Freeze/dry-run.test.hs | 2 +- .../PackageTests/Freeze/enable-benchmarks.out | 4 +- .../Freeze/enable-benchmarks.test.hs | 2 +- .../PackageTests/Freeze/enable-tests.out | 4 +- .../PackageTests/Freeze/enable-tests.test.hs | 2 +- .../PackageTests/Freeze/freeze.out | 4 +- .../PackageTests/Freeze/freeze.test.hs | 2 +- .../InternalLibraries/sandbox-shadow.out | 2 +- .../InternalLibraries/sandbox-shadow.test.hs | 2 +- .../InternalLibraries/sandbox.out | 2 +- .../InternalLibraries/sandbox.test.hs | 2 +- .../build-local-package-with-custom-setup.out | 2 +- ...ld-package-from-repo-with-custom-setup.out | 2 +- .../PackageTests/NewBuild/T4375/cabal.out | 2 +- .../NewFreeze/BuildTools/new_freeze.out | 2 +- .../NewFreeze/Flags/new_freeze.out | 2 +- .../NewFreeze/FreezeFile/new_freeze.out | 2 +- .../PackageTests/Outdated/outdated.out | 2 +- .../PackageTests/Outdated/outdated_freeze.out | 2 +- .../PackageTests/Regression/T3199/sandbox.out | 2 +- .../Regression/T3199/sandbox.test.hs | 2 +- .../PackageTests/Regression/T3436/sandbox.out | 4 +- .../Regression/T3436/sandbox.test.hs | 4 +- .../PackageTests/Regression/T3932/cabal.out | 2 +- .../PackageTests/Regression/T5318/install.out | 2 +- .../Regression/T5318/install.test.hs | 2 +- .../Sandbox/MultipleSources/cabal.out | 2 +- .../Sandbox/MultipleSources/cabal.test.hs | 2 +- .../Sandbox/Reinstall/sandbox.out | 6 +- .../Sandbox/Reinstall/sandbox.test.hs | 6 +- cabal-testsuite/Test/Cabal/Prelude.hs | 32 ++- 62 files changed, 413 insertions(+), 156 deletions(-) create mode 100644 cabal-install/Distribution/Client/CmdLegacy.hs diff --git a/Cabal/Distribution/Simple/Setup.hs b/Cabal/Distribution/Simple/Setup.hs index 89d67110159..d8047d145e3 100644 --- a/Cabal/Distribution/Simple/Setup.hs +++ b/Cabal/Distribution/Simple/Setup.hs @@ -60,6 +60,7 @@ module Distribution.Simple.Setup ( buildOptions, haddockOptions, installDirsOptions, programDbOptions, programDbPaths', programConfigurationOptions, programConfigurationPaths', + programFlagsDescription, splitArgs, defaultDistPref, optionDistPref, diff --git a/Cabal/doc/nix-local-build-overview.rst b/Cabal/doc/nix-local-build-overview.rst index ec5bd35fe18..c581b9ef40f 100644 --- a/Cabal/doc/nix-local-build-overview.rst +++ b/Cabal/doc/nix-local-build-overview.rst @@ -2,8 +2,13 @@ Nix-style Local Builds ====================== Nix-style local builds are a new build system implementation inspired by Nix. -The Nix-style local build system is commonly called "new-build" for short after the ``cabal new-*`` family of commands that control it. -However those names are only temporary until Nix-style local builds becomes the default. +The Nix-style local build system is commonly called "new-build" for short +after the ``cabal new-*`` family of commands that control it. However, those +names are only temporary until Nix-style local builds become the default. +This is expected to happen soon. For those who do not wish to use the new +functionality, the classic project style will not be removed immediately, +but these legacy commands will require the usage of the ``v1-`` prefix as of +Cabal 3.0 and will be removed in a future release. Nix-style local builds combine the best of non-sandboxed and sandboxed Cabal: diff --git a/cabal-install/Distribution/Client/CmdLegacy.hs b/cabal-install/Distribution/Client/CmdLegacy.hs new file mode 100644 index 00000000000..3f1a51d9282 --- /dev/null +++ b/cabal-install/Distribution/Client/CmdLegacy.hs @@ -0,0 +1,109 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE ViewPatterns #-} +module Distribution.Client.CmdLegacy (legacyCmd) where + +import Prelude () +import Distribution.Client.Compat.Prelude + +import qualified Distribution.Client.Setup as Client +import qualified Distribution.Simple.Setup as Setup +import Distribution.Simple.Command +import Distribution.Simple.Utils + ( warn ) +import Distribution.Verbosity + ( Verbosity, normal ) + +import qualified Data.Text as T + +-- Duplicated code (it's identical to Main.regularCmd), but makes things cleaner +-- and lets me keep how this happens a dirty little secret. +makeCmd :: CommandUI flags -> (flags -> [String] -> action) -> CommandSpec action +makeCmd ui action = CommandSpec ui ((flip commandAddAction) action) NormalCommand + +deprecationNote :: String -> String +deprecationNote cmd = + "The " ++ cmd ++ " command is a part of the legacy v1 style of cabal usage.\n\n" ++ + + "Please switch to using either the new project style or the legacy v1-" ++ cmd ++ "\n" ++ + "alias as new-style projects will become the default in the next version of\n" ++ + "cabal-install. Please file a bug if you cannot replicate a working v1- use\n" ++ + "case with the new-style commands.\n" + +legacyNote :: String -> String +legacyNote cmd = + "The v1-" ++ cmd ++ " command is a part of the legacy v1 style of cabal usage.\n\n" ++ + + "It is a legacy feature and will be removed in a future release of cabal-install.\n" ++ + "Please file a bug if you cannot replicate a working v1- use case with the new-style\n" ++ + "commands.\n" + +-- + +class HasVerbosity a where + verbosity :: a -> Verbosity + +instance HasVerbosity (Setup.Flag Verbosity) where + verbosity = Setup.fromFlagOrDefault normal + +instance (HasVerbosity a) => HasVerbosity (a, b) where + verbosity (a, _) = verbosity a + +instance (HasVerbosity b) => HasVerbosity (a, b, c) where + verbosity (_ , b, _) = verbosity b + +instance (HasVerbosity a) => HasVerbosity (a, b, c, d) where + verbosity (a, _, _, _) = verbosity a + +instance HasVerbosity Setup.BuildFlags where + verbosity = verbosity . Setup.buildVerbosity + +instance HasVerbosity Setup.ConfigFlags where + verbosity = verbosity . Setup.configVerbosity + +instance HasVerbosity Setup.ReplFlags where + verbosity = verbosity . Setup.replVerbosity + +instance HasVerbosity Client.FreezeFlags where + verbosity = verbosity . Client.freezeVerbosity + +instance HasVerbosity Setup.HaddockFlags where + verbosity = verbosity . Setup.haddockVerbosity + +instance HasVerbosity Client.ExecFlags where + verbosity = verbosity . Client.execVerbosity + +instance HasVerbosity Client.UpdateFlags where + verbosity = verbosity . Client.updateVerbosity + +instance HasVerbosity Setup.CleanFlags where + verbosity = verbosity . Setup.cleanVerbosity + +-- + +legacyCmd :: (HasVerbosity flags) => CommandUI flags -> (flags -> [String] -> globals -> IO action) -> [CommandSpec (globals -> IO action)] +legacyCmd origUi@CommandUI{..} action = [makeCmd legUi action, makeCmd depUi depAction] + where + legacyMsg = T.unpack . T.replace "v1-" "" . T.pack + + depNote = deprecationNote commandName + legNote = legacyNote commandName + + depAction flags extra globals = warn (verbosity flags) (depNote ++ "\n") >> action flags extra globals + + legUi = origUi + { commandName = "v1-" ++ commandName + , commandNotes = Just $ \pname -> case commandNotes of + Just notes -> notes pname ++ "\n" ++ legNote + Nothing -> legNote + } + + depUi = origUi + { commandName = legacyMsg commandName + , commandUsage = legacyMsg . commandUsage + , commandDescription = (legacyMsg .) <$> commandDescription + , commandNotes = Just $ \pname -> case commandNotes of + Just notes -> legacyMsg (notes pname) ++ "\n" ++ depNote + Nothing -> depNote + } diff --git a/cabal-install/Distribution/Client/Setup.hs b/cabal-install/Distribution/Client/Setup.hs index e2011651b29..dce2316c135 100644 --- a/cabal-install/Distribution/Client/Setup.hs +++ b/cabal-install/Distribution/Client/Setup.hs @@ -49,6 +49,8 @@ module Distribution.Client.Setup , execCommand, ExecFlags(..), defaultExecFlags , userConfigCommand, UserConfigFlags(..) , manpageCommand + , haddockCommand + , cleanCommand , parsePackageArgs --TODO: stop exporting these: @@ -91,6 +93,7 @@ import Distribution.Simple.Setup ( ConfigFlags(..), BuildFlags(..), ReplFlags , TestFlags(..), BenchmarkFlags(..) , SDistFlags(..), HaddockFlags(..) + , CleanFlags(..) , readPackageDbList, showPackageDbList , Flag(..), toFlag, flagToMaybe, flagToList, maybeToFlag , BooleanFlag(..), optionVerbosity @@ -193,6 +196,19 @@ globalCommand commands = CommandUI { , "new-exec" , "new-update" , "new-install" + , "new-clean" + , "v1-build" + , "v1-configure" + , "v1-repl" + , "v1-freeze" + , "v1-run" + , "v1-test" + , "v1-bench" + , "v1-haddock" + , "v1-exec" + , "v1-update" + , "v1-install" + , "v1-clean" ] maxlen = maximum $ [length name | (name, _) <- cmdDescs] align str = str ++ replicate (maxlen - length str) ' ' @@ -263,6 +279,21 @@ globalCommand commands = CommandUI { , addCmd "new-exec" , addCmd "new-update" , addCmd "new-install" + , addCmd "new-clean" + , par + , startGroup "legacy command aliases" + , addCmd "v1-build" + , addCmd "v1-configure" + , addCmd "v1-repl" + , addCmd "v1-run" + , addCmd "v1-test" + , addCmd "v1-bench" + , addCmd "v1-freeze" + , addCmd "v1-haddock" + , addCmd "v1-exec" + , addCmd "v1-update" + , addCmd "v1-install" + , addCmd "v1-clean" ] ++ if null otherCmds then [] else par :startGroup "other" :[addCmd n | n <- otherCmds]) @@ -378,16 +409,24 @@ globalCommand commands = CommandUI { configureCommand :: CommandUI ConfigFlags configureCommand = c - { commandDefaultFlags = mempty - , commandNotes = Just $ \pname -> (case commandNotes c of - Nothing -> "" - Just n -> n pname ++ "\n") - ++ "Examples:\n" - ++ " " ++ pname ++ " configure\n" - ++ " Configure with defaults;\n" - ++ " " ++ pname ++ " configure --enable-tests -fcustomflag\n" - ++ " Configure building package including tests,\n" - ++ " with some package-specific flag.\n" + { commandName = "configure" + , commandDefaultFlags = mempty + , commandDescription = Just $ \_ -> wrapText $ + "Configure how the package is built by setting " + ++ "package (and other) flags.\n" + ++ "\n" + ++ "The configuration affects several other commands, " + ++ "including v1-build, v1-test, v1-bench, v1-run, v1-repl.\n" + , commandUsage = \pname -> + "Usage: " ++ pname ++ " v1-configure [FLAGS]\n" + , commandNotes = Just $ \pname -> + (Cabal.programFlagsDescription defaultProgramDb ++ "\n") + ++ "Examples:\n" + ++ " " ++ pname ++ " v1-configure\n" + ++ " Configure with defaults;\n" + ++ " " ++ pname ++ " v1-configure --enable-tests -fcustomflag\n" + ++ " Configure building package including tests,\n" + ++ " with some package-specific flag.\n" } where c = Cabal.configureCommand defaultProgramDb @@ -657,12 +696,26 @@ buildExOptions _showOrParseArgs = buildCommand :: CommandUI (BuildFlags, BuildExFlags) buildCommand = parent { + commandName = "build", + commandDescription = Just $ \_ -> wrapText $ + "Components encompass executables, tests, and benchmarks.\n" + ++ "\n" + ++ "Affected by configuration options, see `v1-configure`.\n", commandDefaultFlags = (commandDefaultFlags parent, mempty), + commandUsage = usageAlternatives "v1-build" $ + [ "[FLAGS]", "COMPONENTS [FLAGS]" ], commandOptions = \showOrParseArgs -> liftOptions fst setFst (commandOptions parent showOrParseArgs) ++ liftOptions snd setSnd (buildExOptions showOrParseArgs) + , commandNotes = Just $ \pname -> + "Examples:\n" + ++ " " ++ pname ++ " v1-build " + ++ " All the components in the package\n" + ++ " " ++ pname ++ " v1-build foo " + ++ " A component (i.e. lib, exe, test suite)\n\n" + ++ Cabal.programFlagsDescription defaultProgramDb } where setFst a (_,b) = (a,b) @@ -683,12 +736,40 @@ instance Semigroup BuildExFlags where replCommand :: CommandUI (ReplFlags, BuildExFlags) replCommand = parent { + commandName = "repl", + commandDescription = Just $ \pname -> wrapText $ + "If the current directory contains no package, ignores COMPONENT " + ++ "parameters and opens an interactive interpreter session; if a " + ++ "sandbox is present, its package database will be used.\n" + ++ "\n" + ++ "Otherwise, (re)configures with the given or default flags, and " + ++ "loads the interpreter with the relevant modules. For executables, " + ++ "tests and benchmarks, loads the main module (and its " + ++ "dependencies); for libraries all exposed/other modules.\n" + ++ "\n" + ++ "The default component is the library itself, or the executable " + ++ "if that is the only component.\n" + ++ "\n" + ++ "Support for loading specific modules is planned but not " + ++ "implemented yet. For certain scenarios, `" ++ pname + ++ " v1-exec -- ghci :l Foo` may be used instead. Note that `v1-exec` will " + ++ "not (re)configure and you will have to specify the location of " + ++ "other modules, if required.\n", + commandUsage = \pname -> "Usage: " ++ pname ++ " v1-repl [COMPONENT] [FLAGS]\n", commandDefaultFlags = (commandDefaultFlags parent, mempty), commandOptions = \showOrParseArgs -> liftOptions fst setFst (commandOptions parent showOrParseArgs) ++ - liftOptions snd setSnd (buildExOptions showOrParseArgs) + liftOptions snd setSnd (buildExOptions showOrParseArgs), + commandNotes = Just $ \pname -> + "Examples:\n" + ++ " " ++ pname ++ " v1-repl " + ++ " The first component in the package\n" + ++ " " ++ pname ++ " v1-repl foo " + ++ " A named component (i.e. lib, exe, test suite)\n" + ++ " " ++ pname ++ " v1-repl --ghc-options=\"-lstdc++\"" + ++ " Specifying flags for interpreter\n" } where setFst a (_,b) = (a,b) @@ -702,6 +783,19 @@ replCommand = parent { testCommand :: CommandUI (TestFlags, BuildFlags, BuildExFlags) testCommand = parent { + commandName = "test", + commandDescription = Just $ \pname -> wrapText $ + "If necessary (re)configures with `--enable-tests` flag and builds" + ++ " the test suite.\n" + ++ "\n" + ++ "Remember that the tests' dependencies must be installed if there" + ++ " are additional ones; e.g. with `" ++ pname + ++ " v1-install --only-dependencies --enable-tests`.\n" + ++ "\n" + ++ "By defining UserHooks in a custom Setup.hs, the package can" + ++ " define actions to be executed before and after running tests.\n", + commandUsage = usageAlternatives "v1-test" + [ "[FLAGS]", "TESTCOMPONENTS [FLAGS]" ], commandDefaultFlags = (commandDefaultFlags parent, Cabal.defaultBuildFlags, mempty), commandOptions = @@ -727,6 +821,20 @@ testCommand = parent { benchmarkCommand :: CommandUI (BenchmarkFlags, BuildFlags, BuildExFlags) benchmarkCommand = parent { + commandName = "bench", + commandUsage = usageAlternatives "v1-bench" + [ "[FLAGS]", "BENCHCOMPONENTS [FLAGS]" ], + commandDescription = Just $ \pname -> wrapText $ + "If necessary (re)configures with `--enable-benchmarks` flag and" + ++ " builds the benchmarks.\n" + ++ "\n" + ++ "Remember that the benchmarks' dependencies must be installed if" + ++ " there are additional ones; e.g. with `" ++ pname + ++ " v1-install --only-dependencies --enable-benchmarks`.\n" + ++ "\n" + ++ "By defining UserHooks in a custom Setup.hs, the package can" + ++ " define actions to be executed before and after running" + ++ " benchmarks.\n", commandDefaultFlags = (commandDefaultFlags parent, Cabal.defaultBuildFlags, mempty), commandOptions = @@ -1087,7 +1195,7 @@ updateCommand = CommandUI { relevantConfigValuesText ["remote-repo" ,"remote-repo-cache" ,"local-repo"], - commandUsage = usageFlags "update", + commandUsage = usageFlags "v1-update", commandDefaultFlags = defaultUpdateFlags, commandOptions = \_ -> [ optionVerbosity updateVerbosity (\v flags -> flags { updateVerbosity = v }), @@ -1119,16 +1227,11 @@ upgradeCommand = configureCommand { commandOptions = commandOptions installCommand } -{- -cleanCommand :: CommandUI () -cleanCommand = makeCommand name shortDesc longDesc emptyFlags options - where - name = "clean" - shortDesc = "Removes downloaded files" - longDesc = Nothing - emptyFlags = () - options _ = [] --} +cleanCommand :: CommandUI CleanFlags +cleanCommand = Cabal.cleanCommand + { commandUsage = \pname -> + "Usage: " ++ pname ++ " v1-clean [FLAGS]\n" + } checkCommand :: CommandUI (Flag Verbosity) checkCommand = CommandUI { @@ -1189,15 +1292,15 @@ runCommand = CommandUI { ++ "specified, but the package contains just one executable, that one " ++ "is built and executed.\n" ++ "\n" - ++ "Use `" ++ pname ++ " test --show-details=streaming` to run a " + ++ "Use `" ++ pname ++ " v1-test --show-details=streaming` to run a " ++ "test-suite and get its full output.\n", commandNotes = Just $ \pname -> "Examples:\n" - ++ " " ++ pname ++ " run\n" + ++ " " ++ pname ++ " v1-run\n" ++ " Run the only executable in the current package;\n" - ++ " " ++ pname ++ " run foo -- --fooflag\n" + ++ " " ++ pname ++ " v1-run foo -- --fooflag\n" ++ " Works similar to `./foo --fooflag`.\n", - commandUsage = usageAlternatives "run" + commandUsage = usageAlternatives "v1-run" ["[FLAGS] [EXECUTABLE] [-- EXECUTABLE_FLAGS]"], commandDefaultFlags = mempty, commandOptions = @@ -1575,7 +1678,7 @@ installCommand :: CommandUI (ConfigFlags, ConfigExFlags, InstallFlags, HaddockFl installCommand = CommandUI { commandName = "install", commandSynopsis = "Install packages.", - commandUsage = usageAlternatives "install" [ "[FLAGS]" + commandUsage = usageAlternatives "v1-install" [ "[FLAGS]" , "[FLAGS] PACKAGES" ], commandDescription = Just $ \_ -> wrapText $ @@ -1588,12 +1691,12 @@ installCommand = CommandUI { ++ " dependencies) (there must be exactly one .cabal file in the current" ++ " directory).\n" ++ "\n" - ++ "When using a sandbox, the flags for `install` only affect the" + ++ "When using a sandbox, the flags for `v1-install` only affect the" ++ " current command and have no effect on future commands. (To achieve" - ++ " that, `configure` must be used.)\n" - ++ " In contrast, without a sandbox, the flags to `install` are saved and" - ++ " affect future commands such as `build` and `repl`. See the help for" - ++ " `configure` for a list of commands being affected.\n" + ++ " that, `v1-configure` must be used.)\n" + ++ " In contrast, without a sandbox, the flags to `v1-install` are saved and" + ++ " affect future commands such as `v1-build` and `v1-repl`. See the help for" + ++ " `v1-configure` for a list of commands being affected.\n" ++ "\n" ++ "Installed executables will by default (and without a sandbox)" ++ " be put into `~/.cabal/bin/`." @@ -1612,15 +1715,15 @@ installCommand = CommandUI { Nothing -> "" ) ++ "Examples:\n" - ++ " " ++ pname ++ " install " + ++ " " ++ pname ++ " v1-install " ++ " Package in the current directory\n" - ++ " " ++ pname ++ " install foo " + ++ " " ++ pname ++ " v1-install foo " ++ " Package from the hackage server\n" - ++ " " ++ pname ++ " install foo-1.0 " + ++ " " ++ pname ++ " v1-install foo-1.0 " ++ " Specific version of a package\n" - ++ " " ++ pname ++ " install 'foo < 2' " + ++ " " ++ pname ++ " v1-install 'foo < 2' " ++ " Constrained package version\n" - ++ " " ++ pname ++ " install haddock --bindir=$HOME/hask-bin/ --datadir=$HOME/hask-data/\n" + ++ " " ++ pname ++ " v1-install haddock --bindir=$HOME/hask-bin/ --datadir=$HOME/hask-data/\n" ++ " " ++ (map (const ' ') pname) ++ " " ++ " Change installation destination\n", @@ -1649,6 +1752,12 @@ installCommand = CommandUI { get3 (_,_,c,_) = c; set3 c (a,b,_,d) = (a,b,c,d) get4 (_,_,_,d) = d; set4 d (a,b,c,_) = (a,b,c,d) +haddockCommand :: CommandUI HaddockFlags +haddockCommand = Cabal.haddockCommand + { commandUsage = usageAlternatives "v1-haddock" $ + [ "[FLAGS]", "COMPONENTS [FLAGS]" ] + } + filterHaddockArgs :: [String] -> Version -> [String] filterHaddockArgs args cabalLibVersion | cabalLibVersion >= mkVersion [2,3,0] = args_latest @@ -2389,7 +2498,7 @@ execCommand = CommandUI { -- TODO: this is too GHC-focused for my liking.. "A directly invoked GHC will not automatically be aware of any" ++ " sandboxes: the GHC_PACKAGE_PATH environment variable controls what" - ++ " GHC uses. `" ++ pname ++ " exec` can be used to modify this variable:" + ++ " GHC uses. `" ++ pname ++ " v1-exec` can be used to modify this variable:" ++ " COMMAND will be executed in a modified environment and thereby uses" ++ " the sandbox package database.\n" ++ "\n" @@ -2397,26 +2506,26 @@ execCommand = CommandUI { ++ "\n" ++ "Note that other " ++ pname ++ " commands change the environment" ++ " variable appropriately already, so there is no need to wrap those" - ++ " in `" ++ pname ++ " exec`. But with `" ++ pname ++ " exec`, the user" + ++ " in `" ++ pname ++ " v1-exec`. But with `" ++ pname ++ " v1-exec`, the user" ++ " has more control and can, for example, execute custom scripts which" ++ " indirectly execute GHC.\n" ++ "\n" - ++ "Note that `" ++ pname ++ " repl` is different from `" ++ pname - ++ " exec -- ghci` as the latter will not forward any additional flags" + ++ "Note that `" ++ pname ++ " v1-repl` is different from `" ++ pname + ++ " v1-exec -- ghci` as the latter will not forward any additional flags" ++ " being defined in the local package to ghci.\n" ++ "\n" ++ "See `" ++ pname ++ " sandbox`.\n", commandNotes = Just $ \pname -> "Examples:\n" - ++ " " ++ pname ++ " exec -- ghci -Wall\n" + ++ " " ++ pname ++ " v1-exec -- ghci -Wall\n" ++ " Start a repl session with sandbox packages and all warnings;\n" - ++ " " ++ pname ++ " exec gitit -- -f gitit.cnf\n" + ++ " " ++ pname ++ " v1-exec gitit -- -f gitit.cnf\n" ++ " Give gitit access to the sandbox packages, and pass it a flag;\n" - ++ " " ++ pname ++ " exec runghc Foo.hs\n" + ++ " " ++ pname ++ " v1-exec runghc Foo.hs\n" ++ " Execute runghc on Foo.hs with runghc configured to use the\n" ++ " sandbox package database (if a sandbox is being used).\n", commandUsage = \pname -> - "Usage: " ++ pname ++ " exec [FLAGS] [--] COMMAND [--] [ARGS]\n", + "Usage: " ++ pname ++ " v1-exec [FLAGS] [--] COMMAND [--] [ARGS]\n", commandDefaultFlags = defaultExecFlags, commandOptions = \showOrParseArgs -> diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal index a62361d38f3..208fa67ab8a 100644 --- a/cabal-install/cabal-install.cabal +++ b/cabal-install/cabal-install.cabal @@ -158,6 +158,7 @@ library Distribution.Client.CmdRepl Distribution.Client.CmdRun Distribution.Client.CmdTest + Distribution.Client.CmdLegacy Distribution.Client.Compat.Directory Distribution.Client.Compat.ExecutablePath Distribution.Client.Compat.FileLock @@ -316,7 +317,8 @@ library tar >= 0.5.0.3 && < 0.6, time >= 1.4 && < 1.9, zlib >= 0.5.3 && < 0.7, - hackage-security >= 0.5.2.2 && < 0.6 + hackage-security >= 0.5.2.2 && < 0.6, + text >= 1.2.3 && < 1.3 if flag(native-dns) if os(windows) @@ -393,7 +395,8 @@ executable cabal tar >= 0.5.0.3 && < 0.6, time >= 1.4 && < 1.9, zlib >= 0.5.3 && < 0.7, - hackage-security >= 0.5.2.2 && < 0.6 + hackage-security >= 0.5.2.2 && < 0.6, + text >= 1.2.3 && < 1.3 other-modules: Distribution.Client.BuildReports.Anonymous @@ -410,6 +413,7 @@ executable cabal Distribution.Client.CmdFreeze Distribution.Client.CmdHaddock Distribution.Client.CmdInstall + Distribution.Client.CmdLegacy Distribution.Client.CmdRepl Distribution.Client.CmdRun Distribution.Client.CmdTest diff --git a/cabal-install/changelog b/cabal-install/changelog index f59733934a3..c6d3b4030a3 100644 --- a/cabal-install/changelog +++ b/cabal-install/changelog @@ -1,6 +1,9 @@ -*-change-log-*- 2.4.0.0 (current development version) + * Add 'v1-' prefixes for the commands that will be replaced in the + new-build universe, in preparation for it becoming the default. + (#5358) * Completed the 'new-clean' command (#5357). The functionality is equivalent to old-style clean, but for nix-style builds. * Ensure that each package selected for a build-depends dependency diff --git a/cabal-install/main/Main.hs b/cabal-install/main/Main.hs index 623d61158bd..d10a0884a02 100644 --- a/cabal-install/main/Main.hs +++ b/cabal-install/main/Main.hs @@ -47,16 +47,18 @@ import Distribution.Client.Setup , UserConfigFlags(..), userConfigCommand , reportCommand , manpageCommand + , haddockCommand + , cleanCommand ) import Distribution.Simple.Setup ( HaddockTarget(..) , DoctestFlags(..), doctestCommand - , HaddockFlags(..), haddockCommand, defaultHaddockFlags + , HaddockFlags(..), defaultHaddockFlags , HscolourFlags(..), hscolourCommand , ReplFlags(..) , CopyFlags(..), copyCommand , RegisterFlags(..), registerCommand - , CleanFlags(..), cleanCommand + , CleanFlags(..) , TestFlags(..), BenchmarkFlags(..) , Flag(..), fromFlag, fromFlagOrDefault, flagToMaybe, toFlag , configAbsolutePaths @@ -88,6 +90,7 @@ import qualified Distribution.Client.CmdTest as CmdTest import qualified Distribution.Client.CmdBench as CmdBench import qualified Distribution.Client.CmdExec as CmdExec import qualified Distribution.Client.CmdClean as CmdClean +import Distribution.Client.CmdLegacy import Distribution.Client.Install (install) import Distribution.Client.Configure (configure, writeConfigFlags) @@ -276,37 +279,25 @@ mainWorker args = topHandler $ commands = map commandFromSpec commandSpecs commandSpecs = - [ regularCmd installCommand installAction - , regularCmd updateCommand updateAction - , regularCmd listCommand listAction + [ regularCmd listCommand listAction , regularCmd infoCommand infoAction , regularCmd fetchCommand fetchAction - , regularCmd freezeCommand freezeAction , regularCmd getCommand getAction , hiddenCmd unpackCommand unpackAction , regularCmd checkCommand checkAction , regularCmd sdistCommand sdistAction , regularCmd uploadCommand uploadAction , regularCmd reportCommand reportAction - , regularCmd runCommand runAction , regularCmd initCommand initAction - , regularCmd configureExCommand configureAction , regularCmd reconfigureCommand reconfigureAction - , regularCmd buildCommand buildAction - , regularCmd replCommand replAction , regularCmd sandboxCommand sandboxAction , regularCmd doctestCommand doctestAction - , regularCmd haddockCommand haddockAction - , regularCmd execCommand execAction , regularCmd userConfigCommand userConfigAction - , regularCmd cleanCommand cleanAction , regularCmd genBoundsCommand genBoundsAction , regularCmd outdatedCommand outdatedAction , wrapperCmd copyCommand copyVerbosity copyDistPref , wrapperCmd hscolourCommand hscolourVerbosity hscolourDistPref , wrapperCmd registerCommand regVerbosity regDistPref - , regularCmd testCommand testAction - , regularCmd benchmarkCommand benchmarkAction , hiddenCmd uninstallCommand uninstallAction , hiddenCmd formatCommand formatAction , hiddenCmd upgradeCommand upgradeAction @@ -325,11 +316,26 @@ mainWorker args = topHandler $ , regularCmd CmdTest.testCommand CmdTest.testAction , regularCmd CmdBench.benchCommand CmdBench.benchAction , regularCmd CmdExec.execCommand CmdExec.execAction - , regularCmd CmdClean.cleanCommand CmdClean.cleanAction + , regularCmd CmdClean.cleanCommand CmdClean.cleanAction + ] ++ concat + [ legacyCmd configureExCommand configureAction + , legacyCmd updateCommand updateAction + , legacyCmd buildCommand buildAction + , legacyCmd replCommand replAction + , legacyCmd freezeCommand freezeAction + , legacyCmd haddockCommand haddockAction + , legacyCmd installCommand installAction + , legacyCmd runCommand runAction + , legacyCmd testCommand testAction + , legacyCmd benchmarkCommand benchmarkAction + , legacyCmd execCommand execAction + , legacyCmd cleanCommand cleanAction ] type Action = GlobalFlags -> IO () +-- Duplicated in Distribution.Client.CmdLegacy. Any changes must be +-- reflected there, as well. regularCmd :: CommandUI flags -> (flags -> [String] -> action) -> CommandSpec action regularCmd ui action = diff --git a/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackage/use-local-version-of-package.out b/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackage/use-local-version-of-package.out index fbd952341e7..eebf98b5603 100644 --- a/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackage/use-local-version-of-package.out +++ b/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackage/use-local-version-of-package.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo # cabal new-build Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackageForSetup/use-local-package-as-setup-dep.out b/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackageForSetup/use-local-package-as-setup-dep.out index db1c3e94a60..0a8e5570a69 100644 --- a/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackageForSetup/use-local-package-as-setup-dep.out +++ b/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackageForSetup/use-local-package-as-setup-dep.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo # cabal new-build Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/CustomDep/sandbox.test.hs b/cabal-testsuite/PackageTests/CustomDep/sandbox.test.hs index 3ce91224cfe..55e5383931f 100644 --- a/cabal-testsuite/PackageTests/CustomDep/sandbox.test.hs +++ b/cabal-testsuite/PackageTests/CustomDep/sandbox.test.hs @@ -13,4 +13,4 @@ main = cabalTest $ do -- built against GHC's bundled Cabal. This means that the -- output we see may vary between tests, so we don't record this. recordMode DoNotRecord $ - cabal "install" ["client"] + cabal "v1-install" ["client"] diff --git a/cabal-testsuite/PackageTests/Exec/T4049/sandbox.out b/cabal-testsuite/PackageTests/Exec/T4049/sandbox.out index 0a2eb03b2cb..a5d9f45c2ee 100644 --- a/cabal-testsuite/PackageTests/Exec/T4049/sandbox.out +++ b/cabal-testsuite/PackageTests/Exec/T4049/sandbox.out @@ -1,12 +1,12 @@ # cabal sandbox init Writing a default package environment file to /sandbox.dist/cabal.sandbox.config Creating a new sandbox at /sandbox.dist/sandbox -# cabal install +# cabal v1-install Resolving dependencies... Configuring my-foreign-lib-0.1.0.0... Preprocessing foreign library 'myforeignlib' for my-foreign-lib-0.1.0.0.. Building foreign library 'myforeignlib' for my-foreign-lib-0.1.0.0.. Installing foreign library myforeignlib in Installed my-foreign-lib-0.1.0.0 -# cabal exec +# cabal v1-exec Hi from a foreign library! Foo has value 5678 diff --git a/cabal-testsuite/PackageTests/Exec/T4049/sandbox.test.hs b/cabal-testsuite/PackageTests/Exec/T4049/sandbox.test.hs index 9128c40f714..bad008e7086 100644 --- a/cabal-testsuite/PackageTests/Exec/T4049/sandbox.test.hs +++ b/cabal-testsuite/PackageTests/Exec/T4049/sandbox.test.hs @@ -2,7 +2,7 @@ import Test.Cabal.Prelude main = cabalTest $ do skipUnless =<< ghcVersionIs (>= mkVersion [7,8]) withSandbox $ do - cabal "install" ["--enable-shared"] + cabal "v1-install" ["--enable-shared"] env <- getTestEnv is_windows <- isWindows let sandbox_dir = testSandboxDir env @@ -17,4 +17,4 @@ main = cabalTest $ do , "-l" ++ "myforeignlib" , "-L" ++ lib_dir ] recordMode RecordAll $ - cabal "exec" ["-v0", work_dir "UseLib"] + cabal "v1-exec" ["-v0", work_dir "UseLib"] diff --git a/cabal-testsuite/PackageTests/Exec/legacy-autoconfigure.out b/cabal-testsuite/PackageTests/Exec/legacy-autoconfigure.out index ba51d8e15a5..60e6f91defd 100644 --- a/cabal-testsuite/PackageTests/Exec/legacy-autoconfigure.out +++ b/cabal-testsuite/PackageTests/Exec/legacy-autoconfigure.out @@ -1 +1 @@ -# cabal exec +# cabal v1-exec diff --git a/cabal-testsuite/PackageTests/Exec/legacy-autoconfigure.test.hs b/cabal-testsuite/PackageTests/Exec/legacy-autoconfigure.test.hs index f72e3018710..2d013fb3f58 100644 --- a/cabal-testsuite/PackageTests/Exec/legacy-autoconfigure.test.hs +++ b/cabal-testsuite/PackageTests/Exec/legacy-autoconfigure.test.hs @@ -1,4 +1,4 @@ import Test.Cabal.Prelude main = cabalTest $ do - cabal' "exec" ["echo", "find_me_in_output"] + cabal' "v1-exec" ["echo", "find_me_in_output"] >>= assertOutputContains "find_me_in_output" diff --git a/cabal-testsuite/PackageTests/Exec/legacy-no-args.out b/cabal-testsuite/PackageTests/Exec/legacy-no-args.out index 4f2764159bb..5bb7415e52c 100644 --- a/cabal-testsuite/PackageTests/Exec/legacy-no-args.out +++ b/cabal-testsuite/PackageTests/Exec/legacy-no-args.out @@ -1,2 +1,2 @@ -# cabal exec +# cabal v1-exec cabal: Please specify an executable to run diff --git a/cabal-testsuite/PackageTests/Exec/legacy-no-args.test.hs b/cabal-testsuite/PackageTests/Exec/legacy-no-args.test.hs index e9a9469aa2d..9b1e322fbc1 100644 --- a/cabal-testsuite/PackageTests/Exec/legacy-no-args.test.hs +++ b/cabal-testsuite/PackageTests/Exec/legacy-no-args.test.hs @@ -1,2 +1,2 @@ import Test.Cabal.Prelude -main = cabalTest $ fails (cabal' "exec" []) >>= assertOutputContains "Please specify an executable to run" +main = cabalTest $ fails (cabal' "v1-exec" []) >>= assertOutputContains "Please specify an executable to run" diff --git a/cabal-testsuite/PackageTests/Exec/legacy.out b/cabal-testsuite/PackageTests/Exec/legacy.out index 8c070853985..988e97eb25a 100644 --- a/cabal-testsuite/PackageTests/Exec/legacy.out +++ b/cabal-testsuite/PackageTests/Exec/legacy.out @@ -1,4 +1,4 @@ -# cabal configure +# cabal v1-configure Resolving dependencies... Configuring my-0.1... -# cabal exec +# cabal v1-exec diff --git a/cabal-testsuite/PackageTests/Exec/legacy.test.hs b/cabal-testsuite/PackageTests/Exec/legacy.test.hs index fd14db4af78..9d540c38b6e 100644 --- a/cabal-testsuite/PackageTests/Exec/legacy.test.hs +++ b/cabal-testsuite/PackageTests/Exec/legacy.test.hs @@ -1,5 +1,5 @@ import Test.Cabal.Prelude main = cabalTest $ do - cabal "configure" [] - cabal' "exec" ["echo", "find_me_in_output"] + cabal "v1-configure" [] + cabal' "v1-exec" ["echo", "find_me_in_output"] >>= assertOutputContains "find_me_in_output" diff --git a/cabal-testsuite/PackageTests/Exec/sandbox-ghc-pkg.out b/cabal-testsuite/PackageTests/Exec/sandbox-ghc-pkg.out index 6209c0aa1b7..1b8c445e63e 100644 --- a/cabal-testsuite/PackageTests/Exec/sandbox-ghc-pkg.out +++ b/cabal-testsuite/PackageTests/Exec/sandbox-ghc-pkg.out @@ -1,9 +1,9 @@ # cabal sandbox init Writing a default package environment file to /sandbox-ghc-pkg.dist/cabal.sandbox.config Creating a new sandbox at /sandbox-ghc-pkg.dist/sandbox -# cabal exec +# cabal v1-exec cabal: The program 'my-executable' is required but it could not be found. -# cabal install +# cabal v1-install Resolving dependencies... Configuring my-0.1... Preprocessing executable 'my-executable' for my-0.1.. @@ -13,4 +13,4 @@ Building library for my-0.1.. Installing executable my-executable in Installing library in Installed my-0.1 -# cabal exec +# cabal v1-exec diff --git a/cabal-testsuite/PackageTests/Exec/sandbox-ghc-pkg.test.hs b/cabal-testsuite/PackageTests/Exec/sandbox-ghc-pkg.test.hs index 175e7ff530c..5e0b2baf94f 100644 --- a/cabal-testsuite/PackageTests/Exec/sandbox-ghc-pkg.test.hs +++ b/cabal-testsuite/PackageTests/Exec/sandbox-ghc-pkg.test.hs @@ -3,10 +3,10 @@ import Data.Maybe main = cabalTest $ do withPackageDb $ do withSandbox $ do - fails $ cabal "exec" ["my-executable"] - cabal "install" [] + fails $ cabal "v1-exec" ["my-executable"] + cabal "v1-install" [] -- The library should not be available outside the sandbox ghcPkg' "list" [] >>= assertOutputDoesNotContain "my-0.1" -- Execute ghc-pkg inside the sandbox; it should find my-0.1 - cabal' "exec" ["ghc-pkg", "list"] + cabal' "v1-exec" ["ghc-pkg", "list"] >>= assertOutputContains "my-0.1" diff --git a/cabal-testsuite/PackageTests/Exec/sandbox-hc-pkg.out b/cabal-testsuite/PackageTests/Exec/sandbox-hc-pkg.out index d638347b65c..2f2b38be6f7 100644 --- a/cabal-testsuite/PackageTests/Exec/sandbox-hc-pkg.out +++ b/cabal-testsuite/PackageTests/Exec/sandbox-hc-pkg.out @@ -1,9 +1,9 @@ # cabal sandbox init Writing a default package environment file to /sandbox-hc-pkg.dist/cabal.sandbox.config Creating a new sandbox at /sandbox-hc-pkg.dist/sandbox -# cabal exec +# cabal v1-exec cabal: The program 'my-executable' is required but it could not be found. -# cabal install +# cabal v1-install Resolving dependencies... Configuring my-0.1... Preprocessing executable 'my-executable' for my-0.1.. @@ -13,4 +13,4 @@ Building library for my-0.1.. Installing executable my-executable in Installing library in Installed my-0.1 -# cabal exec +# cabal v1-exec diff --git a/cabal-testsuite/PackageTests/Exec/sandbox-hc-pkg.test.hs b/cabal-testsuite/PackageTests/Exec/sandbox-hc-pkg.test.hs index dee03490f88..0142cc6d162 100644 --- a/cabal-testsuite/PackageTests/Exec/sandbox-hc-pkg.test.hs +++ b/cabal-testsuite/PackageTests/Exec/sandbox-hc-pkg.test.hs @@ -5,8 +5,8 @@ import Control.Monad.IO.Class main = cabalTest $ do withPackageDb $ do withSandbox $ do - fails $ cabal "exec" ["my-executable"] - cabal "install" [] + fails $ cabal "v1-exec" ["my-executable"] + cabal "v1-install" [] -- The library should not be available outside the sandbox ghcPkg' "list" [] >>= assertOutputDoesNotContain "my-0.1" -- When run inside 'cabal-exec' the 'sandbox hc-pkg list' sub-command @@ -16,7 +16,7 @@ main = cabalTest $ do -- turn it absolute rel_cabal_path <- programPathM cabalProgram cabal_path <- liftIO $ makeAbsolute rel_cabal_path - cabal' "exec" ["sh", "--", "-c" + cabal' "v1-exec" ["sh", "--", "-c" , "cd subdir && " ++ show cabal_path ++ -- TODO: Ugh. Test abstractions leaking -- through diff --git a/cabal-testsuite/PackageTests/Exec/sandbox-path.out b/cabal-testsuite/PackageTests/Exec/sandbox-path.out index 03e7134ad10..c33c594e616 100644 --- a/cabal-testsuite/PackageTests/Exec/sandbox-path.out +++ b/cabal-testsuite/PackageTests/Exec/sandbox-path.out @@ -1,9 +1,9 @@ # cabal sandbox init Writing a default package environment file to /sandbox-path.dist/cabal.sandbox.config Creating a new sandbox at /sandbox-path.dist/sandbox -# cabal exec +# cabal v1-exec cabal: The program 'my-executable' is required but it could not be found. -# cabal install +# cabal v1-install Resolving dependencies... Configuring my-0.1... Preprocessing executable 'my-executable' for my-0.1.. @@ -13,4 +13,4 @@ Building library for my-0.1.. Installing executable my-executable in Installing library in Installed my-0.1 -# cabal exec +# cabal v1-exec diff --git a/cabal-testsuite/PackageTests/Exec/sandbox-path.test.hs b/cabal-testsuite/PackageTests/Exec/sandbox-path.test.hs index ab4b666c6f7..2a13450b9a9 100644 --- a/cabal-testsuite/PackageTests/Exec/sandbox-path.test.hs +++ b/cabal-testsuite/PackageTests/Exec/sandbox-path.test.hs @@ -1,8 +1,8 @@ import Test.Cabal.Prelude main = cabalTest $ do withSandbox $ do - fails $ cabal "exec" ["my-executable"] - cabal "install" [] + fails $ cabal "v1-exec" ["my-executable"] + cabal "v1-install" [] -- Execute indirectly via bash to ensure that we go through $PATH - cabal' "exec" ["sh", "--", "-c", "my-executable"] + cabal' "v1-exec" ["sh", "--", "-c", "my-executable"] >>= assertOutputContains "This is my-executable" diff --git a/cabal-testsuite/PackageTests/Exec/sandbox.out b/cabal-testsuite/PackageTests/Exec/sandbox.out index ef225b9907e..9ea336bd1db 100644 --- a/cabal-testsuite/PackageTests/Exec/sandbox.out +++ b/cabal-testsuite/PackageTests/Exec/sandbox.out @@ -1,9 +1,9 @@ # cabal sandbox init Writing a default package environment file to /sandbox.dist/cabal.sandbox.config Creating a new sandbox at /sandbox.dist/sandbox -# cabal exec +# cabal v1-exec cabal: The program 'my-executable' is required but it could not be found. -# cabal install +# cabal v1-install Resolving dependencies... Configuring my-0.1... Preprocessing executable 'my-executable' for my-0.1.. @@ -13,4 +13,4 @@ Building library for my-0.1.. Installing executable my-executable in Installing library in Installed my-0.1 -# cabal exec +# cabal v1-exec diff --git a/cabal-testsuite/PackageTests/Exec/sandbox.test.hs b/cabal-testsuite/PackageTests/Exec/sandbox.test.hs index 13a77f07562..c36c53d4c6d 100644 --- a/cabal-testsuite/PackageTests/Exec/sandbox.test.hs +++ b/cabal-testsuite/PackageTests/Exec/sandbox.test.hs @@ -1,7 +1,7 @@ import Test.Cabal.Prelude main = cabalTest $ do withSandbox $ do - fails $ cabal "exec" ["my-executable"] - cabal "install" [] - cabal' "exec" ["my-executable"] + fails $ cabal "v1-exec" ["my-executable"] + cabal "v1-install" [] + cabal' "v1-exec" ["my-executable"] >>= assertOutputContains "This is my-executable" diff --git a/cabal-testsuite/PackageTests/Freeze/disable-benchmarks.out b/cabal-testsuite/PackageTests/Freeze/disable-benchmarks.out index bd722801011..1d263b35a89 100644 --- a/cabal-testsuite/PackageTests/Freeze/disable-benchmarks.out +++ b/cabal-testsuite/PackageTests/Freeze/disable-benchmarks.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo -# cabal freeze +# cabal v1-freeze Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/Freeze/disable-benchmarks.test.hs b/cabal-testsuite/PackageTests/Freeze/disable-benchmarks.test.hs index 66d4eaae0d2..52ef66110de 100644 --- a/cabal-testsuite/PackageTests/Freeze/disable-benchmarks.test.hs +++ b/cabal-testsuite/PackageTests/Freeze/disable-benchmarks.test.hs @@ -1,6 +1,6 @@ import Test.Cabal.Prelude main = cabalTest $ do withRepo "repo" . withSourceCopy $ do - cabal "freeze" ["--disable-benchmarks"] + cabal "v1-freeze" ["--disable-benchmarks"] cwd <- fmap testCurrentDir getTestEnv assertFileDoesNotContain (cwd "cabal.config") "criterion" diff --git a/cabal-testsuite/PackageTests/Freeze/disable-tests.out b/cabal-testsuite/PackageTests/Freeze/disable-tests.out index bd722801011..1d263b35a89 100644 --- a/cabal-testsuite/PackageTests/Freeze/disable-tests.out +++ b/cabal-testsuite/PackageTests/Freeze/disable-tests.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo -# cabal freeze +# cabal v1-freeze Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/Freeze/disable-tests.test.hs b/cabal-testsuite/PackageTests/Freeze/disable-tests.test.hs index 3fad5f60f64..a959240586c 100644 --- a/cabal-testsuite/PackageTests/Freeze/disable-tests.test.hs +++ b/cabal-testsuite/PackageTests/Freeze/disable-tests.test.hs @@ -1,6 +1,6 @@ import Test.Cabal.Prelude main = cabalTest $ do withRepo "repo" . withSourceCopy $ do - cabal "freeze" ["--disable-tests"] + cabal "v1-freeze" ["--disable-tests"] cwd <- fmap testCurrentDir getTestEnv assertFileDoesNotContain (cwd "cabal.config") "test-framework" diff --git a/cabal-testsuite/PackageTests/Freeze/dry-run.out b/cabal-testsuite/PackageTests/Freeze/dry-run.out index 724bcb98d55..6130fcaa95b 100644 --- a/cabal-testsuite/PackageTests/Freeze/dry-run.out +++ b/cabal-testsuite/PackageTests/Freeze/dry-run.out @@ -1,2 +1,2 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo diff --git a/cabal-testsuite/PackageTests/Freeze/dry-run.test.hs b/cabal-testsuite/PackageTests/Freeze/dry-run.test.hs index bb651f34921..11130ba8c2c 100644 --- a/cabal-testsuite/PackageTests/Freeze/dry-run.test.hs +++ b/cabal-testsuite/PackageTests/Freeze/dry-run.test.hs @@ -1,6 +1,6 @@ import Test.Cabal.Prelude main = cabalTest $ do withRepo "repo" . withSourceCopy $ do - recordMode DoNotRecord $ cabal "freeze" ["--dry-run"] + recordMode DoNotRecord $ cabal "v1-freeze" ["--dry-run"] cwd <- fmap testCurrentDir getTestEnv shouldNotExist (cwd "cabal.config") diff --git a/cabal-testsuite/PackageTests/Freeze/enable-benchmarks.out b/cabal-testsuite/PackageTests/Freeze/enable-benchmarks.out index bd722801011..1d263b35a89 100644 --- a/cabal-testsuite/PackageTests/Freeze/enable-benchmarks.out +++ b/cabal-testsuite/PackageTests/Freeze/enable-benchmarks.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo -# cabal freeze +# cabal v1-freeze Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/Freeze/enable-benchmarks.test.hs b/cabal-testsuite/PackageTests/Freeze/enable-benchmarks.test.hs index 4860ee955f7..d525c1d26ff 100644 --- a/cabal-testsuite/PackageTests/Freeze/enable-benchmarks.test.hs +++ b/cabal-testsuite/PackageTests/Freeze/enable-benchmarks.test.hs @@ -1,7 +1,7 @@ import Test.Cabal.Prelude main = cabalTest $ do withRepo "repo" . withSourceCopy $ do - cabal "freeze" ["--enable-benchmarks"] + cabal "v1-freeze" ["--enable-benchmarks"] cwd <- fmap testCurrentDir getTestEnv assertFileDoesContain (cwd "cabal.config") "criterion" assertFileDoesContain (cwd "cabal.config") "ghc-prim" diff --git a/cabal-testsuite/PackageTests/Freeze/enable-tests.out b/cabal-testsuite/PackageTests/Freeze/enable-tests.out index bd722801011..1d263b35a89 100644 --- a/cabal-testsuite/PackageTests/Freeze/enable-tests.out +++ b/cabal-testsuite/PackageTests/Freeze/enable-tests.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo -# cabal freeze +# cabal v1-freeze Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/Freeze/enable-tests.test.hs b/cabal-testsuite/PackageTests/Freeze/enable-tests.test.hs index f4602290cd8..8a43b5b6daf 100644 --- a/cabal-testsuite/PackageTests/Freeze/enable-tests.test.hs +++ b/cabal-testsuite/PackageTests/Freeze/enable-tests.test.hs @@ -1,6 +1,6 @@ import Test.Cabal.Prelude main = cabalTest $ do withRepo "repo" . withSourceCopy $ do - cabal "freeze" ["--enable-tests"] + cabal "v1-freeze" ["--enable-tests"] cwd <- fmap testCurrentDir getTestEnv assertFileDoesContain (cwd "cabal.config") "test-framework" diff --git a/cabal-testsuite/PackageTests/Freeze/freeze.out b/cabal-testsuite/PackageTests/Freeze/freeze.out index bd722801011..1d263b35a89 100644 --- a/cabal-testsuite/PackageTests/Freeze/freeze.out +++ b/cabal-testsuite/PackageTests/Freeze/freeze.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo -# cabal freeze +# cabal v1-freeze Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/Freeze/freeze.test.hs b/cabal-testsuite/PackageTests/Freeze/freeze.test.hs index 63045d76f70..65550b5774d 100644 --- a/cabal-testsuite/PackageTests/Freeze/freeze.test.hs +++ b/cabal-testsuite/PackageTests/Freeze/freeze.test.hs @@ -3,7 +3,7 @@ main = cabalTest $ do withRepo "repo" . withSourceCopy $ do -- TODO: test this with a sandbox-installed package -- that is not depended upon - cabal "freeze" [] + cabal "v1-freeze" [] cwd <- fmap testCurrentDir getTestEnv assertFileDoesNotContain (cwd "cabal.config") "exceptions" assertFileDoesNotContain (cwd "cabal.config") "my" diff --git a/cabal-testsuite/PackageTests/InternalLibraries/sandbox-shadow.out b/cabal-testsuite/PackageTests/InternalLibraries/sandbox-shadow.out index 8542120cc3f..43de7c2d917 100644 --- a/cabal-testsuite/PackageTests/InternalLibraries/sandbox-shadow.out +++ b/cabal-testsuite/PackageTests/InternalLibraries/sandbox-shadow.out @@ -3,7 +3,7 @@ Writing a default package environment file to /sandbox-shadow.dist/cabal.s Creating a new sandbox at /sandbox-shadow.dist/sandbox # cabal sandbox add-source # cabal sandbox add-source -# cabal install +# cabal v1-install Resolving dependencies... Configuring p-0.1.0.0... Preprocessing library 'q' for p-0.1.0.0.. diff --git a/cabal-testsuite/PackageTests/InternalLibraries/sandbox-shadow.test.hs b/cabal-testsuite/PackageTests/InternalLibraries/sandbox-shadow.test.hs index e2c88dcdf20..bc9c97cf810 100644 --- a/cabal-testsuite/PackageTests/InternalLibraries/sandbox-shadow.test.hs +++ b/cabal-testsuite/PackageTests/InternalLibraries/sandbox-shadow.test.hs @@ -3,4 +3,4 @@ main = cabalTest $ do withSandbox $ do cabal_sandbox "add-source" ["p"] cabal_sandbox "add-source" ["q"] - cabal "install" ["p"] + cabal "v1-install" ["p"] diff --git a/cabal-testsuite/PackageTests/InternalLibraries/sandbox.out b/cabal-testsuite/PackageTests/InternalLibraries/sandbox.out index d3a1e071feb..e47df7b1195 100644 --- a/cabal-testsuite/PackageTests/InternalLibraries/sandbox.out +++ b/cabal-testsuite/PackageTests/InternalLibraries/sandbox.out @@ -2,7 +2,7 @@ Writing a default package environment file to /sandbox.dist/cabal.sandbox.config Creating a new sandbox at /sandbox.dist/sandbox # cabal sandbox add-source -# cabal install +# cabal v1-install Resolving dependencies... Configuring p-0.1.0.0... Preprocessing library 'q' for p-0.1.0.0.. diff --git a/cabal-testsuite/PackageTests/InternalLibraries/sandbox.test.hs b/cabal-testsuite/PackageTests/InternalLibraries/sandbox.test.hs index c3977260e9b..6d2eda9bf15 100644 --- a/cabal-testsuite/PackageTests/InternalLibraries/sandbox.test.hs +++ b/cabal-testsuite/PackageTests/InternalLibraries/sandbox.test.hs @@ -2,4 +2,4 @@ import Test.Cabal.Prelude main = cabalTest $ do withSandbox $ do cabal_sandbox "add-source" ["p"] - cabal "install" ["p"] + cabal "v1-install" ["p"] diff --git a/cabal-testsuite/PackageTests/NewBuild/CustomSetup/LocalPackageWithCustomSetup/build-local-package-with-custom-setup.out b/cabal-testsuite/PackageTests/NewBuild/CustomSetup/LocalPackageWithCustomSetup/build-local-package-with-custom-setup.out index 724bcb98d55..6130fcaa95b 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CustomSetup/LocalPackageWithCustomSetup/build-local-package-with-custom-setup.out +++ b/cabal-testsuite/PackageTests/NewBuild/CustomSetup/LocalPackageWithCustomSetup/build-local-package-with-custom-setup.out @@ -1,2 +1,2 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo diff --git a/cabal-testsuite/PackageTests/NewBuild/CustomSetup/RemotePackageWithCustomSetup/build-package-from-repo-with-custom-setup.out b/cabal-testsuite/PackageTests/NewBuild/CustomSetup/RemotePackageWithCustomSetup/build-package-from-repo-with-custom-setup.out index f6386b5624d..2a2db98bb81 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CustomSetup/RemotePackageWithCustomSetup/build-package-from-repo-with-custom-setup.out +++ b/cabal-testsuite/PackageTests/NewBuild/CustomSetup/RemotePackageWithCustomSetup/build-package-from-repo-with-custom-setup.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo # pkg my-exe pkg Main.hs: remote-pkg-2.0 diff --git a/cabal-testsuite/PackageTests/NewBuild/T4375/cabal.out b/cabal-testsuite/PackageTests/NewBuild/T4375/cabal.out index c1661ff656f..dd50aa2e69e 100644 --- a/cabal-testsuite/PackageTests/NewBuild/T4375/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/T4375/cabal.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo # cabal new-build Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/NewFreeze/BuildTools/new_freeze.out b/cabal-testsuite/PackageTests/NewFreeze/BuildTools/new_freeze.out index a0d0f0128b3..001bd588bb3 100644 --- a/cabal-testsuite/PackageTests/NewFreeze/BuildTools/new_freeze.out +++ b/cabal-testsuite/PackageTests/NewFreeze/BuildTools/new_freeze.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo # cabal new-build Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/NewFreeze/Flags/new_freeze.out b/cabal-testsuite/PackageTests/NewFreeze/Flags/new_freeze.out index b2964507d7e..ff234be1729 100644 --- a/cabal-testsuite/PackageTests/NewFreeze/Flags/new_freeze.out +++ b/cabal-testsuite/PackageTests/NewFreeze/Flags/new_freeze.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo # cabal new-build Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/NewFreeze/FreezeFile/new_freeze.out b/cabal-testsuite/PackageTests/NewFreeze/FreezeFile/new_freeze.out index 52d3b30d236..72d0a0d907f 100644 --- a/cabal-testsuite/PackageTests/NewFreeze/FreezeFile/new_freeze.out +++ b/cabal-testsuite/PackageTests/NewFreeze/FreezeFile/new_freeze.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo # cabal new-build Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/Outdated/outdated.out b/cabal-testsuite/PackageTests/Outdated/outdated.out index ac2c5f8ac23..28ca4069b18 100644 --- a/cabal-testsuite/PackageTests/Outdated/outdated.out +++ b/cabal-testsuite/PackageTests/Outdated/outdated.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo # cabal outdated Outdated dependencies: diff --git a/cabal-testsuite/PackageTests/Outdated/outdated_freeze.out b/cabal-testsuite/PackageTests/Outdated/outdated_freeze.out index 5298947e1c8..cb6fbfcdf7c 100644 --- a/cabal-testsuite/PackageTests/Outdated/outdated_freeze.out +++ b/cabal-testsuite/PackageTests/Outdated/outdated_freeze.out @@ -1,4 +1,4 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo # cabal outdated Outdated dependencies: diff --git a/cabal-testsuite/PackageTests/Regression/T3199/sandbox.out b/cabal-testsuite/PackageTests/Regression/T3199/sandbox.out index a307be2065b..951cd0628af 100644 --- a/cabal-testsuite/PackageTests/Regression/T3199/sandbox.out +++ b/cabal-testsuite/PackageTests/Regression/T3199/sandbox.out @@ -2,7 +2,7 @@ Writing a default package environment file to /sandbox.dist/cabal.sandbox.config Creating a new sandbox at /sandbox.dist/sandbox # cabal sandbox add-source -# cabal install +# cabal v1-install Resolving dependencies... In order, the following would be installed: Cabal-2.0.0.0 (new version) diff --git a/cabal-testsuite/PackageTests/Regression/T3199/sandbox.test.hs b/cabal-testsuite/PackageTests/Regression/T3199/sandbox.test.hs index 9192bd2e7e7..56ae58ea5eb 100644 --- a/cabal-testsuite/PackageTests/Regression/T3199/sandbox.test.hs +++ b/cabal-testsuite/PackageTests/Regression/T3199/sandbox.test.hs @@ -5,7 +5,7 @@ main = cabalTest $ do skipUnless =<< ghcVersionIs (< mkVersion [8,0]) withSandbox $ do cabal_sandbox "add-source" ["Cabal"] - cabal "install" + cabal "v1-install" -- Ignore the Cabal library that is under test ["--package-db=clear", "--package-db=global" ,"--only-dep", "--dry-run"] diff --git a/cabal-testsuite/PackageTests/Regression/T3436/sandbox.out b/cabal-testsuite/PackageTests/Regression/T3436/sandbox.out index 37dba14d21f..619db330059 100644 --- a/cabal-testsuite/PackageTests/Regression/T3436/sandbox.out +++ b/cabal-testsuite/PackageTests/Regression/T3436/sandbox.out @@ -1,7 +1,7 @@ # cabal sandbox init Writing a default package environment file to /sandbox.dist/cabal.sandbox.config Creating a new sandbox at /sandbox.dist/sandbox -# cabal install +# cabal v1-install Resolving dependencies... Configuring Cabal-1.2... Preprocessing library for Cabal-1.2.. @@ -9,7 +9,7 @@ Building library for Cabal-1.2.. Installing library in Installed Cabal-1.2 # cabal sandbox add-source -# cabal install +# cabal v1-install Resolving dependencies... Configuring Cabal-2.0... Preprocessing library for Cabal-2.0.. diff --git a/cabal-testsuite/PackageTests/Regression/T3436/sandbox.test.hs b/cabal-testsuite/PackageTests/Regression/T3436/sandbox.test.hs index 42aa2c5f557..f0124693d73 100644 --- a/cabal-testsuite/PackageTests/Regression/T3436/sandbox.test.hs +++ b/cabal-testsuite/PackageTests/Regression/T3436/sandbox.test.hs @@ -11,11 +11,11 @@ import Test.Cabal.Prelude -- setup-depends). main = cabalTest $ do withSandbox $ do - cabal "install" ["./Cabal-1.2"] + cabal "v1-install" ["./Cabal-1.2"] cabal_sandbox "add-source" ["Cabal-2.0"] -- cabal should build custom-setup's setup script with Cabal-2.0, but -- then configure should fail because Setup just prints an error message -- imported from Cabal and exits. - r <- fails $ cabal' "install" ["custom-setup/"] + r <- fails $ cabal' "v1-install" ["custom-setup/"] assertOutputContains "This is Cabal-2.0" r diff --git a/cabal-testsuite/PackageTests/Regression/T3932/cabal.out b/cabal-testsuite/PackageTests/Regression/T3932/cabal.out index 724bcb98d55..6130fcaa95b 100644 --- a/cabal-testsuite/PackageTests/Regression/T3932/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T3932/cabal.out @@ -1,2 +1,2 @@ -# cabal update +# cabal v1-update Downloading the latest package list from test-local-repo diff --git a/cabal-testsuite/PackageTests/Regression/T5318/install.out b/cabal-testsuite/PackageTests/Regression/T5318/install.out index d4deda38608..c6075188e11 100644 --- a/cabal-testsuite/PackageTests/Regression/T5318/install.out +++ b/cabal-testsuite/PackageTests/Regression/T5318/install.out @@ -1,4 +1,4 @@ -# cabal install +# cabal v1-install Resolving dependencies... Configuring empty-data-dir-0... Preprocessing executable 'foo' for empty-data-dir-0.. diff --git a/cabal-testsuite/PackageTests/Regression/T5318/install.test.hs b/cabal-testsuite/PackageTests/Regression/T5318/install.test.hs index b0286555018..6fd409c2704 100644 --- a/cabal-testsuite/PackageTests/Regression/T5318/install.test.hs +++ b/cabal-testsuite/PackageTests/Regression/T5318/install.test.hs @@ -1,3 +1,3 @@ import Test.Cabal.Prelude main = cabalTest $ - cabal "install" [] + cabal "v1-install" [] diff --git a/cabal-testsuite/PackageTests/Sandbox/MultipleSources/cabal.out b/cabal-testsuite/PackageTests/Sandbox/MultipleSources/cabal.out index baa1df67cfc..9a2cd9cf805 100644 --- a/cabal-testsuite/PackageTests/Sandbox/MultipleSources/cabal.out +++ b/cabal-testsuite/PackageTests/Sandbox/MultipleSources/cabal.out @@ -3,7 +3,7 @@ Writing a default package environment file to /cabal.dist/cabal.sandbox.co Creating a new sandbox at /cabal.dist/sandbox # cabal sandbox add-source # cabal sandbox add-source -# cabal install +# cabal v1-install Resolving dependencies... Configuring q-0.1.0.0... Preprocessing library for q-0.1.0.0.. diff --git a/cabal-testsuite/PackageTests/Sandbox/MultipleSources/cabal.test.hs b/cabal-testsuite/PackageTests/Sandbox/MultipleSources/cabal.test.hs index 1b8fd58356b..7ab798e542d 100644 --- a/cabal-testsuite/PackageTests/Sandbox/MultipleSources/cabal.test.hs +++ b/cabal-testsuite/PackageTests/Sandbox/MultipleSources/cabal.test.hs @@ -3,4 +3,4 @@ main = cabalTest $ do withSandbox $ do cabal_sandbox "add-source" ["p"] cabal_sandbox "add-source" ["q"] - cabal "install" ["q"] + cabal "v1-install" ["q"] diff --git a/cabal-testsuite/PackageTests/Sandbox/Reinstall/sandbox.out b/cabal-testsuite/PackageTests/Sandbox/Reinstall/sandbox.out index 1fc6b19896f..0a84fa056e0 100644 --- a/cabal-testsuite/PackageTests/Sandbox/Reinstall/sandbox.out +++ b/cabal-testsuite/PackageTests/Sandbox/Reinstall/sandbox.out @@ -2,16 +2,16 @@ Writing a default package environment file to /sandbox.dist/cabal.sandbox.config Creating a new sandbox at /sandbox.dist/sandbox # cabal sandbox add-source -# cabal install +# cabal v1-install Resolving dependencies... Configuring q-1.0... Preprocessing library for q-1.0.. Building library for q-1.0.. Installing library in Installed q-1.0 -# cabal run +# cabal v1-run message -# cabal run +# cabal v1-run In order, the following will be installed: q-1.0 (reinstall) message updated diff --git a/cabal-testsuite/PackageTests/Sandbox/Reinstall/sandbox.test.hs b/cabal-testsuite/PackageTests/Sandbox/Reinstall/sandbox.test.hs index af141463ca6..b0ae5415e89 100644 --- a/cabal-testsuite/PackageTests/Sandbox/Reinstall/sandbox.test.hs +++ b/cabal-testsuite/PackageTests/Sandbox/Reinstall/sandbox.test.hs @@ -2,8 +2,8 @@ import Test.Cabal.Prelude main = cabalTest $ do withSourceCopy . withDelay . withDirectory "p" . withSandbox $ do cabal_sandbox "add-source" ["../q"] - cabal "install" ["--only-dependencies"] - recordMode RecordAll $ cabal "run" ["p", "-v0"] + cabal "v1-install" ["--only-dependencies"] + recordMode RecordAll $ cabal "v1-run" ["p", "-v0"] delay copySourceFileTo "../q/Q.hs.in2" "../q/Q.hs" - recordMode RecordAll $ cabal "run" ["p", "-v0"] + recordMode RecordAll $ cabal "v1-run" ["p", "-v0"] diff --git a/cabal-testsuite/Test/Cabal/Prelude.hs b/cabal-testsuite/Test/Cabal/Prelude.hs index 508e21a5c4c..79fffd13872 100644 --- a/cabal-testsuite/Test/Cabal/Prelude.hs +++ b/cabal-testsuite/Test/Cabal/Prelude.hs @@ -149,7 +149,27 @@ setup' cmd args = do defaultRecordMode RecordMarked $ do recordHeader ["Setup", cmd] if testCabalInstallAsSetup env - then runProgramM cabalProgram full_args + then + -- `cabal` and `Setup` no longer have the same interface. + -- A bit of fettling is required to hide this fact. + let + legacyCmds = + [ "build" + , "configure" + , "repl" + , "freeze" + , "run" + , "test" + , "bench" + , "haddock" + , "exec" + , "update" + , "install" + , "clean" + ] + (a:as) = full_args + full_args' = if a `elem` legacyCmds then ("v1-" ++ a) : as else a:as + in runProgramM cabalProgram full_args' else do pdfile <- liftIO $ tryFindPackageDesc (testCurrentDir env) pdesc <- liftIO $ readGenericPackageDescription (testVerbosity env) pdfile @@ -249,12 +269,12 @@ cabalG' global_args cmd args = do env <- getTestEnv -- Freeze writes out cabal.config to source directory, this is not -- overwritable - when (cmd `elem` ["freeze"]) requireHasSourceCopy + when (cmd == "v1-freeze") requireHasSourceCopy let extra_args -- Sandboxes manage dist dir | testHaveSandbox env = install_args - | cmd `elem` ["update", "outdated", "user-config", "manpage", "freeze"] + | cmd `elem` ["v1-update", "outdated", "user-config", "manpage", "v1-freeze"] = [ ] -- new-build commands are affected by testCabalProjectFile | "new-" `isPrefixOf` cmd @@ -265,8 +285,8 @@ cabalG' global_args cmd args = do = [ "--builddir", testDistDir env ] ++ install_args install_args - | cmd == "install" - || cmd == "build" = [ "-j1" ] + | cmd == "v1-install" + || cmd == "v1-build" = [ "-j1" ] | otherwise = [] extra_global_args | testHaveSandbox env @@ -528,7 +548,7 @@ withRepo repo_dir m = do -- fix that this can be removed) liftIO $ createDirectoryIfMissing True (package_cache "test-local-repo") -- 7. Update our local index - cabal "update" [] + cabal "v1-update" [] -- 8. Profit withReaderT (\env' -> env' { testHaveRepo = True }) m -- TODO: Arguably should undo everything when we're done...