Merge "Ensure unique name for non-merged modules." am: 489013b6c0
Change-Id: I86334b96620de23598cd957e61c720cd253e419e
This commit is contained in:
@@ -229,8 +229,7 @@ class Crate(object):
|
|||||||
# A merged test uses its source file base name as output file name,
|
# A merged test uses its source file base name as output file name,
|
||||||
# so a test is mergeable only if its base name equals to its crate name.
|
# so a test is mergeable only if its base name equals to its crate name.
|
||||||
return (self.crate_types == other.crate_types and
|
return (self.crate_types == other.crate_types and
|
||||||
self.crate_types == ['test'] and
|
self.crate_types == ['test'] and self.root_pkg == other.root_pkg and
|
||||||
self.root_pkg == other.root_pkg and
|
|
||||||
not self.skip_crate() and
|
not self.skip_crate() and
|
||||||
other.crate_name == test_base_name(other.main_src) and
|
other.crate_name == test_base_name(other.main_src) and
|
||||||
(len(self.srcs) > 1 or
|
(len(self.srcs) > 1 or
|
||||||
@@ -633,8 +632,12 @@ class Crate(object):
|
|||||||
# self.root_pkg can have multiple test modules, with different *_tests[n]
|
# self.root_pkg can have multiple test modules, with different *_tests[n]
|
||||||
# names, but their executables can all be installed under the same _tests
|
# names, but their executables can all be installed under the same _tests
|
||||||
# directory. When built from Cargo.toml, all tests should have different
|
# directory. When built from Cargo.toml, all tests should have different
|
||||||
# file or crate names.
|
# file or crate names. So we used (root_pkg + '_tests') name as the
|
||||||
self.write(' relative_install_path: "' + self.root_pkg + '_tests",')
|
# relative_install_path.
|
||||||
|
# However, some package like 'slab' can have non-mergeable tests that
|
||||||
|
# must be separated by different module names. So, here we no longer
|
||||||
|
# emit relative_install_path.
|
||||||
|
# self.write(' relative_install_path: "' + self.root_pkg + '_tests",')
|
||||||
self.write(' test_suites: ["general-tests"],')
|
self.write(' test_suites: ["general-tests"],')
|
||||||
self.write(' auto_gen_config: true,')
|
self.write(' auto_gen_config: true,')
|
||||||
|
|
||||||
@@ -859,6 +862,8 @@ class Runner(object):
|
|||||||
self.warning_files = set()
|
self.warning_files = set()
|
||||||
# Keep a unique mapping from (module name) to crate
|
# Keep a unique mapping from (module name) to crate
|
||||||
self.name_owners = {}
|
self.name_owners = {}
|
||||||
|
# Save and dump all errors from cargo to Android.bp.
|
||||||
|
self.errors = ''
|
||||||
# Default action is cargo clean, followed by build or user given actions.
|
# Default action is cargo clean, followed by build or user given actions.
|
||||||
if args.cargo:
|
if args.cargo:
|
||||||
self.cargo = ['clean'] + args.cargo
|
self.cargo = ['clean'] + args.cargo
|
||||||
@@ -993,6 +998,8 @@ class Runner(object):
|
|||||||
lib.dump()
|
lib.dump()
|
||||||
if self.args.dependencies and self.dependencies:
|
if self.args.dependencies and self.dependencies:
|
||||||
self.dump_dependencies()
|
self.dump_dependencies()
|
||||||
|
if self.errors:
|
||||||
|
self.append_to_bp('\nErrors in ' + CARGO_OUT + ':\n' + self.errors)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def add_ar_object(self, obj):
|
def add_ar_object(self, obj):
|
||||||
@@ -1014,6 +1021,8 @@ class Runner(object):
|
|||||||
for c in self.crates:
|
for c in self.crates:
|
||||||
if c.merge(crate, 'Android.bp'):
|
if c.merge(crate, 'Android.bp'):
|
||||||
return
|
return
|
||||||
|
# If not merged, decide module type and name now.
|
||||||
|
crate.decide_module_type()
|
||||||
self.crates.append(crate)
|
self.crates.append(crate)
|
||||||
|
|
||||||
def find_warning_owners(self):
|
def find_warning_owners(self):
|
||||||
@@ -1062,11 +1071,14 @@ class Runner(object):
|
|||||||
else:
|
else:
|
||||||
self.add_ar_object(ARObject(self, outf_name).parse(pkg, n, line))
|
self.add_ar_object(ARObject(self, outf_name).parse(pkg, n, line))
|
||||||
|
|
||||||
def assert_empty_vv_line(self, line):
|
def append_to_bp(self, line):
|
||||||
if line: # report error if line is not empty
|
|
||||||
self.init_bp_file('Android.bp')
|
self.init_bp_file('Android.bp')
|
||||||
with open('Android.bp', 'a') as outf:
|
with open('Android.bp', 'a') as outf:
|
||||||
outf.write('ERROR -vv line: ', line)
|
outf.write(line)
|
||||||
|
|
||||||
|
def assert_empty_vv_line(self, line):
|
||||||
|
if line: # report error if line is not empty
|
||||||
|
self.append_to_bp('ERROR -vv line: ' + line)
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
def parse(self, inf, outf_name):
|
def parse(self, inf, outf_name):
|
||||||
@@ -1094,6 +1106,8 @@ class Runner(object):
|
|||||||
fpath = WARNING_FILE_PAT.match(line).group(1)
|
fpath = WARNING_FILE_PAT.match(line).group(1)
|
||||||
if fpath[0] != '/': # ignore absolute path
|
if fpath[0] != '/': # ignore absolute path
|
||||||
self.warning_files.add(fpath)
|
self.warning_files.add(fpath)
|
||||||
|
elif line.startswith('error: ') or line.startswith('error[E'):
|
||||||
|
self.errors += line
|
||||||
prev_warning = False
|
prev_warning = False
|
||||||
rustc_line = new_rustc
|
rustc_line = new_rustc
|
||||||
self.find_warning_owners()
|
self.find_warning_owners()
|
||||||
@@ -1124,7 +1138,8 @@ def parse_args():
|
|||||||
default=False,
|
default=False,
|
||||||
help='run cargo also for a default device target')
|
help='run cargo also for a default device target')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--features', type=str,
|
'--features',
|
||||||
|
type=str,
|
||||||
help=('pass features to cargo build, ' +
|
help=('pass features to cargo build, ' +
|
||||||
'empty string means no default features'))
|
'empty string means no default features'))
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
|
|||||||
Reference in New Issue
Block a user