Merge "Do not use Cargo.lock during cargo build."
This commit is contained in:
@@ -1128,7 +1128,7 @@ class Runner(object):
|
|||||||
out_files = set()
|
out_files = set()
|
||||||
if list1 or list2:
|
if list1 or list2:
|
||||||
os.makedirs('out', exist_ok=True)
|
os.makedirs('out', exist_ok=True)
|
||||||
for path in (list1 + list2):
|
for path in list1 + list2:
|
||||||
file_name = path.split('/')[-1]
|
file_name = path.split('/')[-1]
|
||||||
out_files.add(file_name)
|
out_files.add(file_name)
|
||||||
shutil.copy(path, 'out/' + file_name)
|
shutil.copy(path, 'out/' + file_name)
|
||||||
@@ -1223,11 +1223,19 @@ class Runner(object):
|
|||||||
return self
|
return self
|
||||||
cargo_toml = './Cargo.toml'
|
cargo_toml = './Cargo.toml'
|
||||||
cargo_out = './cargo.out'
|
cargo_out = './cargo.out'
|
||||||
|
# Do not use Cargo.lock, because .bp rules are designed to
|
||||||
|
# run with "latest" crates avaialable on Android.
|
||||||
|
cargo_lock = './Cargo.lock'
|
||||||
|
cargo_lock_saved = './cargo.lock.saved'
|
||||||
|
had_cargo_lock = os.path.exists(cargo_lock)
|
||||||
if not os.access(cargo_toml, os.R_OK):
|
if not os.access(cargo_toml, os.R_OK):
|
||||||
print('ERROR: Cannot find or read', cargo_toml)
|
print('ERROR: Cannot find or read', cargo_toml)
|
||||||
return self
|
return self
|
||||||
if not self.dry_run and os.path.exists(cargo_out):
|
if not self.dry_run:
|
||||||
os.remove(cargo_out)
|
if os.path.exists(cargo_out):
|
||||||
|
os.remove(cargo_out)
|
||||||
|
if not self.args.use_cargo_lock and had_cargo_lock: # save it
|
||||||
|
os.rename(cargo_lock, cargo_lock_saved)
|
||||||
cmd_tail = ' --target-dir ' + TARGET_TMP + ' >> ' + cargo_out + ' 2>&1'
|
cmd_tail = ' --target-dir ' + TARGET_TMP + ' >> ' + cargo_out + ' 2>&1'
|
||||||
# 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']
|
||||||
@@ -1272,6 +1280,11 @@ class Runner(object):
|
|||||||
if self.args.verbose:
|
if self.args.verbose:
|
||||||
print('### INFO: restored original Cargo.toml')
|
print('### INFO: restored original Cargo.toml')
|
||||||
os.environ['PATH'] = saved_path
|
os.environ['PATH'] = saved_path
|
||||||
|
if not self.dry_run:
|
||||||
|
if not had_cargo_lock: # restore to no Cargo.lock state
|
||||||
|
os.remove(cargo_lock)
|
||||||
|
elif not self.args.use_cargo_lock: # restore saved Cargo.lock
|
||||||
|
os.rename(cargo_lock_saved, cargo_lock)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def dump_dependencies(self):
|
def dump_dependencies(self):
|
||||||
@@ -1534,6 +1547,12 @@ def parse_args():
|
|||||||
action='store_true',
|
action='store_true',
|
||||||
default=False,
|
default=False,
|
||||||
help='run cargo build --tests after normal build')
|
help='run cargo build --tests after normal build')
|
||||||
|
parser.add_argument(
|
||||||
|
'--use-cargo-lock',
|
||||||
|
action='store_true',
|
||||||
|
default=False,
|
||||||
|
help=('run cargo build with existing Cargo.lock ' +
|
||||||
|
'(used when some latest dependent crates failed)'))
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--verbose',
|
'--verbose',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
|||||||
Reference in New Issue
Block a user