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