[Bug 281600] lang/rust failing to build on risc-v (again)

From: <bugzilla-noreply_at_freebsd.org>
Date: Mon, 20 Oct 2025 13:54:58 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=281600

--- Comment #77 from Dennis Clarke <dclarke@blastwave.org> ---

In October of 2025 and this bug is now a decade old in "bug years".

        * * * COMPAT_FREEBSD11 is still needed * * *

Those must be something like "dog years" that are generally accepted
as a multiple of seven. A reasonable bug in the fast moving world of
computer technology must be even faster moving. I feel a nice multiplier
would be ten. An astonomical "magnitude" as one may say.

Well here we are looking at lang/rust fail to compile from source on
FreeBSD CURRENT on RISC-V as of today :

enceladus# uname -apKU
FreeBSD enceladus 16.0-CURRENT FreeBSD 16.0-CURRENT main-n281153-d1bd541b385d
GENERIC riscv riscv64 1600001 1600001
enceladus# 
enceladus# cat
/poudriere/data/logs/bulk/160rv64-latest/2025-10-19_19h55m10s/logs/rust-1.90.0_1.log

MM_CHARSET=UTF-8
LANG=C.UTF-8
WARNING_WAIT=0
STATUS=1
HOME=/root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
MAKE_OBJDIR_CHECK_WRITABLE=0
LOCALBASE=/usr/local
USER=root
POUDRIERE_NAME=poudriere-git
LIBEXECPREFIX=/usr/local/libexec/poudriere
POUDRIERE_VERSION=3.4.3
MASTERMNT=/poudriere/data/.m/160rv64-latest/ref
DEV_WARNING_WAIT=0
LC_COLLATE=C
POUDRIERE_BUILD_TYPE=bulk
PACKAGE_BUILDING=yes
SAVED_TERM=tmux-256color
OUTPUT_REDIRECTED_STDERR=4
OUTPUT_REDIRECTED=1
PWD=/poudriere/data/.m/160rv64-latest/04/.p
OUTPUT_REDIRECTED_STDOUT=3
NO_WARNING_PKG_INSTALL_EOL=yes
P_PORTS_FEATURES=FLAVORS SUBPACKAGES SELECTED_OPTIONS
MASTERNAME=160rv64-latest
SCRIPTPREFIX=/usr/local/share/poudriere
SCRIPTNAME=bulk.sh
OLDPWD=/poudriere/data/.m/160rv64-latest/ref/.p/pool
POUDRIERE_PKGNAME=poudriere-git-3.4.3
SCRIPTPATH=/usr/local/share/poudriere/bulk.sh
POUDRIEREPATH=/usr/local/bin/poudriere
---End Environment---

---Begin Poudriere Port Flags/Env---
PORT_FLAGS=
PKGENV=
FLAVOR=
MAKE_ARGS=
---End Poudriere Port Flags/Env---

---Begin OPTIONS List---
===> The following configuration options are available for rust-1.90.0_1:
     DOCS=on: Build and/or install documentation
     GDB=off: Install ports gdb (necessary for debugging rust programs)
     LTO=off: Use Link-Time Optimization
     PORT_LLVM=off: Build against devel/llvm instead of bundled copy
(experimental)
     SOURCES=on: Install source files
     WASM=on: Build the WebAssembly target (wasm32-unknown-unknown)
===> Use 'make config' to modify these settings
---End OPTIONS List---

--MAINTAINER--
rust@FreeBSD.org
--End MAINTAINER--

--CONFIGURE_ARGS--

--End CONFIGURE_ARGS--

--CONFIGURE_ENV--
PKG_CONFIG=pkgconf PYTHON="/usr/local/bin/python3.11"
XDG_DATA_HOME=/wrkdirs/usr/ports/lang/rust/work 
XDG_CONFIG_HOME=/wrkdirs/usr/ports/lang/rust/work 
XDG_CACHE_HOME=/wrkdirs/usr/ports/lang/rust/work/.cache 
HOME=/wrkdirs/usr/ports/lang/rust/work
TMPDIR="/wrkdirs/usr/ports/lang/rust/work"
PATH=/wrkdirs/usr/ports/lang/rust/work/.bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
PKG_CONFIG_LIBDIR=/wrkdirs/usr/ports/lang/rust/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig
SHELL=/bin/sh CONFIG_SHELL=/bin/sh
--End CONFIGURE_ENV--

