[commit: Cabal] master: Use the given working dir when preparing to call setup (834409c)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:57:05 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/834409c10a7afe70b97a17abfe8d986520ed8858
>---------------------------------------------------------------
commit 834409c10a7afe70b97a17abfe8d986520ed8858
Author: Duncan Coutts <duncan at haskell.org>
Date: Sun Aug 3 00:20:45 2008 +0000
Use the given working dir when preparing to call setup
I introduced a subtle bug with paths when I stopped using inDir
outside of setupWrapper. It was using the current dir to find
Setup.hs rather than the target dir. That ofen works because
there's a Setup.hs in the local dir. I think it's now fixed to
always use paths relative to workingDir. As before, it invokes
the setup binary giving it the new working dir.
>---------------------------------------------------------------
cabal-install/Distribution/Client/SetupWrapper.hs | 18 +++++++++++-------
1 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/cabal-install/Distribution/Client/SetupWrapper.hs b/cabal-install/Distribution/Client/SetupWrapper.hs
index 68daac5..1b01013 100644
--- a/cabal-install/Distribution/Client/SetupWrapper.hs
+++ b/cabal-install/Distribution/Client/SetupWrapper.hs
@@ -47,7 +47,7 @@ import Distribution.Simple.GHC
import qualified Distribution.Simple.PackageIndex as PackageIndex
import Distribution.Simple.PackageIndex (PackageIndex)
import Distribution.Simple.Utils
- ( die, debug, info, cabalVersion, defaultPackageDesc, comparing
+ ( die, debug, info, cabalVersion, findPackageDesc, comparing
, createDirectoryIfMissingVerbose, inDir )
import Distribution.Text
( display )
@@ -109,7 +109,7 @@ setupWrapper verbosity options mpkg cmd flags extraArgs = do
++ extraArgs
setupMethod verbosity options pkg buildType' mkArgs
where
- getPkg = defaultPackageDesc verbosity
+ getPkg = findPackageDesc (fromMaybe "." (useWorkingDir options))
>>= readPackageDescription verbosity
>>= return . packageDescription
@@ -167,7 +167,8 @@ externalSetupMethod verbosity options pkg bt mkargs = do
invokeSetupScript (mkargs cabalLibVersion)
where
- setupDir = useDistPref options </> "setup"
+ workingDir = fromMaybe "" (useWorkingDir options)
+ setupDir = workingDir </> useDistPref options </> "setup"
setupVersionFile = setupDir </> "setup" <.> "version"
setupProgFile = setupDir </> "setup" <.> exeExtension
@@ -232,17 +233,20 @@ externalSetupMethod verbosity options pkg bt mkargs = do
--
updateSetupScript :: Version -> BuildType -> IO FilePath
updateSetupScript _ Custom = do
- useHs <- doesFileExist "Setup.hs"
- useLhs <- doesFileExist "Setup.lhs"
+ useHs <- doesFileExist setupHs
+ useLhs <- doesFileExist setupLhs
unless (useHs || useLhs) $ die
"Using 'build-type: Custom' but there is no Setup.hs or Setup.lhs script."
- return (if useHs then "Setup.hs" else "Setup.lhs")
+ return (if useHs then setupHs else setupLhs)
+ where
+ setupHs = workingDir </> "Setup.hs"
+ setupLhs = workingDir </> "Setup.lhs"
updateSetupScript cabalLibVersion _ = do
rewriteFile setupHs (buildTypeScript cabalLibVersion)
return setupHs
where
- setupHs = setupDir </> "setup" <.> "hs"
+ setupHs = setupDir </> "setup.hs"
buildTypeScript :: Version -> String
buildTypeScript cabalLibVersion = case bt of
More information about the Cvs-libraries
mailing list