Shipments in Cabal

Krasimir Angelov kr.angelov at
Wed Dec 7 15:39:04 EST 2005

Hello Guys,

I have started developing Shipments in Cabal. It is working like it
was discussed previously. When there are multiple *.cabal files, in
the directory where the Setup.lhs lies, then they all will be build in
dependency order. Packages that contain both executables and libraries
are deprecated. In order to keep the backward compatibility the
package description parser returns a list of PackageDescription. In
the list there is one element for the library and one element for each
executable. The package name for the executables is equal to the
"executable" field in the corresponding stanza in the package
description file.

The trouble that I see is with the bindir, libdir, etc directory
names. They all may depend on $pkgid value which is different for each
package in the shipment. The consequence is that by default all
binaries will be installed in their own directories.
I think it is better to install them in common directory instead. It
might be better if we were able to use $shipment variable instead of
$pkgid. Another possible usage of is in "sdist" command. By default
the "sdist" command is building the ${pkgid}.tar.gz archive. In
presence of multiple packages I think it should build one common
package: ${shipment}.tar.gz.

The problem is how to guess the $shipment value. There are some ideas:

a> The shipment name might be kept in some special file.

b> In HSQL I am using package names like: hsql, hsql-odbc, hsql-mysql, .....
One solution is to use the common prefix in the package names as
shipment name. When there is only one package, then the shipment name
will be equal to the package name. The advantage is that, when the
shipment name is encoded in the package name, then for the user it
will be easier to find the package sources.
The drawback is that we have to force some restriction on the package names.

c> Another solution is to use the name of the top level directory. The
drawback is that the user can't rename the top level directory.

Any ideas?


More information about the Libraries mailing list