Opened 11 months ago

Last modified 11 months ago

#67616 new defect

gcc 12.3.0 does not install libd10-uwfef on i386?

Reported by: barracuda156 Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.8.1
Keywords: i386 Cc: mascguy (Christopher Nielsen), kencu (Ken)
Port: gcc12

Description

R-bain fails, not being able to find that lib:

* installing *source* package ‘bain’ ...
** using staged installation
** libs
using C compiler: ‘clang version 11.1.0’
using Fortran compiler: ‘GNU Fortran (MacPorts gcc12 12.3.0_0+stdlib_flag+universal) 12.3.0’
Warning in system2("xcrun", "--show-sdk-path", TRUE, TRUE) :
  running command ''xcrun' --show-sdk-path 2>&1' had status 64
using SDK: ‘NA’‘NA’‘NA’‘NA’‘NA’‘NA’
/opt/local/bin/gfortran-mp-12  -fPIC  -pipe -Os -m32  -c  Bain.f90 -o Bain.o
<stdin>:4110:11: warning: section "__textcoal_nt" is deprecated
        .section __TEXT,__textcoal_nt,coalesced,pure_instructions
                 ^      ~~~~~~~~~~~~~
<stdin>:4110:11: note: change section name to "__text"
        .section __TEXT,__textcoal_nt,coalesced,pure_instructions
                 ^      ~~~~~~~~~~~~~
<stdin>:4114:11: warning: section "__textcoal_nt" is deprecated
        .section __TEXT,__textcoal_nt,coalesced,pure_instructions
                 ^      ~~~~~~~~~~~~~
<stdin>:4114:11: note: change section name to "__text"
        .section __TEXT,__textcoal_nt,coalesced,pure_instructions
                 ^      ~~~~~~~~~~~~~
<stdin>:4119:11: warning: section "__textcoal_nt" is deprecated
        .section __TEXT,__textcoal_nt,coalesced,pure_instructions
                 ^      ~~~~~~~~~~~~~
<stdin>:4119:11: note: change section name to "__text"
        .section __TEXT,__textcoal_nt,coalesced,pure_instructions
                 ^      ~~~~~~~~~~~~~
<stdin>:4123:11: warning: section "__textcoal_nt" is deprecated
        .section __TEXT,__textcoal_nt,coalesced,pure_instructions
                 ^      ~~~~~~~~~~~~~
<stdin>:4123:11: note: change section name to "__text"
        .section __TEXT,__textcoal_nt,coalesced,pure_instructions
                 ^      ~~~~~~~~~~~~~
/opt/local/bin/clang-mp-11 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG   -isystem/opt/local/include/LegacySupport -I/opt/local/include    -fPIC  -pipe -Os -arch i386  -c bain_init.c -o bain_init.o
/opt/local/bin/clang-mp-11 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/opt/local/Library/Frameworks/R.framework/Resources/lib -Wl,-headerpad_max_install_names -Wl,-rpath,/opt/local/lib/libgcc -L/opt/local/lib -lMacportsLegacySupport -arch i386 -o bain.so Bain.o bain_init.o -L/opt/local/lib/gcc12/gcc/i386-apple-darwin10/12.3.0 -L/opt/local/lib/gcc12 -lMacportsLegacySupport -lgfortran -ld10-uwfef -lquadmath -F/opt/local/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
ld: warning: directory not found for option '-L/opt/local/lib/gcc12/gcc/i386-apple-darwin10/12.3.0'
ld: library not found for -ld10-uwfef
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [bain.so] Error 1
ERROR: compilation failed for package ‘bain’
* removing ‘/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_R_R-bain/R-bain/work/bain/bain.Rcheck/bain’

Portfile correctly asks for fortran.

GCC version:

  gcc12 @12.3.0_0+stdlib_flag+universal (active) requested_variants='+universal' platform='darwin 10' archs='i386 x86_64' date='2023-06-12T04:25:10+0800'

Change History (3)

comment:1 Changed 11 months ago by barracuda156

Nah, it just cannot find it. Same with 12.2.0. The lib is there: /opt/local/lib/gcc12/gcc/x86_64-apple-darwin10/12.2.0/i386/libd10-uwfef.a (for 12.2.0).

comment:2 Changed 11 months ago by barracuda156

Or it is because our GCC are fake universal, so will not work for i386?

comment:3 Changed 11 months ago by kencu (Ken)

MacPorts gcc is built using gcc’s supported multilib setup.

This might be Iain’s bug to fix.

gcc is telling the linker to look here

/opt/local/lib/gcc12/gcc/i386-apple-darwin10/12.3.0

but should be telling the linker to look here

/opt/local/lib/gcc12/gcc/x86_64-apple-darwin10/12.3.0/i386

the second path looks right to me, building using gcc’s multilib setup to build for i386 using the 64bit gcc compiler.

As a next step, you might see if you can reproduce this bug building a simple “hello, world” using gcc 64bit to make an i386 executable…on or for SnowLeopard.

Last edited 11 months ago by kencu (Ken) (previous) (diff)
Note: See TracTickets for help on using tickets.