Build requirement changes missing from 12.0.0 release notes

Thank you for the hard work on LLVM 12!

I build LLVM/Clang from source in a minimal Docker image based on Debian Jessie.

First, it appears Python 3 is now required to build. This requirement is not reflected at https://releases.llvm.org/12.0.0/docs/ReleaseNotes.html. Fortunately, it builds with Jessie’s old Python 3.4 just fine, so this was easy enough to address.

Second, I got a compiler error during the build:

FAILED: tools/lld/MachO/CMakeFiles/lldMachO2.dir/UnwindInfoSection.cpp.o
/build/sccache /tools/host/bin/g++ -DGTEST_HAS_RTTI=0 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Itools/lld/MachO -I/build/llvm/tools/lld/MachO -I/build/llvm/tools/lld/include -Itools/lld/include -Iinclude -I/build/llvm/include -I/build/llvm/…/libunwind/include -Wno-cast-function-type -fPIC -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-redundant-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -fno-exceptions -fno-rtti -std=c++14 -MD -MT tools/lld/MachO/CMakeFiles/lldMachO2.dir/UnwindInfoSection.cpp.o -MF tools/lld/MachO/CMakeFiles/lldMachO2.dir/UnwindInfoSection.cpp.o.d -o tools/lld/MachO/CMakeFiles/lldMachO2.dir/UnwindInfoSection.cpp.o -c /build/llvm/tools/lld/MachO/UnwindInfoSection.cpp
In file included from /build/llvm/tools/lld/MachO/UnwindInfoSection.cpp:9:
/build/llvm/tools/lld/MachO/UnwindInfoSection.h:15:10: fatal error: mach-o/compact_unwind_encoding.h: No such file or directory
15 | #include “mach-o/compact_unwind_encoding.h”

^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

compilation terminated.

It looks like libunwind got split out into its own source archive. Extracting it to the appropriate directory made the build happy. But I was surprised there wasn’t a CMake check either disabling the optional functionality or failing the build on missing libunwind.

I also see a handful of other source archives that might be new in 12.0. Was there any other functionality split out into new archives that would result in feature loss from prior versions if we fail to materialize the sources in the proper locations?

Great work on the release! These seem like minor hiccups.

Thank you for the hard work on LLVM 12!

I build LLVM/Clang from source in a minimal Docker image based on Debian Jessie.

First, it appears Python 3 is now required to build. This requirement is not reflected at LLVM 12.0.0 Release Notes — LLVM 12 documentation. Fortunately, it builds with Jessie's old Python 3.4 just fine, so this was easy enough to address.

Second, I got a compiler error during the build:

> FAILED: tools/lld/MachO/CMakeFiles/lldMachO2.dir/UnwindInfoSection.cpp.o
> /build/sccache /tools/host/bin/g++ -DGTEST_HAS_RTTI=0 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Itools/lld/MachO -I/build/llvm/tools/lld/MachO -I/build/llvm/tools/lld/include -Itools/lld/include -Iinclude -I/build/llvm/include -I/build/llvm/../libunwind/include -Wno-cast-function-type -fPIC -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-redundant-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -fno-exceptions -fno-rtti -std=c++14 -MD -MT tools/lld/MachO/CMakeFiles/lldMachO2.dir/UnwindInfoSection.cpp.o -MF tools/lld/MachO/CMakeFiles/lldMachO2.dir/UnwindInfoSection.cpp.o.d -o tools/lld/MachO/CMakeFiles/lldMachO2.dir/UnwindInfoSection.cpp.o -c /build/llvm/tools/lld/MachO/UnwindInfoSection.cpp
> In file included from /build/llvm/tools/lld/MachO/UnwindInfoSection.cpp:9:
> /build/llvm/tools/lld/MachO/UnwindInfoSection.h:15:10: fatal error: mach-o/compact_unwind_encoding.h: No such file or directory
> 15 | #include "mach-o/compact_unwind_encoding.h"
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> compilation terminated.

It looks like libunwind got split out into its own source archive. Extracting it to the appropriate directory made the build happy. But I was surprised there wasn't a CMake check either disabling the optional functionality or failing the build on missing libunwind.

I also see a handful of other source archives that might be new in 12.0. Was there any other functionality split out into new archives that would result in feature loss from prior versions if we fail to materialize the sources in the proper locations?

Great work on the release! These seem like minor hiccups.

Can you file bugs for these at bugs.llvm.org and put release-12.0.1 in the blocks field?

-Tom