Subject: bug#62192: Test failures in binfmt emulated builds

From: Greg Hogan <[email-masked]>
Date: Tue, 14 Mar 2023 15:19:36 -0400

The following emulated build using binfmt should work according to the
documentation example at
https://guix.gnu.org/manual/en/html_node/Native-Builds.html

$ uname -m
x86_64

The package was previously built on an aarch64 offload machine:

$ file $(guix build --system=aarch64-linux hello)/bin/hello
/gnu/store/s2qnbdlrwlx47h5p6rxlylny1259srmj-hello-2.12.1/bin/hello:
ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically
linked, interpreter
/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/lib/ld-linux-aarch64.so.1,
for GNU/Linux 2.6.32, stripped

Successfully executed using binfmt emulation:

$ $(guix build --system=aarch64-linux hello)/bin/hello
Hello, world!

A locally emulated check build fails during the test phase:

$ guix describe
Generation 35 Mar 13 2023 13:37:24 (current)
  guix 1ed227d
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 1ed227d7952af48efe50a2f6c9537e17c356daa1

$ guix build --check --system=aarch64-linux --verbosity=1 hello
The following derivation will be built:
  /gnu/store/sg9mpl4nf7j2w8bmv5q4725gpirhi225-hello-2.12.1.drv

building /gnu/store/sg9mpl4nf7j2w8bmv5q4725gpirhi225-hello-2.12.1.drv...
| 'check' phasebuilder for
`/gnu/store/sg9mpl4nf7j2w8bmv5q4725gpirhi225-hello-2.12.1.drv' failed
with exit code 1
build of /gnu/store/sg9mpl4nf7j2w8bmv5q4725gpirhi225-hello-2.12.1.drv failed
View build log at
'/var/log/guix/drvs/sg/9mpl4nf7j2w8bmv5q4725gpirhi225-hello-2.12.1.drv.gz'.
guix build: error: build of
`/gnu/store/sg9mpl4nf7j2w8bmv5q4725gpirhi225-hello-2.12.1.drv' failed

$ zcat /var/log/guix/drvs/sg/9mpl4nf7j2w8bmv5q4725gpirhi225-hello-2.12.1.drv.gz
[...]
Test suite failed, dumping logs.

--- ./test-suite.log --------------------------------------------------------

========================================
   GNU Hello 2.12.1: ./test-suite.log
========================================

# TOTAL: 7
# PASS:  4
# SKIP:  1
# XFAIL: 0
# FAIL:  2
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: tests/atexit-1
====================

FAIL tests/atexit-1 (exit status: 1)

SKIP: tests/greeting-2
======================

./tests/greeting-2: Skipping test: not a full moon night
SKIP tests/greeting-2 (exit status: 77)

FAIL: tests/operand-1
=====================

1,2c1,2
< hello: extra operand: first
< Try 'hello --help' for more information.
---
> ./hello: extra operand: first
> Try './hello --help' for more information.
FAIL tests/operand-1 (exit status: 1)

error: in phase 'check': uncaught exception:
%exception #<&invoke-error program: "make" arguments: ("check" "-j"
"2") exit-status: 2 term-signal: #f stop-signal: #f>
phase `check' failed after 15.0 seconds
command "make" "check" "-j" "2" failed with status 2