[Bug 297814] riscv: remove COMPAT11 dependency for 223 ports

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 23 Aug 2026 14:59:01 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297814

            Bug ID: 297814
           Summary: riscv: remove COMPAT11 dependency for 223 ports
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: ports-bugs@FreeBSD.org
          Reporter: asomers@FreeBSD.org
                CC: alexey@pentode.fi, bofh@freebsd.org,
                    driesm@freebsd.org, lcook@freebsd.org,
                    nivit@FreeBSD.org, pizzamig@freebsd.org,
                    sunpoet@FreeBSD.org, vishwin@freebsd.org,
                    vladislav.movchan@gmail.com
                CC: alexey@pentode.fi, bofh@freebsd.org,
                    driesm@freebsd.org, lcook@freebsd.org,
                    nivit@FreeBSD.org, pizzamig@freebsd.org,
                    sunpoet@FreeBSD.org, vishwin@freebsd.org,
                    vladislav.movchan@gmail.com

Rust uses FFI to bind C libraries, which makes cross-compiling a breeze.  But
it also means that Rust programs don't automatically pick up newer versions of
functions that employ ELF symbol versioning.  As a result, for years Rust stuck
with a FreeBSD 11 ABI.  That is a particular problem for RISCV, which doesn't
enable COMPAT11 in the kernel by default.  So FreeBSD RISCV users can't run
most Rust programs unless they rebuild a custom kernel.

But as of libc-0.2.176 Rust now uses a FreeBSD 12 ABI.  So any program that
uses it can run on a vanilla FreeBSD RISCV kernel.

But that was nearly a year ago, and many ports haven't updated.  Fortunately,
libc is highly backwards compatible.  I'm only aware of two Rust crates that
won't work with libc-0.2.186: nix < 0.25.0 and mio < 0.8.3.  For any port that
doesn't depend on one of those, we can simply patch the port to use a newer
libc version, and resolve the COMPAT11 problem.

This patch does just that, for 223 ports.

Notes on specific ports:

    * x11/wezterm: I have tested this myself.  The others I have
      build-tested only.

    * textproc/bookokrat: Rework bookokrat's existing patch to be more
      robust.  Also, report the issue upstream:
      https://github.com/bugzmanov/bookokrat/issues/182

    * devel/tokei: delete a long obsolete patch file

    * emulators/fab-agon-emulator: the build currently fails on
      16.0-CURRENT.  But it doesn't appear to be the result of this change.

    * archivers/py-cramjam x11-fonts/py-shaperglot
            These crates contained extra entries in CARGO_CRATES that didn't
need
            to be there, perhaps because they were created using Rust's version
1
            resolver.  Remove the extras.

    * security/sequoia-chameleon-gnupg security/sequoia-sq
            "cargo update -p libc" insisted on updating some other crates, too.

    * devel/cargo-generate editors/lapce finance/tickrs net-im/gurk-rs
      net-p2p/oura textproc/mdbook-linkchec www/lychee
            These creates contained an extra entry in CARGO_CRATES for
openssl-src.
            I don't know why.  Remove it.

    * www/tuifeed
            Alone among all the crates touched, this one uses cargo's --locked
            argument.  So I had to create a patch-Cargo.lock file for it.

    There are several other ports that still use old versions of libc.  But
    for various reasons, each needs more attention that I can afford in this
    already-large commit.

-- 
You are receiving this mail because:
You are the assignee for the bug.