Problems with install-includes

George Giorgidze ggg at cs.nott.ac.uk
Fri Jan 23 09:23:05 EST 2009


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 <duncan.coutts at worc.ox.ac.uk>:
> 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/



More information about the cabal-devel mailing list