Relocable packages with library

Krasimir Angelov kr.angelov at gmail.com
Thu Jun 19 13:56:00 EDT 2008


Hi,

I have a package that contains one library, one executable and a
number of data files. If the package contains only executables then
the generated Paths_<pkgid>.hs on Windows uses the executable location
in order to calculate the datadir, libdir, etc directories. This is
useful feature if someone wants relocable binary distributions. If the
package has library then these directories are fixed. The initial
reason was that many executables might be linked to this library and
they should share the same data files.

This usually makes sense but sometimes it is also useful to have
library with relocable data directory. In this case it will be
relative to the location where the executable linked with it is
installed. If several executables are linked with the same library
then they can be installed in one directory and they still will be
able to share the common data directory. This is currently the common
situation, since all executables are installed in "c:\Program
Files\Haskell\bin".

I already experienced the problem with haddock-2.0 where the
precompiled binary expects that some files are installed in
"C:\builds\haddock-2\install\haddock-2.0.0.0\html" which is wrong of
course. Now I strike the same problem with another package.

I propose to either add flag to configure saying that directories in
Paths_<pkgid>.hs should be relative or to make them relative in all
cases.

What do you think?

Regards,
  Krasimir



More information about the cabal-devel mailing list