cros_setup_toolchains: Add reclient toolchain inputs file
Add a remote_toolchain_inputs file next to clang as
reclient which is a replacement for Goma needs it.
This file generated here will be used by SimpleChrome based
development environment.
BUG=b:201570160
TEST=cros_setup_toolchains --create-packages
Change-Id: Ia5b65dce69bd656929ef0596c69951f165985285
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3388061
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Auto-Submit: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/cros_setup_toolchains.py b/scripts/cros_setup_toolchains.py
index 41a1df0..e4b56c2 100644
--- a/scripts/cros_setup_toolchains.py
+++ b/scripts/cros_setup_toolchains.py
@@ -1200,6 +1200,31 @@
osutils.SafeMakedirs(os.path.join(output_dir, 'usr', target, 'usr/lib'))
+def _CreateRemoteToolchainFile(output_dir):
+ """Create a remote_toolchain_inputs file for reclient/RBE"""
+ # The inputs file lists all files/shared libraries needed to run clang.
+ # All inputs are relative to location of clang binary and one input
+ # location per line of file e.g.
+ # clang-13.elf
+ # clang++-13.elf
+ # relative/path/to/clang/resource/directory
+
+ clang_path = os.path.join(output_dir, 'usr/bin')
+ # Add needed shared libraries and internal files e.g. allowlists.
+ toolchain_inputs = ['../../lib']
+ clang_shared_dirs = glob.glob(
+ os.path.join(output_dir, 'usr/lib64/clang/*/share'))
+ for clang_dir in clang_shared_dirs:
+ toolchain_inputs.append(os.path.relpath(clang_dir, clang_path))
+
+ # Add actual clang binaries/wrappers.
+ for clang_files in glob.glob(os.path.join(clang_path, 'clang*-[0-9]*')):
+ toolchain_inputs.append(os.path.basename(clang_files))
+
+ with open(os.path.join(clang_path, 'remote_toolchain_inputs'), 'w') as f:
+ f.writelines('%s\n' % line for line in toolchain_inputs)
+
+
def _ProcessDistroCleanups(target, output_dir):
"""Clean up the tree and remove all distro-specific requirements
@@ -1212,6 +1237,7 @@
_ProcessSysrootWrappers(target, output_dir, gcc_path)
_ProcessClangWrappers(target, output_dir)
_CreateMainLibDir(target, output_dir)
+ _CreateRemoteToolchainFile(output_dir)
osutils.RmDir(os.path.join(output_dir, 'etc'))