Opened 6 years ago

Closed 6 years ago

#41528 closed defect (fixed)

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

Reported by: ryandesign (Ryan 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 Schmidt) 6 years ago.

Download all attachments as: .zip

Change History (9)

Changed 6 years ago by ryandesign (Ryan Schmidt)

Attachment: main.log.bz2 added

comment:1 Changed 6 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 6 years ago by ryandesign (Ryan 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 6 years ago by ryandesign (Ryan 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 6 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 6 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 6 years ago by ryandesign (Ryan 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 6 years ago by ryandesign (Ryan Schmidt) (previous) (diff)

comment:7 Changed 6 years ago by ryandesign (Ryan 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 6 years ago by ryandesign (Ryan 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.