--MAKE_ENV--
DESTDIR=/wrkdirs/usr/ports/lang/rust/work/stage  LIBGIT2_NO_PKG_CONFIG=1 
OPENSSL_DIR="/usr" NINJA_STATUS="[%p %s/%t] " OPENSSLBASE=/usr
OPENSSLDIR=/etc/ssl OPENSSLINC=/usr/include OPENSSLLIB=/usr/lib
RUST_BACKTRACE=1 XDG_DATA_HOME=/wrkdirs/usr/ports/lang/rust/work 
XDG_CONFIG_HOME=/wrkdirs/usr/ports/lang/rust/work 
XDG_CACHE_HOME=/wrkdirs/usr/ports/lang/rust/work/.cache 
HOME=/wrkdirs/usr/ports/lang/rust/work
TMPDIR="/wrkdirs/usr/ports/lang/rust/work"
PATH=/wrkdirs/usr/ports/lang/rust/work/.bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
PKG_CONFIG_LIBDIR=/wrkdirs/usr/ports/lang/rust/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig
MK_DEBUG_FILES=no MK_KERNEL_SYMBOLS=no SHELL=/bin/sh NO_LINT=YES
PREFIX=/usr/local  LOCALBASE=/usr/local  CC="cc" CFLAGS="-O2 -pipe
-march=rv64imafdc -mabi=lp64d  -fstack-protector-strong -fno-strict-aliasing " 
CPP="cpp" CPPFLAGS=""  LDFLAGS="  " LIBS=""  CXX="c++" CXXFLAGS="-O2 -pipe
-march=rv64imafdc -mabi=lp64d -fstack-protector-strong -fno-strict-aliasing   "
BSD_INSTALL_PROGRAM="install  -s -m 555"  BSD_INSTALL_LIB="install  -s -m 0644"
 BSD_INSTALL_SCRIPT="install  -m 555"  BSD_INSTALL_DATA="install  -m 0644" 
BSD_INSTALL_MAN="install  -m 444"
--End MAKE_ENV--

--PLIST_SUB--
PORTDOCS="" PYTHON_INCLUDEDIR=include/python3.11  PYTHON_LIBDIR=lib/python3.11 
PYTHON_PLATFORM=freebsd16  PYTHON_SITELIBDIR=lib/python3.11/site-packages 
PYTHON_SUFFIX=311  PYTHON_BASESUFFIX=311  PYTHON_TAG=.cpython-311 
PYTHON_SOABI=.cpython-311  PYTHON_VER=3.11  PYTHON_BASEVER=3.11 
PYTHON_VERSION=python3.11 PYTHON2="@comment " PYTHON3="" OSREL=16.0 PREFIX=%D
LOCALBASE=/usr/local  RESETPREFIX=/usr/local LIB32DIR=lib
DOCSDIR="share/doc/rust"  EXAMPLESDIR="share/examples/rust" 
DATADIR="share/rust"  WWWDIR="www/rust"  ETCDIR="etc/rust"
--End PLIST_SUB--

--SUB_LIST--
 PYTHON_INCLUDEDIR=/usr/local/include/python3.11 
PYTHON_LIBDIR=/usr/local/lib/python3.11  PYTHON_PLATFORM=freebsd16 
PYTHON_SITELIBDIR=/usr/local/lib/python3.11/site-packages  PYTHON_SUFFIX=311 
PYTHON_BASESUFFIX=311  PYTHON_TAG=.cpython-311  PYTHON_SOABI=.cpython-311 
PYTHON_VER=3.11  PYTHON_BASEVER=3.11  PYTHON_VERSION=python3.11
PYTHON2="@comment " PYTHON3="" PREFIX=/usr/local LOCALBASE=/usr/local 
DATADIR=/usr/local/share/rust DOCSDIR=/usr/local/share/doc/rust
EXAMPLESDIR=/usr/local/share/examples/rust  WWWDIR=/usr/local/www/rust
ETCDIR=/usr/local/etc/rust
--End SUB_LIST--

