Support adding suffixes to module names and deps.
This is helpful for crates like protobuf and syn for which we have multiple versions, and will let us eliminate several patch files Test: Ran it on everything in external/rust/crates. Change-Id: I29ac1ee69be99b7164e1458e0d8fc1cb028b15a0
This commit is contained in:
@@ -337,7 +337,7 @@ class Crate(object):
|
|||||||
self.srcs.append(other.main_src)
|
self.srcs.append(other.main_src)
|
||||||
# use a short unique name as the merged module name.
|
# use a short unique name as the merged module name.
|
||||||
prefix = self.root_pkg + '_tests'
|
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
|
self.stem = self.module_name
|
||||||
# This normalized root_pkg name although might be the same
|
# This normalized root_pkg name although might be the same
|
||||||
# as other module's crate_name, it is not actually used for
|
# 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.shared_libs = sorted(set(self.shared_libs))
|
||||||
self.crate_types = sorted(set(self.crate_types))
|
self.crate_types = sorted(set(self.crate_types))
|
||||||
self.decide_module_type()
|
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
|
return self
|
||||||
|
|
||||||
def get_pkg_version(self):
|
def get_pkg_version(self):
|
||||||
@@ -822,30 +822,30 @@ class Crate(object):
|
|||||||
self.module_type = 'rust_binary' + host
|
self.module_type = 'rust_binary' + host
|
||||||
# In rare cases like protobuf-codegen, the output binary name must
|
# In rare cases like protobuf-codegen, the output binary name must
|
||||||
# be renamed to use as a plugin for protoc.
|
# 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)
|
self.module_name = altered_name(self.stem)
|
||||||
elif crate_type == 'lib': # rust_library[_host]
|
elif crate_type == 'lib': # rust_library[_host]
|
||||||
# TODO(chh): should this be rust_library[_host]?
|
# TODO(chh): should this be rust_library[_host]?
|
||||||
# Assuming that Cargo.toml do not use both 'lib' and 'rlib',
|
# Assuming that Cargo.toml do not use both 'lib' and 'rlib',
|
||||||
# because we map them both to rlib.
|
# because we map them both to rlib.
|
||||||
self.module_type = 'rust_library' + rlib + 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)
|
self.module_name = altered_name(self.stem)
|
||||||
elif crate_type == 'rlib': # rust_library[_host]
|
elif crate_type == 'rlib': # rust_library[_host]
|
||||||
self.module_type = 'rust_library' + rlib + 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)
|
self.module_name = altered_name(self.stem)
|
||||||
elif crate_type == 'dylib': # rust_library[_host]_dylib
|
elif crate_type == 'dylib': # rust_library[_host]_dylib
|
||||||
self.module_type = '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'
|
self.module_name = altered_name(self.stem) + '_dylib'
|
||||||
elif crate_type == 'cdylib': # rust_library[_host]_shared
|
elif crate_type == 'cdylib': # rust_library[_host]_shared
|
||||||
self.module_type = 'rust_ffi' + 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'
|
self.module_name = altered_name(self.stem) + '_shared'
|
||||||
elif crate_type == 'staticlib': # rust_library[_host]_static
|
elif crate_type == 'staticlib': # rust_library[_host]_static
|
||||||
self.module_type = 'rust_ffi' + 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'
|
self.module_name = altered_name(self.stem) + '_static'
|
||||||
elif crate_type == 'test': # rust_test[_host]
|
elif crate_type == 'test': # rust_test[_host]
|
||||||
self.module_type = '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
|
# crate name. We ignore -C and use claim_module_name to get
|
||||||
# unique sequential suffix.
|
# unique sequential suffix.
|
||||||
self.module_name = self.runner.claim_module_name(
|
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.
|
# Now the module name is unique, stem should also match and unique.
|
||||||
self.stem = self.module_name
|
self.stem = self.module_name
|
||||||
elif crate_type == 'proc-macro': # rust_proc_macro
|
elif crate_type == 'proc-macro': # rust_proc_macro
|
||||||
self.module_type = '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)
|
self.module_name = altered_name(self.stem)
|
||||||
else: # unknown module type, rust_prebuilt_dylib? rust_library[_host]?
|
else: # unknown module type, rust_prebuilt_dylib? rust_library[_host]?
|
||||||
self.module_type = ''
|
self.module_type = ''
|
||||||
@@ -949,6 +949,8 @@ class Crate(object):
|
|||||||
lib_name = re.sub(' .*$', '', lib)
|
lib_name = re.sub(' .*$', '', lib)
|
||||||
if lib_name in self.runner.variant_args.dependency_blocklist:
|
if lib_name in self.runner.variant_args.dependency_blocklist:
|
||||||
continue
|
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'):
|
if lib.endswith('.rlib') or lib.endswith('.rmeta'):
|
||||||
# On MacOS .rmeta is used when Linux uses .rlib or .rmeta.
|
# On MacOS .rmeta is used when Linux uses .rlib or .rmeta.
|
||||||
rust_libs += ' "' + altered_name('lib' + lib_name + dependency_suffix) + '",\n'
|
rust_libs += ' "' + altered_name('lib' + lib_name + dependency_suffix) + '",\n'
|
||||||
@@ -1893,6 +1895,15 @@ def get_parser() -> argparse.ArgumentParser:
|
|||||||
type=str,
|
type=str,
|
||||||
help=('Dump command-line arguments (minus this flag) to a config file and exit. ' +
|
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.'))
|
'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(
|
parser.add_argument(
|
||||||
'--config',
|
'--config',
|
||||||
type=str,
|
type=str,
|
||||||
|
|||||||
Reference in New Issue
Block a user