1. 概要
発生は、2026年6月2日。
「FreeBSD 15.0-RELEASE-p2」上の出来事です。
2. 状況
portversion -v | grep '<'
[Reading data from pkg(8) ... - 855 packages found - done]
rspamd-4.0.0 < needs updating (port has 4.0.0_1)
という状況にありまして。
env BATCH=yes portupgrade -rR rspamd
すると。
・・・ 略 ・・・
[ 33% 156/465] /usr/bin/c++ -DDOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS -DDOCTEST_CONFIG_USE_STD_HEADERS -DFMT_HEADER_ONLY -DFREEBSD -DHAVE_CONFIG_H -DU_CHARSET_IS_UTF8 -DZSTD_DISABLE_DEPRECATE_WARNINGS -D_BSD_SOURCE -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/hiredis -I/usr/ports/mail/rspamd/work/rspamd-4.0.0 -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libutil -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libserver -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libmime -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libstat -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libcryptobox -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/libucl -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/replxx/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/uthash -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/http-parser -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/fpconv -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/libottery -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/cdb -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/snowball/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/librdns -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/aho-corasick -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/lc-btrie -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/lua-lpeg -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/frozen/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/fu2/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libserver/fasttext -I/usr/ports/mail/rspamd/work/.build/src -I/usr/ports/mail/rspamd/work/.build/src/libcryptobox -I/usr/local/include/luajit-2.1 -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/xxhash -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/doctest -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/expected -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/ankerl -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/fmt/include -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -fdiagnostics-color=always -Wno-unused-command-line-argument -Wno-ignored-optimization-argument -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -DNDEBUG -O2 -fomit-frame-pointer -fassociative-math -freciprocal-math -fno-signed-zeros -ffp-contract=fast -std=gnu++20 -flto -fPIC -msse2 -m64 -Wextra -Wall -Wpointer-arith -Wno-unused-parameter -Wno-unused-function -Wunused-variable -Wno-strict-aliasing -fno-strict-aliasing -Wnull-dereference -Wno-unused-const-variable -Wno-sign-compare -Wno-implicit-fallthrough -Wmissing-noreturn -Wmissing-format-attribute -Werror=return-type -fPIC -MD -MT src/libserver/fasttext/CMakeFiles/rspamd-fasttext.dir/fasttext_shim.cxx.o -MF src/libserver/fasttext/CMakeFiles/rspamd-fasttext.dir/fasttext_shim.cxx.o.d -o src/libserver/fasttext/CMakeFiles/rspamd-fasttext.dir/fasttext_shim.cxx.o -c /usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libserver/fasttext/fasttext_shim.cxx
ninja: build stopped: subcommand failed.
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1
Stop.
make: stopped making "all" in /usr/ports/mail/rspamd
egrep: empty (sub)expression
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20260602-36789-wob8l2 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=rspamd-4.0.0 UPGRADE_PORT_VER=4.0.0 make
** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
! mail/rspamd (rspamd-4.0.0) (unknown build error)
で止まっちゃいます。
では。
cd /usr/ports/mail/rspamd
make MAKE_JOBS_UNSAFE=yes
すると。
・・・ 略 ・・・
[ 0% 1/311] /usr/bin/c++ -DDOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS -DDOCTEST_CONFIG_USE_STD_HEADERS -DFMT_HEADER_ONLY -DFREEBSD -DHAVE_CONFIG_H -DSIMDUTF_IMPLEMENTATION_FALLBACK=1 -DU_CHARSET_IS_UTF8 -DZSTD_DISABLE_DEPRECATE_WARNINGS -D_BSD_SOURCE -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/hiredis -I/usr/ports/mail/rspamd/work/rspamd-4.0.0 -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libutil -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libserver -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libmime -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libstat -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libcryptobox -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/libucl -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/replxx/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/uthash -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/http-parser -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/fpconv -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/libottery -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/cdb -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/snowball/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/librdns -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/aho-corasick -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/lc-btrie -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/lua-lpeg -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/frozen/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/fu2/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/src/libserver/fasttext -I/usr/ports/mail/rspamd/work/.build/src -I/usr/ports/mail/rspamd/work/.build/src/libcryptobox -I/usr/local/include/luajit-2.1 -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/xxhash -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src -I/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/include -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -fdiagnostics-color=always -Wno-unused-command-line-argument -Wno-ignored-optimization-argument -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -DNDEBUG -O2 -fomit-frame-pointer -fassociative-math -freciprocal-math -fno-signed-zeros -ffp-contract=fast -std=c++20 -flto -fPIC -msse2 -m64 -Wextra -Wall -Wpointer-arith -Wno-unused-parameter -Wno-unused-function -Wunused-variable -Wno-strict-aliasing -fno-strict-aliasing -Wnull-dereference -Wno-unused-const-variable -Wno-sign-compare -Wno-implicit-fallthrough -Wmissing-noreturn -Wmissing-format-attribute -Werror=return-type -fPIC -Weffc++ -Wfatal-errors -Wsign-compare -Wshadow -Wwrite-strings -Winit-self -Wconversion -Wno-sign-conversion -Wunused-function -MD -MT contrib/simdutf/src/CMakeFiles/simdutf.dir/simdutf.cpp.o -MF contrib/simdutf/src/CMakeFiles/simdutf.dir/simdutf.cpp.o.d -o contrib/simdutf/src/CMakeFiles/simdutf.dir/simdutf.cpp.o -c /usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src/simdutf.cpp
FAILED: [code=1] contrib/simdutf/src/CMakeFiles/simdutf.dir/simdutf.cpp.o
・・・ 略 ・・・
In file included from /usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src/simdutf.cpp:4:
In file included from /usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src/implementation.cpp:25:
In file included from /usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src/simdutf/icelake.h:60:
/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src/simdutf/icelake/implementation.h:13:7: warning: abstract class is marked 'final' [-Wabstract-final-class]
13 | class implementation final : public simdutf::implementation {
| ^
/usr/local/include/simdutf/implementation.h:5219:3: note: unimplemented pure virtual method 'validate_utf16be_as_ascii' in 'implementation'
5219 | validate_utf16be_as_ascii(const char16_t *buf, size_t len) const noexcept = 0;
| ^
・・・ 略 ・・・
/usr/local/include/simdutf/implementation.h:6990:27: note: unimplemented pure virtual method 'find' in 'implementation'
6990 | virtual const char16_t *find(const char16_t *start, const char16_t *end,
| ^
In file included from /usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src/simdutf.cpp:4:
In file included from /usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src/implementation.cpp:26:
In file included from /usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src/simdutf/haswell.h:57:
/usr/ports/mail/rspamd/work/rspamd-4.0.0/contrib/simdutf/src/simdutf/haswell/bitmanipulation.h:20:1: fatal error: unknown type name 'simdutf_inline'
20 | simdutf_inline int trailing_zeroes(uint64_t input_num) {
| ^
2 warnings and 1 error generated.
ninja: build stopped: subcommand failed.
*** Error code 1
Stop.
make[1]: stopped making "/usr/ports/mail/rspamd/work/.stage_done.rspamd._usr_local" in /usr/ports/mail/rspamd
*** Error code 1
Stop.
3. 原因
状況を「Gemini」伍長に相談すると。
エラーの原因
コンパイル時に -I/usr/local/include(システム側のパス)と -I/.../contrib/simdutf/include(rspamd内部のパス)の両方が指定されています。
1. 純粋仮想関数の未実装エラー (-Wabstract-final-class)
システム側(/usr/local/include/simdutf/implementation.h)が新しすぎる、あるいは rspamd 内部のコードと食い違っているため、validate_utf16be_as_ascii などの新しい関数(純粋仮想関数)を rspamd 側のクラスが実装していないと見なされ、コンパイルエラーになっています。
2. 未知の型エラー (fatal error: unknown type name 'simdutf_inline')
これもヘッダファイルの読み込み順、またはバージョンの不整合によってマクロ(simdutf_inline)が正しく定義されていないために発生しています。
どうも「simdutf」というライブラリが、システムのものと「rspamd」が使おうとするものとの間で競合しているらしい。
4. 対策
いったん、「simdutf」を削除します。
cd /usr/ports/converters/simdutf
make deinstall
その上で。
env BATCH=yes portupgrade -rR rspamd
今度は、すんなり通ります。
アップグレードしたので。
service rspamd restart
したうえで、「simdutf」を再インストールします。
cd /usr/ports/converters/simdutf
make NO_DIALOG=yes
make install
5. 参考サイト
本ページは、「Gemini」伍長を参考にさせていただきました。