Re: Okay, how much ram does it take to build Rust?
"Dan Mahoney (Ports)" <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.ports |
|---|---|
| Message-ID | <[email protected]> |
Entirely different problem: Build now fails within a minute of starting: https://poudriere-src.isc.org/data/freebsd:16:x86:64-default/2025-09-11_23h25m42s/logs/errors/rust-1.89.0.log My entire poudriere-conf is: ZPOOL=zroot FREEBSD_HOST=https://download.FreeBSD.org RESOLV_CONF=/etc/resolv.conf BASEFS=/usr/local/poudriere USE_PORTLINT=no USE_TMPFS=yes DISTFILES_CACHE=/usr/ports/distfiles PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/keys/poudriere.key KEEP_OLD_PACKAGES=yes KEEP_OLD_PACKAGES_COUNT=5 Ideas welcome > On Sep 11, 2025, at 9:11 AM, Daniel Engberg <[email protected]> wrote: > > On 2025-09-11 09:42, Dan Mahoney (Ports) wrote: >> Hey there folks, >> >> I've got poudriere running on a recently-16-ified VM with 8 cores and 48G ram (up from 32), and to eat the dogfood I'm attempting to build all my own packages. >> >> lang/rust is a big one. It pontificates for about two hours, then dies with: >> >> [ 45% 1690/3710] Building RISCVGenExegesis.inc... >> [ 45% 1691/3710] Building RISCVGenGlobalISel.inc... >> FAILED: [code=262] lib/Target/RISCV/RISCVGenGlobalISel.inc /wrkdirs/usr/ports/lang/rust/work/_build/x86_64-unknown-freebsd/llvm/build/lib/Target/RISCV/RISCVGenGlobalISel.inc >> cd /wrkdirs/usr/ports/lang/rust/work/_build/x86_64-unknown-freebsd/llvm/build && /wrkdirs/usr/ports/lang/rust/work/_build/x86_64-unknown-freebsd/llvm/build/bin/llvm-tblgen -gen-global-isel -I /wrkdirs/usr/ports/lang/rust/work/rustc-1.89.0-src/src/llvm-project/llvm/lib/Target/RISCV -I/wrkdirs/usr/ports/lang/rust/work/_build/x86_64-unknown-freebsd/llvm/build/include -I/wrkdirs/usr/ports/lang/rust/work/rustc-1.89.0-src/src/llvm-project/llvm/include -I /wrkdirs/usr/ports/lang/rust/work/rustc-1.89.0-src/src/llvm-project/llvm/lib/Target -no-warn-on-unused-template-args /wrkdirs/usr/ports/lang/rust/work/rustc-1.89.0-src/src/llvm-project/llvm/lib/Target/RISCV/RISCVGISel.td --write-if-changed -o lib/Target/RISCV/RISCVGenGlobalISel.inc -d lib/Target/RISCV/RISCVGenGlobalISel.inc.d >> LLVM ERROR: out of memory >> Allocation failed >> PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace. >> Stack dump: >> 0. Program arguments: /wrkdirs/usr/ports/lang/rust/work/_build/x86_64-unknown-freebsd/llvm/build/bin/llvm-tblgen -gen-global-isel -I /wrkdirs/usr/ports/lang/rust/work/rustc-1.89.0-src/src/llvm-project/llvm/lib/Target/RISCV -I/wrkdirs/usr/ports/lang/rust/work/_build/x86_64-unknown-freebsd/llvm/build/include -I/wrkdirs/usr/ports/lang/rust/work/rustc-1.89.0-src/src/llvm-project/llvm/include -I /wrkdirs/usr/ports/lang/rust/work/rustc-1.89.0-src/src/llvm-project/llvm/lib/Target -no-warn-on-unused-template-args /wrkdirs/usr/ports/lang/rust/work/rustc-1.89.0-src/src/llvm-project/llvm/lib/Target/RISCV/RISCVGISel.td --write-if-changed -o lib/Target/RISCV/RISCVGenGlobalISel.inc -d lib/Target/RISCV/RISCVGenGlobalISel.inc.d >> ninja: build stopped: subcommand failed. >> >> thread 'main' panicked at /wrkdirs/usr/ports/lang/rust/work/rustc-1.89.0-src/vendor/cmake-0.1.54/src/lib.rs:1119:5: >> >> command did not execute successfully, got: exit status: 6 >> >> build script failed, must exit now >> stack backtrace: >> 0: __rustc::rust_begin_unwind >> 1: core::panicking::panic_fmt >> 2: cmake::fail >> >> Full logs here: >> >> https://poudriere-src.isc.org/data/freebsd:16:x86:64-pkgbase-default_git/2025-09-11_04h17m42s/logs/rust-1.89.0.log >> >> Is this actually likely an LLVM bug, or is 48G of ram not enough (it barely climbed at all for most of the files). Note that I'm not doing anything multi-threaded with Poudriere, this is single CPU bound. >> >> -Dan >> > Hi, > During linking it can use up quite a bit of memory, especially if you have multiple jobs running. You will struggle with 12Gb of RAM, 8Gb swap and ZFS (ARC) using ports and 3 jobs (-j3) using slow CPU (older i3 etc). My Ryzen (7000 series) box needs about 40Gb of RAM (including tmpfs) alone to build Rust using Poudriere without ARC accounted for and that's running -j8. It can be a bit hard to estimate as time for linking processes to finish can wary greatly depending on hardware and if those accumulate you'll need even more memory because of the slow processing and multiple running in parallel. Best regards, Daniel