Skip to content

Commit

Permalink
Merge pull request haskell#4610 from fgaz/new-run/datafiles
Browse files Browse the repository at this point in the history
Add datadir env var before running the exe
  • Loading branch information
ezyang committed Jul 20, 2017
2 parents c515bb0 + de31b2a commit c4e4edb
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 4 deletions.
20 changes: 16 additions & 4 deletions cabal-install/Distribution/Client/CmdRun.hs
Expand Up @@ -49,9 +49,12 @@ import Distribution.Types.Executable
import Distribution.Types.UnqualComponentName
( UnqualComponentName, unUnqualComponentName )
import Distribution.Types.PackageDescription
( PackageDescription(executables) )
( PackageDescription(executables, dataDir) )
import Distribution.Simple.Program.Run
( runProgramInvocation, simpleProgramInvocation )
( runProgramInvocation, ProgramInvocation(..),
emptyProgramInvocation )
import Distribution.Simple.Build.PathsModule
( pkgPathEnvVar )
import Distribution.Types.PackageId
( PackageIdentifier(..) )

Expand All @@ -61,6 +64,8 @@ import Data.Function
( on )
import System.FilePath
( (</>) )
import System.Directory
( getCurrentDirectory )


runCommand :: CommandUI (ConfigFlags, ConfigExFlags, InstallFlags, HaddockFlags)
Expand Down Expand Up @@ -227,10 +232,17 @@ runAction (configFlags, configExFlags, installFlags, haddockFlags)
pkg
exe
</> exe
let args = drop 1 targetStrings
curDir <- getCurrentDirectory
let dataDirEnvVar = (pkgPathEnvVar (elabPkgDescription pkg) "datadir",
Just $ curDir </> dataDir (elabPkgDescription pkg))
args = drop 1 targetStrings
runProgramInvocation
verbosity
(simpleProgramInvocation exePath args)
emptyProgramInvocation {
progInvokePath = exePath,
progInvokeArgs = args,
progInvokeEnv = [dataDirEnvVar]
}
where
verbosity = fromFlagOrDefault normal (configVerbosity configFlags)
cliConfig = commandLineFlagsToProjectConfig
Expand Down
@@ -0,0 +1,11 @@
name: Datafiles
version: 1.0
build-type: Simple
cabal-version: >= 1.10
data-dir: data
data-files: hello.txt

executable foo
main-is: Main.hs
build-depends: base
default-language: Haskell2010
@@ -0,0 +1,4 @@
import Paths_Datafiles

main = putStrLn =<< readFile =<< getDataFileName "hello.txt"

@@ -0,0 +1,8 @@
# cabal new-run
Resolving dependencies...
Build profile: with-compiler: ghc-<GHCVER>, optimisation: NormalOptimisation
In order, the following will be built:
- Datafiles-1.0 (exe:foo) (first run)
Configuring executable 'foo' for Datafiles-1.0..
Preprocessing executable 'foo' for Datafiles-1.0..
Building executable 'foo' for Datafiles-1.0..
@@ -0,0 +1 @@
packages: .
@@ -0,0 +1,4 @@
import Test.Cabal.Prelude
main = cabalTest $
cabal' "new-run" ["foo"] >>= assertOutputContains "Hello World"

@@ -0,0 +1 @@
Hello World

0 comments on commit c4e4edb

Please sign in to comment.