Revert "c2a: add option to use Cargo.toml.orig"
This reverts commit 2adbd7ed89.
Reason for revert: This doesn't work in all cases. For now I'll
instead use local patches for Cargo.toml :(
Change-Id: I0621796e694e2654a01fe9a38a307fd0a4ab8b15
This commit is contained in:
@@ -1320,69 +1320,20 @@ class Runner(object):
|
|||||||
else:
|
else:
|
||||||
in_pkg = pkg_section.match(line) is not None
|
in_pkg = pkg_section.match(line) is not None
|
||||||
|
|
||||||
# Simple class for manipulation and error handling on Cargo.toml files.
|
|
||||||
class CargoToml(object):
|
|
||||||
cargo_toml = './Cargo.toml'
|
|
||||||
cargo_toml_orig = './Cargo.toml.orig'
|
|
||||||
cargo_toml_lines = None
|
|
||||||
|
|
||||||
def __init__(self, args):
|
|
||||||
if not os.access(self.cargo_toml, os.R_OK):
|
|
||||||
print('error: cannot find or read', self.cargo_toml)
|
|
||||||
return None
|
|
||||||
|
|
||||||
if args.orig_cargo_toml:
|
|
||||||
if not os.access(self.cargo_toml_orig, os.R_OK):
|
|
||||||
print('error: cannot find or read', self.cargo_toml_orig)
|
|
||||||
return None
|
|
||||||
|
|
||||||
# These arguments result in modifying the Cargo.toml.
|
|
||||||
# Save the original to be restored.
|
|
||||||
if args.orig_cargo_toml or args.add_workspace:
|
|
||||||
with open(self.cargo_toml, 'r') as in_file:
|
|
||||||
self.cargo_toml_lines = in_file.readlines()
|
|
||||||
|
|
||||||
# Temporarily replace Cargo.toml with Cargo.toml.orig.
|
|
||||||
# This is useful because crates.io removes dev-dependencies from Cargo.toml when
|
|
||||||
# version numbers are not specified, which is not possible for many crates due to
|
|
||||||
# https://github.com/rust-lang/cargo/issues/4242.
|
|
||||||
if args.orig_cargo_toml:
|
|
||||||
with open(self.cargo_toml, 'w') as out_file:
|
|
||||||
with open(self.cargo_toml_orig, 'r') as in_file:
|
|
||||||
lines = in_file.readlines()
|
|
||||||
out_file.writelines(lines)
|
|
||||||
if args.verbose:
|
|
||||||
print('### INFO: Overwrote Cargo.toml with Cargo.toml.orig')
|
|
||||||
|
|
||||||
# Add [workspace] to Cargo.toml if it is not there.
|
|
||||||
if args.add_workspace:
|
|
||||||
with open(self.cargo_toml, 'r') as in_file:
|
|
||||||
lines = in_file.readlines()
|
|
||||||
if '[workspace]\n' in lines:
|
|
||||||
print('### WARNING: found [workspace] in Cargo.toml')
|
|
||||||
else:
|
|
||||||
with open(self.cargo_toml, 'a') as out_file:
|
|
||||||
out_file.write('[workspace]\n')
|
|
||||||
if args.verbose:
|
|
||||||
print('### INFO: added [workspace] to Cargo.toml')
|
|
||||||
|
|
||||||
def restore(self, args):
|
|
||||||
if self.cargo_toml_lines is not None:
|
|
||||||
with open(self.cargo_toml, 'w') as out_file:
|
|
||||||
out_file.writelines(self.cargo_toml_lines)
|
|
||||||
if args.verbose:
|
|
||||||
print('### INFO: restored original Cargo.toml')
|
|
||||||
|
|
||||||
def run_cargo(self):
|
def run_cargo(self):
|
||||||
"""Calls cargo -v and save its output to ./cargo.out."""
|
"""Calls cargo -v and save its output to ./cargo.out."""
|
||||||
if self.skip_cargo:
|
if self.skip_cargo:
|
||||||
return self
|
return self
|
||||||
|
cargo_toml = './Cargo.toml'
|
||||||
cargo_out = './cargo.out'
|
cargo_out = './cargo.out'
|
||||||
# Do not use Cargo.lock, because .bp rules are designed to
|
# Do not use Cargo.lock, because .bp rules are designed to
|
||||||
# run with "latest" crates avaialable on Android.
|
# run with "latest" crates avaialable on Android.
|
||||||
cargo_lock = './Cargo.lock'
|
cargo_lock = './Cargo.lock'
|
||||||
cargo_lock_saved = './cargo.lock.saved'
|
cargo_lock_saved = './cargo.lock.saved'
|
||||||
had_cargo_lock = os.path.exists(cargo_lock)
|
had_cargo_lock = os.path.exists(cargo_lock)
|
||||||
|
if not os.access(cargo_toml, os.R_OK):
|
||||||
|
print('ERROR: Cannot find or read', cargo_toml)
|
||||||
|
return self
|
||||||
if not self.dry_run:
|
if not self.dry_run:
|
||||||
if os.path.exists(cargo_out):
|
if os.path.exists(cargo_out):
|
||||||
os.remove(cargo_out)
|
os.remove(cargo_out)
|
||||||
@@ -1393,11 +1344,20 @@ class Runner(object):
|
|||||||
# set up search PATH for cargo to find the correct rustc
|
# set up search PATH for cargo to find the correct rustc
|
||||||
saved_path = os.environ['PATH']
|
saved_path = os.environ['PATH']
|
||||||
os.environ['PATH'] = os.path.dirname(self.cargo_path) + ':' + saved_path
|
os.environ['PATH'] = os.path.dirname(self.cargo_path) + ':' + saved_path
|
||||||
|
# Add [workspace] to Cargo.toml if it is not there.
|
||||||
cargo_toml = self.CargoToml(self.args)
|
added_workspace = False
|
||||||
if cargo_toml is None:
|
if self.args.add_workspace:
|
||||||
return self
|
with open(cargo_toml, 'r') as in_file:
|
||||||
|
cargo_toml_lines = in_file.readlines()
|
||||||
|
found_workspace = '[workspace]\n' in cargo_toml_lines
|
||||||
|
if found_workspace:
|
||||||
|
print('### WARNING: found [workspace] in Cargo.toml')
|
||||||
|
else:
|
||||||
|
with open(cargo_toml, 'a') as out_file:
|
||||||
|
out_file.write('[workspace]\n')
|
||||||
|
added_workspace = True
|
||||||
|
if self.args.verbose:
|
||||||
|
print('### INFO: added [workspace] to Cargo.toml')
|
||||||
for c in self.cargo:
|
for c in self.cargo:
|
||||||
features = ''
|
features = ''
|
||||||
if c != 'clean':
|
if c != 'clean':
|
||||||
@@ -1414,9 +1374,11 @@ class Runner(object):
|
|||||||
if self.args.tests:
|
if self.args.tests:
|
||||||
cmd = self.cargo_path + ' test' + features + cmd_tail_target + ' -- --list' + cmd_tail_redir
|
cmd = self.cargo_path + ' test' + features + cmd_tail_target + ' -- --list' + cmd_tail_redir
|
||||||
self.run_cmd(cmd, cargo_out)
|
self.run_cmd(cmd, cargo_out)
|
||||||
|
if added_workspace: # restore original Cargo.toml
|
||||||
cargo_toml.restore(self.args)
|
with open(cargo_toml, 'w') as out_file:
|
||||||
|
out_file.writelines(cargo_toml_lines)
|
||||||
|
if self.args.verbose:
|
||||||
|
print('### INFO: restored original Cargo.toml')
|
||||||
os.environ['PATH'] = saved_path
|
os.environ['PATH'] = saved_path
|
||||||
if not self.dry_run:
|
if not self.dry_run:
|
||||||
if not had_cargo_lock: # restore to no Cargo.lock state
|
if not had_cargo_lock: # restore to no Cargo.lock state
|
||||||
@@ -1746,11 +1708,6 @@ def get_parser():
|
|||||||
action='store_true',
|
action='store_true',
|
||||||
default=False,
|
default=False,
|
||||||
help='skip cargo command, parse cargo.out, and generate Android.bp')
|
help='skip cargo command, parse cargo.out, and generate Android.bp')
|
||||||
parser.add_argument(
|
|
||||||
'--orig-cargo-toml',
|
|
||||||
action='store_true',
|
|
||||||
default=False,
|
|
||||||
help='Use Cargo.toml.orig instead of Cargo.toml.')
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--tests',
|
'--tests',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
|||||||
Reference in New Issue
Block a user