Merge "Support adding suffixes to module names and deps." into main

This commit is contained in:
James Farrell
2023-09-13 19:32:43 +00:00
committed by Gerrit Code Review

View File

@@ -337,7 +337,7 @@ class Crate(object):
self.srcs.append(other.main_src)
# use a short unique name as the merged module name.
prefix = self.root_pkg + '_tests'
self.module_name = self.runner.claim_module_name(prefix, self, 0)
self.module_name = self.runner.claim_module_name(prefix, self, 0) + self.runner.args.name_suffix
self.stem = self.module_name
# This normalized root_pkg name although might be the same
# as other module's crate_name, it is not actually used for
@@ -502,7 +502,7 @@ class Crate(object):
self.shared_libs = sorted(set(self.shared_libs))
self.crate_types = sorted(set(self.crate_types))
self.decide_module_type()
self.module_name = altered_name(self.stem)
self.module_name = altered_name(self.stem) + self.runner.args.name_suffix
return self
def get_pkg_version(self):
@@ -822,30 +822,30 @@ class Crate(object):
self.module_type = 'rust_binary' + host
# In rare cases like protobuf-codegen, the output binary name must
# be renamed to use as a plugin for protoc.
self.stem = altered_stem(self.crate_name) + suffix
self.stem = altered_stem(self.crate_name) + suffix + self.runner.args.name_suffix
self.module_name = altered_name(self.stem)
elif crate_type == 'lib': # rust_library[_host]
# TODO(chh): should this be rust_library[_host]?
# Assuming that Cargo.toml do not use both 'lib' and 'rlib',
# because we map them both to rlib.
self.module_type = 'rust_library' + rlib + host
self.stem = 'lib' + self.crate_name + suffix
self.stem = 'lib' + self.crate_name + suffix + self.runner.args.name_suffix
self.module_name = altered_name(self.stem)
elif crate_type == 'rlib': # rust_library[_host]
self.module_type = 'rust_library' + rlib + host
self.stem = 'lib' + self.crate_name + suffix
self.stem = 'lib' + self.crate_name + suffix + self.runner.args.name_suffix
self.module_name = altered_name(self.stem)
elif crate_type == 'dylib': # rust_library[_host]_dylib
self.module_type = 'rust_library' + host + '_dylib'
self.stem = 'lib' + self.crate_name + suffix
self.stem = 'lib' + self.crate_name + suffix + self.runner.args.name_suffix
self.module_name = altered_name(self.stem) + '_dylib'
elif crate_type == 'cdylib': # rust_library[_host]_shared
self.module_type = 'rust_ffi' + host + '_shared'
self.stem = 'lib' + self.crate_name + suffix
self.stem = 'lib' + self.crate_name + suffix + self.runner.args.name_suffix
self.module_name = altered_name(self.stem) + '_shared'
elif crate_type == 'staticlib': # rust_library[_host]_static
self.module_type = 'rust_ffi' + host + '_static'
self.stem = 'lib' + self.crate_name + suffix
self.stem = 'lib' + self.crate_name + suffix + self.runner.args.name_suffix
self.module_name = altered_name(self.stem) + '_static'
elif crate_type == 'test': # rust_test[_host]
self.module_type = 'rust_test' + host
@@ -863,12 +863,12 @@ class Crate(object):
# crate name. We ignore -C and use claim_module_name to get
# unique sequential suffix.
self.module_name = self.runner.claim_module_name(
self.module_name, self, 0)
self.module_name, self, 0) + self.runner.args.name_suffix
# Now the module name is unique, stem should also match and unique.
self.stem = self.module_name
elif crate_type == 'proc-macro': # rust_proc_macro
self.module_type = 'rust_proc_macro'
self.stem = 'lib' + self.crate_name + suffix
self.stem = 'lib' + self.crate_name + suffix + self.runner.args.name_suffix
self.module_name = altered_name(self.stem)
else: # unknown module type, rust_prebuilt_dylib? rust_library[_host]?
self.module_type = ''
@@ -949,6 +949,8 @@ class Crate(object):
lib_name = re.sub(' .*$', '', lib)
if lib_name in self.runner.variant_args.dependency_blocklist:
continue
if lib_name in self.runner.args.dep_suffixes:
lib_name += self.runner.args.dep_suffixes[lib_name]
if lib.endswith('.rlib') or lib.endswith('.rmeta'):
# On MacOS .rmeta is used when Linux uses .rlib or .rmeta.
rust_libs += ' "' + altered_name('lib' + lib_name + dependency_suffix) + '",\n'
@@ -1893,6 +1895,15 @@ def get_parser() -> argparse.ArgumentParser:
type=str,
help=('Dump command-line arguments (minus this flag) to a config file and exit. ' +
'This is intended to help migrate from command line options to config files.'))
parser.add_argument(
'--name-suffix',
type=str,
default='',
help=('Add this suffix to the module name.'))
parser.add_argument(
'--dep-suffixes',
default={},
help=('Add these suffixes to the specified dependencies'))
parser.add_argument(
'--config',
type=str,