[libcxx-commits] [PATCH] D84045: [libcxx][lit] Add a new executor to collect test binaries
Alexander Richardson via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Jul 17 09:46:21 PDT 2020
arichardson created this revision.
arichardson added reviewers: libc++, ldionne.
Herald added subscribers: libcxx-commits, dexonsmith.
Herald added a project: libc++.
Herald added 1 blocking reviewer(s): libc++.
I originally added this executor for the old test format to the CHERI fork
of libc++ to gather all test binaries in one directory. This change is a
simple port of the executor to the new format.
This is mostly useful for debugging and performing analysis on the compiled
binaries or copying them in bulk to a remote server. Using this executor
also helped me discover the bug fixed in https://reviews.llvm.org/D84040.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D84045
Files:
libcxx/utils/copy_files.py
Index: libcxx/utils/copy_files.py
===================================================================
--- /dev/null
+++ libcxx/utils/copy_files.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+#===----------------------------------------------------------------------===##
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+#===----------------------------------------------------------------------===##
+
+"""copy_files.py is a utility for collecting test binaries (possibly with code signing) in a given directory."""
+
+import argparse
+import os
+import subprocess
+import sys
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--execdir', type=str, required=True)
+ parser.add_argument('--output-dir', type=str, required=True)
+ parser.add_argument('--codesign_identity', type=str, required=False, default=None)
+ parser.add_argument('--env', type=str, nargs='*', required=False, default=dict())
+ (args, remaining) = parser.parse_known_args(sys.argv[1:])
+
+ if len(remaining) < 2:
+ sys.stderr.write('Missing actual commands to run')
+ exit(1)
+ commandLine = remaining[1:] # Skip the '--'
+
+ # Do any necessary codesigning.
+ if args.codesign_identity:
+ exe = commandLine[0]
+ rc = subprocess.call(['xcrun', 'codesign', '-f', '-s', args.codesign_identity, exe], env={})
+ if rc != 0:
+ sys.stderr.write('Failed to codesign: ' + exe)
+ return rc
+
+ # Copy the executable to the output directory
+ target_dir = args.output_dir
+ print("Copying", args.execdir, "to", target_dir, flush=True)
+ if not os.path.isdir(target_dir):
+ os.makedirs(target_dir)
+ subprocess.check_call(["cp", "-av", args.execdir, target_dir])
+
+if __name__ == '__main__':
+ exit(main())
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D84045.278816.patch
Type: text/x-patch
Size: 1962 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20200717/b8a3bf34/attachment.bin>
More information about the libcxx-commits
mailing list