Brad (and probably Al and maybe Steve),
On 2005 Jan 11 , at 12.02, Norman Gray wrote:
> From the path you quote in one of your messages, I get the impression
> you're using gcc-g77 3.4.1 from Fink, whereas I'm using gcc-g77 3.3.3
> from OpenDarwin. However the relevant parts of libg77 are unchanged
> between the two versions. It might be that they're built in slightly
> different ways, so that the relevant getarg symbols don't end up
> undefined in this context. Damn -- I thought I'd understood enough
> about these libraries to be quite confident about this.
I don't have a full story, but I think the difference is that you (and
Al) are using Fink for your g77, and I'm using DarwinPorts. The
up-front difference is that Fink's g77 is configured with
--disable-shared, and DarwinPorts' isn't. The symbols that getarg uses
are defined but not initialised within the library (that is, a C
`tentative definition': `char **f__xargv;', with no extern, but no
initialiser either). That turns into a Mach-O `common symbol'
(indicated by `C' in nm output), and I think that one effect of the
Fink --disable-shared will be to change the way that the final
executable is linked, in such a way that this defined-but-uninitialised
symbol in libg2c.a is OK when linked by Apple gcc and Fink g77, but not
OK when linked by Apple gcc and DarwinPorts g77. But I can't work out
exactly how, since the relevant libraries appear very much the same. A
challenge for some other time....
So I should switch to, and we should recommend, Fink? No, I don't
think so.
The differences between Fink and DarwinPorts are as follows:
Fink is a more-or-less direct port of the Debian dpkg system, and has
the same stable/testing/unstable break-up of packages. I'm not
terribly sure whether Fink is using unstable or testing -- presumably
testing. It seems that Fink has more packages than DarwinPorts, but is
a bit flakier (according to the reports I've read). It appears there
are 4641 packages currently ported in Fink.
DarwinPorts descends from the FreeBSD port infrastructure
(http://darwinports.opendarwin.org). It appears to have 2912 ports
right now, so the difference between the two is smaller than it has
been in the past, I presume partly because Fink, DarwinPorts and OSXGNU
(a third one) are cooperating. DarwinPorts isn't so bleeding-edge as
Fink -- it distributes g77 3.3.3 rather than Fink's 3.4.1. The big
difference is that DarwinPorts is somehow supported by Apple, or run by
Apple employees, including the FreeBSD co-founder, and so might be
engineered in a more Apple-ish way. There are rumours -- whether
well-founded or just wishful thinking -- that Apple will bundle
DarwinPorts with 10.4.
So I think we should support DarwinPorts as well as Fink, partly
because the more compiler/OS variants we handle the better, but also
because if Apple _do_ start bundling DarwinPorts with 10.4, then folk
with that version are going to have a Fortran compiler on-board
more-or-less immediately, without bothering with Fink.
See yez tomorrow (and probably at least hear Brad also),
Norman
--
----------------------------------------------------------------------
Norman Gray : Physics & Astronomy, Glasgow University, UK
http://www.astro.gla.ac.uk/users/norman/ : www.starlink.ac.uk
|