Re: git: 7b0c8167940b - main - net/ntpd-rs: mark as broken on i386

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Sat, 20 Jul 2024 18:13:37 UTC
Mikaël Urankar <mikael@FreeBSD.org> writes:

> On 7/20/24 17:43, Jan Beich wrote:
>
>> Mikael Urankar <mikael@FreeBSD.org> writes:
>>
>>> +NOT_FOR_ARCHS=	i386
>>> +NOT_FOR_ARCHS_REASON=	the ring crate requires SSE2 instruction on intel cpu
>> Why not pass -C target-feature=+sse2 like games/jumpy instead?
> Per [1] we are supposed to target Pentium Pro / Pentium II (i686),
> sse2 is not available on these cpus. This is enforced in our rust
> ports with [2].
>
> [1] https://www.freebsd.org/platforms/i386/
> [2]
> https://github.com/freebsd/freebsd-ports/blob/main/lang/rust/files/patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs

In general, I agree. For leaf ports we can make exceptions. Instead of a
missing package i386 users get a package which works on a subset of CPUs.

FreeBSD dropped i386 decades ago, used to target i486 but due to Clang
atomics had to bump the requirement to i686. Rust forced i686 even earlier.

Between pentiumpro (i686) and pentium4 there're 2 CPU generations.
And between pentium4 and penryn there're 2 CPU generations.

i386 isn't unique. Many amd64 packages require CMPXCHG16B and some
require SSSE3, SSE4 and even AVX2. Modern projects may give up
on old x86-64 CPUs either due to lack of interest or to prioritize
real-time performance (e.g., console emulators).