Packaging and Distribution of Fortran Libraries
November 25, 2008
What are the best practices for building and distributing modern
Fortran libraries, say as a Debian package? Assuming that the library
consists of a number of modules, a primary problem for distributing a
compiled library for a specific platform is that module files are
compiler-specific. For Debian it might make sense to simply
distribute GFortran .mod
files but what about other cases? The
-dev
packages for such libraries might need to be compiler-specific,
for example, libname-dev-gfortran
. Might there be issues with
distributing .mod
files for commercial compilers?
Furthermore, what is the proper place to install the .mod
files?
The FHS states that /usr/include
is for C include files.
A strict reading would prevent Fortran mod files from
being placed there for two reasons: they are not related to C and they
are not include files. Wherever they are installed, a common location
for all packages like /usr/lib/gfortran/modules
opens up the
potential for namespace issues. Modules with the same name from
different libraries would cause conflicts. Perhaps a better location
might be /usr/lib/<package>/mod/
or even
/usr/lib/<package>/mod/<compiler>/
? The unfortunate thing with this
setup is that the specific path will need to be given for each library
one needs to link to. Contrast this with simplicity of the usual
-I/usr/include
arguments given to C and C++ compilers.
libmpich1.0-dev is an example of a Debian package of a Fortran
library. The .mod
files for this are installed in
/usr/lib/mpich/include/f90base/
and
/usr/lib/mpich/include/f90choice/
. This package assumes the use of
GFortran which is reasonable for a Debian package.
There seems to be no consensus on these issues but I’ve found a few instances where they have been discussed:
[[Fedora-packaging] fortran .mod files]1 posted to the Fedora packaging list.
Re: [Fedora-packaging] fortran .mod files posted to the GNU Fortran mailing list.
Draft notes on Packaging Fortran Libraries from the Fedora Project.
Help on how to create a library with F90 on
comp.lang.fortran
.