---Begin make.conf---
USE_PACKAGE_DEPENDS=yes
BATCH=yes
WRKDIRPREFIX=/wrkdirs
PORTSDIR=/usr/ports
PACKAGES=/packages
DISTDIR=/distfiles
FORCE_PACKAGE=yes
PACKAGE_BUILDING=yes
PACKAGE_BUILDING_FLAVORS=yes
WITH_CCACHE_BUILD=yes
CCACHE_DIR=/root/.ccache
#### Misc Poudriere ####
.include "/etc/make.conf.ports_env"
GID=0
UID=0
---End make.conf---
--Resource limits--
cpu time               (seconds, -t)  unlimited
file size           (512-blocks, -f)  unlimited
data seg size           (kbytes, -d)  1048576
stack size              (kbytes, -s)  1048576
core file size      (512-blocks, -c)  unlimited
max memory size         (kbytes, -m)  unlimited
locked memory           (kbytes, -l)  unlimited
max user processes              (-u)  19558
open files                      (-n)  8192
virtual mem size        (kbytes, -v)  unlimited
swap limit              (kbytes, -w)  unlimited
socket buffer size       (bytes, -b)  unlimited
pseudo-terminals                (-p)  unlimited
kqueues                         (-k)  unlimited
umtx shared locks               (-o)  unlimited
pipebuf                         (-y)  unlimited
--End resource limits--
=======================<phase: check-sanity   >============================
===== env: DEVELOPER_MODE=yes DEVELOPER=1 STRICT_DEPENDS=yes USER=root UID=0
GID=0
===>  License APACHE20 MIT accepted by the user
===========================================================================
=======================<phase: pkg-depends    >============================
===== env: DEVELOPER_MODE=yes USE_PACKAGE_DEPENDS_ONLY=1 USER=root UID=0 GID=0
===>   rust-1.90.0_1 depends on file: /usr/local/sbin/pkg - not found
===>   Installing existing package /packages/All/pkg-2.3.1.pkg
[160rv64-latest-job-04] Installing pkg-2.3.1...
[160rv64-latest-job-04] Extracting pkg-2.3.1: .......... done
===>   rust-1.90.0_1 depends on file: /usr/local/sbin/pkg - found
===>   Returning to build of rust-1.90.0_1
===========================================================================
=======================<phase: fetch-depends  >============================
===== env: DEVELOPER_MODE=yes USE_PACKAGE_DEPENDS_ONLY=1 USER=root UID=0 GID=0
===========================================================================
=======================<phase: fetch          >============================
===== env: DEVELOPER_MODE=yes STRICT_DEPENDS=yes USER=root UID=0 GID=0
===>  License APACHE20 MIT accepted by the user
===>   rust-1.90.0_1 depends on file: /usr/local/sbin/pkg - found
=> rustc-1.90.0-src.tar.xz doesn't seem to exist in /portdistfiles/rust.
=> Attempting to fetch
https://static.rust-lang.org/dist/rustc-1.90.0-src.tar.xz
rustc-1.90.0-src.tar.xz                                259 MB 3248 kBps 01m22s
=> 2025-08-07/rustc-1.89.0-riscv64gc-unknown-freebsd.tar.xz doesn't seem to
exist in /portdistfiles/rust.
=> Attempting to fetch
http://distcache.FreeBSD.org/local-distfiles/rust/2025-08-07/rustc-1.89.0-riscv64gc-unknown-freebsd.tar.xz
2025-08-07/rustc-1.89.0-riscv64gc-unknown-freebsd.tar.xz          73 MB 5193
kBps    15s
=> 2025-08-07/rust-std-1.89.0-riscv64gc-unknown-freebsd.tar.xz doesn't seem to
exist in /portdistfiles/rust.
=> Attempting to fetch
http://distcache.FreeBSD.org/local-distfiles/rust/2025-08-07/rust-std-1.89.0-riscv64gc-unknown-freebsd.tar.xz
2025-08-07/rust-std-1.89.0-riscv64gc-unknown-freebsd.tar.xz          23 MB 6222
kBps    04s
=> 2025-08-07/cargo-1.89.0-riscv64gc-unknown-freebsd.tar.xz doesn't seem to
exist in /portdistfiles/rust.
=> Attempting to fetch
http://distcache.FreeBSD.org/local-distfiles/rust/2025-08-07/cargo-1.89.0-riscv64gc-unknown-freebsd.tar.xz
2025-08-07/cargo-1.89.0-riscv64gc-unknown-freebsd.tar.xz          11 MB 7654
kBps    02s
===> Fetching all distfiles required by rust-1.90.0_1 for building
===========================================================================
=======================<phase: checksum       >============================
===== env: DEVELOPER_MODE=yes STRICT_DEPENDS=yes USER=root UID=0 GID=0
===>  License APACHE20 MIT accepted by the user
===>   rust-1.90.0_1 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by rust-1.90.0_1 for building
=> SHA256 Checksum OK for rust/rustc-1.90.0-src.tar.xz.
=> SHA256 Checksum OK for
rust/2025-08-07/rustc-1.89.0-riscv64gc-unknown-freebsd.tar.xz.
=> SHA256 Checksum OK for
rust/2025-08-07/rust-std-1.89.0-riscv64gc-unknown-freebsd.tar.xz.
=> SHA256 Checksum OK for
rust/2025-08-07/cargo-1.89.0-riscv64gc-unknown-freebsd.tar.xz.
===========================================================================
=======================<phase: extract-depends>============================
===== env: DEVELOPER_MODE=yes USE_PACKAGE_DEPENDS_ONLY=1 USER=root UID=0 GID=0
===========================================================================
=======================<phase: extract        >============================
===== env: DEVELOPER_MODE=yes STRICT_DEPENDS=yes USER=root UID=0 GID=0
===>  License APACHE20 MIT accepted by the user
===>   rust-1.90.0_1 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by rust-1.90.0_1 for building
===>  Extracting for rust-1.90.0_1
=> SHA256 Checksum OK for rust/rustc-1.90.0-src.tar.xz.
=> SHA256 Checksum OK for
rust/2025-08-07/rustc-1.89.0-riscv64gc-unknown-freebsd.tar.xz.
=> SHA256 Checksum OK for
rust/2025-08-07/rust-std-1.89.0-riscv64gc-unknown-freebsd.tar.xz.
=> SHA256 Checksum OK for
rust/2025-08-07/cargo-1.89.0-riscv64gc-unknown-freebsd.tar.xz.
===========================================================================
=======================<phase: patch-depends  >============================
===== env: DEVELOPER_MODE=yes USE_PACKAGE_DEPENDS_ONLY=1 USER=root UID=0 GID=0
===========================================================================
=======================<phase: patch          >============================
===== env: DEVELOPER_MODE=yes DEVELOPER=1 STRICT_DEPENDS=yes USER=root UID=0
GID=0
===>  Patching for rust-1.90.0_1
===>  Applying extra patch patches for rust-1.90.0_1 from
/usr/ports/lang/rust/files/riscv64
===>  Applying FreeBSD patches for rust-1.90.0_1 from
/usr/ports/lang/rust/files
===========================================================================
=======================<phase: build-depends  >============================
===== env: DEVELOPER_MODE=yes USE_PACKAGE_DEPENDS_ONLY=1 USER=root UID=0 GID=0
===>   rust-1.90.0_1 depends on file: /usr/local/bin/cmake - not found
===>   Installing existing package /packages/All/cmake-core-3.31.9.pkg
[160rv64-latest-job-04] Installing cmake-core-3.31.9...
[160rv64-latest-job-04] `-- Installing expat-2.7.3...
[160rv64-latest-job-04] `-- Extracting expat-2.7.3: .......... done
[160rv64-latest-job-04] `-- Installing jsoncpp-1.9.6_1...
[160rv64-latest-job-04] `-- Extracting jsoncpp-1.9.6_1: .......... done
[160rv64-latest-job-04] `-- Installing libidn2-2.3.8...
[160rv64-latest-job-04] |   `-- Installing indexinfo-0.3.1_1...
[160rv64-latest-job-04] |   `-- Extracting indexinfo-0.3.1_1: .... done
[160rv64-latest-job-04] |   `-- Installing libunistring-1.4.1...
[160rv64-latest-job-04] |   `-- Extracting libunistring-1.4.1: .......... done
[160rv64-latest-job-04] `-- Extracting libidn2-2.3.8: .......... done
[160rv64-latest-job-04] `-- Installing libuv-1.51.0...
[160rv64-latest-job-04] `-- Extracting libuv-1.51.0: .......... done
[160rv64-latest-job-04] `-- Installing rhash-1.4.4_1...
[160rv64-latest-job-04] |   `-- Installing gettext-runtime-0.23.1...
[160rv64-latest-job-04] |   `-- Extracting gettext-runtime-0.23.1: ..........
done
[160rv64-latest-job-04] `-- Extracting rhash-1.4.4_1: .......... done
[160rv64-latest-job-04] Extracting cmake-core-3.31.9: .......... done
===>   rust-1.90.0_1 depends on file: /usr/local/bin/cmake - found
===>   Returning to build of rust-1.90.0_1
===>   rust-1.90.0_1 depends on executable: ninja - not found
===>   Installing existing package /packages/All/ninja-1.13.1,4.pkg
[160rv64-latest-job-04] Installing ninja-1.13.1,4...
[160rv64-latest-job-04] `-- Installing python311-3.11.14...
[160rv64-latest-job-04] |   `-- Installing libffi-3.5.1...
[160rv64-latest-job-04] |   `-- Extracting libffi-3.5.1: .......... done
[160rv64-latest-job-04] |   `-- Installing mpdecimal-4.0.1...
[160rv64-latest-job-04] |   `-- Extracting mpdecimal-4.0.1: .......... done
[160rv64-latest-job-04] |   `-- Installing readline-8.2.13_2...
[160rv64-latest-job-04] |   `-- Extracting readline-8.2.13_2: .......... done
[160rv64-latest-job-04] `-- Extracting python311-3.11.14: .......... done
[160rv64-latest-job-04] Extracting ninja-1.13.1,4: ........ done
=====
Message from python311-3.11.14:

