On 1/6/19 5:16 AM, Benny Siegert wrote:
What I've settled on is setting a minimum GCC_REQD in each package I maintain and an equal or higher GCC_REQD for everything (except GCC and its deps) in mk.conf.On Sun, Jan 6, 2019 at 2:00 AM Joerg Sonnenberger <joerg%bec.de@localhost> wrote:Mixing GCC versions doesn't work well. That's exactly what you end up with when non-leaf packages start to randomly require higher versions. The only reasonable solution is to actually just require a version that's new enough for your package set up front and stick with it.What can the pksrc infrastructure do to help the user picking a new-enough version?
As you may know, GCC_REQD is actually a list from which pkgsrc chooses the highest version. So, setting GCC_REQD in mk.conf at least as high as the highest requirement of all the packages you need ensures a consistent tool chain.
Here is a basic config for my CentOS systems:
Linux login.avi bacon ~ 993: more /usr/pkg/etc/mk.conf
# Example /usr/pkg/etc/mk.conf file produced by bootstrap-pkgsrc
# Wed Oct 24 13:00:27 CDT 2018
.ifdef BSD_PKG_MK # begin pkgsrc settings
ABI= 64
PKG_DBDIR= /usr/pkg/pkgdb
LOCALBASE= /usr/pkg
VARBASE= /usr/pkg/var
PKG_TOOLS_BIN= /usr/pkg/sbin
PKGINFODIR= info
PKGMANDIR= man
.endif # end pkgsrc settings
X11_TYPE= modular
PREFER_NATIVE= no
PREFER_PKGSRC= yes
PKGSRC_FORTRAN= gfortran
PKG_DEVELOPER= yes
FETCH_USING= curl
SKIP_LICENSE_CHECK= yes
PKG_OPTIONS.libfetch= inet6 openssl
.if empty(PKGPATH:Marchivers/bzip2) && \
empty(PKGPATH:Marchivers/pax) && \
empty(PKGPATH:Marchivers/xz) && \
empty(PKGPATH:Mconverters/help2man) && \
empty(PKGPATH:Mconverters/libiconv) && \
empty(PKGPATH:Mconverters/p5-Unicode-EastAsianWidth) && \
empty(PKGPATH:Mdevel/autoconf) && \
empty(PKGPATH:Mdevel/binutils) && \
empty(PKGPATH:Mdevel/gettext-lib) && \
empty(PKGPATH:Mdevel/gettext-tools) && \
empty(PKGPATH:Mdevel/gmake) && \
empty(PKGPATH:Mdevel/gmp) && \
empty(PKGPATH:Mdevel/gtexinfo) && \
empty(PKGPATH:Mdevel/pkgconf) && \
empty(PKGPATH:Mdevel/libtool-base) && \
empty(PKGPATH:Mdevel/m4) && \
empty(PKGPATH:Mdevel/ncurses) && \
empty(PKGPATH:Mdevel/nbpatch) && \
empty(PKGPATH:Mdevel/p5-gettext) && \
empty(PKGPATH:Mlang/gcc6) && \
empty(PKGPATH:Mlang/gcc6-libs) && \
empty(PKGPATH:Mlang/perl5) && \
empty(PKGPATH:Mmath/cloog) && \
empty(PKGPATH:Mmath/isl) && \
empty(PKGPATH:Mmath/mpcomplex) && \
empty(PKGPATH:Mmath/mpfr) && \
empty(PKGPATH:Mmisc/p5-Locale-libintl) && \
empty(PKGPATH:Mnet/libfetch) && \
empty(PKGPATH:Mpkgtools/cwrappers) && \
empty(PKGPATH:Mpkgtools/digest) && \
empty(PKGPATH:Mpkgtools/pkg_install-info) && \
empty(PKGPATH:Mpkgtools/pkgin) && \
empty(PKGPATH:Msysutils/checkperms) && \
empty(PKGPATH:Mtextproc/gsed) && \
empty(PKGPATH:Mtextproc/p5-Text-Unidecode)
GCC_REQD+=6.0
.endif # GCC_REQD
# RHEL systems may have an outdated "as" that cannot translate instructions
# from current GCC code generators, so force pkgsrc binutils.
.if exists(/etc/redhat-release) && !empty(PKGPATH:Mlang/gcc*)
CONFIGURE_ARGS+= --with-gnu-as --with-as=${PREFIX}/bin/gas
CONFIGURE_ARGS+= --with-gnu-ld --with-ld=${PREFIX}/bin/gld
BUILDLINK_DEPMETHOD.binutils= full
. include "../../devel/binutils/buildlink3.mk"
.endif