[MacPorts] #58646: libgcc @2.0_1: should not be noarch for dependents architecture compatibility checking (was: gcc8 @8.3.0_4 +universal: does not build/install universal libraries)
MacPorts
noreply at macports.org
Mon Jul 22 10:07:53 UTC 2019
#58646: libgcc @2.0_1: should not be noarch for dependents architecture
compatibility checking
---------------------+--------------------
Reporter: Ionic | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version:
Resolution: | Keywords:
Port: libgcc |
---------------------+--------------------
Changes (by Ionic):
* cc: MarcusCalhoun-Lopez, ken-cunningham-webuse (removed)
* port: gcc8 gcc9 => libgcc
Old 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.
New 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.
As pointed out in the comments, these files are just symlinks to libraries
installed by the `libgccX` ports. Since the `libgcc` port is noarch,
architecture checking is disabled for it and its dependencies, which means
that the required `libgccX` port will not be rebuilt for other arches,
even when `OpenBLAS` would require that.
--
Comment:
Updating original description, removing CC'd devs that haven't touched
libgcc.
I guess I'll push the change to libgcc soon since it's nomaintainer...
unless Chris doesn't want to, since he essentially created the port?
--
Ticket URL: <https://trac.macports.org/ticket/58646#comment:27>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list