--
Note that some standard Python modules are provided as separate ports
as they require additional dependencies. They are available as:

py311-gdbm       databases/py-gdbm@py311
py311-sqlite3    databases/py-sqlite3@py311
py311-tkinter    x11-toolkits/py-tkinter@py311
===>   rust-1.90.0_1 depends on executable: ninja - found
===>   Returning to build of rust-1.90.0_1
===>   rust-1.90.0_1 depends on package: pkgconf>=1.3.0_1 - not found
===>   Installing existing package /packages/All/pkgconf-2.4.3,1.pkg
[160rv64-latest-job-04] Installing pkgconf-2.4.3,1...
[160rv64-latest-job-04] Extracting pkgconf-2.4.3,1: .......... done
===>   rust-1.90.0_1 depends on package: pkgconf>=1.3.0_1 - found
===>   Returning to build of rust-1.90.0_1
===>   rust-1.90.0_1 depends on file: /usr/local/bin/python3.11 - found
===>   rust-1.90.0_1 depends on file: /usr/local/bin/ccache - not found
===>   Installing existing package /packages/All/ccache-3.7.12_8.pkg
[160rv64-latest-job-04] Installing ccache-3.7.12_8...
[160rv64-latest-job-04] Extracting ccache-3.7.12_8: .......... done
Create compiler links...
create symlink for cc
create symlink for cc (world)
create symlink for c++
create symlink for c++ (world)
create symlink for CC
create symlink for CC (world)
create symlink for clang
create symlink for clang (world)
create symlink for clang++
create symlink for clang++ (world)
=====
Message from ccache-3.7.12_8:

