Skip to content

Commit ea5a333

Browse files
committed
Make --builddir/--distdir/etc affect dist-newstyle.
Previously, these flags had no affect on new-build. Now, they let you specify where the dist-newstyle directory should go. Note that if a relative path is provided, it is resolved relative to the *project root*. If this is undesirable, pass an absolute path instead. Fixes haskell#4127. Signed-off-by: Edward Z. Yang <[email protected]>
1 parent 571d794 commit ea5a333

File tree

4 files changed

+11
-8
lines changed

4 files changed

+11
-8
lines changed

cabal-install/Distribution/Client/CmdFreeze.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ freezeAction (configFlags, configExFlags, installFlags, haddockFlags)
8787
let cabalDirLayout = defaultCabalDirLayout cabalDir
8888

8989
projectRootDir <- findProjectRoot
90-
let distDirLayout = defaultDistDirLayout projectRootDir
90+
let distDirLayout = defaultDistDirLayout configFlags projectRootDir
9191

9292
let cliConfig = commandLineFlagsToProjectConfig
9393
globalFlags configFlags configExFlags

cabal-install/Distribution/Client/DistDirLayout.hs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ module Distribution.Client.DistDirLayout (
1717
) where
1818

1919
import System.FilePath
20+
import Distribution.Simple.Setup (fromFlagOrDefault, ConfigFlags, configDistPref)
2021
import Distribution.Package
2122
( PackageId, ComponentId, UnitId )
2223
import Distribution.Compiler
@@ -106,12 +107,14 @@ data CabalDirLayout = CabalDirLayout {
106107
cabalWorldFile :: FilePath
107108
}
108109

109-
110-
defaultDistDirLayout :: FilePath -> DistDirLayout
111-
defaultDistDirLayout projectRootDirectory =
110+
-- | Given the path to the root directory, create the 'DistDirLayout'
111+
-- associated with it. Respects @--builddir@ setting.
112+
defaultDistDirLayout :: ConfigFlags -> FilePath -> DistDirLayout
113+
defaultDistDirLayout configFlags projectRootDirectory =
112114
DistDirLayout {..}
113115
where
114-
distDirectory = projectRootDirectory </> "dist-newstyle"
116+
distDirName = fromFlagOrDefault "dist-newstyle" (configDistPref configFlags)
117+
distDirectory = projectRootDirectory </> distDirName
115118
--TODO: switch to just dist at some point, or some other new name
116119

117120
distBuildRootDirectory = distDirectory </> "build"

cabal-install/Distribution/Client/ProjectOrchestration.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ runProjectPreBuildPhase
173173
let cabalDirLayout = defaultCabalDirLayout cabalDir
174174

175175
projectRootDir <- findProjectRoot
176-
let distDirLayout = defaultDistDirLayout projectRootDir
176+
let distDirLayout = defaultDistDirLayout configFlags projectRootDir
177177

178178
let cliConfig = commandLineFlagsToProjectConfig
179179
globalFlags configFlags configExFlags

cabal-install/tests/IntegrationTests2.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ planProject testdir cliConfig = do
249249

250250
projectRootDir <- canonicalizePath ("tests" </> "IntegrationTests2"
251251
</> testdir)
252-
let distDirLayout = defaultDistDirLayout projectRootDir
252+
let distDirLayout = defaultDistDirLayout mempty projectRootDir
253253

254254
-- Clear state between test runs. The state remains if the previous run
255255
-- ended in an exception (as we leave the files to help with debugging).
@@ -313,7 +313,7 @@ cleanProject testdir = do
313313
when alreadyExists $ removeDirectoryRecursive distDir
314314
where
315315
projectRootDir = "tests" </> "IntegrationTests2" </> testdir
316-
distDirLayout = defaultDistDirLayout projectRootDir
316+
distDirLayout = defaultDistDirLayout mempty projectRootDir
317317
distDir = distDirectory distDirLayout
318318

319319

0 commit comments

Comments
 (0)