Skip to content

Commit

Permalink
[libcxx] Require qemu-system-arm for armv7m builder (#77067)
Browse files Browse the repository at this point in the history
And add a check in the python script that the binary given to `--qemu`
actually exists. Otherwise you get a generic Python error:
```
 # .---command stderr------------
 # | Traceback (most recent call last):
 # |   File "/home/david.spickett/modules-llvm-project/libcxx/utils/qemu_baremetal.py", line 70, in <module>
 # |     exit(main())
 # |   File "/home/david.spickett/modules-llvm-project/libcxx/utils/qemu_baremetal.py", line 66, in main
 # |     os.execvp(qemu_commandline[0], qemu_commandline)
 # |   File "/usr/lib/python3.8/os.py", line 568, in execvp
 # |     _execvpe(file, args)
 # |   File "/usr/lib/python3.8/os.py", line 610, in _execvpe
 # |     raise last_exc
 # |   File "/usr/lib/python3.8/os.py", line 601, in _execvpe
 # |     exec_func(fullname, *argrest)
 # | FileNotFoundError: [Errno 2] No such file or directory
 # `-----------------------------
 # error: command failed with exit status: 1
```
When it tries to run the entire command later.

For the builder, it's only ever going to use qemu-system-arm so error at
config time if it's not there.
  • Loading branch information
DavidSpickett committed Jan 8, 2024
1 parent 68a1583 commit acbb491
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
2 changes: 1 addition & 1 deletion libcxx/cmake/caches/Armv7M-picolibc.cmake
Expand Up @@ -39,4 +39,4 @@ set(LIBUNWIND_ENABLE_THREADS OFF CACHE BOOL "")
set(LIBUNWIND_IS_BAREMETAL ON CACHE BOOL "")
set(LIBUNWIND_REMEMBER_HEAP_ALLOC ON CACHE BOOL "")
set(LIBUNWIND_USE_COMPILER_RT ON CACHE BOOL "")
find_program(QEMU_SYSTEM_ARM qemu-system-arm)
find_program(QEMU_SYSTEM_ARM qemu-system-arm REQUIRED)
6 changes: 6 additions & 0 deletions libcxx/utils/qemu_baremetal.py
Expand Up @@ -16,6 +16,7 @@
import argparse
import os
import sys
import shutil


def main():
Expand All @@ -32,8 +33,13 @@ def main():
parser.add_argument("test_binary")
parser.add_argument("test_args", nargs=argparse.ZERO_OR_MORE, default=[])
args = parser.parse_args()

if not shutil.which(args.qemu):
sys.exit(f"Failed to find QEMU binary from --qemu value: '{args.qemu}'")

if not os.path.exists(args.test_binary):
sys.exit(f"Expected argument to be a test executable: '{args.test_binary}'")

qemu_commandline = [
args.qemu,
"-chardev",
Expand Down

0 comments on commit acbb491

Please sign in to comment.