Index: Makefile.inc1 =================================================================== --- Makefile.inc1 +++ Makefile.inc1 @@ -452,7 +452,7 @@ # BOOTSTRAPPING?= 0 -# Keep these in sync +# Keep these in sync -- see below for special case exception MINIMUM_SUPPORTED_OSREL?= 900044 MINIMUM_SUPPORTED_REL?= 9.1 @@ -1556,10 +1556,24 @@ .endif legacy: .PHONY +# Temporary special case for automatically detecting the clang compiler issue +# Note: 9.x didn't have FreeBSD_version bumps often enough, so you may need to +# set BOOTSTRAPPING to 0 if you're stable/9 tree post-dates r286035 but is before +# the version bump in r296219 (from July 29, 2015 -> Feb 29, 2016). +.if ${BOOTSTRAPPING} != 0 && ${WANT_COIMPILER_TYPE} == "clang" && ${COMPILER_TYPE} == "clang" && + ${COMPILER_VERSION} < 30601 +.if ${BOOTSTRAPPING} > 10000000 && ${BOOTSTRAPPING} < 1002501 + @echo "ERROR: Source upgrades from stable/10 prior to r286033 are not supported."; false +.elif ${BOOTSTRAPPING} > 9000000 && ${BOOTSTRAPPING} < 903509 + @echo "ERROR: Source upgrades from stable/9 prior to r286035 are not supported."; false +.endif +.else .if ${BOOTSTRAPPING} < ${MINIMUM_SUPPORTED_OSREL} && ${BOOTSTRAPPING} != 0 @echo "ERROR: Source upgrades from versions prior to ${MINIMUM_SUPPORTED_REL} are not supported."; \ false .endif +.endif + .for _tool in tools/build ${_elftoolchain_libs} ${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,all,install)"; \ cd ${.CURDIR}/${_tool}; \ Index: UPDATING =================================================================== --- UPDATING +++ UPDATING @@ -29,21 +29,26 @@ machines to maximize performance. (To completely disable malloc debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely disable the most expensive debugging functionality run - "ln -s 'abort:false,junk:false' /etc/malloc. + "ln -s 'abort:false,junk:false' /etc/malloc.conf".) ****************************** SPECIAL WARNING: ****************************** Due to a bug in some versions of clang that's very hard to workaround in the upgrade process, to upgrade to -current you must first upgrade - either stable/9 after r286035 or stable/10 after r286033 or current - after r286007 (including stable/11 and 11.0-RELEASE). These revisions - post-date 10.3-RELEASE and 9.3-RELEASE, so you'll need to take the - unusual step of upgrading to the tip of the stable branch before moving - to 11 or -current via a source upgrade. stable/11 and 11.0-RELEASE - post-date the fix so you can move from them to -current. This differs - from the historical situation where one coule upgrade from anywhere on - the last couple of stable branches, so be careful. + either stable/9 after r286035 or stable/10 after r286033 (including + 10.3-RELEASE) or current after r286007 (including stable/11 and + 11.0-RELEASE). These revisions post-date the 10.2 and 9.3 releases, so + you'll need to take the unusual step of upgrading to the tip of the + stable branch before moving to 11 or -current via a source upgrade. + stable/11 and 11.0-RELEASE post-date the fix so you can move from them + to -current. This differs from the historical situation where one could + upgrade from anywhere on the last couple of stable branches, so be + careful. + + If you're running a hybrid system on 9.x or 10.x with an updated clang + compiler or are using an supported external toolchain, the build system + will allow the upgrade. Otherwise it will print a reminder. ****************************** SPECIAL WARNING: ******************************