Differences between revisions 13 and 14
Revision 13 as of 2007-12-29 16:20:25
Size: 5040
Editor: MartinGuy
Comment: fix typoes in package names
Revision 14 as of 2008-01-07 11:16:49
Size: 5041
Editor: ColinTuckley
Comment: pvm now done
Deletions are marked like this. Additions are marked like this.
Line 90: Line 90:
||pvm|| {X} #449297 || ||pvm|| (./) #449297 ||

Transitioning from g77 to gfortran

We would like to present the G77 to gfortran transition as a Lenny release goal. The Debian developers responsible for the transition are Riku Voipio <riku.voipio@iki.fi> (fortran application and library packages) and Mathias Klose <doko@debian.org> (toolchain packages). For discussion, please use <debian-toolchain@lists.debian.org> mailing list.

Why

Upstream released the last version of the g77 front end with GCC-3.4. gfortran 4.2 is now considered a viable replacement for g77. However, code must not link at the same time against -lg2c and -lgfortran. To allow partial upgrades we need to rename all library packages built with g77 and linked against g2c when they are rebuilt with gfortran.

Once the transition is completed, we are able to remove GCC-3.4 from the distribution (gpc needing an update for GCC-4.1 as well).

How

If your package build-depends on g77, you need to adjust your build-depends from g77 to gfortran. If you build-depend on a library package containing a shared library linked against libg2c, wait until all of these libraries are rebuilt with gfortran. Tighten the build-depends on those lib*-dev packages to the first version built with gfortran.

If your package provides a library that exports fortran functionality, it needs to be renamed. The recommended suffix for the new package name is "gf". If your package is affected by also by the long double transition, you can choose whichever suffix for your library.

Finally, if you now ship same files in different packages (such as a library in /usr/lib), you need to Conflict and Replace with the old package.

For example, lapack3 is now:

Package: lapack3
Binary: lapack3, lapack3-test, lapack3-dev, lapack3-pic, lapack3-doc
Build-Depends: debhelper (>= 4), g77, refblas3-dev

should become:

Package: lapack3
Binary: lapack3gf, lapack3-test, lapack3-dev, lapack3-pic, lapack3-doc
Build-Depends: debhelper (>= 4), gfortran, refblas3-dev (>= <first version built with gfortran)
...
Package: lapack3gf
...
Replaces: lapack3
Conflicts: lapack3

Possible Issues

Some of the command line options supported by g77 have been dropped. You can usually just drop them.

On ia32 and amd64, you might need to use the -ffloat-store option for gfortran to achieve identical behaviour with floating points. This was at least the case for refblas3. This option will have strong negative impact on performance.

getarg and some other g77 specific functions have been removed from gfortran. See [http://lists.debian.org/debian-toolchain/2007/07/msg00013.html this posting] to workaround this in gfortran.

Ask on debian-toolchain list for any other issues.

Status

Legend

(./)

Transitioned

<!>

Has issues

{X}

Unfixed / Needs upload

{1}

Ready for binNMU

{o}

Depending packages need to migrate first

{*}

Transitioned

{i}

In experimental / NEW

Package

State

Trivial packages

use g77 but do not use or provide fortran libs

med-fichier

(./)

pvm

(./) #449297

zivot

(./)

libtool

{X} #441751

minpack

(./)

multimix

{X} #449458

saods9

{X} #449456

cfitsio3

(./)

fftw3

{X} (compiled with gfortran -f2c)

main knot

status

needs library rename

refblas3

{i}

yes

lapack3

{i}

yes

atlas3

{X}

yes

lam

{X} #456418

no?

mpich

{X} #195509

yes

petsc

{o} libsuitesparse-dev, libsuperlu3-dev atleast

?

suitesparse

<!> compiled with gfortran *and* g77

?

cernlib

{X}

yes

geant321

{o} cernlib, paw

yes

mclibs

{o} cernlib

yes

mn-fit

{o} cernlib, paw

no

paw

{o} cernlib

yes

fftw

{o} mpich

yes

gsl

{o} refblas

no

netcdf

(./)

no

dsdp

{X}

no

octave2.1

{o} multiple

no

octave2.9

{o} multiple

no

libextutils-f77-perl

{X} doesn't gfortran make this obsolete?

Leaf packages

|can be fixed as soon as all their dependencies have been transitioned

arpack

{o} refblas + lapack

gsl

{o} refblas (binNMUable?)

r-base

{o} refblas + atlas (binNMUable?)

lush

{o} gsl

r-noncran-lindsey

{o} r-base-dev

mpqc

{o} refblas + lapack

psicode

{o} refblas + lapack

pysparse

{o} refblas + lapack

python-numarray

{o} refblas + lapack

python-numeric

{o} refblas + lapack

blitz++

{o} atlas3

wsjt

<!> build-depends on libg2c0-dev *and* gfortran??

tela

{o} libhdf4 + refblas + lapack orphaned

pdl

{o} gsl

blacs-pvm

{o} pvm

blacs-mpi

{o} lam mpich

scalapack

{o} blacs-pvm blacs-mpi lapack refblas

gromacs

{o} fftw3 mpich lam

kst

{o} cfitsio gsl

k7fftwgel

{o} mpich

k6fftwgel

{o} mpich

p4fftwgel

{o} mpich