Re: Source upgrade to stable/11 amd64 broken

From: Paul Mather <paul_at_gromit.dlib.vt.edu>
Date: Wed, 11 Aug 2021 18:00:09 UTC
On Aug 11, 2021, at 1:44 PM, Dimitry Andric <dim@FreeBSD.org> wrote:

> On 11 Aug 2021, at 05:13, Eugene Grosbein <eugen@grosbein.net> wrote:
>> 
>> I'm in process of upgrading very old remote FreeBSD server running 9.3-STABLE/amd64.
>> First, I used svn to fetch stable/10 sources and performed source upgrade to 10.4-STABLE r369650
>> and it went just fine.
>> 
>> Now it has stock "FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512".
>> I did checkout for stable/11 sources via svn but this time buildworld fails early:
>> 
>> --------------------------------------------------------------
>>>>> stage 1.2: bootstrap tools
>> --------------------------------------------------------------
>> cd /usr/local/src; MAKEOBJDIRPREFIX=/usr/obj/usr/local/src/tmp  INSTALL="sh /usr/local/src/tools/install.sh"  TOOLS_PREFIX=/usr/obj/usr/local/src/tmp  PATH=/usr/obj/usr/local/src/tmp/legacy/usr/sbin:/usr/obj/usr/local/src/tmp/legacy/usr/bin:/usr/obj/usr/local/src/tmp/legacy/bin:/sbin:/bin:/usr/sbin:/usr/bin  WORLDTMP=/usr/obj/usr/local/src/tmp  MAKEFLAGS="-m /usr/local/src/tools/build/mk  -m /usr/local/src/share/mk" make  -f Makefile.inc1  DESTDIR=  BOOTSTRAPPING=1004503  SSP_CFLAGS=  MK_HTML=no NO_LINT=yes MK_MAN=no  -DNO_PIC MK_PROFILE=no -DNO_SHARED  -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no  MK_CLANG_EXTRAS=no MK_CLANG_FORMAT=no MK_CLANG_FULL=no  MK_LLDB=no MK_TESTS=no  MK_INCLUDES=yes bootstrap-tools
>> ===> lib/clang/libllvmminimal (obj,all,install)
>> /usr/obj/usr/local/src/tmp/usr/local/src/lib/clang/libllvmminimal created for /usr/local/src/lib/clang/libllvmminimal
>> /usr/obj/usr/local/src/tmp/usr/local/src/lib/clang/libllvmminimal/Demangle created for /usr/local/src/lib/clang/libllvmminimal
>> /usr/obj/usr/local/src/tmp/usr/local/src/lib/clang/libllvmminimal/Support created for /usr/local/src/lib/clang/libllvmminimal
>> /usr/obj/usr/local/src/tmp/usr/local/src/lib/clang/libllvmminimal/TableGen created for /usr/local/src/lib/clang/libllvmminimal
>> c++  -O2 -pipe -I/usr/local/src/lib/clang/include -I/usr/local/src/contrib/llvm-project/llvm/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAVE_VCS_VERSION_INC -DNDEBUG -DLLVM_DEFAULT_TARGET_TRIPLE=\"x86_64-unknown-freebsd11.4\" -DLLVM_HOST_TRIPLE=\"x86_64-unknown-freebsd11.4\" -DDEFAULT_SYSROOT=\"/usr/obj/usr/local/src/tmp\" -DLLVM_TARGET_ENABLE_AARCH64 -DLLVM_TARGET_ENABLE_ARM -DLLVM_TARGET_ENABLE_MIPS -DLLVM_TARGET_ENABLE_POWERPC -DLLVM_TARGET_ENABLE_SPARC -DLLVM_TARGET_ENABLE_X86 -DLLVM_NATIVE_ASMPARSER=LLVMInitializeX86AsmParser -DLLVM_NATIVE_ASMPRINTER=LLVMInitializeX86AsmPrinter -DLLVM_NATIVE_DISASSEMBLER=LLVMInitializeX86Disassembler -DLLVM_NATIVE_TARGET=LLVMInitializeX86Target -DLLVM_NATIVE_TARGETINFO=LLVMInitializeX86TargetInfo -DLLVM_NATIVE_TARGETMC=LLVMInitializeX86TargetMC -ffunction-sections -fdata-sections -MD -MF.depend.Demangle_ItaniumDemangle.o -MTDemangle/ItaniumDemangle.o -Qunused-arguments -I/usr/obj/usr/local/src/tmp/legacy/usr/include  -std=c++14 -fno-exceptions -fno-rtti -stdlib=libc++ -Wno-c++11-extensions  -c /usr/local/src/contrib/llvm-project/llvm/lib/Demangle/ItaniumDemangle.cpp -o Demangle/ItaniumDemangle.o
>> error: invalid value 'c++14' in '-std=c++14'
>> *** Error code 1
>> 
>> Stop.
>> make[3]: stopped in /usr/local/src/lib/clang/libllvmminimal
>> *** Error code 1
>> 
>> How do I resolve this?
> 
> It's going to be a little tricky, as clang 3.4.1 is too old to support
> C++14 properly. I've tried using -std=c++1y since that was the old name
> for -std=c++14, but it asserts quite early in the build.
> 
> The best way forward is to attempt to buildworld (and buildkernel) with
> a clean stable/11 checkout at r360783, which is just before clang 10.0.0
> got imported. You will also need to add:
> 
> CXXFLAGS.clang=-Wno-out-of-line-declaration
> 
> to your src.conf, otherwise it will get an unexpected error during the
> build.
> 
> After this has completed, install world and kernel and reboot, and then
> you should have clang 9.0.0 and the corresponding libc++. This should
> allow you to do a regular update to the latest stable/11.
> 
> From there you should upgrade to stable/12, as 11 is going EOL in about
> a month... :)


As the OP is currently at 10-STABLE, would it also not work to upgrade from there to 11.0-RELEASE (releng/11.0) and then from there to do the recommended upgrade path to whatever is the desired endpoint?  It might require more work, but it would be a known supported upgrade path.  Just wondering...

Cheers,

Paul.