Opened 10 years ago

Closed 10 years ago

#41528 closed defect (fixed)

texlive-bin @2013: error: template with C linkage

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: drkp (Dan Ports)
Priority: Normal Milestone:
Component: ports Version: 2.2.1
Keywords: tiger Cc:
Port: texlive-bin

Description


Attachments (1)

main.log.bz2 (37.6 KB) - added by ryandesign (Ryan Carsten Schmidt) 10 years ago.

Download all attachments as: .zip

Change History (9)

Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: main.log.bz2 added

comment:1 Changed 10 years ago by drkp (Dan Ports)

We might be out of luck on this one since Tiger is so old, but I'll take a quick look anyway...

comment:2 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

I have found this explanation of the "template with C linkage" error, calling it a "dangling extern "C"" problem.

I notice that -isystem is in the compile line so now I'm wondering if this is the problem mentioned here, where Tiger's g++ automatically inserts extern "C" around headers included with -isystem, a problem which was fixed in Leopard. If so, blacklisting Tiger's g++ and instead using MacPorts' apple-gcc42 might fix it. I can try this later when I'm back at my Tiger machine. Note that I'm not using the patch from that ticket on this machine; this is a change made specifically in the texlive-bin port in r83018.

comment:3 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Or it could be that an extern "C" in one of texlive-bin's files is in the wrong place (see r113940 for such an error in another project).

comment:4 Changed 10 years ago by drkp (Dan Ports)

I'm betting it's the -isystem bug. Could you give it a try with a different compiler? I don't have a Tiger machine anymore.

comment:5 Changed 10 years ago by drkp (Dan Ports)

Also, it's possible we don't need to set -isystem here anymore. It was essential in the past to get the link order right, in particular to be sure that texlive binaries linked against texlive's patched icu, not the one installed by the icu port. texlive-bin no longer has its own version of icu, and I don't think it builds any other libraries that are already provided by MacPorts.

All that said, I'd just as soon leave -isystem in, in case it becomes necessary in a future version. (And it really ought to be the default everywhere, modulo this apparent Tiger issue.)

comment:6 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

I'll test it on Tiger, to satisfy my curiosity about this issue. But if the problem can be solved in texlive-bin in a way that does not necessitate adding a dependency on a different compiler, that would be preferable.

Last edited 10 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:7 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Confirmed: using apple-gcc-4.2 on Tiger allows texlive-bin to build.

I'm reconsidering what I said above. It would simplify several things to just make apple-gcc-4.2 the default compiler for all ports on Tiger. At some point I'll try that out.

comment:8 in reply to:  7 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: newclosed

Replying to ryandesign@…:

Confirmed: using apple-gcc-4.2 on Tiger allows texlive-bin to build.

Fixed this in texlive-bin in r115651.

I'm reconsidering what I said above. It would simplify several things to just make apple-gcc-4.2 the default compiler for all ports on Tiger. At some point I'll try that out.

This has been done in trunk; see #41782.

Note: See TracTickets for help on using tickets.