Opened 5 years ago

Last modified 5 years ago

#58646 closed defect

gcc8 @8.3.0_4 +universal: does not build/install universal libraries — at Initial Version

Reported by: Ionic (Mihai Moldovan) Owned by:
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: cjones051073 (Chris Jones), MarcusCalhoun-Lopez (Marcus Calhoun-Lopez), ken-cunningham-webuse
Port: libgcc

Description

OpenBLAS @0.6.3_1 +universal fails to build due to this:

[...]
/opt/local/bin/gfortran-mp-8 -O3 -m128bit-long-double -Wall -frecursive -m32   -o sblat1 sblat1.o ../libopenblas-r1.a -lpthread -lgfortran -lpthread -lgfortran
/opt/local/bin/gfortran-mp-8 -O3 -m128bit-long-double -Wall -frecursive -m32   -o dblat1 dblat1.o ../libopenblas-r1.a -lpthread -lgfortran -lpthread -lgfortran
ld: warning: ignoring fileld : warning: ignoring file /opt/local/lib/gcc8//opt/local/lib/gcc8/i386i386/libgfortran.dylib, file was /builtlibgfortran.dylib,  filefor x86_64 which is  notwas  the built for x86_64 which architecture being is not linked (i386): /opt/local/lib/gcc8/i386/libgfortran.dylib
ld: warning: ignoring file /opt/local/lib/gcc8/libgcc_ext.10.5.dylib, missing required architecture i386 in file /opt/local/lib/gcc8/libgcc_ext.10.5.dylib (1 slices)
ld: warning: ignoring file /opt/local/lib/gcc8/i386/libquadmath.dylib, file was built for x86_64 which is not thethe architecture being linked (i386): /opt/local/lib/gcc8/i386/libgfortran.dylib
ld: warning: ignoring file /opt/local/lib/gcc8/libgcc_ext.10.5.dylib, missing required architecture i386 in file /opt/local/lib/gcc8/libgcc_ext.10.5.dylib (1 slices)
ld: warning: ignoring file /opt/local/lib/gcc8/i386/libquadmath.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/gcc8/i386 /libquadmath.dylib
Undefined symbols for architecture i386:
  "__gfortran_internal_pack", referenced from:
      architecture being linked (i386): /opt/local/lib/gcc8/i386/libquadmath.dylib
Undefined symbols for architecture i386:
  "__gfortran_set_args", referenced from:
[...]

The output is mangled which is probably a side-effect of -j2. That's not something that should concern us a lot.

What does concern me is that linking against libgfortran.dylib, libgcc_ext.dylib et al fails in i386 mode, because the libraries do not contain the needed architecture.

$ lipo -info /opt/local/lib/gcc8/i386/libgfortran.dylib /opt/local/lib/gcc8/libgcc_ext.10.5.dylib /opt/local/lib/gcc8/i386/libquadmath.dylib
Architectures in the fat file: /opt/local/lib/gcc8/libgcc_ext.10.5.dylib are: x86_64 
Non-fat file: /opt/local/lib/gcc8/i386/libgfortran.dylib is architecture: x86_64
Non-fat file: /opt/local/lib/gcc8/i386/libquadmath.dylib is architecture: x86_64

I'm CCing the last few people to update the port because it's nomaintainer. Not creating a ticket against OpenBLAS, because OpenBLAS doesn't seem to at fault here.

gcc9 seems also to be affected:

$ lipo -info /opt/local/lib/gcc9/i386/libgfortran.dylib /opt/local/lib/gcc9/libgcc_ext.10.5.dylib /opt/local/lib/gcc9/i386/libquadmath.dylib
Architectures in the fat file: /opt/local/lib/gcc9/libgcc_ext.10.5.dylib are: x86_64 
Non-fat file: /opt/local/lib/gcc9/i386/libgfortran.dylib is architecture: x86_64
Non-fat file: /opt/local/lib/gcc9/i386/libquadmath.dylib is architecture: x86_64

I don't have gcc7 installed +universal, so can't say whether this version is affected.

The only older GCC version that I do have installed +universal is 4.9... and this one is interesting:

#  lipo -info /opt/local/lib/gcc49/i386/libgfortran.dylib /opt/local/lib/gcc49/libgcc_ext.10.5.dylib /opt/local/lib/gcc49/i386/libquadmath.dylib
Architectures in the fat file: /opt/local/lib/gcc49/i386/libgfortran.dylib are: x86_64 i386 
Architectures in the fat file: /opt/local/lib/gcc49/libgcc_ext.10.5.dylib are: x86_64 
Non-fat file: /opt/local/lib/gcc49/i386/libquadmath.dylib is architecture: x86_64

That doesn't look right either, but at least better regarding libgfortran.dylib.

I'll attach OpenBLAS's log file just in case it might be helpful.

Change History (1)

Changed 5 years ago by Ionic (Mihai Moldovan)

Attachment: OpenBLAS.main.log added

OpenBLAS.main.log

Note: See TracTickets for help on using tickets.