Solved Cannot build LLVM with Poudriere – not enough memory?

Greetings,

I’m running FreeBSD 14.1 (amd64) with ZFS and trying to build LLVM 15 + 17 using Poudriere. The machine has 4 cores, 8 GiB memory and 2 GiB swap. The build jobs are always killed around 97%. TMPFS and parallel jobs are disabled in my poudriere.conf:

Code:
USE_TMPFS=no
#MAX_MEMORY=8
#MAX_FILES=8192
PARALLEL_JOBS=1
#MAX_EXECUTION_TIME=86400

LLVM 15 log:

Code:
[ 96% 8820/9127] /usr/bin/c++ -DFLANG_LITTLE_ENDIAN=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/tmp/ports/usr/ports/devel/llvm15/work-default/.build/tools/flang/lib/Lower -I/tmp/ports/usr/ports/devel/llvm15/work-default/llvm-project-15.0.7.src/flang/lib/Lower -I/tmp/ports/usr/ports/devel/llvm15/work-default/llvm-project-15.0.7.src/flang/include -I/tmp/ports/usr/ports/devel/llvm15/work-default/.build/tools/flang/include -I/tmp/ports/usr/ports/devel/llvm15/work-default/.build/include -I/tmp/ports/usr/ports/devel/llvm15/work-default/llvm-project-15.0.7.src/llvm/include -isystem /tmp/ports/usr/ports/devel/llvm15/work-default/llvm-project-15.0.7.src/llvm/../mlir/include -isystem /tmp/ports/usr/ports/devel/llvm15/work-default/.build/tools/mlir/include -isystem /tmp/ports/usr/ports/devel/llvm15/work-default/.build/tools/clang/include -isystem /tmp/ports/usr/ports/devel/llvm15/work-default/llvm-project-15.0.7.src/llvm/../clang/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-string-conversion -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include  -DNDEBUG -std=c++17  -fno-exceptions -MD -MT tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/Coarray.cpp.o -MF tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/Coarray.cpp.o.d -o tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/Coarray.cpp.o -c /tmp/ports/usr/ports/devel/llvm15/work-default/llvm-project-15.0.7.src/flang/lib/Lower/Coarray.cpp
Killed
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/llvm15
=>> Cleaning up wrkdir
===>  Cleaning for llvm15-15.0.7_10
build of devel/llvm15@default | llvm15-15.0.7_10 ended at Wed Dec 25 21:33:20 CET 2024
build time: 15:42:22
!!! build failure encountered !!!

LLVM 17 log:

Code:
[ 97% 9813/10113] /usr/bin/c++ -DFLANG_INCLUDE_TESTS=1 -DFLANG_LITTLE_ENDIAN=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/tmp/ports/usr/ports/devel/llvm17/work-default/.build/tools/flang/lib/Lower -I/tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/flang/lib/Lower -I/tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/flang/include -I/tmp/ports/usr/ports/devel/llvm17/work-default/.build/tools/flang/include -I/tmp/ports/usr/ports/devel/llvm17/work-default/.build/include -I/tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/llvm/include -isystem /tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/llvm/../mlir/include -isystem /tmp/ports/usr/ports/devel/llvm17/work-default/.build/tools/mlir/include -isystem /tmp/ports/usr/ports/devel/llvm17/work-default/.build/tools/clang/include -isystem /tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/llvm/../clang/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include  -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -MD -MT tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/ConvertExpr.cpp.o -MF tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/ConvertExpr.cpp.o.d -o tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/ConvertExpr.cpp.o -c /tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/flang/lib/Lower/ConvertExpr.cpp
FAILED: tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/ConvertExpr.cpp.o
/usr/bin/c++ -DFLANG_INCLUDE_TESTS=1 -DFLANG_LITTLE_ENDIAN=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/tmp/ports/usr/ports/devel/llvm17/work-default/.build/tools/flang/lib/Lower -I/tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/flang/lib/Lower -I/tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/flang/include -I/tmp/ports/usr/ports/devel/llvm17/work-default/.build/tools/flang/include -I/tmp/ports/usr/ports/devel/llvm17/work-default/.build/include -I/tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/llvm/include -isystem /tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/llvm/../mlir/include -isystem /tmp/ports/usr/ports/devel/llvm17/work-default/.build/tools/mlir/include -isystem /tmp/ports/usr/ports/devel/llvm17/work-default/.build/tools/clang/include -isystem /tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/llvm/../clang/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include  -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -MD -MT tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/ConvertExpr.cpp.o -MF tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/ConvertExpr.cpp.o.d -o tools/flang/lib/Lower/CMakeFiles/obj.FortranLower.dir/ConvertExpr.cpp.o -c /tmp/ports/usr/ports/devel/llvm17/work-default/llvm-project-17.0.6.src/flang/lib/Lower/ConvertExpr.cpp
ninja: build stopped: subcommand failed.
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/llvm17
=>> Cleaning up wrkdir
===>  Cleaning for llvm17-17.0.6_8
build of devel/llvm17@default | llvm17-17.0.6_8 ended at Wed Dec 25 05:50:58 CET 2024
build time: 18:48:04
!!! build failure encountered !!!

Are 8 GiB of memory not enough to build LLVM?
 
Check `dmesg`.

Whether 8 GB are enough depends on the number of parallel jobs. You say you have 4 cores, but do you have hyperthreading, too? Then you would run 8 parallel jobs.
 
Yeah. You might be able to get through the build just with more swapspace. But it might be slower that way compared to reducing the number of parallel build items, e.g. by not counting the hyperthreaded cores.
 
Back
Top