
Hi Duncan,
Thanks for fixing the bug. I confirm that HEAD branch works as expected.
It is nice that this change will be incorporated into 1.6.0.2 release.
Cheers, George
2009/1/22 Duncan Coutts
On Wed, 2009-01-21 at 18:02 +0100, George Giorgidze wrote:
Hi,
In my project I am using C include/header files that are hierarchically nested into folders. These header files are used to compile the Haskell package and everything is fine with the compilation process. I want these include files also to be installed with the package. From the online documentation of Cabal I learned that there exists specific field for this purpose called install-includes. However, it does not work when include files are hierarchically nested into folders. Here is relevant part of the cabal file I am using.
include-dirs: cbits/sundials/include install-includes: nvector/nvector_serial.h
when I am issuing cabal install command I am getting the following error:
cabal: Error: some packages failed to install: Hydra-0.1 failed during the final install step. The exception was: /home/ggg/.cabal/lib/Hydra-0.1/ghc-6.10.1/include/nvector: copyFile: does not exist (No such file or directory)
It seems to me that cabal forgets to create parent directories for folder nested include files. For not-nested include files install-includes filed works fine.
The Cabal version I am using is 1.6.0.1. The cabal-install version I am using is 0.6.0
Currently, as a workaround I am using data-files field to install include files. However, I would like to see this issue fixed (I assume it is a bug).
Yes it's a bug. Thanks.
The problem is the code in Distribution/Simple/Install.hs in the function installIncludeFiles. You'll notice that it creates the toplevel target 'include' directory, but you'll also notice that the directory component of each .h file is not created:
unless (null incs) $ do createDirectoryIfMissingVerbose verbosity True incdir sequence_ [ copyFileVerbose verbosity path (incdir > f) | (f,path) <- incs ]
If fixed a similar bug in the data files code recently. This code is unfortunately not very well factored so I missed the equivalent issue in the includes.
I've pushed a patch to Cabal HEAD. Could you confirm that it works? If so I'll push it to the 1.6.x branch which means it'll make it into the upcoming 1.6.0.2 release.
Duncan
-- George Giorgidze http://www.cs.nott.ac.uk/~ggg/