From c51865074b89e1ea7c59f1ceeeb8f7352f135b1d Mon Sep 17 00:00:00 2001 From: Joel Galenson Date: Mon, 16 Aug 2021 11:22:47 -0700 Subject: [PATCH 1/2] Fixes for getting package version Older versions of Python's subprocess do not have capture_output, so just get stdout directly. Also pass the full path to cargo in case it is not on PATH. Test: Run Change-Id: I368e905a93b344bca6635c6ab7a60def809e88d5 --- scripts/cargo2android.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/cargo2android.py b/scripts/cargo2android.py index 1c01fc80e..9dd5f90d0 100755 --- a/scripts/cargo2android.py +++ b/scripts/cargo2android.py @@ -483,8 +483,9 @@ class Crate(object): and where the package name does not match the emitted crate_name (e.g. [lib.name] is set). """ - cargo_metadata = subprocess.run(['cargo', 'metadata', '--no-deps'], - cwd=os.path.abspath(self.cargo_dir), capture_output=True) + cargo_metadata = subprocess.run([self.runner.cargo_path, 'metadata', '--no-deps'], + cwd=os.path.abspath(self.cargo_dir), + stdout=subprocess.PIPE) if cargo_metadata.returncode: self.errors += ('ERROR: unable to get cargo metadata for package version; ' + 'return code ' + cargo_metadata.returncode + '\n') From 69ba8079213e040b98a65035e7b6989bb342607f Mon Sep 17 00:00:00 2001 From: Joel Galenson Date: Mon, 16 Aug 2021 11:31:29 -0700 Subject: [PATCH 2/2] Improve package version logic Only run cargo metadata on the main crate, not all of its dependencies. Pass it the --format-version argument to avoid a warning and be future-proof. Test: Run. Change-Id: Icdf88bc3b633d18266772ae813fc04b529b95765 --- scripts/cargo2android.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/cargo2android.py b/scripts/cargo2android.py index 9dd5f90d0..6e63ca115 100755 --- a/scripts/cargo2android.py +++ b/scripts/cargo2android.py @@ -456,7 +456,7 @@ class Crate(object): self.root_pkg = self.crate_name # get the package version from running cargo metadata - if not self.runner.args.no_pkg_vers: + if not self.runner.args.no_pkg_vers and not self.skip_crate(): self.get_pkg_version() self.device_supported = self.runner.args.device @@ -483,7 +483,8 @@ class Crate(object): and where the package name does not match the emitted crate_name (e.g. [lib.name] is set). """ - cargo_metadata = subprocess.run([self.runner.cargo_path, 'metadata', '--no-deps'], + cargo_metadata = subprocess.run([self.runner.cargo_path, 'metadata', '--no-deps', + '--format-version', '1'], cwd=os.path.abspath(self.cargo_dir), stdout=subprocess.PIPE) if cargo_metadata.returncode: