On Mon, Oct 20, 2025 at 05:08:40PM +0100, Stuart Henderson wrote:
> On 2025/10/20 16:55, Volker Schlecht wrote:
> > ok to import without hooking it up to the build?
make package/make test pass on riscv64.
On sparc64 linking of tools/fastbase64.cpp and tools/sutf.cpp fails
because of stupid missing libstdc++fs symbols:
FAILED: tools/fastbase64
: && /usr/ports/pobj/simdutf-7.5.0/bin/c++ -O2 -pipe -DNDEBUG -lstdc++fs
-static-libstdc++ -Wl,--gc-sections
tools/CMakeFiles/fastbase64.dir/fastbase64.cpp.o -o tools/fastbase64
-Wl,-z,origin,-rpath,/usr/ports/pobj/simdutf-7.5.0/build-sparc64/src:
src/libsimdutf.so.0.0 -Wl,-rpath-link,/usr/X11R6/lib && :
tools/CMakeFiles/fastbase64.dir/fastbase64.cpp.o: In function
`CommandLine::parse_and_validate_arguments(int, char**)':
fastbase64.cpp:(.text+0x3e8): undefined reference to
`std::filesystem::__cxx11::path::_M_split_cmpts()'
fastbase64.cpp:(.text+0x4c0): undefined reference to
`std::filesystem::__cxx11::path::_M_split_cmpts()'
collect2: error: ld returned 1 exit status
You could work around this with a patch to add the missing lib, or by
disabling tools on ports-gcc.
> why avoid hooking it up?
I took a quick look at what might use it and:
- lang/node seems to prefer its copy by default
- databases/recoll doesn't seem to pick the system package
- mail/rspamd fails to build when simdutf is installed, looks like an
include ordering conflict with its internal copy. Better fix that
before textproc/simdutf gets used as a dep for other ports.
FAILED: contrib/simdutf/src/CMakeFiles/simdutf.dir/simdutf.cpp.o
/usr/ports/pobj/rspamd-3.13.2/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/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/hiredis
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/src
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/src/libutil
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/src/libserver
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/src/libmime
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/src/libstat
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/src/libcryptobox
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/libucl
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/replxx/include
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/uthash
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/http-parser
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/fpconv
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/libottery
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/cdb
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/snowball/include
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/librdns
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/aho-corasick
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/lc-btrie
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/lua-lpeg
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/frozen/include
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/fu2/include
-I/usr/ports/pobj/rspamd-3.13.2/build-amd64/src
-I/usr/ports/pobj/rspamd-3.13.2/build-amd64/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/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/simdutf/src
-I/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/simdutf/include -O2 -pipe
-g -O2 -pipe -g -fdiagnostics-color=always -Wno-unused-command-line-argument
-Wno-ignored-optimization-argument -DNDEBUG -O2 -fomit-frame-pointer
-fassociative-math -freciprocal-math -fno-signed-zeros -ffp-contract=fast
-std=c++20 -flto=thin -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/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/simdutf/src/simdutf.cpp
In file included from
/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/simdutf/src/simdutf.cpp:4:
In file included from
/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/simdutf/src/implementation.cpp:25:
In file included from
/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/contrib/simdutf/src/simdutf/icelake.h:60:
/usr/ports/pobj/rspamd-3.13.2/rspamd-3.13.2/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:3728:3: note: unimplemented pure
virtual method 'validate_utf16be_as_ascii' in 'implementation'
3728 | validate_utf16be_as_ascii(const char16_t *buf, size_t len) const
noexcept = 0;
etc etc
--
jca