chromeos-base: Cleanup cros-rust ebuilds.

This enables unit testing on arm and aarch64.

BUG=chromium:1158447
TEST=CQ passes

Change-Id: Idb63ac6548d7de79b200c9e003cf832067c03518
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/2590484
Tested-by: Allen Webb <allenwebb@google.com>
Auto-Submit: Allen Webb <allenwebb@google.com>
Commit-Queue: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-by: Chirantan Ekbote <chirantan@chromium.org>
diff --git a/chromeos-base/chromeos-dbus-bindings-rust/chromeos-dbus-bindings-rust-9999.ebuild b/chromeos-base/chromeos-dbus-bindings-rust/chromeos-dbus-bindings-rust-9999.ebuild
index 6816dbe..ff317db 100644
--- a/chromeos-base/chromeos-dbus-bindings-rust/chromeos-dbus-bindings-rust-9999.ebuild
+++ b/chromeos-base/chromeos-dbus-bindings-rust/chromeos-dbus-bindings-rust-9999.ebuild
@@ -3,38 +3,20 @@
 
 EAPI=7
 
+CROS_RUST_SUBDIR="chromeos-dbus-bindings"
+
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="chromeos-dbus-bindings"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
 
 inherit cros-workon cros-rust
 
 CROS_RUST_CRATE_NAME="chromeos_dbus_bindings"
 DESCRIPTION="Chrome OS D-Bus bindings generator for Rust."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-dbus-bindings/"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-dbus-bindings/"
 
 LICENSE="BSD-Google"
 SLOT="0/${PVR}"
 KEYWORDS="~*"
 
 BDEPEND=">=dev-rust/dbus-codegen-0.5.0"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/${CROS_WORKON_SUBTREE}"
-
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	ecargo_build
-	use test && ecargo_test --no-run
-}
-
-src_test() {
-	if use x86 || use amd64; then
-		ecargo_test
-	else
-		elog "Skipping rust unit tests on non-x86 platform"
-	fi
-}
diff --git a/chromeos-base/chunnel/chunnel-9999.ebuild b/chromeos-base/chunnel/chunnel-9999.ebuild
index b9666be..5d40ed0 100644
--- a/chromeos-base/chunnel/chunnel-9999.ebuild
+++ b/chromeos-base/chunnel/chunnel-9999.ebuild
@@ -2,14 +2,17 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
+
+CROS_RUST_SUBDIR="vm_tools/chunnel"
+
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="vm_tools/chunnel"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
 
 inherit cros-workon cros-rust user
 
 DESCRIPTION="Tunnel between localhost in different netns"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/chunnel"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/chunnel"
 
 LICENSE="BSD-Google"
 SLOT="0/0"
@@ -31,27 +34,13 @@
 	sys-apps/dbus:=
 "
 
-src_unpack() {
-	# Unpack both the project and dependency source code.
-	cros-workon_src_unpack
-
-	# The compilation happens in the vm_tools/chunnel subdirectory.
-	S+="/vm_tools/chunnel"
-
-	cros-rust_src_unpack
-}
-
 src_compile() {
 	ecargo_build
-	use test && ecargo_test --no-run
+	use test && ecargo_test --no-run --workspace
 }
 
 src_test() {
-	if ! use x86 && ! use amd64 ; then
-		elog "Skipping unit tests on non-x86 platform"
-	else
-		ecargo_test --all
-	fi
+	cros-rust_src_test --workspace
 }
 
 src_install() {
diff --git a/chromeos-base/ippusb_bridge/ippusb_bridge-9999.ebuild b/chromeos-base/ippusb_bridge/ippusb_bridge-9999.ebuild
index cfc05c9..00bbd05 100644
--- a/chromeos-base/ippusb_bridge/ippusb_bridge-9999.ebuild
+++ b/chromeos-base/ippusb_bridge/ippusb_bridge-9999.ebuild
@@ -2,6 +2,7 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
+
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -35,26 +36,6 @@
 	>=dev-rust/tiny_http-0.7:= <dev-rust/tiny_http-0.8
 "
 
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/ippusb_bridge"
-
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	ecargo_build
-	use test && ecargo_test --no-run
-}
-
-src_test() {
-	if use x86 || use amd64; then
-		ecargo_test
-	else
-		elog "Skipping rust unit tests on non-x86 platform"
-	fi
-}
-
 src_install() {
 	dobin "$(cros-rust_get_build_dir)"/ippusb_bridge
 
diff --git a/chromeos-base/memd/memd-9999.ebuild b/chromeos-base/memd/memd-9999.ebuild
index 232249b..1993e8b 100644
--- a/chromeos-base/memd/memd-9999.ebuild
+++ b/chromeos-base/memd/memd-9999.ebuild
@@ -2,9 +2,12 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
+
+CROS_RUST_SUBDIR="metrics/memd"
+
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="metrics/memd"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} common-mk"
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_OUTOFTREE_BUILD=1
 
@@ -33,29 +36,6 @@
 	=dev-rust/tempfile-3*:=
 	"
 
-src_unpack() {
-	# Unpack both the project and dependency source code.
-	cros-workon_src_unpack
-
-	# The compilation happens in the memd subdirectory.
-	S+="/metrics/memd"
-
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	ecargo_build
-	use test && ecargo_test --no-run
-}
-
-src_test() {
-	if ! use x86 && ! use amd64 ; then
-		elog "Skipping unit tests on non-x86 platform"
-	else
-		ecargo_test --all || die "memd test failed"
-	fi
-}
-
 src_install() {
 	# cargo doesn't know how to install cross-compiled binaries.  It will
 	# always install native binaries for the host system.  Install manually
diff --git a/chromeos-base/system_api-rust/system_api-rust-9999.ebuild b/chromeos-base/system_api-rust/system_api-rust-9999.ebuild
index 4865c7f..ab6a4af 100644
--- a/chromeos-base/system_api-rust/system_api-rust-9999.ebuild
+++ b/chromeos-base/system_api-rust/system_api-rust-9999.ebuild
@@ -3,17 +3,17 @@
 
 EAPI=7
 
+CROS_RUST_SUBDIR="system_api"
+
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="authpolicy/dbus_bindings debugd/dbus_bindings login_manager/dbus_bindings system_api"
-
-START_DIR="system_api"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} authpolicy/dbus_bindings debugd/dbus_bindings login_manager/dbus_bindings"
 
 inherit cros-workon cros-rust
 
 CROS_RUST_CRATE_NAME="system_api"
 DESCRIPTION="Chrome OS system API D-Bus bindings for Rust."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/system_api/"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/system_api/"
 
 LICENSE="BSD-Google"
 SLOT="0/${PVR}"
@@ -25,23 +25,3 @@
 	>chromeos-base/chromeos-dbus-bindings-rust-0.24.52-r16:=
 	=dev-rust/dbus-0.8*:=
 "
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/${START_DIR}"
-
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	ecargo_build
-	use test && ecargo_test --no-run
-}
-
-src_test() {
-	if use x86 || use amd64; then
-		ecargo_test
-	else
-		elog "Skipping rust unit tests on non-x86 platform"
-	fi
-}