A few days ago I found that building lang/openjdk8 with gcc7 failed for
me, with
Making adlc
/pkg_comp/obj/pkgsrc/lang/openjdk8/default/bootstrap/jre/lib/amd64/libstdc++.so.7: version GLIBCXX_3.4.9 required by ../generated/adfiles/adlc not defined
It looked like this adlc program was built with gcc7 (the file was new)
but run with the libstdc++ from the bootstrap kit (which was built with
a different gcc from 2015).
Today I looked into this a bit more, and I found in
lang/openjdk8/Makefile a fragment meant to avoid just this problem:
post-extract:
# These libs are bundled w/ the netbsd-7 bootstrap to facilitate building with
# MKLLVM=yes / MKGCC=no. Nuke them from bootstrap if they are present in base.
.if exists(/lib/libgcc_s.so.1)
${RM} -f ${ALT_BOOTDIR}/jre/lib/${LIBDIR_ARCH}/libgcc_s.so*
.endif
.if exists(/usr/lib/libstdc++.so.7)
${RM} -f ${ALT_BOOTDIR}/jre/lib/${LIBDIR_ARCH}/libstdc++.so*
.endif
but it didn't activate in my pkg_comp1 chroot. The reason for this was
that the base version of the library is now at version 8. However gcc7
still provides a version 7, which now conflicted with the bootstrap kit
instead.
So the bootstrap kit library also needs to be removed if there is a gcc7
being used (maybe also other gcc versions?)
A possible fix might be something like
.if exists(/usr/lib/libstdc++.so.7) || exists(${_GCC_PREFIX}/lib/libstdc++.so.7)
but maybe, if _GCC_PREFIX is set, the base system library should not be
checked.
Thoughts?
-Olaf.
--
Olaf 'Rhialto' Seibert -- rhialto at falu dot nl
___ Anyone who is capable of getting themselves made President should on
\X/ no account be allowed to do the job. --Douglas Adams, "THGTTG"
Attachment:
signature.asc
Description: PGP signature