Wednesday, December 5, 2012

gcc update failed!

Not good news. TenFourFox 19 will build with gcc 4.6.3, but it will not start on 10.4, and it appears that the libxpcom it builds does not work with Tiger dyld. JavaScript works, but JavaScript does not need XPCOM. It even crashes on a binary that is simply linked to libxpcom.

This isn't a port-ender, but it certainly constrains us greatly because we won't be able to upgrade the toolchain in the future. It is possible we could hack the build system to build with 4.6 for the complex JavaScript portion which is requiring a lot of hacking to build with 4.0.1, then build the rest with 4.0.1 and glue it all together, but this is clearly a desperation idea.

If you like beer, or if you simply like fatuous adoration (your choice), see if you can succeed where I have failed in issue 52. You need to have the MacPorts gcc46 package installed. If we can't fix this by the time 19 makes it to beta channel, then we press on with gcc 4.0.1 for as long as it lasts, and it will be time for a long hard discussion on what will trigger dropping source parity. (David, does Fink's gcc port have the same problem?)

7 comments:

  1. Does the gcc have to be gcc46? I've stopped using more modern versions of gcc past 4.4 since there are known incompatibilities with 10.4 with 4.5.

    [the following is an excerpt from an email by Jack Howarth of Fink fame]
    "... Okay. If the make is attempting to use gcj to compile a java source
    file (rather than a class), this is known bug. The gcj program calls
    ecj1 which in turn executes code on the unwinder. The situation is
    rather complex since the unwinder is typically provided through libgcc.
    Apple provided their own system copy of libgcc (based on 4.0.1/4.2.1)
    in Leopard. In Snow Leopard, the unwinder is subsumed into libSystem
    and *any* libgcc is ignored.
    Also complicating this is the fact that for FSF gcc 4.5.0 and later,
    libgcc is no longer built and the system version is used instead. What
    you are seeing in FSF gcc 4.5.0 on ppc darwin9 is a compatibility bug
    between the unwinder code generated by gcc 4.5.0 and the system unwinder
    on powerpc. FYI, gcj was always broken on Intel darwin up to gcc 4.5.0
    and darwin10. So in short, if you need to use gcj on ppc darwin9, stick
    with FSF gcc44 and if you need to use it on intel darwin, update to
    darwin10 and use FSF gcc45."

    ReplyDelete
    Replies
    1. tenfourfox edits prefs.js - highly annoying. Running G5 PPC I am stuck with a certain version of Firefaox and plugins, so I have activated the HIDE feature of outdated plugins. But every time I have run Tenfourfox, this feature has been disabled again. :-(

      Delete
    2. We don't support going back and forth between Firefox and TenFourFox. You can if you like, but that's just one of the compatibility issues you're going to run into. If you really need to run a Gecko 1.9.2 rendering engine, Camino will not interfere with TenFourFox.

      Delete
  2. It doesn't have to be gcc 4.6, no, but it would be nice to be ahead of Mozilla's compiler requirements for a change. However, the second paragraph is curious, because Tobias is using 4.6.3 right now on Leopard to build AuroraFox and hasn't had any such issues (unless it is specific to gcj and not the compiler suite as a whole).

    ReplyDelete
  3. ....AF is having major plugin problems where TFF isn't?

    ReplyDelete
  4. Maybe it's time for a LeoFox fork. Firefox for Leopard on G4, G5 and 32-bit Intel, with TenFourFox's PPC optimizations, but omitting all the detours to make it work on 10.4. And TenFourFox still maintained with gcc 4.0.1 but dropping source parity.

    ReplyDelete
  5. I'm trying a few other options. There might be a way to get gcc-4.6 to work for this, and Tobias states he has on 10.4 (we do know it works for 10.5, but it has a later dyld). But 4.4.7 seems like a reasonable thing to try, and MacPorts finished building it overnight, so we'll see how far it gets today.

    ReplyDelete

Due to an increased frequency of spam, comments are now subject to moderation.