Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make Setup.hs copy/install work when data-files uses **. #6127

Merged
merged 1 commit into from
Jul 3, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Cabal/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
* Uniformly provide 'Semigroup' instances for `base < 4.9` via `semigroups` package
* Setting `debug-info` now implies `library-stripping: False` and
`executable-stripping: False) ([#2702](https://github.com/haskell/cabal/issues/2702))
* `Setup.hs copy` and `install` now work in the presence of
`data-files` that use `**` syntax
([#6125](https://github.com/haskell/cabal/issues/6125)).

----

Expand Down
14 changes: 7 additions & 7 deletions Cabal/Distribution/Simple/Install.hs
Original file line number Diff line number Diff line change
Expand Up @@ -223,17 +223,17 @@ copyComponent _ _ _ (CTest _) _ _ = return ()
--
installDataFiles :: Verbosity -> PackageDescription -> FilePath -> IO ()
installDataFiles verbosity pkg_descr destDataDir =
flip traverse_ (dataFiles pkg_descr) $ \ file -> do
flip traverse_ (dataFiles pkg_descr) $ \ glob -> do
let srcDataDirRaw = dataDir pkg_descr
srcDataDir = if null srcDataDirRaw
then "."
else srcDataDirRaw
files <- matchDirFileGlob verbosity (specVersion pkg_descr) srcDataDir file
let dir = takeDirectory file
createDirectoryIfMissingVerbose verbosity True (destDataDir </> dir)
sequence_ [ installOrdinaryFile verbosity (srcDataDir </> file')
(destDataDir </> file')
| file' <- files ]
files <- matchDirFileGlob verbosity (specVersion pkg_descr) srcDataDir glob
for_ files $ \ file' -> do
let src = srcDataDir </> file'
dst = destDataDir </> file'
createDirectoryIfMissingVerbose verbosity True (takeDirectory dst)
installOrdinaryFile verbosity src dst

-- | Install the files listed in install-includes for a library
--
Expand Down
1 change: 1 addition & 0 deletions cabal-testsuite/PackageTests/Regression/T6125/Main.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
main = return ()
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!DOCTYPE html>Some random data.
9 changes: 9 additions & 0 deletions cabal-testsuite/PackageTests/Regression/T6125/myprog.cabal
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
cabal-version: 2.4
name: myprog
version: 0
data-files: data/**/*.html

executable myprog
build-depends: base
main-is: Main.hs
default-language: Haskell2010
9 changes: 9 additions & 0 deletions cabal-testsuite/PackageTests/Regression/T6125/setup.cabal.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Setup configure
Resolving dependencies...
Configuring myprog-0...
# Setup build
Preprocessing executable 'myprog' for myprog-0..
Building executable 'myprog' for myprog-0..
# Setup copy
Installing executable myprog in <PATH>
Warning: The directory <ROOT>/setup.cabal.dist/usr/bin is not in the system search path.
8 changes: 8 additions & 0 deletions cabal-testsuite/PackageTests/Regression/T6125/setup.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Setup configure
Configuring myprog-0...
# Setup build
Preprocessing executable 'myprog' for myprog-0..
Building executable 'myprog' for myprog-0..
# Setup copy
Installing executable myprog in <PATH>
Warning: The directory <ROOT>/setup.dist/usr/bin is not in the system search path.
6 changes: 6 additions & 0 deletions cabal-testsuite/PackageTests/Regression/T6125/setup.test.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import Test.Cabal.Prelude
main = setupAndCabalTest $ do
withPackageDb $ do
setup "configure" []
setup "build" ["myprog"]
setup "copy" ["myprog"]