--
NOTE:
Please read /usr/local/share/doc/ccache/ccache-howto-freebsd.txt for
information on using ccache with FreeBSD ports and src.
===>   rust-1.90.0_1 depends on file: /usr/local/bin/ccache - found
===>   Returning to build of rust-1.90.0_1
===========================================================================
=======================<phase: lib-depends    >============================
===== env: DEVELOPER_MODE=yes USE_PACKAGE_DEPENDS_ONLY=1 USER=root UID=0 GID=0
===>   rust-1.90.0_1 depends on shared library: libcurl.so - not found
===>   Installing existing package /packages/All/curl-8.16.0.pkg
[160rv64-latest-job-04] Installing curl-8.16.0...
[160rv64-latest-job-04] `-- Installing brotli-1.1.0,1...
[160rv64-latest-job-04] `-- Extracting brotli-1.1.0,1: .......... done
[160rv64-latest-job-04] `-- Installing libnghttp2-1.67.1...
[160rv64-latest-job-04] `-- Extracting libnghttp2-1.67.1: .......... done
[160rv64-latest-job-04] `-- Installing libpsl-0.21.5_2...
[160rv64-latest-job-04] `-- Extracting libpsl-0.21.5_2: .......... done
[160rv64-latest-job-04] `-- Installing libssh2-1.11.1,3...
[160rv64-latest-job-04] `-- Extracting libssh2-1.11.1,3: .......... done
[160rv64-latest-job-04] `-- Installing zstd-1.5.7...
[160rv64-latest-job-04] |   `-- Installing liblz4-1.10.0,1...
[160rv64-latest-job-04] |   `-- Extracting liblz4-1.10.0,1: .......... done
[160rv64-latest-job-04] `-- Extracting zstd-1.5.7: .......... done
[160rv64-latest-job-04] Extracting curl-8.16.0: .......... done
===>   rust-1.90.0_1 depends on shared library: libcurl.so - found
(/usr/local/lib/libcurl.so)
===>   Returning to build of rust-1.90.0_1
===========================================================================
=>> Recording filesystem state for prebuild... done
=======================<phase: configure      >============================
===== env: DEVELOPER_MODE=yes STRICT_DEPENDS=yes USER=root UID=0 GID=0
===>   rust-1.90.0_1 depends on file: /usr/local/bin/cmake - found
===>   rust-1.90.0_1 depends on executable: ninja - found
===>   rust-1.90.0_1 depends on package: pkgconf>=1.3.0_1 - found
===>   rust-1.90.0_1 depends on file: /usr/local/bin/python3.11 - found
===>   rust-1.90.0_1 depends on file: /usr/local/bin/ccache - found
===>   rust-1.90.0_1 depends on shared library: libcurl.so - found
(/usr/local/lib/libcurl.so)
===>  Configuring for rust-1.90.0_1
===>   FreeBSD 10 autotools fix applied to
/wrkdirs/usr/ports/lang/rust/work/rustc-1.90.0-src/vendor/libssh2-sys-0.3.1/libssh2/config.rpath
Bad system call
=> Sanity check failed: kernel is missing COMPAT_FREEBSD11
=> Aborting build
*** Error code 1

Stop.
make: stopped making "configure" in /usr/ports/lang/rust
=>> Cleaning up wrkdir
===>  Cleaning for rust-1.90.0_1
build of lang/rust | rust-1.90.0_1 ended at Sun Oct 19 23:22:55 UTC 2025
build time: 00:33:34
!!! build failure encountered !!!
enceladus# 

Well that "Sanity check" seems clear.

-- 
--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken

-- 
You are receiving this mail because:
You are on the CC list for the bug.