Skip to content

Commit c3a876a

Browse files
authored
Small BuildClient fixes (#1044)
* BuildClient: Create installDirectory before cwd'ing to it * BuildClient: Write absolute remote-repo-cache
1 parent 9637bd4 commit c3a876a

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

exes/BuildClient.hs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import System.Directory (canonicalizePath, createDirectoryIfMissing,
4040
doesFileExist, doesDirectoryExist, getDirectoryContents,
4141
renameFile, removeFile, getAppUserDataDirectory,
4242
createDirectory, removeDirectoryRecursive,
43-
createDirectoryIfMissing)
43+
createDirectoryIfMissing, makeAbsolute)
4444
import System.Console.GetOpt
4545
import System.Process
4646
import System.IO
@@ -220,11 +220,17 @@ configFile opts = bo_stateDir opts </> "hackage-build-config"
220220
writeCabalConfig :: BuildOpts -> BuildConfig -> IO ()
221221
writeCabalConfig opts config = do
222222
let tarballsDir = bo_stateDir opts </> "cached-tarballs"
223+
createDirectoryIfMissing False tarballsDir
224+
225+
-- Because we call runProcess with installDirectory as the cwd,
226+
-- this relative path won't be valid when cabal is running.
227+
-- An absolute path remains valid independently of cwd.
228+
absTarballsDir <- makeAbsolute tarballsDir
229+
223230
writeFile (bo_stateDir opts </> "cabal-config") . unlines $
224231
[ "remote-repo: " ++ srcName uri ++ ":" ++ show uri
225232
| uri <- bc_srcURI config : bc_auxURIs config ]
226-
++ [ "remote-repo-cache: " ++ tarballsDir ]
227-
createDirectoryIfMissing False tarballsDir
233+
++ [ "remote-repo-cache: " ++ absTarballsDir ]
228234

229235

230236
----------------------
@@ -798,6 +804,7 @@ cabal opts cmd args moutput = do
798804
: verbosityArgs
799805
++ args
800806
info verbosity $ unwords ("cabal":all_args)
807+
createDirectoryIfMissing False $ installDirectory opts
801808
ph <- runProcess "cabal" all_args (Just $ installDirectory opts)
802809
Nothing Nothing moutput moutput
803810
waitForProcess ph

0 commit comments

Comments
 (0)