@@ -60,7 +60,7 @@ import qualified Stack.Upload as Upload
6060import System.Directory (canonicalizePath )
6161import System.Environment (getArgs , getProgName )
6262import System.Exit
63- import System.FilePath (searchPathSeparator )
63+ import System.FilePath (searchPathSeparator , dropTrailingPathSeparator )
6464import System.IO (hIsTerminalDevice , stderr , stdin , stdout , hSetBuffering , BufferMode (.. ))
6565import System.Process.Read
6666
@@ -331,33 +331,34 @@ data PathInfo = PathInfo
331331-- really it's mainly for the documentation aspect.
332332--
333333-- When printing output we generate @PathInfo@ and pass it to the
334- -- function to generate an appropriate string.
334+ -- function to generate an appropriate string. Trailing slashes are
335+ -- removed, see #506
335336paths :: [(String , Text , PathInfo -> Text )]
336337paths =
337338 [ ( " Global stack root directory"
338339 , " global-stack-root"
339340 , \ pi ->
340- T. pack (toFilePath (configStackRoot (bcConfig (piBuildConfig pi )))))
341+ T. pack (toFilePathNoTrailing (configStackRoot (bcConfig (piBuildConfig pi )))))
341342 , ( " Project root (derived from stack.yaml file)"
342343 , " project-root"
343344 , \ pi ->
344- T. pack (toFilePath (bcRoot (piBuildConfig pi ))))
345+ T. pack (toFilePathNoTrailing (bcRoot (piBuildConfig pi ))))
345346 , ( " Configuration location (where the stack.yaml file is)"
346347 , " config-location"
347348 , \ pi ->
348- T. pack (toFilePath (bcStackYaml (piBuildConfig pi ))))
349+ T. pack (toFilePathNoTrailing (bcStackYaml (piBuildConfig pi ))))
349350 , ( " PATH environment variable"
350351 , " bin-path"
351352 , \ pi ->
352353 T. pack (intercalate " :" (eoPath (piEnvOverride pi ))))
353354 , ( " Installed GHCs (unpacked and archives)"
354355 , " ghc-paths"
355356 , \ pi ->
356- T. pack (toFilePath (configLocalPrograms (bcConfig (piBuildConfig pi )))))
357+ T. pack (toFilePathNoTrailing (configLocalPrograms (bcConfig (piBuildConfig pi )))))
357358 , ( " Local bin path where stack installs executables"
358359 , " local-bin-path"
359360 , \ pi ->
360- T. pack (toFilePath (configLocalBin (bcConfig (piBuildConfig pi )))))
361+ T. pack (toFilePathNoTrailing (configLocalBin (bcConfig (piBuildConfig pi )))))
361362 , ( " Extra include directories"
362363 , " extra-include-dirs"
363364 , \ pi ->
@@ -371,23 +372,24 @@ paths =
371372 , ( " Snapshot package database"
372373 , " snapshot-pkg-db"
373374 , \ pi ->
374- T. pack (toFilePath (piSnapDb pi )))
375+ T. pack (toFilePathNoTrailing (piSnapDb pi )))
375376 , ( " Local project package database"
376377 , " local-pkg-db"
377378 , \ pi ->
378- T. pack (toFilePath (piLocalDb pi )))
379+ T. pack (toFilePathNoTrailing (piLocalDb pi )))
379380 , ( " Snapshot installation root"
380381 , " snapshot-install-root"
381382 , \ pi ->
382- T. pack (toFilePath (piSnapRoot pi )))
383+ T. pack (toFilePathNoTrailing (piSnapRoot pi )))
383384 , ( " Local project installation root"
384385 , " local-install-root"
385386 , \ pi ->
386- T. pack (toFilePath (piLocalRoot pi )))
387+ T. pack (toFilePathNoTrailing (piLocalRoot pi )))
387388 , ( " Dist work directory"
388389 , " dist-dir"
389390 , \ pi ->
390- T. pack (toFilePath (piDistDir pi )))]
391+ T. pack (toFilePathNoTrailing (piDistDir pi )))]
392+ where toFilePathNoTrailing = dropTrailingPathSeparator . toFilePath
391393
392394data SetupCmdOpts = SetupCmdOpts
393395 { scoGhcVersion :: ! (Maybe Version )
0 commit comments