tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bad package build of gcc10
* On 2024-10-18 at 23:40 BST, Greg Troxel wrote:
Rooting around destdir, I found a file that references quadmath:
$ objdump -x work/.destdir/usr/pkg/gcc10/lib/libgfortran.so.5.0|egrep NEED\|RPATH
NEEDED libquadmath.so.0
NEEDED libm.so.0
NEEDED libgcc_s.so.1
NEEDED libc.so.12
RPATH /usr/pkg/gcc10//lib/.:/usr/pkg/gcc10/lib/.:/usr/pkg/gcc10/lib:/usr/pkg/lib
VERNEED 0x0000000000017a98
VERNEEDNUM 0x0000000000000002
and that seems to be the issue: //lib/. instead of /lib, leading to a
REQUIRES that should have been a match to the PROVIDES and hence
omittted. Basically, the checking code is not using the same resolution
rules that the dynamic linker does.
I think what doesn't help is that people have been cargo-culting around
GCC patches without understanding what they do. It's one of the reasons
I no longer use these packages.
At some point between gcc9 and gcc10, a very important part of
patch-gcc_Makefile.in got corrupted, and it's been copied in its broken
form ever since:
gcc6/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG)$(prefix)/@GCC_TARGET_MACHINE@/lib/%M $(LINKER_RPATH_FLAG)$(libdir)/%M \"" \
gcc7/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG)$(prefix)/@MACHINE_GNU_PLATFORM@/lib/%M $(LINKER_RPATH_FLAG)$(libdir)/%M \"" \
gcc8/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG)$(prefix)/@MACHINE_GNU_PLATFORM@/lib/%M $(LINKER_RPATH_FLAG)$(libdir)/%M \"" \
gcc9/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG)$(prefix)/@MACHINE_GNU_PLATFORM@/lib/%M $(LINKER_RPATH_FLAG)$(libdir)/%M \"" \
gcc10-aux/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)//lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \
gcc10/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)//lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \
gcc12/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)//lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \
gcc13-gnat/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)//lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \
gcc13/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)//lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \
gcc14/patches/patch-gcc_Makefile.in:+ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)//lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \
Note that the @MACHINE_GNU_PLATFORM@ substitution is no longer there,
which probably explains your "//" problem, and likely is the cause of
other issues.
--
Jonathan Perkin - mnx.io - pkgsrc.smartos.org
Open Source Complete Cloud www.tritondatacenter.com
Home |
Main Index |
Thread Index |
Old Index