Hi,
On Mon, May 06, 2024 at 02:51:56PM +0300, Adrian Bunk wrote:
> Source: qbe
> Version: 1.2-1
> Severity: important
> Tags: ftbfs
>
> https://buildd.debian.org/status/logs.php?pkg=qbe&ver=1.2-1
>
> ...
>dh_auto_test -a
> make -j8 check
> make[1]: Entering directory '/<>'
> tools/test.sh all
> abi1.ssa... /tmp/qbe..s: Assembler
> messages:
> /tmp/qbe..s:3: Error: unrecognized opcode: `pushq'
> /tmp/qbe..s:4: Error: unrecognized opcode: `movq'
> /tmp/qbe..s:5: Error: unrecognized opcode: `movq'
> /tmp/qbe..s:6: Error: unrecognized opcode: `addq'
> /tmp/qbe..s:8: Error: unrecognized opcode: `movb'
> /tmp/qbe..s:9: Error: unrecognized opcode: `movq'
> ...
> 50 of 50 tests failed!
> make[1]: *** [Makefile:72: check] Error 50
>
>
>
> This is due to explicit support required for every architecture,
> and defaulting to amd64 otherwise:
> https://sources.debian.org/src/qbe/1.2-1/Makefile/#L44-L54
>
> (The package also builds on m68k/sh4 in ports since these are
> building with nocheck.)
>
> An explicit
> Architecture: amd64 arm64 riscv64
> might be a better option for such a package that needs
> a backend written for every architecture it supports?
You are conflating host architecture and target architecture here. The
compiler only targets three architectures at this time, but there is
little limitation in host architectures.
The test suite fails, because it performs the testing for a target
derived from the current host architecture (same conflation).
Unlike gcc and like llvm/clang, qbe is a multi-target compiler with
runtime selection of target architecture. Hence, the test suite should
be repeated for each supported target and for doing so it likely needs
to Build-Depends: qemu-user .
Helmut