[libcxx-commits] [libcxx] acbb491 - [libcxx] Require qemu-system-arm for armv7m builder (#77067)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jan 8 00:55:42 PST 2024
Author: David Spickett
Date: 2024-01-08T08:55:39Z
New Revision: acbb491ab23fd04e201b58195f78e04c5a647d47
URL: https://github.com/llvm/llvm-project/commit/acbb491ab23fd04e201b58195f78e04c5a647d47
DIFF: https://github.com/llvm/llvm-project/commit/acbb491ab23fd04e201b58195f78e04c5a647d47.diff
LOG: [libcxx] Require qemu-system-arm for armv7m builder (#77067)
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.
Added:
Modified:
libcxx/cmake/caches/Armv7M-picolibc.cmake
libcxx/utils/qemu_baremetal.py
Removed:
################################################################################
diff --git a/libcxx/cmake/caches/Armv7M-picolibc.cmake b/libcxx/cmake/caches/Armv7M-picolibc.cmake
index 91cc32fd376e300..3ab80b960ed44a8 100644
--- a/libcxx/cmake/caches/Armv7M-picolibc.cmake
+++ b/libcxx/cmake/caches/Armv7M-picolibc.cmake
@@ -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)
diff --git a/libcxx/utils/qemu_baremetal.py b/libcxx/utils/qemu_baremetal.py
index aaf5b84489066d7..126031bbb19c493 100755
--- a/libcxx/utils/qemu_baremetal.py
+++ b/libcxx/utils/qemu_baremetal.py
@@ -16,6 +16,7 @@
import argparse
import os
import sys
+import shutil
def main():
@@ -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",
More information about the libcxx-commits
mailing list