Re: And now the dumb question du jour

From: Jessica Clarke <jrtc27_at_freebsd.org>
Date: Tue, 12 Nov 2024 21:56:11 UTC
On 12 Nov 2024, at 21:50, Dennis Clarke <dclarke@blastwave.org> wrote:
> 
> 
> Dear RISC-V folks :
> 
>    Given the recent big LLVM/Clang update into the src tree[1] it
> seemed reasonable to do a full buildworld/kernel and that worked out
> very well. No LLVM hack patch required !
> 
> enceladus# uname -apKU
> FreeBSD enceladus 15.0-CURRENT FreeBSD 15.0-CURRENT #1 main-n273541-cdd3234186b1: Tue Nov 12 08:49:15 GMT 2024 root@enceladus:/usr/obj/usr/src/riscv.riscv64/sys/SIFIVE-COMPAT11 riscv riscv64 1500026 1500026
> 
> enceladus# cc --version
> FreeBSD clang version 19.1.3 (https://github.com/llvm/llvm-project.git llvmorg-19.1.3-0-gab51eccf88f5)
> Target: riscv64-unknown-freebsd15.0
> Thread model: posix
> InstalledDir: /usr/bin
> Build config: +assertions
> enceladus#
> 
> At this point I want to rebuild the few packages that I have. Here is
> where I get a bit confused about poudriere.
> 
> enceladus#
> enceladus# poudriere ports -l
> PORTSTREE METHOD    TIMESTAMP           PATH
> latest    git+https 2024-11-08 17:21:03 /poudriere/ports/latest
> enceladus#
> enceladus# poudriere jails -l
> JAILNAME VERSION ARCH METHOD TIMESTAMP PATH
> enceladus#
> enceladus# zpool list
> NAME   SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP HEALTH  ALTROOT
> rv64   912G  27.6G   884G        -         -    11%     3%  1.00x ONLINE  -
> enceladus#
> enceladus# poudriere jail -c -j 150rv64 -a riscv64 -b -m src=/usr/src -f rv64/poudriere/jails/150rv64 -v main
> [00:00:00] Creating 150rv64 fs at /poudriere/jails/150rv64... done
> [00:00:00] Copying /usr/src to /poudriere/jails/150rv64/usr/src... done
> [00:04:04] Starting make buildworld with 4 jobs
> --- buildworld ---
> make[1]: "/poudriere/jails/150rv64/usr/src/Makefile.inc1" line 164: Unknown target riscv64:riscv64.
>        in .for loop from /poudriere/jails/150rv64/usr/src/Makefile.inc1:162 with _t = riscv64
>        in directory /poudriere/jails/150rv64/usr/src
> 
> make[1]: stopped making "buildworld" in /poudriere/jails/150rv64/usr/src
> 
> make: stopped making "buildworld" in /poudriere/jails/150rv64/usr/src
> [00:04:06] Error: Failed to 'make buildworld'
> [00:04:06] Error while creating jail, cleaning up.
> [00:04:06] Removing 150rv64 jail... done
> [00:04:13] Cleaning 150rv64 data... done
> enceladus#
> 
> 
> Unknown target ?
> 
> Excuse me ?
> 
> enceladus# sysctl hw.fdt.model
> hw.fdt.model: SiFive HiFive Unmatched A00
> enceladus#
> 
> Am I missing something blunt force trauma obvious here?

The RISC-V port is MACHINE=riscv MACHINE_ARCH=riscv64 (c.f.
MACHINE=arm64 MACHINE_ARCH=aarch64 or MACHINE=powerpc
MACHINE_ARCH=powerpc64), so you need to give -a riscv.riscv64 to
poudriere rather than -a riscv64 (which is shorthand for -a
riscv64.riscv64), unlike amd64 where MACHINE=MACHINE_ARCH=amd64 so the
shorthand works. Building src is smarter about inferring one from the
other rather than defaulting to them being the same, but poudriere is
not.

Jess