Update ChromeOS platform packages to 15617.0.0

We need to update vboot_reference for the build, but it's tough to only
update one platform package without updating them all (mostly because we
need a new platform.eclass).

I did not upgrade any packages in the current auto update list, to avoid
accidental downgrade risks. I also didn't update chromeos-base/libec
because that requires a new C++ version.

I needed to add some small patches to libchrome, libbrillo, and
update_engine to allow using deprecated OpenSSL APIs and to also remove
a dependency on a recent C++ feature that we don't have yet.

BUG=b/307995090
TEST=presubmit
RELEASE_NOTE=None

Change-Id: I1781905f7618beec8ac47e3b9aa55e19fcabbb6f
Reviewed-on: https://cos-review.googlesource.com/c/third_party/overlays/chromiumos-overlay/+/61685
Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
Reviewed-by: He Gao <hegao@google.com>
diff --git a/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-0.0.1-r290.ebuild b/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-0.0.1-r354.ebuild
similarity index 75%
rename from chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-0.0.1-r290.ebuild
rename to chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-0.0.1-r354.ebuild
index 0a9ef88..6f43b0e 100644
--- a/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-0.0.1-r290.ebuild
+++ b/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-0.0.1-r354.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "a8b47c69bd1a0fdb95539d78e07cb5c8c81307a7" "84c38b6e3978ab7391ab1a2a696bfd4627401097")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "bf73b493b032889606e9405c316333dc45a5e135" "0a19f3a7d964bb9c758c96e942eddf3ec8c127fa")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "70f29ed06f63e9711e07708d8713281e6b332504" "84c38b6e3978ab7391ab1a2a696bfd4627401097")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "7d8a35364d50ee1a9de8310de0cf331759e94e73" "0a19f3a7d964bb9c758c96e942eddf3ec8c127fa")
 inherit cros-constants
 
 CROS_WORKON_PROJECT=(
@@ -51,6 +51,16 @@
 
 RDEPEND="
 	chromeos-base/aosp-frameworks-ml-nn:=
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/minijail:=
+	chromeos-base/nnapi:=
+	dev-cpp/abseil-cpp:=
+	dev-cpp/gtest:=
+	dev-libs/openssl:0=
+	dev-libs/re2:=
+	net-dns/c-ares:=
+	net-libs/grpc:=
+	sys-libs/zlib:=
 "
 
 DEPEND="
diff --git a/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-9999.ebuild b/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-9999.ebuild
index f7619d5..a39d3a9 100644
--- a/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-9999.ebuild
+++ b/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-9999.ebuild
@@ -49,6 +49,16 @@
 
 RDEPEND="
 	chromeos-base/aosp-frameworks-ml-nn:=
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/minijail:=
+	chromeos-base/nnapi:=
+	dev-cpp/abseil-cpp:=
+	dev-cpp/gtest:=
+	dev-libs/openssl:0=
+	dev-libs/re2:=
+	net-dns/c-ares:=
+	net-libs/grpc:=
+	sys-libs/zlib:=
 "
 
 DEPEND="
diff --git a/chromeos-base/aosp-frameworks-ml-nn/OWNERS b/chromeos-base/aosp-frameworks-ml-nn/OWNERS
index db7e695..6ceece7 100644
--- a/chromeos-base/aosp-frameworks-ml-nn/OWNERS
+++ b/chromeos-base/aosp-frameworks-ml-nn/OWNERS
@@ -1,2 +1,2 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+jmpollock@google.com
+slangley@google.com
diff --git a/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r470.ebuild b/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r535.ebuild
similarity index 93%
rename from chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r470.ebuild
rename to chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r535.ebuild
index 31c9cc6..539e401 100644
--- a/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r470.ebuild
+++ b/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r535.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "a8b47c69bd1a0fdb95539d78e07cb5c8c81307a7" "84c38b6e3978ab7391ab1a2a696bfd4627401097")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "bf73b493b032889606e9405c316333dc45a5e135" "0a19f3a7d964bb9c758c96e942eddf3ec8c127fa")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "70f29ed06f63e9711e07708d8713281e6b332504" "84c38b6e3978ab7391ab1a2a696bfd4627401097")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "7d8a35364d50ee1a9de8310de0cf331759e94e73" "0a19f3a7d964bb9c758c96e942eddf3ec8c127fa")
 inherit cros-constants
 
 CROS_WORKON_PROJECT=(
@@ -40,6 +40,9 @@
 CROS_WORKON_INCREMENTAL_BUILD=1
 
 PLATFORM_SUBDIR="aosp/frameworks/ml"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform flag-o-matic
 
@@ -51,11 +54,17 @@
 IUSE="cpu_flags_x86_avx2 vendor-nnhal minimal-driver xnnpack fuzzer strace_ipc_driver"
 
 RDEPEND="
-	chromeos-base/chromeos-login
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/chromeos-login:=
 	chromeos-base/nnapi:=
-	dev-libs/openssl:=
-	sci-libs/tensorflow[xnnpack?]
 	chromeos-base/session_manager-client:=
+	dev-cpp/abseil-cpp:=
+	dev-libs/openssl:=
+	dev-libs/re2:=
+	net-dns/c-ares:=
+	net-libs/grpc:=
+	sci-libs/tensorflow[xnnpack?]
+	sys-libs/zlib:=
 "
 
 DEPEND="
@@ -65,6 +74,10 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/minijail
+"
+
 src_configure() {
 	# This warning is triggered in tensorflow.
 	append-flags "-Wno-unused-but-set-variable"
diff --git a/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-9999.ebuild b/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-9999.ebuild
index 735a0ac..34cbe17 100644
--- a/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-9999.ebuild
+++ b/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-9999.ebuild
@@ -38,6 +38,9 @@
 CROS_WORKON_INCREMENTAL_BUILD=1
 
 PLATFORM_SUBDIR="aosp/frameworks/ml"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform flag-o-matic
 
@@ -49,11 +52,17 @@
 IUSE="cpu_flags_x86_avx2 vendor-nnhal minimal-driver xnnpack fuzzer strace_ipc_driver"
 
 RDEPEND="
-	chromeos-base/chromeos-login
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/chromeos-login:=
 	chromeos-base/nnapi:=
-	dev-libs/openssl:=
-	sci-libs/tensorflow[xnnpack?]
 	chromeos-base/session_manager-client:=
+	dev-cpp/abseil-cpp:=
+	dev-libs/openssl:=
+	dev-libs/re2:=
+	net-dns/c-ares:=
+	net-libs/grpc:=
+	sci-libs/tensorflow[xnnpack?]
+	sys-libs/zlib:=
 "
 
 DEPEND="
@@ -63,6 +72,10 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/minijail
+"
+
 src_configure() {
 	# This warning is triggered in tensorflow.
 	append-flags "-Wno-unused-but-set-variable"
diff --git a/chromeos-base/arc-adbd/OWNERS b/chromeos-base/arc-adbd/OWNERS
index db7e695..9f9f940 100644
--- a/chromeos-base/arc-adbd/OWNERS
+++ b/chromeos-base/arc-adbd/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/adbd/OWNERS
diff --git a/chromeos-base/arc-adbd/arc-adbd-0.0.1-r593.ebuild b/chromeos-base/arc-adbd/arc-adbd-0.0.1-r653.ebuild
similarity index 83%
rename from chromeos-base/arc-adbd/arc-adbd-0.0.1-r593.ebuild
rename to chromeos-base/arc-adbd/arc-adbd-0.0.1-r653.ebuild
index 1897553..2fcc939c 100644
--- a/chromeos-base/arc-adbd/arc-adbd-0.0.1-r593.ebuild
+++ b/chromeos-base/arc-adbd/arc-adbd-0.0.1-r653.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("fd7cc1c8d2d0bdcfbee7335c0b535ee09c0ca534" "1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("913fa0316d5234322a3f437139d9d194d33aebe7" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/arc-apk-cache/OWNERS b/chromeos-base/arc-apk-cache/OWNERS
index db7e695..491fd22 100644
--- a/chromeos-base/arc-apk-cache/OWNERS
+++ b/chromeos-base/arc-apk-cache/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/apk-cache/OWNERS
diff --git a/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r588.ebuild b/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r648.ebuild
similarity index 81%
rename from chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r588.ebuild
rename to chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r648.ebuild
index f0981bb..db7a869 100644
--- a/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r588.ebuild
+++ b/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r648.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "8ea6cfbc2784541fbff2c686d1ea0bc4288e6397" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "88a701a6feb8a439a39fb88df0cc64dd8708420d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/arc-appfuse/OWNERS b/chromeos-base/arc-appfuse/OWNERS
index db7e695..85365f0 100644
--- a/chromeos-base/arc-appfuse/OWNERS
+++ b/chromeos-base/arc-appfuse/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/container/appfuse/OWNERS
diff --git a/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r524.ebuild b/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r583.ebuild
similarity index 81%
rename from chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r524.ebuild
rename to chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r583.ebuild
index e4dbb92..5d4b07f 100644
--- a/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r524.ebuild
+++ b/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r583.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "56f41cdbd1e2645199334f1981857f5ea87daee3" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "77d9147791ab3acaa50c4b202c46b3d7ab7d8838" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/arc-host-clock-service/OWNERS b/chromeos-base/arc-host-clock-service/OWNERS
index db7e695..4e38166 100644
--- a/chromeos-base/arc-host-clock-service/OWNERS
+++ b/chromeos-base/arc-host-clock-service/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/OWNERS
diff --git a/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r261.ebuild b/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r320.ebuild
similarity index 78%
rename from chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r261.ebuild
rename to chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r320.ebuild
index 1e30a41..74cc27b 100644
--- a/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r261.ebuild
+++ b/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r320.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "6be7230a372ac2b77e9da091f1edd3d768232ec7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "8058ceae73aad0672a6fa704d7743a7c456932db" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/arc-keymaster/OWNERS b/chromeos-base/arc-keymaster/OWNERS
index db7e695..318c0f9 100644
--- a/chromeos-base/arc-keymaster/OWNERS
+++ b/chromeos-base/arc-keymaster/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/keymaster/OWNERS
diff --git a/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r475.ebuild b/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r541.ebuild
similarity index 87%
rename from chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r475.ebuild
rename to chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r541.ebuild
index 0f48449..e65ca5c 100644
--- a/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r475.ebuild
+++ b/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r541.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "49dfc58d6c4c66f5d0b0d06f0161da4e602a1293")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "fca302ad0c7652f979dd46a130b29dad529e968d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6dbc19849752c206e135ab59349ebb1cc62bb435")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "49dfc58d6c4c66f5d0b0d06f0161da4e602a1293")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "072c7e13d582d4be44e4be99850c7bf4fd9828ab" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6dbc19849752c206e135ab59349ebb1cc62bb435")
 inherit cros-constants
 
 CROS_WORKON_INCREMENTAL_BUILD="1"
@@ -40,11 +40,17 @@
 KEYWORDS="*"
 IUSE="+seccomp"
 
+# TODO(b/285015727): Here we depend on arc-keymint for
+# arc_keymint_feature_query. When arc-keymint is launched and
+# arc_keymint_feature_query is no longer needed, remove the dependency to
+# arc-keymint.
 RDEPEND="
 	chromeos-base/chaps:=
 	chromeos-base/cryptohome:=
 	chromeos-base/cryptohome-client:=
+	chromeos-base/arc-keymint:=
 	chromeos-base/minijail:=
+	dev-libs/openssl:0=
 	dev-libs/protobuf:=
 "
 
@@ -93,6 +99,10 @@
 	eapply "${FILESDIR}/0001-keymaster-fix-C-17-compilation.patch"
 	# Make P Keymaster compatible with latest BoringSSL.
 	eapply "${FILESDIR}/keymaster-boringssl-update.patch"
+	# Fix a crash with return error rather than assert.
+	eapply "${FILESDIR}/keymaster-assert-fix.patch"
+	(cd "${WORKDIR}/${BORINGSSL_P}" &&
+		eapply "${FILESDIR}/boringssl-suppress-unused-but-set-variable.patch") || die
 }
 
 src_configure() {
diff --git a/chromeos-base/arc-keymaster/arc-keymaster-9999.ebuild b/chromeos-base/arc-keymaster/arc-keymaster-9999.ebuild
index 63465bd..96b4707 100644
--- a/chromeos-base/arc-keymaster/arc-keymaster-9999.ebuild
+++ b/chromeos-base/arc-keymaster/arc-keymaster-9999.ebuild
@@ -38,11 +38,17 @@
 KEYWORDS="~*"
 IUSE="+seccomp"
 
+# TODO(b/285015727): Here we depend on arc-keymint for
+# arc_keymint_feature_query. When arc-keymint is launched and
+# arc_keymint_feature_query is no longer needed, remove the dependency to
+# arc-keymint.
 RDEPEND="
 	chromeos-base/chaps:=
 	chromeos-base/cryptohome:=
 	chromeos-base/cryptohome-client:=
+	chromeos-base/arc-keymint:=
 	chromeos-base/minijail:=
+	dev-libs/openssl:0=
 	dev-libs/protobuf:=
 "
 
@@ -91,6 +97,10 @@
 	eapply "${FILESDIR}/0001-keymaster-fix-C-17-compilation.patch"
 	# Make P Keymaster compatible with latest BoringSSL.
 	eapply "${FILESDIR}/keymaster-boringssl-update.patch"
+	# Fix a crash with return error rather than assert.
+	eapply "${FILESDIR}/keymaster-assert-fix.patch"
+	(cd "${WORKDIR}/${BORINGSSL_P}" &&
+		eapply "${FILESDIR}/boringssl-suppress-unused-but-set-variable.patch") || die
 }
 
 src_configure() {
diff --git a/chromeos-base/arc-keymaster/files/boringssl-suppress-unused-but-set-variable.patch b/chromeos-base/arc-keymaster/files/boringssl-suppress-unused-but-set-variable.patch
new file mode 100644
index 0000000..50c27c6
--- /dev/null
+++ b/chromeos-base/arc-keymaster/files/boringssl-suppress-unused-but-set-variable.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 55c4011..bb819ed 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -117,7 +117,7 @@ endif()
+ if(CMAKE_COMPILER_IS_GNUCXX OR CLANG)
+   # Note clang-cl is odd and sets both CLANG and MSVC. We base our configuration
+   # primarily on our normal Clang one.
+-  set(C_CXX_FLAGS "-Werror -Wformat=2 -Wsign-compare -Wmissing-field-initializers -Wwrite-strings -Wvla -Wshadow")
++  set(C_CXX_FLAGS "-Werror -Wformat=2 -Wsign-compare -Wmissing-field-initializers -Wwrite-strings -Wvla -Wshadow -Wno-error=unused-but-set-variable")
+   if(MSVC)
+     # clang-cl sets different default warnings than clang. It also treats -Wall
+     # as -Weverything, to match MSVC. Instead -W3 is the alias for -Wall.
diff --git a/chromeos-base/arc-keymaster/files/keymaster-assert-fix.patch b/chromeos-base/arc-keymaster/files/keymaster-assert-fix.patch
new file mode 100644
index 0000000..59490df
--- /dev/null
+++ b/chromeos-base/arc-keymaster/files/keymaster-assert-fix.patch
@@ -0,0 +1,85 @@
+commit 1d0b369d8131d8a7151188e3364a89cef2a5b93e
+Author: Yao Li <yaohuali@google.com>
+Date:   Mon Aug 28 13:53:10 2023
+
+    [PATCH] keymaster: return error rather than assert
+    
+    There has been crash report caused by the assert under case KM_BOOL, in build_auth_list().
+    
+    The later version of Android has ASSERT_OR_RETURN_ERROR to avoid doing
+    assert in release build.
+    
+    Bug: 291450576
+    Test: atest CtsKeystoreTestCases
+    Change-Id: Ic7b11672c12f4c96a204d3ac42ff220c3fded73e
+
+diff --git a/km_openssl/attestation_record.cpp b/km_openssl/attestation_record.cpp
+index f59a9f3..58d9a94 100644
+--- a/km_openssl/attestation_record.cpp
++++ b/km_openssl/attestation_record.cpp
+@@ -24,6 +24,14 @@
+ #include <keymaster/km_openssl/openssl_err.h>
+ #include <keymaster/km_openssl/openssl_utils.h>
+ 
++#define ASSERT_OR_RETURN_ERROR(stmt, error)                                                        \
++    do {                                                                                           \
++        assert(stmt);                                                                              \
++        if (!(stmt)) {                                                                             \
++            return error;                                                                          \
++        }                                                                                          \
++    } while (0)
++
+ namespace keymaster {
+ 
+ constexpr uint kCurrentKeymasterVersion = 3;
+@@ -96,7 +104,7 @@ static keymaster_error_t insert_integer(ASN1_INTEGER* value, ASN1_INTEGER** dest
+ // Put the contents of the keymaster AuthorizationSet auth_list in to the ASN.1 record structure,
+ // record.
+ keymaster_error_t build_auth_list(const AuthorizationSet& auth_list, KM_AUTH_LIST* record) {
+-    assert(record);
++    ASSERT_OR_RETURN_ERROR(record, KM_ERROR_UNEXPECTED_NULL_POINTER);
+ 
+     if (auth_list.empty())
+         return KM_ERROR_OK;
+@@ -269,8 +277,9 @@ keymaster_error_t build_auth_list(const AuthorizationSet& auth_list, KM_AUTH_LIS
+         case KM_ENUM_REP:
+         case KM_UINT:
+         case KM_UINT_REP: {
+-            assert((keymaster_tag_repeatable(entry.tag) && integer_set) ||
+-                   (!keymaster_tag_repeatable(entry.tag) && integer_ptr));
++            ASSERT_OR_RETURN_ERROR((keymaster_tag_repeatable(entry.tag) && integer_set) ||
++                                       (!keymaster_tag_repeatable(entry.tag) && integer_ptr),
++                                   KM_ERROR_INVALID_TAG);
+ 
+             UniquePtr<ASN1_INTEGER, ASN1_INTEGER_Delete> value(ASN1_INTEGER_new());
+             if (!value.get())
+@@ -285,8 +294,9 @@ keymaster_error_t build_auth_list(const AuthorizationSet& auth_list, KM_AUTH_LIS
+         case KM_ULONG:
+         case KM_ULONG_REP:
+         case KM_DATE: {
+-            assert((keymaster_tag_repeatable(entry.tag) && integer_set) ||
+-                   (!keymaster_tag_repeatable(entry.tag) && integer_ptr));
++            ASSERT_OR_RETURN_ERROR((keymaster_tag_repeatable(entry.tag) && integer_set) ||
++                                       (!keymaster_tag_repeatable(entry.tag) && integer_ptr),
++                                   KM_ERROR_INVALID_TAG);
+ 
+             UniquePtr<BIGNUM, BIGNUM_Delete> bn_value(BN_new());
+             if (!bn_value.get())
+@@ -312,7 +322,7 @@ keymaster_error_t build_auth_list(const AuthorizationSet& auth_list, KM_AUTH_LIS
+         }
+ 
+         case KM_BOOL:
+-            assert(bool_ptr);
++            ASSERT_OR_RETURN_ERROR(bool_ptr, KM_ERROR_INVALID_TAG);
+             if (!*bool_ptr)
+                 *bool_ptr = ASN1_NULL_new();
+             if (!*bool_ptr)
+@@ -321,7 +331,7 @@ keymaster_error_t build_auth_list(const AuthorizationSet& auth_list, KM_AUTH_LIS
+ 
+         /* Byte arrays*/
+         case KM_BYTES:
+-            assert(string_ptr);
++            ASSERT_OR_RETURN_ERROR(string_ptr, KM_ERROR_INVALID_TAG);
+             if (!*string_ptr)
+                 *string_ptr = ASN1_OCTET_STRING_new();
+             if (!*string_ptr)
diff --git a/chromeos-base/arc-keymint/arc-keymint-0.0.1-r47.ebuild b/chromeos-base/arc-keymint/arc-keymint-0.0.1-r157.ebuild
similarity index 80%
rename from chromeos-base/arc-keymint/arc-keymint-0.0.1-r47.ebuild
rename to chromeos-base/arc-keymint/arc-keymint-0.0.1-r157.ebuild
index 0c875d6..9458909 100644
--- a/chromeos-base/arc-keymint/arc-keymint-0.0.1-r47.ebuild
+++ b/chromeos-base/arc-keymint/arc-keymint-0.0.1-r157.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "485245d82aef653ce9c3c62868f68f22758f22de" "dcc518ef32993d0171d0849bd3677c9d0948f8bb" "9537e373c71c26c5495be60d267dff5eb88b180f" "2e909ccdf779939e5caa5ab52851f38f22037ae9" "84292b6e8f928f5681869e621194fca34fdb8fad")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "b3b3e68c0f8dac87cdda3bf80c77c02e46b124dc" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "1bbc2a3964e8e8350f97b9fdfaaba1220529ed20" "1a77f7f025502657540bbec1f57cbbb6478be4b4" "6fadd8addab8504349cdeefe51b583b97c2ae7f4" "ae1614ebb22b8aa59ecd0d29e1a0e162deaa2d09" "cb77643c93455808f15fc807c39d6aad34d1e473")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "316ee9015b661aae840f2668943eb697a9269643" "dcc518ef32993d0171d0849bd3677c9d0948f8bb" "9537e373c71c26c5495be60d267dff5eb88b180f" "2e909ccdf779939e5caa5ab52851f38f22037ae9" "a7f5ed58d316152dc2fe4cd956be7e6d4ddbf1a3")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "5c1598293a3b2d474abb7aafc492654f9cb521de" "1db89a1180414051ba8f9b1d6781491e2b4b3592" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "1bbc2a3964e8e8350f97b9fdfaaba1220529ed20" "1a77f7f025502657540bbec1f57cbbb6478be4b4" "6fadd8addab8504349cdeefe51b583b97c2ae7f4" "ae1614ebb22b8aa59ecd0d29e1a0e162deaa2d09" "cb77643c93455808f15fc807c39d6aad34d1e473")
 inherit cros-constants
 
 CROS_WORKON_INCREMENTAL_BUILD="1"
@@ -52,7 +52,7 @@
 )
 
 CROS_WORKON_SUBTREE=(
-	"common-mk arc/keymint .gn"
+	"common-mk featured arc/keymint .gn"
 	""
 	""
 	""
@@ -62,6 +62,10 @@
 
 PLATFORM_SUBDIR="arc/keymint"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 # This BoringSSL integration follows go/boringssl-cros.
 # DO NOT COPY TO OTHER PACKAGES WITHOUT CONSULTING SECURITY TEAM.
 BORINGSSL_PN="boringssl"
@@ -72,7 +76,7 @@
 CMAKE_USE_DIR="${WORKDIR}/${BORINGSSL_P}"
 BUILD_DIR="${WORKDIR}/${BORINGSSL_P}_build"
 
-inherit flag-o-matic cmake-utils cros-workon platform user
+inherit flag-o-matic cmake-utils cros-workon platform
 
 DESCRIPTION="Android keymint service in Chrome OS."
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/keymint"
@@ -80,14 +84,20 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="+seccomp"
+IUSE="
+	+seccomp
+	keymint
+"
 
 RDEPEND="
 	chromeos-base/chaps:=
 	chromeos-base/cryptohome:=
 	chromeos-base/cryptohome-client:=
+	chromeos-base/featured:=
 	chromeos-base/minijail:=
 	dev-libs/protobuf:=
+	acct-group/arc-keymintd
+	acct-user/arc-keymintd
 "
 
 DEPEND="
@@ -107,6 +117,8 @@
 	# Taint BoringSSL headers so they don't silently mix with OpenSSL.
 	find "${BORINGSSL_P}/include/openssl" -type f -exec awk -i inplace -v \
 		"taint=${HEADER_TAINT}" 'NR == 1 {print taint} {print}' {} \;
+	(cd "${WORKDIR}/${BORINGSSL_P}" &&
+		eapply "${FILESDIR}/boringssl-suppress-unused-but-set-variable.patch") || die
 }
 
 src_prepare() {
@@ -163,17 +175,9 @@
 	platform_src_install
 
 	# TODO(b/274723323):
-	# Init configuration
-	# Dbus configuration
-	# Add seccomp rules here
-	# Install shared libs and binary.
 	# Finalize fuzzers
 }
 
-# TODO(b/274723323): Add Package Pre Install
-# pkg_preinst() {
-# }
-
 platform_pkg_test() {
 	platform_test "run" "${OUT}/arc-keymintd_testrunner"
 }
diff --git a/chromeos-base/arc-keymint/arc-keymint-9999.ebuild b/chromeos-base/arc-keymint/arc-keymint-9999.ebuild
index f413c993..669d565 100644
--- a/chromeos-base/arc-keymint/arc-keymint-9999.ebuild
+++ b/chromeos-base/arc-keymint/arc-keymint-9999.ebuild
@@ -50,7 +50,7 @@
 )
 
 CROS_WORKON_SUBTREE=(
-	"common-mk arc/keymint .gn"
+	"common-mk featured arc/keymint .gn"
 	""
 	""
 	""
@@ -60,6 +60,10 @@
 
 PLATFORM_SUBDIR="arc/keymint"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 # This BoringSSL integration follows go/boringssl-cros.
 # DO NOT COPY TO OTHER PACKAGES WITHOUT CONSULTING SECURITY TEAM.
 BORINGSSL_PN="boringssl"
@@ -70,7 +74,7 @@
 CMAKE_USE_DIR="${WORKDIR}/${BORINGSSL_P}"
 BUILD_DIR="${WORKDIR}/${BORINGSSL_P}_build"
 
-inherit flag-o-matic cmake-utils cros-workon platform user
+inherit flag-o-matic cmake-utils cros-workon platform
 
 DESCRIPTION="Android keymint service in Chrome OS."
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/keymint"
@@ -78,14 +82,20 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="+seccomp"
+IUSE="
+	+seccomp
+	keymint
+"
 
 RDEPEND="
 	chromeos-base/chaps:=
 	chromeos-base/cryptohome:=
 	chromeos-base/cryptohome-client:=
+	chromeos-base/featured:=
 	chromeos-base/minijail:=
 	dev-libs/protobuf:=
+	acct-group/arc-keymintd
+	acct-user/arc-keymintd
 "
 
 DEPEND="
@@ -105,6 +115,8 @@
 	# Taint BoringSSL headers so they don't silently mix with OpenSSL.
 	find "${BORINGSSL_P}/include/openssl" -type f -exec awk -i inplace -v \
 		"taint=${HEADER_TAINT}" 'NR == 1 {print taint} {print}' {} \;
+	(cd "${WORKDIR}/${BORINGSSL_P}" &&
+		eapply "${FILESDIR}/boringssl-suppress-unused-but-set-variable.patch") || die
 }
 
 src_prepare() {
@@ -161,17 +173,9 @@
 	platform_src_install
 
 	# TODO(b/274723323):
-	# Init configuration
-	# Dbus configuration
-	# Add seccomp rules here
-	# Install shared libs and binary.
 	# Finalize fuzzers
 }
 
-# TODO(b/274723323): Add Package Pre Install
-# pkg_preinst() {
-# }
-
 platform_pkg_test() {
 	platform_test "run" "${OUT}/arc-keymintd_testrunner"
 }
diff --git a/chromeos-base/arc-keymint/files/boringssl-suppress-unused-but-set-variable.patch b/chromeos-base/arc-keymint/files/boringssl-suppress-unused-but-set-variable.patch
new file mode 100644
index 0000000..50c27c6
--- /dev/null
+++ b/chromeos-base/arc-keymint/files/boringssl-suppress-unused-but-set-variable.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 55c4011..bb819ed 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -117,7 +117,7 @@ endif()
+ if(CMAKE_COMPILER_IS_GNUCXX OR CLANG)
+   # Note clang-cl is odd and sets both CLANG and MSVC. We base our configuration
+   # primarily on our normal Clang one.
+-  set(C_CXX_FLAGS "-Werror -Wformat=2 -Wsign-compare -Wmissing-field-initializers -Wwrite-strings -Wvla -Wshadow")
++  set(C_CXX_FLAGS "-Werror -Wformat=2 -Wsign-compare -Wmissing-field-initializers -Wwrite-strings -Wvla -Wshadow -Wno-error=unused-but-set-variable")
+   if(MSVC)
+     # clang-cl sets different default warnings than clang. It also treats -Wall
+     # as -Weverything, to match MSVC. Instead -W3 is the alias for -Wall.
diff --git a/chromeos-base/arc-obb-mounter/OWNERS b/chromeos-base/arc-obb-mounter/OWNERS
index db7e695..63b2d6b 100644
--- a/chromeos-base/arc-obb-mounter/OWNERS
+++ b/chromeos-base/arc-obb-mounter/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/container/obb-mounter/OWNERS
diff --git a/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r664.ebuild b/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r723.ebuild
similarity index 87%
rename from chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r664.ebuild
rename to chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r723.ebuild
index c6468c8..c9cb605 100644
--- a/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r664.ebuild
+++ b/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r723.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "df315850f542afee37b3b1ae759df97a02b103ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "02c3f17b7385c1a08f3d8349a28998eb6d6c9351" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/arc-sdcard/OWNERS b/chromeos-base/arc-sdcard/OWNERS
index db7e695..2dd75aa 100644
--- a/chromeos-base/arc-sdcard/OWNERS
+++ b/chromeos-base/arc-sdcard/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/container/sdcard/OWNERS
diff --git a/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r494.ebuild b/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r552.ebuild
similarity index 90%
rename from chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r494.ebuild
rename to chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r552.ebuild
index 45ccf5e..e19f26a 100644
--- a/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r494.ebuild
+++ b/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r552.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "3c4e06bca7e65b43f219abdec9ba34c34201f065" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "3c4e06bca7e65b43f219abdec9ba34c34201f065" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/arc-setup/OWNERS b/chromeos-base/arc-setup/OWNERS
index db7e695..388b2c4 100644
--- a/chromeos-base/arc-setup/OWNERS
+++ b/chromeos-base/arc-setup/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/setup/OWNERS
diff --git a/chromeos-base/arc-setup/arc-setup-0.0.1-r1846.ebuild b/chromeos-base/arc-setup/arc-setup-0.0.1-r2034.ebuild
similarity index 84%
rename from chromeos-base/arc-setup/arc-setup-0.0.1-r1846.ebuild
rename to chromeos-base/arc-setup/arc-setup-0.0.1-r2034.ebuild
index 7a372a2..ac47f2c 100644
--- a/chromeos-base/arc-setup/arc-setup-0.0.1-r1846.ebuild
+++ b/chromeos-base/arc-setup/arc-setup-0.0.1-r2034.ebuild
@@ -3,14 +3,14 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "3cb20bcbe23b0391b6af995ba5de8da136e5112b" "f2431337126663ce80d01b13755ed940d700e70a" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "2c84df8efeeeed48275e02c8bfbe6a2fd12ad438" "9942607d3de36a375711502f44f44d28aac7bd3a" "3c167588538b9dd3054faa5a301fa17387858e60" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "e74aa615248081a4161427718d8576d2a9968d5f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk arc/setup chromeos-config metrics .gn"
+# TODO(b/187784160): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk arc/setup chromeos-config libsegmentation metrics net-base .gn"
 
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="arc/setup"
@@ -42,8 +42,11 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cryptohome-client:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/libsegmentation:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel-client:=
 	dev-libs/libxml2:=
+	dev-libs/openssl:=
 	dev-libs/protobuf:=
 	sys-libs/libselinux:=
 	chromeos-base/minijail:=
@@ -55,7 +58,7 @@
 	chromeos-base/patchpanel
 	arcvm? ( chromeos-base/crosvm )
 	arcpp? (
-		chromeos-base/swap-init
+		chromeos-base/swap_management
 		sys-apps/restorecon
 	)
 "
@@ -106,6 +109,7 @@
 		doins init/arc-boot-continue.conf
 		doins init/arc-lifetime.conf
 		doins init/arc-update-restorecon-last.conf
+		doins init/arcpp-media-sharing-services.conf
 		doins init/arcpp-post-login-services.conf
 		doins init/arc-sdcard.conf
 		doins init/arc-sdcard-mount.conf
diff --git a/chromeos-base/arc-setup/arc-setup-9999.ebuild b/chromeos-base/arc-setup/arc-setup-9999.ebuild
index 6714f03..31da5e7 100644
--- a/chromeos-base/arc-setup/arc-setup-9999.ebuild
+++ b/chromeos-base/arc-setup/arc-setup-9999.ebuild
@@ -7,8 +7,8 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk arc/setup chromeos-config metrics .gn"
+# TODO(b/187784160): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk arc/setup chromeos-config libsegmentation metrics net-base .gn"
 
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="arc/setup"
@@ -40,8 +40,11 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cryptohome-client:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/libsegmentation:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel-client:=
 	dev-libs/libxml2:=
+	dev-libs/openssl:=
 	dev-libs/protobuf:=
 	sys-libs/libselinux:=
 	chromeos-base/minijail:=
@@ -53,7 +56,7 @@
 	chromeos-base/patchpanel
 	arcvm? ( chromeos-base/crosvm )
 	arcpp? (
-		chromeos-base/swap-init
+		chromeos-base/swap_management
 		sys-apps/restorecon
 	)
 "
@@ -104,6 +107,7 @@
 		doins init/arc-boot-continue.conf
 		doins init/arc-lifetime.conf
 		doins init/arc-update-restorecon-last.conf
+		doins init/arcpp-media-sharing-services.conf
 		doins init/arcpp-post-login-services.conf
 		doins init/arc-sdcard.conf
 		doins init/arc-sdcard-mount.conf
diff --git a/chromeos-base/arcvm-boot-notification-server/OWNERS b/chromeos-base/arcvm-boot-notification-server/OWNERS
index db7e695..4e38166 100644
--- a/chromeos-base/arcvm-boot-notification-server/OWNERS
+++ b/chromeos-base/arcvm-boot-notification-server/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/OWNERS
diff --git a/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r312.ebuild b/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r373.ebuild
similarity index 79%
rename from chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r312.ebuild
rename to chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r373.ebuild
index 7c72b16..d22147a 100644
--- a/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r312.ebuild
+++ b/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r373.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f837e7bd7ababe0287cba480d5fbc3adcf78fa75" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "b4aa3c2e5ba0ada5ab410c3b22e4f727876f36c2" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -13,6 +13,9 @@
 CROS_WORKON_SUBTREE="common-mk arc/vm/boot_notification_server .gn"
 
 PLATFORM_SUBDIR="arc/vm/boot_notification_server"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform user
 
diff --git a/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-9999.ebuild b/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-9999.ebuild
index 14d0b7e..be196c8 100644
--- a/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-9999.ebuild
+++ b/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-9999.ebuild
@@ -11,6 +11,9 @@
 CROS_WORKON_SUBTREE="common-mk arc/vm/boot_notification_server .gn"
 
 PLATFORM_SUBDIR="arc/vm/boot_notification_server"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform user
 
diff --git a/chromeos-base/arcvm-common-scripts/OWNERS b/chromeos-base/arcvm-common-scripts/OWNERS
index db7e695..4e38166 100644
--- a/chromeos-base/arcvm-common-scripts/OWNERS
+++ b/chromeos-base/arcvm-common-scripts/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/OWNERS
diff --git a/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r359.ebuild b/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r418.ebuild
similarity index 78%
rename from chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r359.ebuild
rename to chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r418.ebuild
index 66e4252..d9730b6 100644
--- a/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r359.ebuild
+++ b/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r418.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "1db889a5a97a600207a6e8b2dfea31e600ecb987" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "39d9f26629ccd432f71f967a0382fe9c7652ba91" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/arcvm-data-migrator/arcvm-data-migrator-0.0.1-r356.ebuild b/chromeos-base/arcvm-data-migrator/arcvm-data-migrator-0.0.1-r620.ebuild
similarity index 78%
rename from chromeos-base/arcvm-data-migrator/arcvm-data-migrator-0.0.1-r356.ebuild
rename to chromeos-base/arcvm-data-migrator/arcvm-data-migrator-0.0.1-r620.ebuild
index 0306368..d778fab 100644
--- a/chromeos-base/arcvm-data-migrator/arcvm-data-migrator-0.0.1-r356.ebuild
+++ b/chromeos-base/arcvm-data-migrator/arcvm-data-migrator-0.0.1-r620.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="f2313f9732f2c9ed271e6ecc28b4d9968772b80b"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "4e94126d8fdd60d48a7766937d31c4bc8275834a" "f61158d0ca999f6f893bb1581d1f0aa772f8b37a" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="63150342c81b7d2c6e55b02852c0837a782f27f6"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "39b4100fa7d7687737b3841e0596f495c13a2403" "15c4f8762d19830c655ec02d2b76a7ab8d7c4530" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/arcvm-media-sharing-services/arcvm-media-sharing-services-0.0.1-r30.ebuild b/chromeos-base/arcvm-media-sharing-services/arcvm-media-sharing-services-0.0.1-r89.ebuild
similarity index 81%
rename from chromeos-base/arcvm-media-sharing-services/arcvm-media-sharing-services-0.0.1-r30.ebuild
rename to chromeos-base/arcvm-media-sharing-services/arcvm-media-sharing-services-0.0.1-r89.ebuild
index 1024ed7..e250253 100644
--- a/chromeos-base/arcvm-media-sharing-services/arcvm-media-sharing-services-0.0.1-r30.ebuild
+++ b/chromeos-base/arcvm-media-sharing-services/arcvm-media-sharing-services-0.0.1-r89.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "dc7c34c4e0cd7a3f50af25d0a8bf7766e566f20f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "c7aa50d184a7e76ecccf86505e0b5826985c4223" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/arcvm-mojo-proxy/OWNERS b/chromeos-base/arcvm-mojo-proxy/OWNERS
index db7e695..14cb52e 100644
--- a/chromeos-base/arcvm-mojo-proxy/OWNERS
+++ b/chromeos-base/arcvm-mojo-proxy/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/vm/mojo_proxy/OWNERS
diff --git a/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r257.ebuild b/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r318.ebuild
similarity index 82%
rename from chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r257.ebuild
rename to chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r318.ebuild
index 23225a5..64e8a8b 100644
--- a/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r257.ebuild
+++ b/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r318.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "3fb85f4647fa7fcce001672f9e4fc429de4beb81" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "74888ec8a650d3701eae39546bb8c22b0a71c8af" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/atrusctl/OWNERS b/chromeos-base/atrusctl/OWNERS
index db7e695..0b7a6e0 100644
--- a/chromeos-base/atrusctl/OWNERS
+++ b/chromeos-base/atrusctl/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/third_party/atrusctl:master:/OWNERS
diff --git a/chromeos-base/atrusctl/atrusctl-0.0.1-r1176.ebuild b/chromeos-base/atrusctl/atrusctl-0.0.1-r1236.ebuild
similarity index 80%
rename from chromeos-base/atrusctl/atrusctl-0.0.1-r1176.ebuild
rename to chromeos-base/atrusctl/atrusctl-0.0.1-r1236.ebuild
index 8a925e8..aa4c3bc 100644
--- a/chromeos-base/atrusctl/atrusctl-0.0.1-r1176.ebuild
+++ b/chromeos-base/atrusctl/atrusctl-0.0.1-r1236.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "9105f9b4dff2e298b9318937ac8eceed897dec8a")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "57099a72dae27323bfc6e0e5d1a3e074d4db3271")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "1f576eac08b5693eb82390f1a4382057abe6e0cf")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "07502a6604ad4ee42457856a13eb86713f42e654")
 CROS_WORKON_LOCALNAME=("platform2" "third_party/atrusctl")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/atrusctl")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/atrusctl")
diff --git a/chromeos-base/attestation-client/OWNERS b/chromeos-base/attestation-client/OWNERS
index db7e695..a85b490 100644
--- a/chromeos-base/attestation-client/OWNERS
+++ b/chromeos-base/attestation-client/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/attestation/OWNERS
diff --git a/chromeos-base/attestation-client/attestation-client-0.0.1-r657.ebuild b/chromeos-base/attestation-client/attestation-client-0.0.1-r657.ebuild
deleted file mode 100644
index 3ce3317..0000000
--- a/chromeos-base/attestation-client/attestation-client-0.0.1-r657.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2019 The ChromiumOS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "bccbc8518cd5c6093f62309eede93a41c3cb78b4" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk attestation libhwsec-foundation .gn"
-
-PLATFORM_SUBDIR="attestation/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="Attestation D-Bus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/attestation/client/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="cros_host"
-
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies. We require the particular
-# revision because libbrillo-0.0.1-r1 changed location of header files from
-# chromeos/ to brillo/ and chromeos-dbus-bindings-0.0.1-r1058 generates the
-# code using the new location.
-DEPEND="
-	cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 )
-	chromeos-base/libbrillo:=
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-# Note that for RDEPEND, we conflict with attestation package older than
-# 0.0.1 because this client is incompatible with daemon older than version
-# 0.0.1. We didn't RDEPEND on attestation version 0.0.1 or greater because
-# we don't want to create circular dependency in case the package attestation
-# depends on some package foo that also depend on this package.
-RDEPEND="
-	!<chromeos-base/attestation-0.0.1
-	chromeos-base/libbrillo:=
-"
-
-src_install() {
-	platform_src_install
-
-	# Install D-Bus client library.
-	platform_install_dbus_client_lib "attestation"
-}
diff --git a/chromeos-base/attestation-client/attestation-client-0.0.1-r756.ebuild b/chromeos-base/attestation-client/attestation-client-0.0.1-r756.ebuild
new file mode 100644
index 0000000..4971ea0
--- /dev/null
+++ b/chromeos-base/attestation-client/attestation-client-0.0.1-r756.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2019 The ChromiumOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "102d4ec63eaf55397c3fc456d3b70e574692dc44" "0d9d2046eb78dc8620f7594f245298f9fd964832" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk attestation libhwsec-foundation .gn"
+
+PLATFORM_SUBDIR="attestation/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="Attestation D-Bus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/attestation/client/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
+	chromeos-base/system_api:=[fuzzer?]
+"
+
+# Note that for RDEPEND, we conflict with attestation package older than
+# 0.0.1 because this client is incompatible with daemon older than version
+# 0.0.1. We didn't RDEPEND on attestation version 0.0.1 or greater because
+# we don't want to create circular dependency in case the package attestation
+# depends on some package foo that also depend on this package.
+RDEPEND="
+	!<chromeos-base/attestation-0.0.1
+"
+
+src_install() {
+	platform_src_install
+
+	# Install D-Bus client library.
+	platform_install_dbus_client_lib "attestation"
+}
diff --git a/chromeos-base/attestation-client/attestation-client-9999.ebuild b/chromeos-base/attestation-client/attestation-client-9999.ebuild
index f28858d..f6d75ee 100644
--- a/chromeos-base/attestation-client/attestation-client-9999.ebuild
+++ b/chromeos-base/attestation-client/attestation-client-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
@@ -19,17 +19,15 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="cros_host"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies. We require the particular
-# revision because libbrillo-0.0.1-r1 changed location of header files from
-# chromeos/ to brillo/ and chromeos-dbus-bindings-0.0.1-r1058 generates the
-# code using the new location.
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
 DEPEND="
-	cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 )
-	chromeos-base/libbrillo:=
+	chromeos-base/chromeos-dbus-bindings:=
 	chromeos-base/system_api:=[fuzzer?]
 "
 
@@ -40,7 +38,6 @@
 # depends on some package foo that also depend on this package.
 RDEPEND="
 	!<chromeos-base/attestation-0.0.1
-	chromeos-base/libbrillo:=
 "
 
 src_install() {
diff --git a/chromeos-base/attestation/OWNERS b/chromeos-base/attestation/OWNERS
index db7e695..a85b490 100644
--- a/chromeos-base/attestation/OWNERS
+++ b/chromeos-base/attestation/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/attestation/OWNERS
diff --git a/chromeos-base/attestation/attestation-0.0.1-r3922.ebuild b/chromeos-base/attestation/attestation-0.0.1-r4095.ebuild
similarity index 81%
rename from chromeos-base/attestation/attestation-0.0.1-r3922.ebuild
rename to chromeos-base/attestation/attestation-0.0.1-r4095.ebuild
index 7d58ab5..1c0838a 100644
--- a/chromeos-base/attestation/attestation-0.0.1-r3922.ebuild
+++ b/chromeos-base/attestation/attestation-0.0.1-r4095.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="89ccff35e79a0d7ba46339b9364d496eb35c58d1"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "bccbc8518cd5c6093f62309eede93a41c3cb78b4" "859ba3422589c5109a1952a54081d12b3c218b8a" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "41112b3759d18a5cceaf1f06f65e6d4bdc406e33" "199cac0899daace8030b33f49dd183a5b5baf169" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "102d4ec63eaf55397c3fc456d3b70e574692dc44" "e83be5edf8be7a36d9035ec4c15671caa7d5ff56" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "989acbd33fd18024396e010b1be43d25cbdf942d" "f73f25bb045d099841b3ac929b6d3218060216df" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -42,8 +42,9 @@
 	chromeos-base/system_api:=[fuzzer?]
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/minijail:=
-	chromeos-base/tpm_manager:=
+	chromeos-base/tpm_manager-client:=
 	chromeos-base/attestation-client
+	dev-libs/openssl:0=
 	"
 
 DEPEND="
@@ -55,6 +56,12 @@
 	)
 	"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	# Create user and group for attestation.
 	enewuser "attestation"
diff --git a/chromeos-base/attestation/attestation-9999.ebuild b/chromeos-base/attestation/attestation-9999.ebuild
index 1062bb3..a143f27 100644
--- a/chromeos-base/attestation/attestation-9999.ebuild
+++ b/chromeos-base/attestation/attestation-9999.ebuild
@@ -40,8 +40,9 @@
 	chromeos-base/system_api:=[fuzzer?]
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/minijail:=
-	chromeos-base/tpm_manager:=
+	chromeos-base/tpm_manager-client:=
 	chromeos-base/attestation-client
+	dev-libs/openssl:0=
 	"
 
 DEPEND="
@@ -53,6 +54,12 @@
 	)
 	"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	# Create user and group for attestation.
 	enewuser "attestation"
diff --git a/chromeos-base/biod/biod-0.0.1-r2718.ebuild b/chromeos-base/biod/biod-0.0.1-r2908.ebuild
similarity index 79%
rename from chromeos-base/biod/biod-0.0.1-r2718.ebuild
rename to chromeos-base/biod/biod-0.0.1-r2908.ebuild
index 14dd841..8b9cd32b 100644
--- a/chromeos-base/biod/biod-0.0.1-r2718.ebuild
+++ b/chromeos-base/biod/biod-0.0.1-r2908.ebuild
@@ -2,13 +2,13 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "456773cac7369c71f9eea19c08ec6c8908b5b9da" "f2431337126663ce80d01b13755ed940d700e70a" "2b162410dc0e1be38913a7e594b2bf865914baa9" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "2f516afa9d288e2aa6b2ed1a6e4ddfbb962929d4" "9942607d3de36a375711502f44f44d28aac7bd3a" "67442b9578c0475865b147e940740e227d50027c" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_USE_VCSID="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk biod chromeos-config libec metrics .gn"
+CROS_WORKON_SUBTREE="common-mk biod chromeos-config libec libhwsec libhwsec-foundation metrics .gn"
 
 PLATFORM_SUBDIR="biod"
 
@@ -33,6 +33,8 @@
 COMMON_DEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/libec:=
+	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/vboot_reference:=
 	sys-apps/flashmap:=
@@ -46,6 +48,7 @@
 
 RDEPEND="
 	${COMMON_DEPEND}
+	sys-apps/crosec-legacy-drv:=
 	sys-apps/flashrom
 	!factory_branch? ( virtual/chromeos-firmware-fpmcu )
 	"
diff --git a/chromeos-base/biod/biod-9999.ebuild b/chromeos-base/biod/biod-9999.ebuild
index 781dee2..7bef5d3 100644
--- a/chromeos-base/biod/biod-9999.ebuild
+++ b/chromeos-base/biod/biod-9999.ebuild
@@ -6,7 +6,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk biod chromeos-config libec metrics .gn"
+CROS_WORKON_SUBTREE="common-mk biod chromeos-config libec libhwsec libhwsec-foundation metrics .gn"
 
 PLATFORM_SUBDIR="biod"
 
@@ -31,6 +31,8 @@
 COMMON_DEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/libec:=
+	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/vboot_reference:=
 	sys-apps/flashmap:=
@@ -44,6 +46,7 @@
 
 RDEPEND="
 	${COMMON_DEPEND}
+	sys-apps/crosec-legacy-drv:=
 	sys-apps/flashrom
 	!factory_branch? ( virtual/chromeos-firmware-fpmcu )
 	"
diff --git a/chromeos-base/biod_proxy/biod_proxy-0.0.1-r496.ebuild b/chromeos-base/biod_proxy/biod_proxy-0.0.1-r592.ebuild
similarity index 75%
rename from chromeos-base/biod_proxy/biod_proxy-0.0.1-r496.ebuild
rename to chromeos-base/biod_proxy/biod_proxy-0.0.1-r592.ebuild
index dfda538..efe709e1 100644
--- a/chromeos-base/biod_proxy/biod_proxy-0.0.1-r496.ebuild
+++ b/chromeos-base/biod_proxy/biod_proxy-0.0.1-r592.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "456773cac7369c71f9eea19c08ec6c8908b5b9da" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "2f516afa9d288e2aa6b2ed1a6e4ddfbb962929d4" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_USE_VCSID="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -23,7 +23,6 @@
 RDEPEND=""
 
 DEPEND="
-	chromeos-base/libbrillo:=
 	chromeos-base/system_api:=
 "
 
diff --git a/chromeos-base/biod_proxy/biod_proxy-9999.ebuild b/chromeos-base/biod_proxy/biod_proxy-9999.ebuild
index 7a97f29..f30798b 100644
--- a/chromeos-base/biod_proxy/biod_proxy-9999.ebuild
+++ b/chromeos-base/biod_proxy/biod_proxy-9999.ebuild
@@ -21,7 +21,6 @@
 RDEPEND=""
 
 DEPEND="
-	chromeos-base/libbrillo:=
 	chromeos-base/system_api:=
 "
 
diff --git a/chromeos-base/bootid-logger/bootid-logger-0.0.1-r299.ebuild b/chromeos-base/bootid-logger/bootid-logger-0.0.1-r363.ebuild
similarity index 70%
rename from chromeos-base/bootid-logger/bootid-logger-0.0.1-r299.ebuild
rename to chromeos-base/bootid-logger/bootid-logger-0.0.1-r363.ebuild
index 748c96c..b6d5a09 100644
--- a/chromeos-base/bootid-logger/bootid-logger-0.0.1-r299.ebuild
+++ b/chromeos-base/bootid-logger/bootid-logger-0.0.1-r363.ebuild
@@ -3,8 +3,8 @@
 # found in the LICENSE file.
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "868cd8d03db41aa787fb6980d1acb78f38b709ef" "b70950b4cf339f9ec166ca0bbbfba6357c1e682f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "08424f4426a68b9cc1bafdc1e6e6367b286c74ae" "eed5e5f4f52bb1b1f367cf64819916aac6614303" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -30,9 +30,7 @@
 src_install() {
 	platform_src_install
 
-	local fuzzer_component_id="1029735"
-	platform_fuzzer_install "${S}"/../croslog/OWNERS "${OUT}"/bootid_logger_fuzzer \
-		--comp "${fuzzer_component_id}"
+	platform_fuzzer_install "${S}"/../croslog/OWNERS "${OUT}"/bootid_logger_fuzzer
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/bootid-logger/bootid-logger-9999.ebuild b/chromeos-base/bootid-logger/bootid-logger-9999.ebuild
index 864e572..e7e602c 100644
--- a/chromeos-base/bootid-logger/bootid-logger-9999.ebuild
+++ b/chromeos-base/bootid-logger/bootid-logger-9999.ebuild
@@ -28,9 +28,7 @@
 src_install() {
 	platform_src_install
 
-	local fuzzer_component_id="1029735"
-	platform_fuzzer_install "${S}"/../croslog/OWNERS "${OUT}"/bootid_logger_fuzzer \
-		--comp "${fuzzer_component_id}"
+	platform_fuzzer_install "${S}"/../croslog/OWNERS "${OUT}"/bootid_logger_fuzzer
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/bootlockbox-client/OWNERS b/chromeos-base/bootlockbox-client/OWNERS
index db7e695..f2048fa 100644
--- a/chromeos-base/bootlockbox-client/OWNERS
+++ b/chromeos-base/bootlockbox-client/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/bootlockbox/client/OWNERS
diff --git a/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r2138.ebuild b/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r2204.ebuild
similarity index 70%
rename from chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r2138.ebuild
rename to chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r2204.ebuild
index f048bf9..5d24859 100644
--- a/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r2138.ebuild
+++ b/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r2204.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "08fc3236b79c21b86c1c61546129946e390cfa16" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "1412f4f94e99da326acdb6c9509bb83b9c5a6b89" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -20,19 +20,25 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="cros_host"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
 DEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
 	chromeos-base/system_api:=
 "
 
-RDEPEND="${DEPEND}"
+RDEPEND="
+	chromeos-base/system_api:=
+"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library.
 BDEPEND="
 	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
 "
 
 src_install() {
diff --git a/chromeos-base/bootlockbox-client/bootlockbox-client-9999.ebuild b/chromeos-base/bootlockbox-client/bootlockbox-client-9999.ebuild
index 3f54ae5..db59d0b 100644
--- a/chromeos-base/bootlockbox-client/bootlockbox-client-9999.ebuild
+++ b/chromeos-base/bootlockbox-client/bootlockbox-client-9999.ebuild
@@ -18,19 +18,25 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="cros_host"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
 DEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
 	chromeos-base/system_api:=
 "
 
-RDEPEND="${DEPEND}"
+RDEPEND="
+	chromeos-base/system_api:=
+"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library.
 BDEPEND="
 	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
 "
 
 src_install() {
diff --git a/chromeos-base/bootlockbox/bootlockbox-0.0.1-r152.ebuild b/chromeos-base/bootlockbox/bootlockbox-0.0.1-r292.ebuild
similarity index 78%
rename from chromeos-base/bootlockbox/bootlockbox-0.0.1-r152.ebuild
rename to chromeos-base/bootlockbox/bootlockbox-0.0.1-r292.ebuild
index cae1930..314ae22 100644
--- a/chromeos-base/bootlockbox/bootlockbox-0.0.1-r152.ebuild
+++ b/chromeos-base/bootlockbox/bootlockbox-0.0.1-r292.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "08fc3236b79c21b86c1c61546129946e390cfa16" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "1412f4f94e99da326acdb6c9509bb83b9c5a6b89" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -20,7 +20,6 @@
 SRC_URI=""
 
 LICENSE="BSD-Google"
-SLOT="0/0"
 KEYWORDS="*"
 IUSE="fuzzer profiling systemd test tpm tpm2 tpm_dynamic"
 
@@ -28,6 +27,7 @@
 	!<chromeos-base/cryptohome-0.0.2
 	chromeos-base/bootlockbox-client:=
 	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	chromeos-base/metrics:=
 	chromeos-base/minijail:=
 	chromeos-base/system_api:=[fuzzer?]
@@ -40,6 +40,11 @@
 
 DEPEND="${RDEPEND}"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 src_install() {
 	platform_src_install
 	# Allow specific syscalls for profiling.
diff --git a/chromeos-base/bootlockbox/bootlockbox-9999.ebuild b/chromeos-base/bootlockbox/bootlockbox-9999.ebuild
index 67ca511..a15e2f1 100644
--- a/chromeos-base/bootlockbox/bootlockbox-9999.ebuild
+++ b/chromeos-base/bootlockbox/bootlockbox-9999.ebuild
@@ -18,7 +18,6 @@
 SRC_URI=""
 
 LICENSE="BSD-Google"
-SLOT="0/0"
 KEYWORDS="~*"
 IUSE="fuzzer profiling systemd test tpm tpm2 tpm_dynamic"
 
@@ -26,6 +25,7 @@
 	!<chromeos-base/cryptohome-0.0.2
 	chromeos-base/bootlockbox-client:=
 	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	chromeos-base/metrics:=
 	chromeos-base/minijail:=
 	chromeos-base/system_api:=[fuzzer?]
@@ -38,6 +38,11 @@
 
 DEPEND="${RDEPEND}"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 src_install() {
 	platform_src_install
 	# Allow specific syscalls for profiling.
diff --git a/chromeos-base/bootstat/bootstat-0.0.2-r3325.ebuild b/chromeos-base/bootstat/bootstat-0.0.2-r3390.ebuild
similarity index 78%
rename from chromeos-base/bootstat/bootstat-0.0.2-r3325.ebuild
rename to chromeos-base/bootstat/bootstat-0.0.2-r3390.ebuild
index 9e11b3a..818d6a5 100644
--- a/chromeos-base/bootstat/bootstat-0.0.2-r3325.ebuild
+++ b/chromeos-base/bootstat/bootstat-0.0.2-r3390.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "edb8beb3d905ccdb7e057b1e8753a733721e6f15" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "75e08760ad3df3c8cc2f55a3b4c485d646c38826" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
diff --git a/chromeos-base/cbor/OWNERS b/chromeos-base/cbor/OWNERS
index db7e695..219441b 100644
--- a/chromeos-base/cbor/OWNERS
+++ b/chromeos-base/cbor/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform/cbor:/OWNERS
diff --git a/chromeos-base/cbor/cbor-0.0.1-r309.ebuild b/chromeos-base/cbor/cbor-0.0.1-r367.ebuild
similarity index 90%
rename from chromeos-base/cbor/cbor-0.0.1-r309.ebuild
rename to chromeos-base/cbor/cbor-0.0.1-r367.ebuild
index d603f03..7b2262a 100644
--- a/chromeos-base/cbor/cbor-0.0.1-r309.ebuild
+++ b/chromeos-base/cbor/cbor-0.0.1-r367.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "bd1416be85fc5c317a2e6171be066ed98841e643")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "7266a528f4e14ef315147b65bc5f48bd7127e5b9")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "bd1416be85fc5c317a2e6171be066ed98841e643")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "7266a528f4e14ef315147b65bc5f48bd7127e5b9")
 CROS_WORKON_PROJECT=(
 	"chromiumos/platform2"
 	"chromiumos/platform/cbor"
diff --git a/chromeos-base/cfm-dfu-notification/OWNERS b/chromeos-base/cfm-dfu-notification/OWNERS
index db7e695..a0be67d 100644
--- a/chromeos-base/cfm-dfu-notification/OWNERS
+++ b/chromeos-base/cfm-dfu-notification/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/cfm-dfu-notification/OWNERS
diff --git a/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r304.ebuild b/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r363.ebuild
similarity index 83%
rename from chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r304.ebuild
rename to chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r363.ebuild
index 76d5d56..f711af1 100644
--- a/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r304.ebuild
+++ b/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r363.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "58b24ad9dd2de7e6ec5810d918462e919b3a889f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "685561d7556c0ae10dacd31616929c30e0a11852" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
diff --git a/chromeos-base/chaps-client/chaps-client-0.0.1-r256.ebuild b/chromeos-base/chaps-client/chaps-client-0.0.1-r256.ebuild
deleted file mode 100644
index 28e63c4..0000000
--- a/chromeos-base/chaps-client/chaps-client-0.0.1-r256.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2019 The ChromiumOS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="89ccff35e79a0d7ba46339b9364d496eb35c58d1"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "859ba3422589c5109a1952a54081d12b3c218b8a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk chaps .gn"
-
-PLATFORM_SUBDIR="chaps/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="chaps D-Bus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chaps/client/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="cros_host"
-
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies. We require the particular
-# revision because libbrillo-0.0.1-r1 changed location of header files from
-# chromeos/ to brillo/ and chromeos-dbus-bindings-0.0.1-r1058 generates the
-# code using the new location.
-DEPEND="
-	cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 )
-	chromeos-base/libbrillo:=
-"
-
-RDEPEND="
-	chromeos-base/libbrillo:=
-"
-
-src_install() {
-	platform_src_install
-
-	# Install D-Bus client library.
-	platform_install_dbus_client_lib "chaps"
-}
diff --git a/chromeos-base/chaps-client/chaps-client-0.0.1-r325.ebuild b/chromeos-base/chaps-client/chaps-client-0.0.1-r325.ebuild
new file mode 100644
index 0000000..b466da4
--- /dev/null
+++ b/chromeos-base/chaps-client/chaps-client-0.0.1-r325.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2019 The ChromiumOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e83be5edf8be7a36d9035ec4c15671caa7d5ff56" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk chaps .gn"
+
+PLATFORM_SUBDIR="chaps/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="chaps D-Bus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chaps/client/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
+"
+
+src_install() {
+	platform_src_install
+
+	# Install D-Bus client library.
+	platform_install_dbus_client_lib "chaps"
+}
diff --git a/chromeos-base/chaps-client/chaps-client-9999.ebuild b/chromeos-base/chaps-client/chaps-client-9999.ebuild
index 362a185..9552d36 100644
--- a/chromeos-base/chaps-client/chaps-client-9999.ebuild
+++ b/chromeos-base/chaps-client/chaps-client-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
@@ -17,23 +17,16 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chaps/client/"
 
 LICENSE="BSD-Google"
-SLOT="0"
 KEYWORDS="~*"
-IUSE="cros_host"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies. We require the particular
-# revision because libbrillo-0.0.1-r1 changed location of header files from
-# chromeos/ to brillo/ and chromeos-dbus-bindings-0.0.1-r1058 generates the
-# code using the new location.
-DEPEND="
-	cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 )
-	chromeos-base/libbrillo:=
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
 "
 
-RDEPEND="
-	chromeos-base/libbrillo:=
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
 "
 
 src_install() {
diff --git a/chromeos-base/chaps/OWNERS b/chromeos-base/chaps/OWNERS
index db7e695..db7c5b0 100644
--- a/chromeos-base/chaps/OWNERS
+++ b/chromeos-base/chaps/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/chaps/OWNERS
diff --git a/chromeos-base/chaps/chaps-0.0.1-r4020.ebuild b/chromeos-base/chaps/chaps-0.0.1-r4159.ebuild
similarity index 87%
rename from chromeos-base/chaps/chaps-0.0.1-r4020.ebuild
rename to chromeos-base/chaps/chaps-0.0.1-r4159.ebuild
index 3df0b14..a71b126 100644
--- a/chromeos-base/chaps/chaps-0.0.1-r4020.ebuild
+++ b/chromeos-base/chaps/chaps-0.0.1-r4159.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="89ccff35e79a0d7ba46339b9364d496eb35c58d1"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "859ba3422589c5109a1952a54081d12b3c218b8a" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e83be5edf8be7a36d9035ec4c15671caa7d5ff56" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_USE_VCSID=1
 CROS_WORKON_LOCALNAME="platform2"
@@ -28,6 +28,7 @@
 RDEPEND="
 	chromeos-base/chaps-client:=
 	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	chromeos-base/minijail:=
 	chromeos-base/system_api:=[fuzzer?]
 	>=chromeos-base/metrics-0.0.1-r3152:=
@@ -50,6 +51,10 @@
 	dev-libs/nspr:=
 	"
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	enewgroup "chronos-access"
 	enewuser "chaps"
diff --git a/chromeos-base/chaps/chaps-9999.ebuild b/chromeos-base/chaps/chaps-9999.ebuild
index 50bcb17..dacd135 100644
--- a/chromeos-base/chaps/chaps-9999.ebuild
+++ b/chromeos-base/chaps/chaps-9999.ebuild
@@ -26,6 +26,7 @@
 RDEPEND="
 	chromeos-base/chaps-client:=
 	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	chromeos-base/minijail:=
 	chromeos-base/system_api:=[fuzzer?]
 	>=chromeos-base/metrics-0.0.1-r3152:=
@@ -48,6 +49,10 @@
 	dev-libs/nspr:=
 	"
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	enewgroup "chronos-access"
 	enewuser "chaps"
diff --git a/chromeos-base/chromeos-config-tools/OWNERS b/chromeos-base/chromeos-config-tools/OWNERS
index db7e695..6f45d7e 100644
--- a/chromeos-base/chromeos-config-tools/OWNERS
+++ b/chromeos-base/chromeos-config-tools/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/chromeos-config/OWNERS
diff --git a/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.4-r2437.ebuild b/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.5-r2588.ebuild
similarity index 73%
rename from chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.4-r2437.ebuild
rename to chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.5-r2588.ebuild
index 41a2630..080ef83 100644
--- a/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.4-r2437.ebuild
+++ b/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.5-r2588.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2016 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
-CROS_WORKON_COMMIT=("88a997c0584f2d03f6fc37253a8e587b08af9b21" "161dc1a302e71c092547b317e936f454825e0d0f")
-CROS_WORKON_TREE=("e25747d84e1e5bb28342114bcceca2f823218dbc" "1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "9cb07ca3ec9b8c3b2c0f3a234d33e6cd79f4eb04" "76da3dc7374cc7573368173b8aea30665e865e83")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "c8f33e95e2c3d50d4382845da39a3bb6be7abfed")
+CROS_WORKON_TREE=("e25747d84e1e5bb28342114bcceca2f823218dbc" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "11454ff9c2028c720e95d472e4376d20e735e34e" "76da3dc7374cc7573368173b8aea30665e865e83")
 CROS_WORKON_INCREMENTAL_BUILD=1
 
 CROS_WORKON_PROJECT=(
@@ -33,7 +33,6 @@
 LICENSE="BSD-Google"
 SLOT=0
 KEYWORDS="*"
-IUSE="unibuild"
 
 GTEST_METADATA=(
 	libcros_config/cros_config_functional_test.yaml
@@ -41,10 +40,6 @@
 
 GTEST_TEST_INSTALL_DIR="/usr/local/gtest/cros_config"
 
-RDEPEND="
-	!unibuild? ( sys-apps/mosys )
-"
-
 DEPEND="${RDEPEND}"
 
 src_install() {
@@ -67,22 +62,12 @@
 	dobin "${OUT}"/cros_config
 	newbin cros_config_mock.sh cros_config_mock
 
-	if use unibuild; then
-		newsbin scripts/cros_config_setup.sh cros_config_setup
-	else
-		newsbin scripts/cros_config_setup_legacy.sh cros_config_setup
-	fi
-
 	if use test; then
 		exeinto "${GTEST_TEST_INSTALL_DIR}"
 		doexe  "${OUT}/cros_config_functional_test"
 
 		install_gtest_metadata "${GTEST_METADATA[@]}"
 	fi
-
-	# Install init scripts.
-	insinto /etc/init
-	doins init/*.conf
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/chromeos-config-tools/chromeos-config-tools-9999.ebuild b/chromeos-base/chromeos-config-tools/chromeos-config-tools-9999.ebuild
index 41922aa..a60f037 100644
--- a/chromeos-base/chromeos-config-tools/chromeos-config-tools-9999.ebuild
+++ b/chromeos-base/chromeos-config-tools/chromeos-config-tools-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2016 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
 CROS_WORKON_INCREMENTAL_BUILD=1
 
@@ -31,7 +31,6 @@
 LICENSE="BSD-Google"
 SLOT=0
 KEYWORDS="~*"
-IUSE="unibuild"
 
 GTEST_METADATA=(
 	libcros_config/cros_config_functional_test.yaml
@@ -39,10 +38,6 @@
 
 GTEST_TEST_INSTALL_DIR="/usr/local/gtest/cros_config"
 
-RDEPEND="
-	!unibuild? ( sys-apps/mosys )
-"
-
 DEPEND="${RDEPEND}"
 
 src_install() {
@@ -65,22 +60,12 @@
 	dobin "${OUT}"/cros_config
 	newbin cros_config_mock.sh cros_config_mock
 
-	if use unibuild; then
-		newsbin scripts/cros_config_setup.sh cros_config_setup
-	else
-		newsbin scripts/cros_config_setup_legacy.sh cros_config_setup
-	fi
-
 	if use test; then
 		exeinto "${GTEST_TEST_INSTALL_DIR}"
 		doexe  "${OUT}/cros_config_functional_test"
 
 		install_gtest_metadata "${GTEST_METADATA[@]}"
 	fi
-
-	# Install init scripts.
-	insinto /etc/init
-	doins init/*.conf
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/chromeos-config-tools/files/chromeos-version.sh b/chromeos-base/chromeos-config-tools/files/chromeos-version.sh
index 1c3f36a..65ea5a7 100755
--- a/chromeos-base/chromeos-config-tools/files/chromeos-version.sh
+++ b/chromeos-base/chromeos-config-tools/files/chromeos-version.sh
@@ -9,4 +9,4 @@
 # at the same time as revving the ebuild to a known version value, editing this
 # version can be useful.
 
-echo 0.0.4
+echo 0.0.5
diff --git a/chromeos-base/chromeos-imageburner/OWNERS b/chromeos-base/chromeos-imageburner/OWNERS
index db7e695..734c3ef 100644
--- a/chromeos-base/chromeos-imageburner/OWNERS
+++ b/chromeos-base/chromeos-imageburner/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/image-burner/OWNERS
diff --git a/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3339.ebuild b/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3399.ebuild
similarity index 83%
rename from chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3339.ebuild
rename to chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3399.ebuild
index 970d563..bafcb97 100644
--- a/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3339.ebuild
+++ b/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3399.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "27344240195d54790879bcc5b3eed723fa1c592e" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "17628f4bc991ca7c1c5f75ff20bdfc27c52df206" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -30,6 +30,10 @@
 	chromeos-base/system_api
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 pkg_preinst() {
 	# Create user and group for image-burner.
 	enewuser "image-burner"
diff --git a/chromeos-base/chromeos-imageburner/chromeos-imageburner-9999.ebuild b/chromeos-base/chromeos-imageburner/chromeos-imageburner-9999.ebuild
index 1d163d6..bda81b8 100644
--- a/chromeos-base/chromeos-imageburner/chromeos-imageburner-9999.ebuild
+++ b/chromeos-base/chromeos-imageburner/chromeos-imageburner-9999.ebuild
@@ -28,6 +28,10 @@
 	chromeos-base/system_api
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 pkg_preinst() {
 	# Create user and group for image-burner.
 	enewuser "image-burner"
diff --git a/chromeos-base/chromeos-init/chromeos-init-0.0.26-r4826.ebuild b/chromeos-base/chromeos-init/chromeos-init-0.0.26-r4965.ebuild
similarity index 82%
rename from chromeos-base/chromeos-init/chromeos-init-0.0.26-r4826.ebuild
rename to chromeos-base/chromeos-init/chromeos-init-0.0.26-r4965.ebuild
index 2856e53..76689a4 100644
--- a/chromeos-base/chromeos-init/chromeos-init-0.0.26-r4826.ebuild
+++ b/chromeos-base/chromeos-init/chromeos-init-0.0.26-r4965.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "8b2a7e6faee2f7b269a38df82ad740a8898852e8" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="e1d1f070aa368a99b0969f037136be49dcc5913c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "ff5cca87d11e412cc1d4cd2ca776a3d551bcd1cf" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -27,7 +27,7 @@
 KEYWORDS="*"
 IUSE="
 	cros_embedded direncryption +encrypted_stateful
-	+encrypted_reboot_vault frecon fsverity lvm_stateful_partition
+	+encrypted_reboot_vault frecon fsverity lvm_migration lvm_stateful_partition
 	+oobe_config prjquota -s3halt +syslog systemd tpm2 +udev vivid vtconsole"
 
 # secure-erase-file, vboot_reference, and rootdev are needed for clobber-state.
@@ -44,9 +44,7 @@
 
 DEPEND="${COMMON_DEPEND}
 	test? (
-		sys-process/psmisc
 		dev-util/shflags
-		dev-util/shunit2
 		sys-apps/diffutils
 	)
 "
@@ -65,7 +63,7 @@
 	!cros_embedded? (
 		chromeos-base/common-assets
 		chromeos-base/chromeos-storage-info
-		chromeos-base/swap-init
+		chromeos-base/swap_management
 		sys-fs/e2fsprogs
 	)
 	frecon? (
@@ -75,7 +73,6 @@
 
 platform_pkg_test() {
 	local shell_tests=(
-		killers_unittest
 		tests/chromeos-disk-metrics-test.sh
 		tests/send-kernel-errors-test.sh
 	)
@@ -165,9 +162,6 @@
 
 	into /	# We want /sbin, not /usr/sbin, etc.
 
-	# Install various utility files.
-	dosbin killers
-
 	# Install various helper programs.
 	dosbin "${OUT}"/cros_sysrq_init
 	dosbin "${OUT}"/static_node_tool
@@ -177,23 +171,8 @@
 
 	# Install startup/shutdown scripts.
 	dosbin "${OUT}"/chromeos_startup
-	dosbin chromeos_startup.sh
 	dosbin chromeos_shutdown
 
-	# Disable encrypted reboot vault if it is not used.
-	if ! use encrypted_reboot_vault; then
-		sed -i '/USE_ENCRYPTED_REBOOT_VAULT=/s:=1:=0:' \
-			"${D}/sbin/chromeos_startup.sh" ||
-			die "Failed to replace USE_ENCRYPTED_REBOOT_VAULT in chromeos_startup"
-	fi
-
-	# Enable lvm stateful partition.
-	if use lvm_stateful_partition; then
-		sed -i '/USE_LVM_STATEFUL_PARTITION=/s:=0:=1:' \
-			"${D}/sbin/chromeos_startup.sh" ||
-			die "Failed to replace USE_LVM_STATEFUL_PARTITION in chromeos_startup"
-	fi
-
 	dosbin "${OUT}"/clobber-state
 
 	dosbin clobber-log
diff --git a/chromeos-base/chromeos-init/chromeos-init-9999.ebuild b/chromeos-base/chromeos-init/chromeos-init-9999.ebuild
index 24447ea..bf8e662 100644
--- a/chromeos-base/chromeos-init/chromeos-init-9999.ebuild
+++ b/chromeos-base/chromeos-init/chromeos-init-9999.ebuild
@@ -25,7 +25,7 @@
 KEYWORDS="~*"
 IUSE="
 	cros_embedded direncryption +encrypted_stateful
-	+encrypted_reboot_vault frecon fsverity lvm_stateful_partition
+	+encrypted_reboot_vault frecon fsverity lvm_migration lvm_stateful_partition
 	+oobe_config prjquota -s3halt +syslog systemd tpm2 +udev vivid vtconsole"
 
 # secure-erase-file, vboot_reference, and rootdev are needed for clobber-state.
@@ -42,9 +42,7 @@
 
 DEPEND="${COMMON_DEPEND}
 	test? (
-		sys-process/psmisc
 		dev-util/shflags
-		dev-util/shunit2
 		sys-apps/diffutils
 	)
 "
@@ -63,7 +61,7 @@
 	!cros_embedded? (
 		chromeos-base/common-assets
 		chromeos-base/chromeos-storage-info
-		chromeos-base/swap-init
+		chromeos-base/swap_management
 		sys-fs/e2fsprogs
 	)
 	frecon? (
@@ -73,7 +71,6 @@
 
 platform_pkg_test() {
 	local shell_tests=(
-		killers_unittest
 		tests/chromeos-disk-metrics-test.sh
 		tests/send-kernel-errors-test.sh
 	)
@@ -163,9 +160,6 @@
 
 	into /	# We want /sbin, not /usr/sbin, etc.
 
-	# Install various utility files.
-	dosbin killers
-
 	# Install various helper programs.
 	dosbin "${OUT}"/cros_sysrq_init
 	dosbin "${OUT}"/static_node_tool
@@ -175,23 +169,8 @@
 
 	# Install startup/shutdown scripts.
 	dosbin "${OUT}"/chromeos_startup
-	dosbin chromeos_startup.sh
 	dosbin chromeos_shutdown
 
-	# Disable encrypted reboot vault if it is not used.
-	if ! use encrypted_reboot_vault; then
-		sed -i '/USE_ENCRYPTED_REBOOT_VAULT=/s:=1:=0:' \
-			"${D}/sbin/chromeos_startup.sh" ||
-			die "Failed to replace USE_ENCRYPTED_REBOOT_VAULT in chromeos_startup"
-	fi
-
-	# Enable lvm stateful partition.
-	if use lvm_stateful_partition; then
-		sed -i '/USE_LVM_STATEFUL_PARTITION=/s:=0:=1:' \
-			"${D}/sbin/chromeos_startup.sh" ||
-			die "Failed to replace USE_LVM_STATEFUL_PARTITION in chromeos_startup"
-	fi
-
 	dosbin "${OUT}"/clobber-state
 
 	dosbin clobber-log
diff --git a/chromeos-base/chromeos-init/metadata.xml b/chromeos-base/chromeos-init/metadata.xml
index a23c9a1..fbe9d50 100644
--- a/chromeos-base/chromeos-init/metadata.xml
+++ b/chromeos-base/chromeos-init/metadata.xml
@@ -4,6 +4,7 @@
 <use>
 	<flag name='cros_embedded'>Build for cros embedded devices.</flag>
 	<flag name='encrypted_stateful'>Encrypted /var and /home/chronos</flag>
+	<flag name='lvm_migration'>Allow LVM stateful partition migration</flag>
 	<flag name='s3halt'>Halt to S3, reboot at wake; use if no power button</flag>
 	<flag name='vt'>Add upstart job for starting up VT2 terminal.</flag>
 </use>
diff --git a/chromeos-base/chromeos-installer/OWNERS b/chromeos-base/chromeos-installer/OWNERS
index db7e695..6900b60 100644
--- a/chromeos-base/chromeos-installer/OWNERS
+++ b/chromeos-base/chromeos-installer/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/installer/OWNERS
diff --git a/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r3903.ebuild b/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r4046.ebuild
similarity index 74%
rename from chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r3903.ebuild
rename to chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r4046.ebuild
index ba8e92c..2971ebb 100644
--- a/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r3903.ebuild
+++ b/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r4046.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f2431337126663ce80d01b13755ed940d700e70a" "1647a468f15f85e89d45c799e27359e3e664c67b" "2148a80c70e8157d0f684e92c41f4c1fa7626706" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "eefdbdd1fc1ebba4472d615dce2391b37e2c6872" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("9942607d3de36a375711502f44f44d28aac7bd3a" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "21bfaad8f62af33397787efafbe6cbd691b13a15" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "466d46556e26af1d31a5e30f9001eb07fa4ad00c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
@@ -13,6 +13,9 @@
 CROS_WORKON_SUBTREE="chromeos-config common-mk installer metrics verity .gn"
 
 PLATFORM_SUBDIR="installer"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform systemd
 
@@ -38,7 +41,6 @@
 "
 
 COMMON_DEPEND="
-	chromeos-base/libbrillo:=
 	chromeos-base/vboot_reference
 	chromeos-base/verity
 	manage_efi_boot_entries? ( chromeos-base/chromeos-config sys-libs/efivar )
@@ -64,17 +66,6 @@
 	platform_test "run" "${OUT}/cros_installer_test"
 }
 
-src_prepare() {
-	# The workdir is platform2/nnapi - we need to pop up one level in the stack
-	# to apply our patches.
-	pushd .. || exit
-	eapply -p1 "${FILESDIR}/installer-support-new-dm-format.patch"
-	eapply -p1 "${FILESDIR}/0001-Add-dm-mod.create.patch"
-	popd || exit
-
-	eapply_user
-}
-
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/chromeos-installer/chromeos-installer-9999.ebuild b/chromeos-base/chromeos-installer/chromeos-installer-9999.ebuild
index 16f1ff7..73cb7c3 100644
--- a/chromeos-base/chromeos-installer/chromeos-installer-9999.ebuild
+++ b/chromeos-base/chromeos-installer/chromeos-installer-9999.ebuild
@@ -11,6 +11,9 @@
 CROS_WORKON_SUBTREE="chromeos-config common-mk installer metrics verity .gn"
 
 PLATFORM_SUBDIR="installer"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform systemd
 
@@ -36,7 +39,6 @@
 "
 
 COMMON_DEPEND="
-	chromeos-base/libbrillo:=
 	chromeos-base/vboot_reference
 	chromeos-base/verity
 	manage_efi_boot_entries? ( chromeos-base/chromeos-config sys-libs/efivar )
@@ -62,17 +64,6 @@
 	platform_test "run" "${OUT}/cros_installer_test"
 }
 
-src_prepare() {
-	# The workdir is platform2/nnapi - we need to pop up one level in the stack
-	# to apply our patches.
-	pushd .. || exit
-	eapply -p1 "${FILESDIR}/installer-support-new-dm-format.patch"
-	eapply -p1 "${FILESDIR}/0001-Add-dm-mod.create.patch"
-	popd || exit
-
-	eapply_user
-}
-
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/chromeos-installer/files/0001-Add-dm-mod.create.patch b/chromeos-base/chromeos-installer/files/0001-Add-dm-mod.create.patch
deleted file mode 100644
index 852f291..0000000
--- a/chromeos-base/chromeos-installer/files/0001-Add-dm-mod.create.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ccee228cc4e1733a74bac66c85b3d54169f15497 Mon Sep 17 00:00:00 2001
-From: Sejal Sharma <sejalsharma@google.com>
-Date: Fri, 28 Oct 2022 17:39:59 +0000
-Subject: [PATCH] Add dm-mod.create
-
-Change-Id: Iafd550a1d0f8b7740b877c8b465e55d926987ebd
----
- installer/chromeos_legacy_test.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/installer/chromeos_legacy_test.cc b/installer/chromeos_legacy_test.cc
-index 43c6146deb..6e70de4961 100644
---- a/installer/chromeos_legacy_test.cc
-+++ b/installer/chromeos_legacy_test.cc
-@@ -40,7 +40,7 @@ const char kGrubCfgExpectedResult[] =
-     "  linux /syslinux/vmlinuz.B cros_efi cros_debug "
-     " root=PARTUUID=5BFD65FE-0398-804A-B090-A201E022A7C6\n"
-     "  linux /syslinux/vmlinuz.A cros_efi cros_debug "
--    "root=/dev/dm-0 dm=\"verity args\"\n"
-+    "root=/dev/dm-0 dm-mod.create=\"verity args\"\n"
-     "  linux /syslinux/vmlinuz.B cros_efi cros_debug "
-     "root=/dev/dm-0 dm=\"DM verity=B\"\n"
-     "  linux (hd0,3)/boot/vmlinuz quiet console=tty2 init=/sbin/init "
-@@ -133,7 +133,7 @@ TEST_F(EfiGrubCfgTest, FixupLinuxEfi) {
-       "  linux /syslinux/vmlinuz.A root=PARTUUID=xyz\n"
-       "  linux /syslinux/vmlinuz.B root=PARTUUID=fake_root_uuid\n"
-       "  linux /syslinux/vmlinuz.A root=/dev/dm-0 dm=\"DM verity=A\"\n"
--      "  linux /syslinux/vmlinuz.B root=/dev/dm-0 dm=\"verity args\"\n"
-+      "  linux /syslinux/vmlinuz.B root=/dev/dm-0 dm-mod.create=\"verity args\"\n"
-       "  linux (hd0,3)/boot/vmlinuz quiet console=tty2 init=/sbin/init "
-       "boot=local rootwait ro noresume noswap loglevel=1 noinitrd "
-       "root=/dev/sdb3 i915.modeset=1 cros_efi cros_debug\n";
--- 
-2.39.0.314.g84b9a713c41-goog
-
diff --git a/chromeos-base/chromeos-installer/files/installer-support-new-dm-format.patch b/chromeos-base/chromeos-installer/files/installer-support-new-dm-format.patch
deleted file mode 100644
index 4b7b31d..0000000
--- a/chromeos-base/chromeos-installer/files/installer-support-new-dm-format.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From f1f6ccb855ba3ae9b6b970304a28b9380d62367b Mon Sep 17 00:00:00 2001
-From: Meena Shanmugam <meenashanmugam@google.com>
-Date: Mon, 10 Oct 2022 00:10:18 +0000
-Subject: [PATCH] LAKITU:chromeos-installer: Update postinstall programs to use
- new dm format.
-
-COS uses upstream dm format for the upcoming releases. Automatic updates
-update the bootloader configurations. Inorder to auto-update work with
-the upstream format, these auto-update postinstall programs need to be
-modified to support both new and old format. Once these changes are
-approved and merged in chromeOS upstream, this patch can be removed.
-
-Change-Id: Icb9af46e0b2bed4aa7c44f658d1b49252fc993bc
----
- installer/chromeos_legacy.cc   | 31 ++++++++++++++++++++++++------
- installer/chromeos_setimage.cc | 35 +++++++++++++++++++++++++++++-----
- 2 files changed, 55 insertions(+), 11 deletions(-)
-
-diff --git a/installer/chromeos_legacy.cc b/installer/chromeos_legacy.cc
-index 2ebc7e9d51..9bc2cd0813 100644
---- a/installer/chromeos_legacy.cc
-+++ b/installer/chromeos_legacy.cc
-@@ -43,7 +43,10 @@ std::string EfiGrubCfg::GetKernelCommand(BootSlot slot,
-     if (line.find(kernel_pattern) == string::npos)
-       continue;
- 
--    if (ExtractKernelArg(line, "dm").empty() == want_empty_dm)
-+    bool got_empty_dm =
-+        ExtractKernelArg(line, "dm").empty() &&
-+        ExtractKernelArg(line, "dm-mod.create").empty();
-+    if (got_empty_dm == want_empty_dm)
-       return line;
-   }
-   return "";
-@@ -59,7 +62,10 @@ bool EfiGrubCfg::ReplaceKernelCommand(BootSlot slot,
-     if (line.find(kernel_pattern) == string::npos)
-       continue;
- 
--    if (ExtractKernelArg(line, "dm").empty() == want_empty_dm) {
-+    bool got_empty_dm = 
-+        ExtractKernelArg(line, "dm").empty() &&
-+        ExtractKernelArg(line, "dm-mod.create").empty();
-+    if (got_empty_dm == want_empty_dm) {
-       DLOG(INFO) << "Replacing: " << line;
-       line = cmd;
-       // Continue to replace all matching lines.
-@@ -100,15 +106,25 @@ bool EfiGrubCfg::UpdateBootParameters(BootSlot slot,
-       continue;
- 
-     DLOG(INFO) << "Updating command: " << line;
--    if (ExtractKernelArg(line, "dm").empty()) {
-+    if (ExtractKernelArg(line, "dm").empty() &&
-+        ExtractKernelArg(line, "dm-mod.create").empty()) {
-       // If it's an unverified boot line, just set the root partition to boot.
-       if (!SetKernelArg("root", "PARTUUID=" + root_uuid, &line)) {
-         LOG(ERROR) << "Unable to update unverified root flag in " << line;
-         return false;
-       }
--    } else if (!SetKernelArg("dm", verity_args, &line)) {
--      LOG(INFO) << "Unable to update verified dm flag.";
--      return false;
-+    } else {
-+      if (!SetKernelArg("dm", verity_args, &line)) {
-+        if (!SetKernelArg("dm-mod.create", verity_args, &line)) {
-+          LOG(INFO) << "Unable to update verified dm flag.";
-+          return false;
-+        }
-+      }
-+      // Update grub.cfg with the new dm format
-+      std::size_t found = line.find("dm=");
-+      if (found != std::string::npos) {
-+        line.replace(found, 3, "dm-mod.create=");
-+      }
-     }
-   }
-   return true;
-@@ -149,6 +165,9 @@ bool UpdateLegacyKernel(const InstallConfig& install_config) {
- string ExpandVerityArguments(const string& kernel_config,
-                              const string& root_uuid) {
-   string kernel_config_dm = ExtractKernelArg(kernel_config, "dm");
-+  if ( kernel_config_dm.empty()) {
-+    kernel_config_dm = ExtractKernelArg(kernel_config, "dm-mod.create");
-+  }
- 
-   // The verity config from the kernel contains short hand symbols for
-   // partition names that we have to expand to specific UUIDs.
-diff --git a/installer/chromeos_setimage.cc b/installer/chromeos_setimage.cc
-index ff13439430..3af4d6589c 100644
---- a/installer/chromeos_setimage.cc
-+++ b/installer/chromeos_setimage.cc
-@@ -78,7 +78,12 @@ bool SetImage(const InstallConfig& install_config) {
- 
-   base::FilePath kernel_config_root =
-       base::FilePath(ExtractKernelArg(kernel_config, "root"));
-+  int version = 0;
-   string dm_config = ExtractKernelArg(kernel_config, "dm");
-+  if (dm_config.empty()) {
-+    dm_config = ExtractKernelArg(kernel_config, "dm-mod.create");
-+    version =1;
-+  }
-   std::vector<string> dm_parts = base::SplitString(
-       dm_config, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
- 
-@@ -96,11 +101,24 @@ bool SetImage(const InstallConfig& install_config) {
-     return false;
-   }
- 
-+  string rootfs_sectors;
-+  string verity_algorithm;
-+  string expected_hash;
-+  string salt;
-   // Extract specific verity arguments
--  string rootfs_sectors = ExtractKernelArg(verity_args, "hashstart");
--  string verity_algorithm = ExtractKernelArg(verity_args, "alg");
--  string expected_hash = ExtractKernelArg(verity_args, "root_hexdigest");
--  string salt = ExtractKernelArg(verity_args, "salt");
-+  if (version == 1) {
-+    std::vector<string> verity_parts = base::SplitString(
-+        verity_args, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
-+    rootfs_sectors = verity_parts[9];
-+    verity_algorithm = verity_parts[10];
-+    expected_hash = verity_parts[11];
-+    salt = verity_parts[12];
-+  } else {
-+    rootfs_sectors = ExtractKernelArg(verity_args, "hashstart");
-+    verity_algorithm = ExtractKernelArg(verity_args, "alg");
-+    expected_hash = ExtractKernelArg(verity_args, "root_hexdigest");
-+    salt = ExtractKernelArg(verity_args, "salt");
-+  }
- 
-   bool enable_rootfs_verification = IsReadonly(kernel_config_root);
- 
-@@ -110,9 +128,16 @@ bool SetImage(const InstallConfig& install_config) {
-   LOG(INFO) << "Setting up verity.";
-   LoggingTimerStart();
-   verity::DmBht bht;
-+  uint64_t sectors;
-+  if (version == 1) {
-+    sectors = (atoi(rootfs_sectors.c_str()) << 3) / 8;
-+  } else {
-+    sectors = (atoi(rootfs_sectors.c_str())) / 8;
-+  }
-+
-   int result = chromeos_verity(&bht, verity_algorithm,
-                                install_config.root.device(), getpagesize(),
--                               (uint64_t)(atoi(rootfs_sectors.c_str()) / 8),
-+                               sectors,
-                                salt, expected_hash, enable_rootfs_verification);
-   LoggingTimerFinish();
- 
--- 
-2.41.0.390.g38632f3daf-goog
-
diff --git a/chromeos-base/chromeos-login/OWNERS b/chromeos-base/chromeos-login/OWNERS
index db7e695..18e2eab 100644
--- a/chromeos-base/chromeos-login/OWNERS
+++ b/chromeos-base/chromeos-login/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/login_manager/OWNERS
diff --git a/chromeos-base/chromeos-login/chromeos-login-0.0.2-r5364.ebuild b/chromeos-base/chromeos-login/chromeos-login-0.0.2-r5551.ebuild
similarity index 72%
rename from chromeos-base/chromeos-login/chromeos-login-0.0.2-r5364.ebuild
rename to chromeos-base/chromeos-login/chromeos-login-0.0.2-r5551.ebuild
index d9526b2..6a477c0 100644
--- a/chromeos-base/chromeos-login/chromeos-login-0.0.2-r5364.ebuild
+++ b/chromeos-base/chromeos-login/chromeos-login-0.0.2-r5551.ebuild
@@ -3,17 +3,21 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "709a41e5e595b1ec20189cdc9912091ca7d8e048" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "44cd39cf86c3fee0985bc7968791280be906aade" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="86ba3fa471ca07a91f67585494747bbcbbe26fcc"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "709a41e5e595b1ec20189cdc9912091ca7d8e048" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "4114b5bd03330a8d6f5ea273a2c204af6155caff" "3c167588538b9dd3054faa5a301fa17387858e60" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk chromeos-config libcontainer libpasswordprovider login_manager metrics .gn"
+# TODO(b/187784160): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk chromeos-config libcontainer libcrossystem libpasswordprovider login_manager libsegmentation metrics .gn"
 
 PLATFORM_SUBDIR="login_manager"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit tmpfiles cros-workon cros-unibuild platform systemd user
 
 DESCRIPTION="Login manager for Chromium OS."
@@ -22,7 +26,9 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="arc_adb_sideloading cheets flex_id fuzzer systemd user_session_isolation"
+IUSE="apply_landlock_policy arc_adb_sideloading cheets flex_id fuzzer
+	+login_apply_no_new_privs login_enable_crosh_sudo systemd test
+	user_session_isolation"
 
 COMMON_DEPEND="chromeos-base/bootstat:=
 	chromeos-base/chromeos-config-tools:=
@@ -30,15 +36,21 @@
 	chromeos-base/cryptohome:=
 	chromeos-base/libchromeos-ui:=
 	chromeos-base/libcontainer:=
+	chromeos-base/libcrossystem:=
 	chromeos-base/libpasswordprovider:=
+	chromeos-base/libsegmentation:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/nspr:=
 	dev-libs/nss:=
 	dev-libs/protobuf:=
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
+	sys-apps/dbus:=
 	sys-apps/util-linux:=
 "
 
 RDEPEND="${COMMON_DEPEND}
+	acct-group/session_manager
+	acct-user/session_manager
 	flex_id? ( chromeos-base/flex_id:= )
 "
 
@@ -46,6 +58,17 @@
 	>=chromeos-base/protofiles-0.0.43:=
 	chromeos-base/system_api:=[fuzzer?]
 	chromeos-base/vboot_reference:=
+	test? (
+		dev-util/shunit2
+		sys-process/procps
+		sys-process/lsof
+	)
+"
+
+BDEPEND="
+	app-crypt/nss
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
 "
 
 pkg_preinst() {
@@ -68,6 +91,10 @@
 	for test_bin in "${tests[@]}"; do
 		platform_test "run" "${OUT}/${test_bin}" "0" "" "${gtest_qemu_filter}"
 	done
+
+	if use x86 || use amd64; then
+		platform_test "run" "./init/scripts/ui-killers-helper_unittest"
+	fi
 }
 
 src_install() {
diff --git a/chromeos-base/chromeos-login/chromeos-login-9999.ebuild b/chromeos-base/chromeos-login/chromeos-login-9999.ebuild
index a64046e..92d46c4 100644
--- a/chromeos-base/chromeos-login/chromeos-login-9999.ebuild
+++ b/chromeos-base/chromeos-login/chromeos-login-9999.ebuild
@@ -7,11 +7,15 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk chromeos-config libcontainer libpasswordprovider login_manager metrics .gn"
+# TODO(b/187784160): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk chromeos-config libcontainer libcrossystem libpasswordprovider login_manager libsegmentation metrics .gn"
 
 PLATFORM_SUBDIR="login_manager"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit tmpfiles cros-workon cros-unibuild platform systemd user
 
 DESCRIPTION="Login manager for Chromium OS."
@@ -20,7 +24,9 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="arc_adb_sideloading cheets flex_id fuzzer systemd user_session_isolation"
+IUSE="apply_landlock_policy arc_adb_sideloading cheets flex_id fuzzer
+	+login_apply_no_new_privs login_enable_crosh_sudo systemd test
+	user_session_isolation"
 
 COMMON_DEPEND="chromeos-base/bootstat:=
 	chromeos-base/chromeos-config-tools:=
@@ -28,15 +34,21 @@
 	chromeos-base/cryptohome:=
 	chromeos-base/libchromeos-ui:=
 	chromeos-base/libcontainer:=
+	chromeos-base/libcrossystem:=
 	chromeos-base/libpasswordprovider:=
+	chromeos-base/libsegmentation:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/nspr:=
 	dev-libs/nss:=
 	dev-libs/protobuf:=
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
+	sys-apps/dbus:=
 	sys-apps/util-linux:=
 "
 
 RDEPEND="${COMMON_DEPEND}
+	acct-group/session_manager
+	acct-user/session_manager
 	flex_id? ( chromeos-base/flex_id:= )
 "
 
@@ -44,6 +56,17 @@
 	>=chromeos-base/protofiles-0.0.43:=
 	chromeos-base/system_api:=[fuzzer?]
 	chromeos-base/vboot_reference:=
+	test? (
+		dev-util/shunit2
+		sys-process/procps
+		sys-process/lsof
+	)
+"
+
+BDEPEND="
+	app-crypt/nss
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
 "
 
 pkg_preinst() {
@@ -66,6 +89,10 @@
 	for test_bin in "${tests[@]}"; do
 		platform_test "run" "${OUT}/${test_bin}" "0" "" "${gtest_qemu_filter}"
 	done
+
+	if use x86 || use amd64; then
+		platform_test "run" "./init/scripts/ui-killers-helper_unittest"
+	fi
 }
 
 src_install() {
diff --git a/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r476.ebuild b/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r534.ebuild
similarity index 88%
rename from chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r476.ebuild
rename to chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r534.ebuild
index ee65e33..55e6180 100644
--- a/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r476.ebuild
+++ b/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r534.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "e640e08e35bc8ab2016a67654025652d15869034" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e640e08e35bc8ab2016a67654025652d15869034" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
diff --git a/chromeos-base/chromeos-trim/OWNERS b/chromeos-base/chromeos-trim/OWNERS
index db7e695..abe24e5 100644
--- a/chromeos-base/chromeos-trim/OWNERS
+++ b/chromeos-base/chromeos-trim/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/trim/OWNERS
diff --git a/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1853.ebuild b/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1911.ebuild
similarity index 88%
rename from chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1853.ebuild
rename to chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1911.ebuild
index 6211e6f..cec2070 100644
--- a/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1853.ebuild
+++ b/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1911.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c2f473a44bc147ea9c02364600d309ca0684dde2" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "c2f473a44bc147ea9c02364600d309ca0684dde2" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/codelab/OWNERS b/chromeos-base/codelab/OWNERS
index db7e695..ca26399 100644
--- a/chromeos-base/codelab/OWNERS
+++ b/chromeos-base/codelab/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/codelab/OWNERS
diff --git a/chromeos-base/codelab/codelab-0.0.1-r355.ebuild b/chromeos-base/codelab/codelab-0.0.1-r413.ebuild
similarity index 85%
rename from chromeos-base/codelab/codelab-0.0.1-r355.ebuild
rename to chromeos-base/codelab/codelab-0.0.1-r413.ebuild
index 09b773b..cc55e2b 100644
--- a/chromeos-base/codelab/codelab-0.0.1-r355.ebuild
+++ b/chromeos-base/codelab/codelab-0.0.1-r413.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "887a35234fe1379635035430f8305f1de93d2075" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "887a35234fe1379635035430f8305f1de93d2075" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
diff --git a/chromeos-base/crash-reporter/crash-reporter-0.0.1-r4063.ebuild b/chromeos-base/crash-reporter/crash-reporter-0.0.1-r4254.ebuild
similarity index 89%
rename from chromeos-base/crash-reporter/crash-reporter-0.0.1-r4063.ebuild
rename to chromeos-base/crash-reporter/crash-reporter-0.0.1-r4254.ebuild
index 87bf017..b746a42 100644
--- a/chromeos-base/crash-reporter/crash-reporter-0.0.1-r4063.ebuild
+++ b/chromeos-base/crash-reporter/crash-reporter-0.0.1-r4254.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "ba6986a98cf73bcd8886455cb6148109f4340e2c" "2b162410dc0e1be38913a7e594b2bf865914baa9" "b6a499afe15c70520c73109f5587bd28f50964fa" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="86ba3fa471ca07a91f67585494747bbcbbe26fcc"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9974b7b7b2342ed27c6762e3238574fd49a59f8c" "67442b9578c0475865b147e940740e227d50027c" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -14,6 +14,10 @@
 
 PLATFORM_SUBDIR="crash-reporter"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-arm64 cros-i686 cros-workon platform systemd udev user
 
 DESCRIPTION="Crash reporting service that uploads crash reports with debug information"
@@ -21,7 +25,7 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="arcpp arcvm chromeless_tty cros_embedded -direncryption kvm_guest systemd fuzzer test vm-containers force_breakpad"
+IUSE="arcpp arcvm chromeless_tty cros_embedded -direncryption hw_details kvm_guest systemd fuzzer test vm-containers force_breakpad"
 
 COMMON_DEPEND="
 	chromeos-base/libcrossystem:=
@@ -30,12 +34,14 @@
 	chromeos-base/redaction_tool:=
 	chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?]
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:=
 	dev-libs/re2:=
 	direncryption? ( sys-apps/keyutils:= )
 	kvm_guest? ( net-libs/grpc:= )
 	net-misc/curl:=
 	sys-libs/zlib:=
+	sys-apps/dbus:=
 "
 RDEPEND="${COMMON_DEPEND}
 	chromeos-base/chromeos-ca-certificates
@@ -43,6 +49,7 @@
 DEPEND="
 	${COMMON_DEPEND}
 	chromeos-base/debugd-client:=
+	chromeos-base/protofiles:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/shill-client:=
 	chromeos-base/system_api:=[fuzzer?]
@@ -53,6 +60,10 @@
 	)
 "
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 src_configure() {
 	platform_src_configure
 	use arcpp && use_i686 && platform_src_configure_i686
diff --git a/chromeos-base/crash-reporter/crash-reporter-9999.ebuild b/chromeos-base/crash-reporter/crash-reporter-9999.ebuild
index d97ef5f..4157cb1 100644
--- a/chromeos-base/crash-reporter/crash-reporter-9999.ebuild
+++ b/chromeos-base/crash-reporter/crash-reporter-9999.ebuild
@@ -12,6 +12,10 @@
 
 PLATFORM_SUBDIR="crash-reporter"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-arm64 cros-i686 cros-workon platform systemd udev user
 
 DESCRIPTION="Crash reporting service that uploads crash reports with debug information"
@@ -19,7 +23,7 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="arcpp arcvm chromeless_tty cros_embedded -direncryption kvm_guest systemd fuzzer test vm-containers force_breakpad"
+IUSE="arcpp arcvm chromeless_tty cros_embedded -direncryption hw_details kvm_guest systemd fuzzer test vm-containers force_breakpad"
 
 COMMON_DEPEND="
 	chromeos-base/libcrossystem:=
@@ -28,12 +32,14 @@
 	chromeos-base/redaction_tool:=
 	chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?]
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:=
 	dev-libs/re2:=
 	direncryption? ( sys-apps/keyutils:= )
 	kvm_guest? ( net-libs/grpc:= )
 	net-misc/curl:=
 	sys-libs/zlib:=
+	sys-apps/dbus:=
 "
 RDEPEND="${COMMON_DEPEND}
 	chromeos-base/chromeos-ca-certificates
@@ -41,6 +47,7 @@
 DEPEND="
 	${COMMON_DEPEND}
 	chromeos-base/debugd-client:=
+	chromeos-base/protofiles:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/shill-client:=
 	chromeos-base/system_api:=[fuzzer?]
@@ -51,8 +58,8 @@
 	)
 "
 
-PATCHES="
-	${FILESDIR}/0001-crash-reporter-Fix-anomaly_detector-build.patch
+BDEPEND="
+	dev-libs/protobuf
 "
 
 src_configure() {
diff --git a/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-0.0.1-r247.ebuild b/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-0.0.1-r307.ebuild
similarity index 74%
rename from chromeos-base/cros-camera-android-deps/cros-camera-android-deps-0.0.1-r247.ebuild
rename to chromeos-base/cros-camera-android-deps/cros-camera-android-deps-0.0.1-r307.ebuild
index 8b6f91a..7e54c64 100644
--- a/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-0.0.1-r247.ebuild
+++ b/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-0.0.1-r307.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "6afa7602f9bb1fa5904a2d953e4d7a6331846119" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "6afa7602f9bb1fa5904a2d953e4d7a6331846119" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/android common-mk"
diff --git a/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-0.0.1-r151.ebuild b/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-0.0.1-r151.ebuild
new file mode 100644
index 0000000..fc4e6e6
--- /dev/null
+++ b/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-0.0.1-r151.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2023 The ChromiumOS Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "08be66d121f32b77916d96fb9f751d5150610126" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo camera/diagnostics common-mk mojo_service_manager"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/diagnostics"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="ChromeOS camera diagnostics service."
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	chromeos-base/mojo_service_manager:="
+
+DEPEND="${RDEPEND}"
diff --git a/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-0.0.1-r50.ebuild b/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-0.0.1-r50.ebuild
deleted file mode 100644
index 109439b..0000000
--- a/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-0.0.1-r50.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2023 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "4905252d7c2626874b087f7fedb988e06769a3d0" "ccd70993df3dbf4fff4325967037745b83ccbde8" "dbb5b7e0565776020d57602b117ec254f4683e15" "1647a468f15f85e89d45c799e27359e3e664c67b" "66d9ece0c55ff21826b4962ffd402f0927467387")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo camera/diagnostics common-mk mojo_service_manager"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/diagnostics"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="ChromeOS camera diagnostics service."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	chromeos-base/libbrillo:=
-	chromeos-base/mojo_service_manager:="
-
-DEPEND="${RDEPEND}"
diff --git a/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-9999.ebuild b/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-9999.ebuild
index d88918f..8943ea7 100644
--- a/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-9999.ebuild
+++ b/chromeos-base/cros-camera-diagnostics/cros-camera-diagnostics-9999.ebuild
@@ -21,7 +21,6 @@
 IUSE=""
 
 RDEPEND="
-	chromeos-base/libbrillo:=
 	chromeos-base/mojo_service_manager:="
 
 DEPEND="${RDEPEND}"
diff --git a/chromeos-base/cros-camera-libs/cros-camera-libs-0.0.1-r1192.ebuild b/chromeos-base/cros-camera-libs/cros-camera-libs-0.0.1-r1192.ebuild
new file mode 100644
index 0000000..d8bd905
--- /dev/null
+++ b/chromeos-base/cros-camera-libs/cros-camera-libs-0.0.1-r1192.ebuild
@@ -0,0 +1,111 @@
+# Copyright 2021 The ChromiumOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "21bea9b039270722a2838496f241927aab594088" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "9942607d3de36a375711502f44f44d28aac7bd3a" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "cceb75d9e5555d3cccb273c52847819feabc9c65" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a")
+SUBTREES=(
+	.gn
+	camera/build
+	camera/common
+	camera/features
+	camera/gpu
+	camera/include
+	camera/mojo
+	chromeos-config
+	common-mk
+	iioservice/libiioservice_ipc
+	iioservice/mojo
+	metrics
+	ml_core
+	mojo_service_manager
+)
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="${SUBTREES[*]}"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/common"
+
+inherit cros-camera cros-constants cros-workon platform
+
+DESCRIPTION="ChromeOS camera common libraries."
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+CAMERA_FEATURE_PREFIX="camera_feature_"
+IUSE_FEATURE_FLAGS=(
+	auto_framing
+	diagnostics
+	effects
+	face_detection
+	frame_annotator
+	hdrnet
+	portrait_mode
+)
+IUSE_PLATFORM_FLAGS=(
+	ipu6
+	ipu6ep
+	ipu6epadln
+	ipu6epmtl
+	ipu6se
+	qualcomm_camx
+)
+
+# FEATURE and PLATFORM IUSE flags are passed to and used in BUILD.gn files.
+IUSE="
+	${IUSE_FEATURE_FLAGS[*]/#/${CAMERA_FEATURE_PREFIX}}
+	${IUSE_PLATFORM_FLAGS[*]}
+"
+
+BDEPEND="
+	chromeos-base/minijail
+	virtual/pkgconfig
+"
+
+RDEPEND="
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/cros-camera-android-deps:=
+	chromeos-base/mojo_service_manager:=
+	camera_feature_effects? ( dev-libs/ml-core:= )
+	dev-libs/re2:=
+	media-libs/cros-camera-libfs:=
+	media-libs/libexif:=
+	media-libs/libsync:=
+	media-libs/minigbm:=
+	virtual/jpeg:0=
+	virtual/libudev:=
+	virtual/opengles:=
+	x11-libs/libdrm:=
+"
+
+DEPEND="
+	${RDEPEND}
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/system_api:=
+	media-libs/cros-camera-libcamera_connector_headers:=
+	media-libs/libyuv:=
+	x11-base/xorg-proto:=
+	x11-drivers/opengles-headers:=
+"
+
+src_configure() {
+	cros_optimize_package_for_speed
+	platform_src_configure
+}
+
+src_install() {
+	local fuzzer_component_id="167281"
+	platform_fuzzer_install "${S}"/OWNERS \
+			"${OUT}"/camera_still_capture_processor_impl_fuzzer \
+			--comp "${fuzzer_component_id}"
+	platform_src_install
+}
+
+platform_pkg_test() {
+	platform test_all
+}
diff --git a/chromeos-base/cros-camera-libs/cros-camera-libs-0.0.1-r985.ebuild b/chromeos-base/cros-camera-libs/cros-camera-libs-0.0.1-r985.ebuild
deleted file mode 100644
index 2c83562..0000000
--- a/chromeos-base/cros-camera-libs/cros-camera-libs-0.0.1-r985.ebuild
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright 2021 The ChromiumOS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "ddb7cf2ecd4ddddcdb48872581ff50992714e916" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "4905252d7c2626874b087f7fedb988e06769a3d0" "ccd70993df3dbf4fff4325967037745b83ccbde8" "f2431337126663ce80d01b13755ed940d700e70a" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d" "66d9ece0c55ff21826b4962ffd402f0927467387")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE=".gn common-mk metrics camera/build camera/common camera/features camera/gpu camera/include camera/mojo chromeos-config iioservice/libiioservice_ipc iioservice/mojo ml_core mojo_service_manager"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common"
-
-inherit cros-camera cros-constants cros-workon platform
-
-DESCRIPTION="Chrome OS camera common libraries."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-# 'camera_feature_*' and 'ipu6*' are passed to and used in BUILD.gn files.
-IUSE="camera_feature_auto_framing camera_feature_diagnostics camera_feature_face_detection camera_feature_frame_annotator camera_feature_hdrnet camera_feature_portrait_mode camera_feature_effects ipu6 ipu6ep ipu6se qualcomm_camx"
-
-# Auto face framing depends on the face detection feature.
-REQUIRED_USE="camera_feature_auto_framing? ( camera_feature_face_detection )"
-
-BDEPEND="virtual/pkgconfig"
-
-# TODO: Remove the conflicting packages
-CONFLICTING_PACKAGES="
-	!media-libs/cros-camera-libcab
-	!media-libs/cros-camera-libcam_gpu_algo
-	!media-libs/cros-camera-libcamera_common
-	!media-libs/cros-camera-libcamera_connector
-	!media-libs/cros-camera-libcamera_exif
-	!media-libs/cros-camera-libcamera_ipc
-	!media-libs/cros-camera-libcamera_timezone
-	!media-libs/cros-camera-libcamera_v4l2_device
-	!media-libs/cros-camera-libcbm
-	!media-libs/cros-camera-libjda
-"
-
-RDEPEND="
-	${CONFLICTING_PACKAGES}
-	chromeos-base/chromeos-config-tools:=
-	chromeos-base/cros-camera-android-deps:=
-	chromeos-base/mojo_service_manager:=
-	dev-libs/ml-core:=
-	media-libs/cros-camera-libfs:=
-	media-libs/libexif:=
-	media-libs/libsync:=
-	media-libs/minigbm:=
-	virtual/libudev:=
-	virtual/opengles:=
-	x11-libs/libdrm:=
-"
-
-DEPEND="
-	${RDEPEND}
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	media-libs/cros-camera-libcamera_connector_headers:=
-	media-libs/libyuv:=
-	x11-base/xorg-proto:=
-	x11-drivers/opengles-headers:=
-"
-
-src_configure() {
-	cros_optimize_package_for_speed
-	platform_src_configure
-}
-
-src_install() {
-	local fuzzer_component_id="167281"
-	platform_fuzzer_install "${S}"/OWNERS \
-			"${OUT}"/camera_still_capture_processor_impl_fuzzer \
-			--comp "${fuzzer_component_id}"
-	platform_src_install
-}
-
-platform_pkg_test() {
-	platform test_all
-}
diff --git a/chromeos-base/cros-camera-libs/cros-camera-libs-9999.ebuild b/chromeos-base/cros-camera-libs/cros-camera-libs-9999.ebuild
index fa13167..3320baa 100644
--- a/chromeos-base/cros-camera-libs/cros-camera-libs-9999.ebuild
+++ b/chromeos-base/cros-camera-libs/cros-camera-libs-9999.ebuild
@@ -3,9 +3,26 @@
 
 EAPI=7
 
+SUBTREES=(
+	.gn
+	camera/build
+	camera/common
+	camera/features
+	camera/gpu
+	camera/include
+	camera/mojo
+	chromeos-config
+	common-mk
+	iioservice/libiioservice_ipc
+	iioservice/mojo
+	metrics
+	ml_core
+	mojo_service_manager
+)
+
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE=".gn common-mk metrics camera/build camera/common camera/features camera/gpu camera/include camera/mojo chromeos-config iioservice/libiioservice_ipc iioservice/mojo ml_core mojo_service_manager"
+CROS_WORKON_SUBTREE="${SUBTREES[*]}"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -13,43 +30,52 @@
 
 inherit cros-camera cros-constants cros-workon platform
 
-DESCRIPTION="Chrome OS camera common libraries."
+DESCRIPTION="ChromeOS camera common libraries."
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 
-# 'camera_feature_*' and 'ipu6*' are passed to and used in BUILD.gn files.
-IUSE="camera_feature_auto_framing camera_feature_diagnostics camera_feature_face_detection camera_feature_frame_annotator camera_feature_hdrnet camera_feature_portrait_mode camera_feature_effects ipu6 ipu6ep ipu6se qualcomm_camx"
+CAMERA_FEATURE_PREFIX="camera_feature_"
+IUSE_FEATURE_FLAGS=(
+	auto_framing
+	diagnostics
+	effects
+	face_detection
+	frame_annotator
+	hdrnet
+	portrait_mode
+)
+IUSE_PLATFORM_FLAGS=(
+	ipu6
+	ipu6ep
+	ipu6epadln
+	ipu6epmtl
+	ipu6se
+	qualcomm_camx
+)
 
-# Auto face framing depends on the face detection feature.
-REQUIRED_USE="camera_feature_auto_framing? ( camera_feature_face_detection )"
+# FEATURE and PLATFORM IUSE flags are passed to and used in BUILD.gn files.
+IUSE="
+	${IUSE_FEATURE_FLAGS[*]/#/${CAMERA_FEATURE_PREFIX}}
+	${IUSE_PLATFORM_FLAGS[*]}
+"
 
-BDEPEND="virtual/pkgconfig"
-
-# TODO: Remove the conflicting packages
-CONFLICTING_PACKAGES="
-	!media-libs/cros-camera-libcab
-	!media-libs/cros-camera-libcam_gpu_algo
-	!media-libs/cros-camera-libcamera_common
-	!media-libs/cros-camera-libcamera_connector
-	!media-libs/cros-camera-libcamera_exif
-	!media-libs/cros-camera-libcamera_ipc
-	!media-libs/cros-camera-libcamera_timezone
-	!media-libs/cros-camera-libcamera_v4l2_device
-	!media-libs/cros-camera-libcbm
-	!media-libs/cros-camera-libjda
+BDEPEND="
+	chromeos-base/minijail
+	virtual/pkgconfig
 "
 
 RDEPEND="
-	${CONFLICTING_PACKAGES}
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cros-camera-android-deps:=
 	chromeos-base/mojo_service_manager:=
-	dev-libs/ml-core:=
+	camera_feature_effects? ( dev-libs/ml-core:= )
+	dev-libs/re2:=
 	media-libs/cros-camera-libfs:=
 	media-libs/libexif:=
 	media-libs/libsync:=
 	media-libs/minigbm:=
+	virtual/jpeg:0=
 	virtual/libudev:=
 	virtual/opengles:=
 	x11-libs/libdrm:=
@@ -58,6 +84,7 @@
 DEPEND="
 	${RDEPEND}
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/system_api:=
 	media-libs/cros-camera-libcamera_connector_headers:=
 	media-libs/libyuv:=
 	x11-base/xorg-proto:=
diff --git a/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r616.ebuild b/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r686.ebuild
similarity index 66%
rename from chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r616.ebuild
rename to chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r686.ebuild
index 438adf8..ca6f434 100644
--- a/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r616.ebuild
+++ b/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r686.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "73aa3d6be026ab3d98d6df5321892428e9d47e45" "4905252d7c2626874b087f7fedb988e06769a3d0" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "73aa3d6be026ab3d98d6df5321892428e9d47e45" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/tools camera/include common-mk"
diff --git a/chromeos-base/cros-camera/cros-camera-0.0.1-r1653.ebuild b/chromeos-base/cros-camera/cros-camera-0.0.1-r1653.ebuild
deleted file mode 100644
index f26c9e5..0000000
--- a/chromeos-base/cros-camera/cros-camera-0.0.1-r1653.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2017 The ChromiumOS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "ddb7cf2ecd4ddddcdb48872581ff50992714e916" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "714a64867e6031f830bdd9bb987333ae94893bc7" "37e045e3f34f3032d5e9dd4031d12ffaa4bba696" "4905252d7c2626874b087f7fedb988e06769a3d0" "ccd70993df3dbf4fff4325967037745b83ccbde8" "1647a468f15f85e89d45c799e27359e3e664c67b" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-# TODO(crbug.com/914263): camera/hal is unnecessary for this build but is
-# workaround for unexpected sandbox behavior.
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/features camera/gpu camera/hal camera/hal_adapter camera/include camera/mojo common-mk ml_core"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/hal_adapter"
-
-inherit cros-camera cros-constants cros-workon platform tmpfiles user udev
-
-DESCRIPTION="Chrome OS camera service. The service is in charge of accessing
-camera device. It uses unix domain socket to build a synchronous channel."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cheets camera_feature_face_detection arcvm -libcamera"
-
-BDEPEND="virtual/pkgconfig"
-
-RDEPEND="
-	>=chromeos-base/cros-camera-libs-0.0.1-r34:=
-	chromeos-base/cros-camera-android-deps:=
-	chromeos-base/system_api:=
-	media-libs/cros-camera-hal-usb:=
-	media-libs/libsync:=
-	media-libs/libyuv:=
-	libcamera? ( media-libs/libcamera )
-	!libcamera? (
-		virtual/cros-camera-hal
-		virtual/cros-camera-hal-configs
-	)"
-
-DEPEND="${RDEPEND}
-	chromeos-base/dlcservice-client:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	media-libs/minigbm:=
-	x11-drivers/opengles-headers:=
-	x11-libs/libdrm:="
-
-src_configure() {
-	cros_optimize_package_for_speed
-	platform_src_configure
-}
-
-src_install() {
-	platform_src_install
-	udev_dorules udev/99-camera.rules
-	dotmpfiles tmpfiles.d/*.conf
-}
-
-pkg_preinst() {
-	enewuser "arc-camera"
-	enewgroup "arc-camera"
-	enewgroup "camera"
-}
diff --git a/chromeos-base/cros-camera/cros-camera-0.0.1-r1819.ebuild b/chromeos-base/cros-camera/cros-camera-0.0.1-r1819.ebuild
new file mode 100644
index 0000000..ca872d7
--- /dev/null
+++ b/chromeos-base/cros-camera/cros-camera-0.0.1-r1819.ebuild
@@ -0,0 +1,83 @@
+# Copyright 2017 The ChromiumOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "21bea9b039270722a2838496f241927aab594088" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "ffcc0ce24086385ff4acb4e1dbde1ac32df8d317" "e346258342c19181fa62aa2695ead106868304f4" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "cceb75d9e5555d3cccb273c52847819feabc9c65")
+SUBTREES=(
+	.gn
+	camera/build
+	camera/common
+	camera/features
+	camera/gpu
+	# TODO(crbug.com/914263): camera/hal is unnecessary for this build but
+	# is workaround for unexpected sandbox behavior.
+	camera/hal
+	camera/hal_adapter
+	camera/include
+	camera/mojo
+	common-mk
+	ml_core
+)
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="${SUBTREES[*]}"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/hal_adapter"
+
+inherit cros-camera cros-constants cros-workon platform tmpfiles user udev
+
+DESCRIPTION="ChromeOS camera service. The service is in charge of accessing
+camera device. It uses unix domain socket to build a synchronous channel."
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cheets camera_feature_face_detection arcvm -libcamera"
+
+BDEPEND="virtual/pkgconfig"
+
+RDEPEND="
+	>=chromeos-base/cros-camera-libs-0.0.1-r34:=
+	chromeos-base/cros-camera-android-deps:=
+	chromeos-base/system_api:=
+	media-libs/cros-camera-hal-usb:=
+	media-libs/libsync:=
+	media-libs/libyuv:=
+	libcamera? ( media-libs/libcamera )
+	!libcamera? (
+		virtual/cros-camera-hal
+		virtual/cros-camera-hal-configs
+	)"
+
+DEPEND="${RDEPEND}
+	chromeos-base/dlcservice-client:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	media-libs/minigbm:=
+	x11-drivers/opengles-headers:=
+	x11-libs/libdrm:="
+
+
+BDEPEND="
+	chromeos-base/minijail
+"
+
+src_configure() {
+	cros_optimize_package_for_speed
+	platform_src_configure
+}
+
+src_install() {
+	platform_src_install
+	udev_dorules udev/99-camera.rules
+	dotmpfiles tmpfiles.d/*.conf
+}
+
+pkg_preinst() {
+	enewuser "arc-camera"
+	enewgroup "arc-camera"
+	enewgroup "camera"
+}
diff --git a/chromeos-base/cros-camera/cros-camera-9999.ebuild b/chromeos-base/cros-camera/cros-camera-9999.ebuild
index e41b749..52a1d07 100644
--- a/chromeos-base/cros-camera/cros-camera-9999.ebuild
+++ b/chromeos-base/cros-camera/cros-camera-9999.ebuild
@@ -3,11 +3,25 @@
 
 EAPI=7
 
+SUBTREES=(
+	.gn
+	camera/build
+	camera/common
+	camera/features
+	camera/gpu
+	# TODO(crbug.com/914263): camera/hal is unnecessary for this build but
+	# is workaround for unexpected sandbox behavior.
+	camera/hal
+	camera/hal_adapter
+	camera/include
+	camera/mojo
+	common-mk
+	ml_core
+)
+
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
-# TODO(crbug.com/914263): camera/hal is unnecessary for this build but is
-# workaround for unexpected sandbox behavior.
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/features camera/gpu camera/hal camera/hal_adapter camera/include camera/mojo common-mk ml_core"
+CROS_WORKON_SUBTREE="${SUBTREES[*]}"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -15,7 +29,7 @@
 
 inherit cros-camera cros-constants cros-workon platform tmpfiles user udev
 
-DESCRIPTION="Chrome OS camera service. The service is in charge of accessing
+DESCRIPTION="ChromeOS camera service. The service is in charge of accessing
 camera device. It uses unix domain socket to build a synchronous channel."
 
 LICENSE="BSD-Google"
@@ -44,6 +58,11 @@
 	x11-drivers/opengles-headers:=
 	x11-libs/libdrm:="
 
+
+BDEPEND="
+	chromeos-base/minijail
+"
+
 src_configure() {
 	cros_optimize_package_for_speed
 	platform_src_configure
diff --git a/chromeos-base/cros-disks/cros-disks-0.0.1-r3690.ebuild b/chromeos-base/cros-disks/cros-disks-0.0.1-r3786.ebuild
similarity index 85%
rename from chromeos-base/cros-disks/cros-disks-0.0.1-r3690.ebuild
rename to chromeos-base/cros-disks/cros-disks-0.0.1-r3786.ebuild
index 40dfd2f..2b010d4 100644
--- a/chromeos-base/cros-disks/cros-disks-0.0.1-r3690.ebuild
+++ b/chromeos-base/cros-disks/cros-disks-0.0.1-r3786.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="af29f016e8f4212c169ba01cd70714022633c97a"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "735e72ba3cb35e11a585dda4ab337ddb287a2300" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "bc009657c43d316a4eab2f318ab4d097844c7564" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
@@ -49,6 +49,11 @@
 	chromeos-base/system_api:=[fuzzer?]
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser "cros-disks"
 	enewgroup "cros-disks"
diff --git a/chromeos-base/cros-disks/cros-disks-9999.ebuild b/chromeos-base/cros-disks/cros-disks-9999.ebuild
index 027f972..3dc7bfe 100644
--- a/chromeos-base/cros-disks/cros-disks-9999.ebuild
+++ b/chromeos-base/cros-disks/cros-disks-9999.ebuild
@@ -47,6 +47,11 @@
 	chromeos-base/system_api:=[fuzzer?]
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser "cros-disks"
 	enewgroup "cros-disks"
diff --git a/chromeos-base/crosdns/crosdns-0.0.2-r503.ebuild b/chromeos-base/crosdns/crosdns-0.0.2-r563.ebuild
similarity index 80%
rename from chromeos-base/crosdns/crosdns-0.0.2-r503.ebuild
rename to chromeos-base/crosdns/crosdns-0.0.2-r563.ebuild
index c702228..1d9a520 100644
--- a/chromeos-base/crosdns/crosdns-0.0.2-r503.ebuild
+++ b/chromeos-base/crosdns/crosdns-0.0.2-r563.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "594cf0e9a121ef2fc158123ae1ee8a4a39934014" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "cf1be46522c795cf9851b20feea0186eec4499ac" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -32,6 +32,11 @@
 	${COMMON_DEPEND}
 	chromeos-base/system_api:=[fuzzer?]"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/crosdns/crosdns-9999.ebuild b/chromeos-base/crosdns/crosdns-9999.ebuild
index 83fb051..faa4bdf 100644
--- a/chromeos-base/crosdns/crosdns-9999.ebuild
+++ b/chromeos-base/crosdns/crosdns-9999.ebuild
@@ -30,6 +30,11 @@
 	${COMMON_DEPEND}
 	chromeos-base/system_api:=[fuzzer?]"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/croslog/croslog-0.0.1-r493.ebuild b/chromeos-base/croslog/croslog-0.0.1-r588.ebuild
similarity index 69%
rename from chromeos-base/croslog/croslog-0.0.1-r493.ebuild
rename to chromeos-base/croslog/croslog-0.0.1-r588.ebuild
index 9fa5985..a995ffb 100644
--- a/chromeos-base/croslog/croslog-0.0.1-r493.ebuild
+++ b/chromeos-base/croslog/croslog-0.0.1-r588.ebuild
@@ -3,8 +3,8 @@
 # found in the LICENSE file.
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "b70950b4cf339f9ec166ca0bbbfba6357c1e682f" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "eed5e5f4f52bb1b1f367cf64819916aac6614303" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -12,6 +12,9 @@
 CROS_WORKON_SUBTREE="common-mk croslog metrics .gn"
 
 PLATFORM_SUBDIR="croslog"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform
 
@@ -25,7 +28,8 @@
 
 DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
-	"
+	dev-libs/re2:=
+"
 RDEPEND="${DEPEND}"
 
 src_install() {
diff --git a/chromeos-base/croslog/croslog-9999.ebuild b/chromeos-base/croslog/croslog-9999.ebuild
index 8737efc..45876b2 100644
--- a/chromeos-base/croslog/croslog-9999.ebuild
+++ b/chromeos-base/croslog/croslog-9999.ebuild
@@ -10,6 +10,9 @@
 CROS_WORKON_SUBTREE="common-mk croslog metrics .gn"
 
 PLATFORM_SUBDIR="croslog"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform
 
@@ -23,7 +26,8 @@
 
 DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
-	"
+	dev-libs/re2:=
+"
 RDEPEND="${DEPEND}"
 
 src_install() {
diff --git a/chromeos-base/cryptohome-client/OWNERS b/chromeos-base/cryptohome-client/OWNERS
index db7e695..56084ac 100644
--- a/chromeos-base/cryptohome-client/OWNERS
+++ b/chromeos-base/cryptohome-client/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/cryptohome/OWNERS
diff --git a/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r2651.ebuild b/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r2882.ebuild
similarity index 70%
rename from chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r2651.ebuild
rename to chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r2882.ebuild
index 3c35000..84ec7b3 100644
--- a/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r2651.ebuild
+++ b/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r2882.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="f2313f9732f2c9ed271e6ecc28b4d9968772b80b"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f61158d0ca999f6f893bb1581d1f0aa772f8b37a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="63150342c81b7d2c6e55b02852c0837a782f27f6"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "15c4f8762d19830c655ec02d2b76a7ab8d7c4530" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -21,13 +21,16 @@
 LICENSE="BSD-Google"
 KEYWORDS="*"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies.
 BDEPEND="
 	chromeos-base/chromeos-dbus-bindings
 "
 
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
+"
+
 # r3700 because we moved the dbus headers for UserDataAuth from cryptohome into
 # cryptohome-client in that version.
 RDEPEND="
diff --git a/chromeos-base/cryptohome-client/cryptohome-client-9999.ebuild b/chromeos-base/cryptohome-client/cryptohome-client-9999.ebuild
index d912f1a..5e3e165 100644
--- a/chromeos-base/cryptohome-client/cryptohome-client-9999.ebuild
+++ b/chromeos-base/cryptohome-client/cryptohome-client-9999.ebuild
@@ -19,13 +19,16 @@
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies.
 BDEPEND="
 	chromeos-base/chromeos-dbus-bindings
 "
 
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
+"
+
 # r3700 because we moved the dbus headers for UserDataAuth from cryptohome into
 # cryptohome-client in that version.
 RDEPEND="
diff --git a/chromeos-base/cryptohome-dev-utils/OWNERS b/chromeos-base/cryptohome-dev-utils/OWNERS
index db7e695..56084ac 100644
--- a/chromeos-base/cryptohome-dev-utils/OWNERS
+++ b/chromeos-base/cryptohome-dev-utils/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/cryptohome/OWNERS
diff --git a/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r2582.ebuild b/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r2582.ebuild
deleted file mode 100644
index 3a4c48b..0000000
--- a/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r2582.ebuild
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 2018 The ChromiumOS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="f2313f9732f2c9ed271e6ecc28b4d9968772b80b"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f61158d0ca999f6f893bb1581d1f0aa772f8b37a" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "585af077146f2e4daaaec14eb5814cd8507e862c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk cryptohome libhwsec libhwsec-foundation secure_erase_file .gn"
-
-PLATFORM_SUBDIR="cryptohome/dev-utils"
-
-inherit cros-workon platform
-
-DESCRIPTION="Cryptohome developer and testing utilities for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cryptohome"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="tpm tpm_dynamic tpm_insecure_fallback tpm2"
-
-REQUIRED_USE="
-	tpm_dynamic? ( tpm tpm2 )
-	!tpm_dynamic? ( ?? ( tpm tpm2 ) )
-"
-
-# TODO(b/230430190): Remove shill-client dependency after experiment ended.
-COMMON_DEPEND="
-	tpm? (
-		app-crypt/trousers:=
-	)
-	tpm2? (
-		chromeos-base/trunks:=
-	)
-	chromeos-base/attestation:=
-	chromeos-base/biod_proxy:=
-	chromeos-base/bootlockbox-client:=
-	chromeos-base/cbor:=
-	chromeos-base/chaps:=
-	chromeos-base/chromeos-config-tools:=
-	chromeos-base/featured:=
-	chromeos-base/libhwsec:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/shill-client:=
-	chromeos-base/tpm_manager:=
-	chromeos-base/secure-erase-file:=
-	dev-libs/flatbuffers:=
-	dev-libs/glib:=
-	dev-libs/openssl:=
-	dev-libs/protobuf:=
-	sys-apps/keyutils:=
-	sys-fs/e2fsprogs:=
-	sys-fs/ecryptfs-utils:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/vboot_reference:=
-"
diff --git a/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r2855.ebuild b/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r2855.ebuild
new file mode 100644
index 0000000..701e8e4
--- /dev/null
+++ b/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r2855.ebuild
@@ -0,0 +1,89 @@
+# Copyright 2018 The ChromiumOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="63150342c81b7d2c6e55b02852c0837a782f27f6"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "15c4f8762d19830c655ec02d2b76a7ab8d7c4530" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "585af077146f2e4daaaec14eb5814cd8507e862c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+PYTHON_COMPAT=( python3_{8..11} )
+
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk cryptohome libcrossystem libhwsec libhwsec-foundation secure_erase_file .gn"
+
+PLATFORM_SUBDIR="cryptohome/dev-utils"
+
+inherit python-any-r1 cros-workon platform
+
+DESCRIPTION="Cryptohome developer and testing utilities for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cryptohome"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="tpm tpm_dynamic tpm_insecure_fallback tpm2"
+
+REQUIRED_USE="
+	tpm_dynamic? ( tpm tpm2 )
+	!tpm_dynamic? ( ?? ( tpm tpm2 ) )
+"
+
+# TODO(b/230430190): Remove shill-client dependency after experiment ended.
+COMMON_DEPEND="
+	tpm? (
+		app-crypt/trousers:=
+	)
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	chromeos-base/attestation:=
+	chromeos-base/biod_proxy:=
+	chromeos-base/bootlockbox-client:=
+	chromeos-base/cbor:=
+	chromeos-base/chaps:=
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/cryptohome:=
+	chromeos-base/cryptohome-client:=
+	chromeos-base/featured:=
+	chromeos-base/libcrossystem:=
+	chromeos-base/libhwsec:=
+	chromeos-base/libhwsec-foundation:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=
+	chromeos-base/tpm_manager:=
+	chromeos-base/secure-erase-file:=
+	dev-cpp/abseil-cpp:=
+	dev-libs/flatbuffers:=
+	dev-libs/glib:=
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
+	sys-apps/keyutils:=
+	sys-fs/e2fsprogs:=
+	sys-fs/ecryptfs-utils:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/vboot_reference:=
+"
+
+# shellcheck disable=SC2016
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/flatbuffers
+	dev-libs/protobuf
+	$(python_gen_any_dep '
+		dev-python/jinja[${PYTHON_USEDEP}]
+		dev-python/flatbuffers[${PYTHON_USEDEP}]
+	')
+"
+
+python_check_deps() {
+	python_has_version -b "dev-python/jinja[${PYTHON_USEDEP}]" &&
+		python_has_version -b "dev-python/flatbuffers[${PYTHON_USEDEP}]"
+}
diff --git a/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-9999.ebuild b/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-9999.ebuild
index fae47f7..30ea09f 100644
--- a/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-9999.ebuild
+++ b/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-9999.ebuild
@@ -3,16 +3,18 @@
 
 EAPI=7
 
+PYTHON_COMPAT=( python3_{8..11} )
+
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk cryptohome libhwsec libhwsec-foundation secure_erase_file .gn"
+CROS_WORKON_SUBTREE="common-mk cryptohome libcrossystem libhwsec libhwsec-foundation secure_erase_file .gn"
 
 PLATFORM_SUBDIR="cryptohome/dev-utils"
 
-inherit cros-workon platform
+inherit python-any-r1 cros-workon platform
 
 DESCRIPTION="Cryptohome developer and testing utilities for Chromium OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cryptohome"
@@ -41,12 +43,18 @@
 	chromeos-base/cbor:=
 	chromeos-base/chaps:=
 	chromeos-base/chromeos-config-tools:=
+	chromeos-base/cryptohome:=
+	chromeos-base/cryptohome-client:=
 	chromeos-base/featured:=
+	chromeos-base/libcrossystem:=
 	chromeos-base/libhwsec:=
+	chromeos-base/libhwsec-foundation:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/shill-client:=
+	chromeos-base/system_api:=
 	chromeos-base/tpm_manager:=
 	chromeos-base/secure-erase-file:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/flatbuffers:=
 	dev-libs/glib:=
 	dev-libs/openssl:=
@@ -61,3 +69,19 @@
 DEPEND="${COMMON_DEPEND}
 	chromeos-base/vboot_reference:=
 "
+
+# shellcheck disable=SC2016
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/flatbuffers
+	dev-libs/protobuf
+	$(python_gen_any_dep '
+		dev-python/jinja[${PYTHON_USEDEP}]
+		dev-python/flatbuffers[${PYTHON_USEDEP}]
+	')
+"
+
+python_check_deps() {
+	python_has_version -b "dev-python/jinja[${PYTHON_USEDEP}]" &&
+		python_has_version -b "dev-python/flatbuffers[${PYTHON_USEDEP}]"
+}
diff --git a/chromeos-base/cryptohome/OWNERS b/chromeos-base/cryptohome/OWNERS
index db7e695..56084ac 100644
--- a/chromeos-base/cryptohome/OWNERS
+++ b/chromeos-base/cryptohome/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/cryptohome/OWNERS
diff --git a/chromeos-base/cryptohome/cryptohome-0.0.2-r5126.ebuild b/chromeos-base/cryptohome/cryptohome-0.0.2-r5401.ebuild
similarity index 86%
rename from chromeos-base/cryptohome/cryptohome-0.0.2-r5126.ebuild
rename to chromeos-base/cryptohome/cryptohome-0.0.2-r5401.ebuild
index bca6b17..c2fca5c 100644
--- a/chromeos-base/cryptohome/cryptohome-0.0.2-r5126.ebuild
+++ b/chromeos-base/cryptohome/cryptohome-0.0.2-r5401.ebuild
@@ -3,26 +3,27 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="f2313f9732f2c9ed271e6ecc28b4d9968772b80b"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f61158d0ca999f6f893bb1581d1f0aa772f8b37a" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "585af077146f2e4daaaec14eb5814cd8507e862c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="63150342c81b7d2c6e55b02852c0837a782f27f6"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "15c4f8762d19830c655ec02d2b76a7ab8d7c4530" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "585af077146f2e4daaaec14eb5814cd8507e862c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+PYTHON_COMPAT=( python3_{8..11} )
+
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk cryptohome libhwsec libhwsec-foundation secure_erase_file .gn"
+CROS_WORKON_SUBTREE="common-mk cryptohome libcrossystem libhwsec libhwsec-foundation secure_erase_file .gn"
 
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="cryptohome"
 
-inherit tmpfiles cros-workon cros-unibuild platform systemd udev user
+inherit python-any-r1 tmpfiles cros-workon cros-unibuild platform systemd udev user
 
 DESCRIPTION="Encrypted home directories for Chromium OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cryptohome/"
 SRC_URI=""
 
 LICENSE="BSD-Google"
-SLOT="0/0"
 KEYWORDS="*"
 IUSE="+device_mapper -direncription_allow_v2 -direncryption
 	double_extend_pcr_issue +downloads_bind_mount fuzzer
@@ -61,12 +62,15 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/featured:=
 	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/secure-erase-file:=
 	chromeos-base/tpm_manager:=
+	dev-cpp/abseil-cpp:=
 	>=dev-libs/flatbuffers-2.0.0-r1:=
 	dev-libs/openssl:=
 	dev-libs/protobuf:=
+	sys-apps/dbus:=
 	sys-apps/flashmap:=
 	sys-apps/keyutils:=
 	sys-apps/rootdev:=
@@ -86,6 +90,7 @@
 	tpm2? ( chromeos-base/trunks:=[test?] )
 	chromeos-base/attestation-client:=
 	chromeos-base/cryptohome-client:=
+	chromeos-base/libcrossystem:=
 	chromeos-base/power_manager-client:=
 	chromeos-base/protofiles:=
 	chromeos-base/shill-client:=
@@ -95,6 +100,20 @@
 	chromeos-base/libhwsec:=
 "
 
+# shellcheck disable=SC2016
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/flatbuffers
+	dev-libs/protobuf
+	$(python_gen_any_dep '
+		dev-python/flatbuffers[${PYTHON_USEDEP}]
+	')
+"
+
+python_check_deps() {
+	python_has_version -b "dev-python/flatbuffers[${PYTHON_USEDEP}]"
+}
+
 src_install() {
 	# TODO(crbug/1184602): Move remaining install logic to GN.
 	platform_src_install
@@ -186,20 +205,10 @@
 
 	local fuzzer_component_id="1088399"
 	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/cryptohome_cryptolib_rsa_oaep_decrypt_fuzzer \
-		--comp "${fuzzer_component_id}" \
-		fuzzers/data/*
-
-	platform_fuzzer_install "${S}"/OWNERS \
 		"${OUT}"/cryptohome_cryptolib_blob_to_hex_fuzzer \
 		--comp "${fuzzer_component_id}"
 
 	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/cryptohome_tpm1_cmk_migration_parser_fuzzer \
-		--comp "${fuzzer_component_id}" \
-		fuzzers/data/*
-
-	platform_fuzzer_install "${S}"/OWNERS \
 		"${OUT}"/cryptohome_userdataauth_fuzzer \
 		--comp "${fuzzer_component_id}"
 
diff --git a/chromeos-base/cryptohome/cryptohome-9999.ebuild b/chromeos-base/cryptohome/cryptohome-9999.ebuild
index c1cc99c..11792c1 100644
--- a/chromeos-base/cryptohome/cryptohome-9999.ebuild
+++ b/chromeos-base/cryptohome/cryptohome-9999.ebuild
@@ -3,24 +3,25 @@
 
 EAPI=7
 
+PYTHON_COMPAT=( python3_{8..11} )
+
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk cryptohome libhwsec libhwsec-foundation secure_erase_file .gn"
+CROS_WORKON_SUBTREE="common-mk cryptohome libcrossystem libhwsec libhwsec-foundation secure_erase_file .gn"
 
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="cryptohome"
 
-inherit tmpfiles cros-workon cros-unibuild platform systemd udev user
+inherit python-any-r1 tmpfiles cros-workon cros-unibuild platform systemd udev user
 
 DESCRIPTION="Encrypted home directories for Chromium OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cryptohome/"
 SRC_URI=""
 
 LICENSE="BSD-Google"
-SLOT="0/0"
 KEYWORDS="~*"
 IUSE="+device_mapper -direncription_allow_v2 -direncryption
 	double_extend_pcr_issue +downloads_bind_mount fuzzer
@@ -59,12 +60,15 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/featured:=
 	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/secure-erase-file:=
 	chromeos-base/tpm_manager:=
+	dev-cpp/abseil-cpp:=
 	>=dev-libs/flatbuffers-2.0.0-r1:=
 	dev-libs/openssl:=
 	dev-libs/protobuf:=
+	sys-apps/dbus:=
 	sys-apps/flashmap:=
 	sys-apps/keyutils:=
 	sys-apps/rootdev:=
@@ -84,6 +88,7 @@
 	tpm2? ( chromeos-base/trunks:=[test?] )
 	chromeos-base/attestation-client:=
 	chromeos-base/cryptohome-client:=
+	chromeos-base/libcrossystem:=
 	chromeos-base/power_manager-client:=
 	chromeos-base/protofiles:=
 	chromeos-base/shill-client:=
@@ -93,6 +98,20 @@
 	chromeos-base/libhwsec:=
 "
 
+# shellcheck disable=SC2016
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/flatbuffers
+	dev-libs/protobuf
+	$(python_gen_any_dep '
+		dev-python/flatbuffers[${PYTHON_USEDEP}]
+	')
+"
+
+python_check_deps() {
+	python_has_version -b "dev-python/flatbuffers[${PYTHON_USEDEP}]"
+}
+
 src_install() {
 	# TODO(crbug/1184602): Move remaining install logic to GN.
 	platform_src_install
@@ -184,20 +203,10 @@
 
 	local fuzzer_component_id="1088399"
 	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/cryptohome_cryptolib_rsa_oaep_decrypt_fuzzer \
-		--comp "${fuzzer_component_id}" \
-		fuzzers/data/*
-
-	platform_fuzzer_install "${S}"/OWNERS \
 		"${OUT}"/cryptohome_cryptolib_blob_to_hex_fuzzer \
 		--comp "${fuzzer_component_id}"
 
 	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/cryptohome_tpm1_cmk_migration_parser_fuzzer \
-		--comp "${fuzzer_component_id}" \
-		fuzzers/data/*
-
-	platform_fuzzer_install "${S}"/OWNERS \
 		"${OUT}"/cryptohome_userdataauth_fuzzer \
 		--comp "${fuzzer_component_id}"
 
diff --git a/chromeos-base/debugd/OWNERS b/chromeos-base/debugd/OWNERS
index db7e695..8e1ffeb 100644
--- a/chromeos-base/debugd/OWNERS
+++ b/chromeos-base/debugd/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/debugd/OWNERS
diff --git a/chromeos-base/debugd/debugd-0.0.1-r3543.ebuild b/chromeos-base/debugd/debugd-0.0.1-r3684.ebuild
similarity index 66%
rename from chromeos-base/debugd/debugd-0.0.1-r3543.ebuild
rename to chromeos-base/debugd/debugd-0.0.1-r3684.ebuild
index 45843bf..3666790 100644
--- a/chromeos-base/debugd/debugd-0.0.1-r3543.ebuild
+++ b/chromeos-base/debugd/debugd-0.0.1-r3684.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "654b47d5f159a635c2a9f42469052657aa2a801d" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "8d22f06a9698dea9bbee0a03a5fc2160b6f2f195" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
@@ -12,7 +12,7 @@
 
 PLATFORM_SUBDIR="debugd"
 
-inherit cros-workon platform tmpfiles user
+inherit cros-workon platform user
 
 DESCRIPTION="Chrome OS debugging service"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/debugd/"
@@ -25,6 +25,7 @@
 	chromeos-base/cryptohome-client:=
 	chromeos-base/minijail:=
 	chromeos-base/metrics:=
+	chromeos-base/power_manager-client:=
 	chromeos-base/shill-client:=
 	chromeos-base/vboot_reference:=
 	dev-libs/protobuf:=
@@ -44,6 +45,7 @@
 	)
 	chromeos-base/chromeos-ssh-testkeys
 	chromeos-base/chromeos-sshd-init
+	chromeos-base/libsegmentation
 	!chromeos-base/workarounds
 	sys-apps/iproute2
 	sys-apps/memtester
@@ -53,6 +55,12 @@
 	chromeos-base/system_api:=
 	sys-apps/dbus:="
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs debugd.
@@ -73,39 +81,7 @@
 src_install() {
 	platform_src_install
 
-	dobin "${OUT}"/generate_logs
-
-	into /
-	dosbin "${OUT}"/debugd
-
-	exeinto /usr/libexec/debugd/helpers
-	doexe "${OUT}"/audit_log_filter
-	doexe "${OUT}"/capture_packets
-	doexe "${OUT}"/cups_uri_helper
-	doexe "${OUT}"/dev_features_chrome_remote_debugging
-	doexe "${OUT}"/dev_features_password
-	doexe "${OUT}"/dev_features_rootfs_verification
-	doexe "${OUT}"/dev_features_ssh
-	doexe "${OUT}"/dev_features_usb_boot
-	doexe "${OUT}"/folder_size_dump
-	doexe "${OUT}"/icmp
-	doexe "${OUT}"/modetest_helper
-	doexe "${OUT}"/netif
-	doexe "${OUT}"/network_status
-	doexe "${OUT}"/typec_connector_class_helper
-	doexe "${OUT}"/usb4_devinfo_helper
-	doexe "${OUT}"/bt_usb_disconnect_helper
-
-	doexe src/helpers/{capture_utility,minijail-setuid-hack,systrace}.sh
-
 	local debugd_seccomp_dir="src/helpers/seccomp"
-
-	# Install scheduler configuration helper and seccomp policy.
-	if use amd64 ; then
-		exeinto /usr/libexec/debugd/helpers
-		doexe "${OUT}"/scheduler_configuration_helper
-	fi
-
 	# Install seccomp policies.
 	insinto /usr/share/policy
 	local policy
@@ -115,7 +91,6 @@
 		newins "${policy}" "${policy_name}"
 	done
 
-
 	# Install DBus configuration.
 	insinto /etc/dbus-1/system.d
 	doins share/org.chromium.debugd.conf
@@ -126,8 +101,6 @@
 	insinto /etc/perf_commands
 	doins -r share/perf_commands/*
 
-	dotmpfiles tmpfiles.d/*.conf
-
 	local daemon_store="/etc/daemon-store/debugd"
 	dodir "${daemon_store}"
 	fperms 0660 "${daemon_store}"
@@ -140,8 +113,8 @@
 }
 
 platform_pkg_test() {
+	platform test_all
 	pushd "${S}/src" >/dev/null || die
-	platform_test "run" "${OUT}/debugd_testrunner"
 	./helpers/capture_utility_test.sh || die
 	popd >/dev/null || die
 }
diff --git a/chromeos-base/debugd/debugd-9999.ebuild b/chromeos-base/debugd/debugd-9999.ebuild
index 165a141..053f69e 100644
--- a/chromeos-base/debugd/debugd-9999.ebuild
+++ b/chromeos-base/debugd/debugd-9999.ebuild
@@ -10,7 +10,7 @@
 
 PLATFORM_SUBDIR="debugd"
 
-inherit cros-workon platform tmpfiles user
+inherit cros-workon platform user
 
 DESCRIPTION="Chrome OS debugging service"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/debugd/"
@@ -23,6 +23,7 @@
 	chromeos-base/cryptohome-client:=
 	chromeos-base/minijail:=
 	chromeos-base/metrics:=
+	chromeos-base/power_manager-client:=
 	chromeos-base/shill-client:=
 	chromeos-base/vboot_reference:=
 	dev-libs/protobuf:=
@@ -42,6 +43,7 @@
 	)
 	chromeos-base/chromeos-ssh-testkeys
 	chromeos-base/chromeos-sshd-init
+	chromeos-base/libsegmentation
 	!chromeos-base/workarounds
 	sys-apps/iproute2
 	sys-apps/memtester
@@ -51,6 +53,12 @@
 	chromeos-base/system_api:=
 	sys-apps/dbus:="
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs debugd.
@@ -71,39 +79,7 @@
 src_install() {
 	platform_src_install
 
-	dobin "${OUT}"/generate_logs
-
-	into /
-	dosbin "${OUT}"/debugd
-
-	exeinto /usr/libexec/debugd/helpers
-	doexe "${OUT}"/audit_log_filter
-	doexe "${OUT}"/capture_packets
-	doexe "${OUT}"/cups_uri_helper
-	doexe "${OUT}"/dev_features_chrome_remote_debugging
-	doexe "${OUT}"/dev_features_password
-	doexe "${OUT}"/dev_features_rootfs_verification
-	doexe "${OUT}"/dev_features_ssh
-	doexe "${OUT}"/dev_features_usb_boot
-	doexe "${OUT}"/folder_size_dump
-	doexe "${OUT}"/icmp
-	doexe "${OUT}"/modetest_helper
-	doexe "${OUT}"/netif
-	doexe "${OUT}"/network_status
-	doexe "${OUT}"/typec_connector_class_helper
-	doexe "${OUT}"/usb4_devinfo_helper
-	doexe "${OUT}"/bt_usb_disconnect_helper
-
-	doexe src/helpers/{capture_utility,minijail-setuid-hack,systrace}.sh
-
 	local debugd_seccomp_dir="src/helpers/seccomp"
-
-	# Install scheduler configuration helper and seccomp policy.
-	if use amd64 ; then
-		exeinto /usr/libexec/debugd/helpers
-		doexe "${OUT}"/scheduler_configuration_helper
-	fi
-
 	# Install seccomp policies.
 	insinto /usr/share/policy
 	local policy
@@ -113,7 +89,6 @@
 		newins "${policy}" "${policy_name}"
 	done
 
-
 	# Install DBus configuration.
 	insinto /etc/dbus-1/system.d
 	doins share/org.chromium.debugd.conf
@@ -124,8 +99,6 @@
 	insinto /etc/perf_commands
 	doins -r share/perf_commands/*
 
-	dotmpfiles tmpfiles.d/*.conf
-
 	local daemon_store="/etc/daemon-store/debugd"
 	dodir "${daemon_store}"
 	fperms 0660 "${daemon_store}"
@@ -138,8 +111,8 @@
 }
 
 platform_pkg_test() {
+	platform test_all
 	pushd "${S}/src" >/dev/null || die
-	platform_test "run" "${OUT}/debugd_testrunner"
 	./helpers/capture_utility_test.sh || die
 	popd >/dev/null || die
 }
diff --git a/chromeos-base/debugd/files/cfi-ignore.txt b/chromeos-base/debugd/files/cfi-ignore.txt
new file mode 100644
index 0000000..aea9cec
--- /dev/null
+++ b/chromeos-base/debugd/files/cfi-ignore.txt
@@ -0,0 +1,13 @@
+# Copyright 2023 The ChromiumOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# This file defines which violations should be ignored while running clang's
+# control flow integrity sanitizer, as run by the cfi_flags build target.
+
+#############################################################################
+# Disabled indirect calls
+
+[cfi-icall]
+
+# Needed for the unit tests to pass with CFI enabled.
+src:*gtest/gtest-matchers.h
diff --git a/chromeos-base/dev-install/dev-install-0.0.1-r1430.ebuild b/chromeos-base/dev-install/dev-install-0.0.1-r1493.ebuild
similarity index 79%
rename from chromeos-base/dev-install/dev-install-0.0.1-r1430.ebuild
rename to chromeos-base/dev-install/dev-install-0.0.1-r1493.ebuild
index eb86d55..04968c0 100644
--- a/chromeos-base/dev-install/dev-install-0.0.1-r1430.ebuild
+++ b/chromeos-base/dev-install/dev-install-0.0.1-r1493.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "b0c8da169647b46be2f94102bf56d1b6e2667b38" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "47bb093921e54102d52c7088c32fb32f86eb3229" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
@@ -43,26 +43,15 @@
 }
 
 platform_pkg_test() {
-	platform_test "run" "${OUT}/dev_install_test"
+	platform test_all
 }
 
 src_install() {
 	platform_src_install
 
-	dobin "${OUT}/dev_install"
-
-	cd "${S}/share" || die
-	insinto /usr/share/${PN}/portage/make.profile
-	doins make.defaults
-
 	fixup_make_defaults "${ED}"/usr/share/${PN}/portage/make.profile/make.defaults
 
-	insinto /etc/bash/bashrc.d/
-	newins bashrc ${PN}.sh
-
-	insinto /etc/env.d
-	doins 99devinstall
-	sed -i "s:@LIBDIR@:$(get_libdir):g" "${ED}"/etc/env.d/99devinstall
+	sed -i "s:@LIBDIR@:$(get_libdir):g" "${ED}"/etc/env.d/99devinstall || die
 }
 
 pkg_preinst() {
diff --git a/chromeos-base/dev-install/dev-install-9999.ebuild b/chromeos-base/dev-install/dev-install-9999.ebuild
index 999dc21..ab006e6 100644
--- a/chromeos-base/dev-install/dev-install-9999.ebuild
+++ b/chromeos-base/dev-install/dev-install-9999.ebuild
@@ -41,26 +41,15 @@
 }
 
 platform_pkg_test() {
-	platform_test "run" "${OUT}/dev_install_test"
+	platform test_all
 }
 
 src_install() {
 	platform_src_install
 
-	dobin "${OUT}/dev_install"
-
-	cd "${S}/share" || die
-	insinto /usr/share/${PN}/portage/make.profile
-	doins make.defaults
-
 	fixup_make_defaults "${ED}"/usr/share/${PN}/portage/make.profile/make.defaults
 
-	insinto /etc/bash/bashrc.d/
-	newins bashrc ${PN}.sh
-
-	insinto /etc/env.d
-	doins 99devinstall
-	sed -i "s:@LIBDIR@:$(get_libdir):g" "${ED}"/etc/env.d/99devinstall
+	sed -i "s:@LIBDIR@:$(get_libdir):g" "${ED}"/etc/env.d/99devinstall || die
 }
 
 pkg_preinst() {
diff --git a/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r1414.ebuild b/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r1689.ebuild
similarity index 75%
rename from chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r1414.ebuild
rename to chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r1689.ebuild
index 2bbeb26..da3c391 100644
--- a/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r1414.ebuild
+++ b/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r1689.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI="7"
 
-CROS_WORKON_COMMIT="af29f016e8f4212c169ba01cd70714022633c97a"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "2ec930eda3bed6c8db27306438d8508382e36e7b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f56710c6b9e0b55a380df42e0408bf3fa8a0ee9d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -12,6 +12,9 @@
 CROS_WORKON_SUBTREE="common-mk diagnostics .gn"
 
 PLATFORM_SUBDIR="diagnostics/dpsl"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform
 
@@ -24,7 +27,6 @@
 IUSE=""
 
 DEPEND="
-	chromeos-base/libbrillo:=
 	dev-cpp/abseil-cpp:=
 "
 RDEPEND="
diff --git a/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-9999.ebuild b/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-9999.ebuild
index b4b7151..653cf5c 100644
--- a/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-9999.ebuild
+++ b/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI="7"
 
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
@@ -10,6 +10,9 @@
 CROS_WORKON_SUBTREE="common-mk diagnostics .gn"
 
 PLATFORM_SUBDIR="diagnostics/dpsl"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform
 
@@ -22,7 +25,6 @@
 IUSE=""
 
 DEPEND="
-	chromeos-base/libbrillo:=
 	dev-cpp/abseil-cpp:=
 "
 RDEPEND="
diff --git a/chromeos-base/diagnostics-minidiag/diagnostics-minidiag-0.0.1-r77.ebuild b/chromeos-base/diagnostics-minidiag/diagnostics-minidiag-0.0.1-r169.ebuild
similarity index 79%
rename from chromeos-base/diagnostics-minidiag/diagnostics-minidiag-0.0.1-r77.ebuild
rename to chromeos-base/diagnostics-minidiag/diagnostics-minidiag-0.0.1-r169.ebuild
index 95d3abc..ecaf757 100644
--- a/chromeos-base/diagnostics-minidiag/diagnostics-minidiag-0.0.1-r77.ebuild
+++ b/chromeos-base/diagnostics-minidiag/diagnostics-minidiag-0.0.1-r169.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "3231bc01cdf0cd33c9fc7cd444ec7453af50c7a0" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9cae57fd5d42e26fae1a2a3837abf0d6f0578127" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -24,9 +24,11 @@
 
 DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/re2:=
 "
 
 RDEPEND="
+	${DEPEND}
 	sys-apps/coreboot-utils:=
 	!<chromeos-base/chromeos-init-0.0.26
 "
diff --git a/chromeos-base/diagnostics-minidiag/diagnostics-minidiag-9999.ebuild b/chromeos-base/diagnostics-minidiag/diagnostics-minidiag-9999.ebuild
index a28fe30..c0b3619 100644
--- a/chromeos-base/diagnostics-minidiag/diagnostics-minidiag-9999.ebuild
+++ b/chromeos-base/diagnostics-minidiag/diagnostics-minidiag-9999.ebuild
@@ -22,9 +22,11 @@
 
 DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/re2:=
 "
 
 RDEPEND="
+	${DEPEND}
 	sys-apps/coreboot-utils:=
 	!<chromeos-base/chromeos-init-0.0.26
 "
diff --git a/chromeos-base/diagnostics/diagnostics-0.0.1-r1951.ebuild b/chromeos-base/diagnostics/diagnostics-0.0.1-r2263.ebuild
similarity index 77%
rename from chromeos-base/diagnostics/diagnostics-0.0.1-r1951.ebuild
rename to chromeos-base/diagnostics/diagnostics-0.0.1-r2263.ebuild
index 6ada51f..8b63620 100644
--- a/chromeos-base/diagnostics/diagnostics-0.0.1-r1951.ebuild
+++ b/chromeos-base/diagnostics/diagnostics-0.0.1-r2263.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="af29f016e8f4212c169ba01cd70714022633c97a"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "2ec930eda3bed6c8db27306438d8508382e36e7b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "f56710c6b9e0b55a380df42e0408bf3fa8a0ee9d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
@@ -33,6 +33,11 @@
 	chromeos-base/minijail:=
 	chromeos-base/missive:=
 	chromeos-base/mojo_service_manager:=
+	chromeos-base/spaced
+	wilco? (
+		dev-cpp/abseil-cpp:=
+	)
+	dev-libs/glib:=
 	dev-libs/libevdev:=
 	dev-libs/protobuf:=
 	dev-libs/re2:=
@@ -42,6 +47,9 @@
 	virtual/libusb:1=
 	virtual/opengles:=
 	sys-apps/fwupd:=
+	sys-apps/rootdev:=
+	sys-apps/util-linux:=
+	x11-libs/libdrm:=
 "
 
 DEPEND="
@@ -58,19 +66,16 @@
 	x11-drivers/opengles-headers:=
 "
 
-# TODO(crbug/1085169): Replace sys-block/fio dependency with an alternative as
-# it is very large. It is currently only a dependency of wilco as it is
-# currently the only client.
 # TODO(b/273184171): Remove chromeos-base/ec-utils once we don't rely on ectool.
 # TODO(b/271544868): Remove net-wireless/iw once we find alternatives.
 RDEPEND="
 	${COMMON_DEPEND}
+	chromeos-base/crash-reporter
 	chromeos-base/ec-utils
 	chromeos-base/iioservice
 	dev-util/stressapptest
 	net-wireless/iw
 	wilco? (
-		sys-block/fio
 		chromeos-base/chromeos-dtc-vm
 		chromeos-base/vpd
 	)
@@ -79,6 +84,13 @@
 	)
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+	net-libs/grpc
+"
+
 pkg_preinst() {
 	enewgroup cros_ec-access
 	enewgroup fpdev
@@ -116,6 +128,11 @@
 		--comp "${fuzzer_component_id}"
 	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/crash_events_uploads_log_parser_fuzzer \
 		--comp "${fuzzer_component_id}"
+
+	# TODO(b/299052079): Remove mojom file after completing hotline migration.
+	insinto /usr/include/cros_healthd-client/diagnostics/mojom/public
+	doins "${S}"/mojom/public/cros_healthd_probe.mojom
+	doins "${OUT}"/gen/include/diagnostics/mojom/public/cros_healthd_probe.mojom-module
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/diagnostics/diagnostics-9999.ebuild b/chromeos-base/diagnostics/diagnostics-9999.ebuild
index 5e0d177..a9f2dcd 100644
--- a/chromeos-base/diagnostics/diagnostics-9999.ebuild
+++ b/chromeos-base/diagnostics/diagnostics-9999.ebuild
@@ -31,6 +31,11 @@
 	chromeos-base/minijail:=
 	chromeos-base/missive:=
 	chromeos-base/mojo_service_manager:=
+	chromeos-base/spaced
+	wilco? (
+		dev-cpp/abseil-cpp:=
+	)
+	dev-libs/glib:=
 	dev-libs/libevdev:=
 	dev-libs/protobuf:=
 	dev-libs/re2:=
@@ -40,6 +45,9 @@
 	virtual/libusb:1=
 	virtual/opengles:=
 	sys-apps/fwupd:=
+	sys-apps/rootdev:=
+	sys-apps/util-linux:=
+	x11-libs/libdrm:=
 "
 
 DEPEND="
@@ -56,19 +64,16 @@
 	x11-drivers/opengles-headers:=
 "
 
-# TODO(crbug/1085169): Replace sys-block/fio dependency with an alternative as
-# it is very large. It is currently only a dependency of wilco as it is
-# currently the only client.
 # TODO(b/273184171): Remove chromeos-base/ec-utils once we don't rely on ectool.
 # TODO(b/271544868): Remove net-wireless/iw once we find alternatives.
 RDEPEND="
 	${COMMON_DEPEND}
+	chromeos-base/crash-reporter
 	chromeos-base/ec-utils
 	chromeos-base/iioservice
 	dev-util/stressapptest
 	net-wireless/iw
 	wilco? (
-		sys-block/fio
 		chromeos-base/chromeos-dtc-vm
 		chromeos-base/vpd
 	)
@@ -77,6 +82,13 @@
 	)
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+	net-libs/grpc
+"
+
 pkg_preinst() {
 	enewgroup cros_ec-access
 	enewgroup fpdev
@@ -114,6 +126,11 @@
 		--comp "${fuzzer_component_id}"
 	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/crash_events_uploads_log_parser_fuzzer \
 		--comp "${fuzzer_component_id}"
+
+	# TODO(b/299052079): Remove mojom file after completing hotline migration.
+	insinto /usr/include/cros_healthd-client/diagnostics/mojom/public
+	doins "${S}"/mojom/public/cros_healthd_probe.mojom
+	doins "${OUT}"/gen/include/diagnostics/mojom/public/cros_healthd_probe.mojom-module
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/discod/discod-0.0.1-r178.ebuild b/chromeos-base/discod/discod-0.0.1-r283.ebuild
similarity index 77%
rename from chromeos-base/discod/discod-0.0.1-r178.ebuild
rename to chromeos-base/discod/discod-0.0.1-r283.ebuild
index 8f24a25..d61889d 100644
--- a/chromeos-base/discod/discod-0.0.1-r178.ebuild
+++ b/chromeos-base/discod/discod-0.0.1-r283.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "b3ee3ab24ccf15ba03e93c0dcf6ee84c9d09d6a9" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "db25d2b94d09b2eae3d8a1efc00b6232c5abefa5" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
diff --git a/chromeos-base/disk_updater/OWNERS b/chromeos-base/disk_updater/OWNERS
index db7e695..cf1ef11 100644
--- a/chromeos-base/disk_updater/OWNERS
+++ b/chromeos-base/disk_updater/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/disk_updater/OWNERS
diff --git a/chromeos-base/disk_updater/disk_updater-0.0.1-r3284.ebuild b/chromeos-base/disk_updater/disk_updater-0.0.1-r3343.ebuild
similarity index 73%
rename from chromeos-base/disk_updater/disk_updater-0.0.1-r3284.ebuild
rename to chromeos-base/disk_updater/disk_updater-0.0.1-r3343.ebuild
index bd855bd..a7cb182 100644
--- a/chromeos-base/disk_updater/disk_updater-0.0.1-r3284.ebuild
+++ b/chromeos-base/disk_updater/disk_updater-0.0.1-r3343.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "3e792f20bd9f714b6d25305b8e7c79b9a6966e65" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "243a1438a16f54c7d4c052aa77ee8e71b9ae7e3b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -44,12 +44,3 @@
 		platform_test "run" "tests/chromeos-disk-firmware-${test_type}-test.sh"
 	done
 }
-
-src_install() {
-	platform_src_install
-
-	insinto "/etc/init"
-	doins "scripts/chromeos-disk-firmware-update.conf"
-
-	dosbin "scripts/chromeos-disk-firmware-update.sh"
-}
diff --git a/chromeos-base/disk_updater/disk_updater-9999.ebuild b/chromeos-base/disk_updater/disk_updater-9999.ebuild
index fa63155..473b32d 100644
--- a/chromeos-base/disk_updater/disk_updater-9999.ebuild
+++ b/chromeos-base/disk_updater/disk_updater-9999.ebuild
@@ -42,12 +42,3 @@
 		platform_test "run" "tests/chromeos-disk-firmware-${test_type}-test.sh"
 	done
 }
-
-src_install() {
-	platform_src_install
-
-	insinto "/etc/init"
-	doins "scripts/chromeos-disk-firmware-update.conf"
-
-	dosbin "scripts/chromeos-disk-firmware-update.sh"
-}
diff --git a/chromeos-base/dlcservice/dlcservice-0.0.1-r961.ebuild b/chromeos-base/dlcservice/dlcservice-0.0.1-r1066.ebuild
similarity index 84%
rename from chromeos-base/dlcservice/dlcservice-0.0.1-r961.ebuild
rename to chromeos-base/dlcservice/dlcservice-0.0.1-r1066.ebuild
index 9ec7d92..52fe62c 100644
--- a/chromeos-base/dlcservice/dlcservice-0.0.1-r961.ebuild
+++ b/chromeos-base/dlcservice/dlcservice-0.0.1-r1066.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "200fec1bd6a9cd0cf1c30f82cdf82c142ca6ef04" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "b17f324ccdbf5219a2c350aa93e02bff07bae0e2" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -31,7 +31,10 @@
 	lvm_stateful_partition? ( chromeos-base/lvmd:= )
 	chromeos-base/minijail:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/protobuf:="
+	dev-libs/protobuf:=
+	sys-apps/rootdev:=
+	sys-libs/zlib:=
+"
 
 DEPEND="${RDEPEND}
 	chromeos-base/dlcservice-client:=
@@ -42,6 +45,11 @@
 	chromeos-base/vboot_reference:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 src_install() {
 	platform_src_install
 
@@ -82,8 +90,6 @@
 
 platform_pkg_test() {
 	platform_test "run" "${OUT}/dlcservice_tests"
-	platform_fuzzer_test "${OUT}"/dlcservice_boot_device_fuzzer
-	platform_fuzzer_test "${OUT}"/dlcservice_boot_slot_fuzzer
 }
 
 pkg_preinst() {
diff --git a/chromeos-base/dlcservice/dlcservice-9999.ebuild b/chromeos-base/dlcservice/dlcservice-9999.ebuild
index 9533394..e4e1bb2 100644
--- a/chromeos-base/dlcservice/dlcservice-9999.ebuild
+++ b/chromeos-base/dlcservice/dlcservice-9999.ebuild
@@ -29,7 +29,10 @@
 	lvm_stateful_partition? ( chromeos-base/lvmd:= )
 	chromeos-base/minijail:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/protobuf:="
+	dev-libs/protobuf:=
+	sys-apps/rootdev:=
+	sys-libs/zlib:=
+"
 
 DEPEND="${RDEPEND}
 	chromeos-base/dlcservice-client:=
@@ -40,6 +43,11 @@
 	chromeos-base/vboot_reference:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 src_install() {
 	platform_src_install
 
@@ -80,8 +88,6 @@
 
 platform_pkg_test() {
 	platform_test "run" "${OUT}/dlcservice_tests"
-	platform_fuzzer_test "${OUT}"/dlcservice_boot_device_fuzzer
-	platform_fuzzer_test "${OUT}"/dlcservice_boot_slot_fuzzer
 }
 
 pkg_preinst() {
diff --git a/chromeos-base/dlp/dlp-0.0.1-r333.ebuild b/chromeos-base/dlp/dlp-0.0.1-r466.ebuild
similarity index 83%
rename from chromeos-base/dlp/dlp-0.0.1-r333.ebuild
rename to chromeos-base/dlp/dlp-0.0.1-r466.ebuild
index fdf6a0d..08dac88 100644
--- a/chromeos-base/dlp/dlp-0.0.1-r333.ebuild
+++ b/chromeos-base/dlp/dlp-0.0.1-r466.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "100d4467e6af5f74fbb58bb75fb5348d14cf6485" "da223b2a668d598e3576f36b498e8dbea518a7bb" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "3aa38b2a9b01fb71d31964d065f27b758eebb6c7" "5c1598293a3b2d474abb7aafc492654f9cb521de" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -38,6 +38,11 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/dlp/dlp-9999.ebuild b/chromeos-base/dlp/dlp-9999.ebuild
index 4a2074d..6082ee8 100644
--- a/chromeos-base/dlp/dlp-9999.ebuild
+++ b/chromeos-base/dlp/dlp-9999.ebuild
@@ -36,6 +36,11 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/dns-proxy/dns-proxy-0.0.1-r552.ebuild b/chromeos-base/dns-proxy/dns-proxy-0.0.1-r719.ebuild
similarity index 71%
rename from chromeos-base/dns-proxy/dns-proxy-0.0.1-r552.ebuild
rename to chromeos-base/dns-proxy/dns-proxy-0.0.1-r719.ebuild
index 18b2197..420245f 100644
--- a/chromeos-base/dns-proxy/dns-proxy-0.0.1-r552.ebuild
+++ b/chromeos-base/dns-proxy/dns-proxy-0.0.1-r719.ebuild
@@ -3,13 +3,13 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "86684b9024b8473643732439f469d873abd5dd70" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f74f32e76e5f0463b8473657c06db9cbb493b16a" "3b19957182f1f8ab8ca820452f130eda7c823082" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e0d771c76353a07f50d8911fab405f721eaab474" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "e74aa615248081a4161427718d8576d2a9968d5f" "d0e03da45483415bfa000f75e3a7a65193a6ff5d" "1576ec68ff22d35e20e4634656a91de5dbac4751" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk dns-proxy metrics shill/dbus/client shill/net .gn"
+CROS_WORKON_SUBTREE="common-mk dns-proxy metrics net-base shill/dbus/client shill/net .gn"
 
 PLATFORM_SUBDIR="dns-proxy"
 
@@ -25,13 +25,13 @@
 COMMON_DEPEND="
 	chromeos-base/metrics:=
 	chromeos-base/minijail:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel:=
 	chromeos-base/patchpanel-client:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/shill-dbus-client:=
 	chromeos-base/shill-net:=
 	dev-libs/protobuf:=
-	dev-libs/dbus-glib:=
 	sys-apps/dbus:=
 	net-misc/curl:=
 "
@@ -41,6 +41,11 @@
 	chromeos-base/permission_broker-client:=
 "
 
+BDEPEND="
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	enewuser "dns-proxy"
 	enewgroup "dns-proxy"
diff --git a/chromeos-base/dns-proxy/dns-proxy-9999.ebuild b/chromeos-base/dns-proxy/dns-proxy-9999.ebuild
index 6e4f0c2..b30f809 100644
--- a/chromeos-base/dns-proxy/dns-proxy-9999.ebuild
+++ b/chromeos-base/dns-proxy/dns-proxy-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk dns-proxy metrics shill/dbus/client shill/net .gn"
+CROS_WORKON_SUBTREE="common-mk dns-proxy metrics net-base shill/dbus/client shill/net .gn"
 
 PLATFORM_SUBDIR="dns-proxy"
 
@@ -23,13 +23,13 @@
 COMMON_DEPEND="
 	chromeos-base/metrics:=
 	chromeos-base/minijail:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel:=
 	chromeos-base/patchpanel-client:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/shill-dbus-client:=
 	chromeos-base/shill-net:=
 	dev-libs/protobuf:=
-	dev-libs/dbus-glib:=
 	sys-apps/dbus:=
 	net-misc/curl:=
 "
@@ -39,6 +39,11 @@
 	chromeos-base/permission_broker-client:=
 "
 
+BDEPEND="
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	enewuser "dns-proxy"
 	enewgroup "dns-proxy"
diff --git a/chromeos-base/easy-unlock/OWNERS b/chromeos-base/easy-unlock/OWNERS
index db7e695..407b5eb 100644
--- a/chromeos-base/easy-unlock/OWNERS
+++ b/chromeos-base/easy-unlock/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/easy-unlock/OWNERS
diff --git a/chromeos-base/easy-unlock/easy-unlock-0.0.1-r3187.ebuild b/chromeos-base/easy-unlock/easy-unlock-0.0.1-r3248.ebuild
similarity index 81%
rename from chromeos-base/easy-unlock/easy-unlock-0.0.1-r3187.ebuild
rename to chromeos-base/easy-unlock/easy-unlock-0.0.1-r3248.ebuild
index ebc346e..3c1638c 100644
--- a/chromeos-base/easy-unlock/easy-unlock-0.0.1-r3187.ebuild
+++ b/chromeos-base/easy-unlock/easy-unlock-0.0.1-r3248.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "857f6979992634d4384214599edebe80d87f94ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "ad2a7e6c3ff2e4c013acba6870f8a292726aec04" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_USE_VCSID=1
 CROS_WORKON_LOCALNAME="platform2"
diff --git a/chromeos-base/faced/faced-0.0.1-r129.ebuild b/chromeos-base/faced/faced-0.0.1-r189.ebuild
similarity index 83%
rename from chromeos-base/faced/faced-0.0.1-r129.ebuild
rename to chromeos-base/faced/faced-0.0.1-r189.ebuild
index 135f837..717e91a 100644
--- a/chromeos-base/faced/faced-0.0.1-r129.ebuild
+++ b/chromeos-base/faced/faced-0.0.1-r189.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="76741400c5c0e74bf39bb2fbcc944b3f8356179c"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "dfd85991aef4b08f295879a3fd30e22264cb1806" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "61cc93eca42038f9611339a6242a61fdd7af5f4f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -35,6 +35,7 @@
 DEPEND="
 	${COMMON_DEPEND}
 	chromeos-base/system_api:=
+	media-libs/cros-camera-libcamera_connector_headers
 "
 
 pkg_setup() {
diff --git a/chromeos-base/faced/faced-9999.ebuild b/chromeos-base/faced/faced-9999.ebuild
index bcca42e..4701e17 100644
--- a/chromeos-base/faced/faced-9999.ebuild
+++ b/chromeos-base/faced/faced-9999.ebuild
@@ -33,6 +33,7 @@
 DEPEND="
 	${COMMON_DEPEND}
 	chromeos-base/system_api:=
+	media-libs/cros-camera-libcamera_connector_headers
 "
 
 pkg_setup() {
diff --git a/chromeos-base/factory_runtime_probe/factory_runtime_probe-0.0.1-r560.ebuild b/chromeos-base/factory_runtime_probe/factory_runtime_probe-0.0.1-r697.ebuild
similarity index 67%
rename from chromeos-base/factory_runtime_probe/factory_runtime_probe-0.0.1-r560.ebuild
rename to chromeos-base/factory_runtime_probe/factory_runtime_probe-0.0.1-r697.ebuild
index 8c9f283..7b91edc 100644
--- a/chromeos-base/factory_runtime_probe/factory_runtime_probe-0.0.1-r560.ebuild
+++ b/chromeos-base/factory_runtime_probe/factory_runtime_probe-0.0.1-r697.ebuild
@@ -3,13 +3,13 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "b6a499afe15c70520c73109f5587bd28f50964fa" "2b162410dc0e1be38913a7e594b2bf865914baa9" "2e3445a27c1de907606469cb96a391a0630e5fd2" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "67442b9578c0475865b147e940740e227d50027c" "bca396820264795b2925f1b6a51e996a279bdc31" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec runtime_probe .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec runtime_probe mojo_service_manager .gn"
 
 PLATFORM_SUBDIR="runtime_probe/factory_runtime_probe"
 
@@ -29,11 +29,15 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cros-camera-libs:=
 	chromeos-base/debugd-client:=
+	chromeos-base/diagnostics:=
 	chromeos-base/libcrossystem:=
 	chromeos-base/libec:=
+	chromeos-base/mojo_service_manager:=
 	chromeos-base/shill-client:=
 	dev-libs/libpcre:=
+	dev-libs/protobuf:=
 	media-libs/minigbm:=
+	virtual/libusb:=
 "
 
 RDEPEND="${COMMON_DEPEND}"
diff --git a/chromeos-base/factory_runtime_probe/factory_runtime_probe-9999.ebuild b/chromeos-base/factory_runtime_probe/factory_runtime_probe-9999.ebuild
index 3a156d5..3bbe6fa 100644
--- a/chromeos-base/factory_runtime_probe/factory_runtime_probe-9999.ebuild
+++ b/chromeos-base/factory_runtime_probe/factory_runtime_probe-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec runtime_probe .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec runtime_probe mojo_service_manager .gn"
 
 PLATFORM_SUBDIR="runtime_probe/factory_runtime_probe"
 
@@ -27,11 +27,15 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cros-camera-libs:=
 	chromeos-base/debugd-client:=
+	chromeos-base/diagnostics:=
 	chromeos-base/libcrossystem:=
 	chromeos-base/libec:=
+	chromeos-base/mojo_service_manager:=
 	chromeos-base/shill-client:=
 	dev-libs/libpcre:=
+	dev-libs/protobuf:=
 	media-libs/minigbm:=
+	virtual/libusb:=
 "
 
 RDEPEND="${COMMON_DEPEND}"
diff --git a/chromeos-base/feature_usage/OWNERS b/chromeos-base/feature_usage/OWNERS
index db7e695..19ff91f 100644
--- a/chromeos-base/feature_usage/OWNERS
+++ b/chromeos-base/feature_usage/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/feature_usage/OWNERS
diff --git a/chromeos-base/feature_usage/feature_usage-0.0.1-r209.ebuild b/chromeos-base/feature_usage/feature_usage-0.0.1-r298.ebuild
similarity index 78%
rename from chromeos-base/feature_usage/feature_usage-0.0.1-r209.ebuild
rename to chromeos-base/feature_usage/feature_usage-0.0.1-r298.ebuild
index 07317e5..cf84c37 100644
--- a/chromeos-base/feature_usage/feature_usage-0.0.1-r209.ebuild
+++ b/chromeos-base/feature_usage/feature_usage-0.0.1-r298.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "0a6d97056ccad46af343769331531b94a8113dd1" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "0a6d97056ccad46af343769331531b94a8113dd1" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/featured/featured-0.0.1-r243.ebuild b/chromeos-base/featured/featured-0.0.1-r341.ebuild
similarity index 75%
rename from chromeos-base/featured/featured-0.0.1-r243.ebuild
rename to chromeos-base/featured/featured-0.0.1-r341.ebuild
index 0d30d18..1fdd25d 100644
--- a/chromeos-base/featured/featured-0.0.1-r243.ebuild
+++ b/chromeos-base/featured/featured-0.0.1-r341.ebuild
@@ -2,13 +2,14 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "da223b2a668d598e3576f36b498e8dbea518a7bb" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "5c1598293a3b2d474abb7aafc492654f9cb521de" "0d9d2046eb78dc8620f7594f245298f9fd964832" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk featured .gn"
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk featured libhwsec-foundation .gn"
 
 PLATFORM_SUBDIR="featured"
 
@@ -21,18 +22,26 @@
 IUSE="test"
 
 COMMON_DEPEND="
-	chromeos-base/bootlockbox-client:=
-	dev-libs/openssl:="
+	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
+	chromeos-base/session_manager-client:=
+	dev-libs/openssl:=
+	dev-libs/protobuf:="
 
 RDEPEND="
-	${COMMON_DEPEND}"
+	${COMMON_DEPEND}
+	acct-group/feature-writers
+	acct-user/feature-writers"
 
 DEPEND="
 	${COMMON_DEPEND}
-	chromeos-base/session_manager-client:=
 	chromeos-base/system_api:=
 	sys-apps/dbus:="
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 src_install() {
 	platform_src_install
 
@@ -78,7 +87,6 @@
 
 platform_pkg_test() {
 	platform_test "run" "${OUT}/feature_library_test"
-	platform_test "run" "${OUT}/hmac_test"
 	platform_test "run" "${OUT}/service_test"
 	platform_test "run" "${OUT}/store_impl_test"
 }
diff --git a/chromeos-base/featured/featured-9999.ebuild b/chromeos-base/featured/featured-9999.ebuild
index 9f99db8..61ba354 100644
--- a/chromeos-base/featured/featured-9999.ebuild
+++ b/chromeos-base/featured/featured-9999.ebuild
@@ -6,7 +6,8 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk featured .gn"
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk featured libhwsec-foundation .gn"
 
 PLATFORM_SUBDIR="featured"
 
@@ -19,18 +20,26 @@
 IUSE="test"
 
 COMMON_DEPEND="
-	chromeos-base/bootlockbox-client:=
-	dev-libs/openssl:="
+	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
+	chromeos-base/session_manager-client:=
+	dev-libs/openssl:=
+	dev-libs/protobuf:="
 
 RDEPEND="
-	${COMMON_DEPEND}"
+	${COMMON_DEPEND}
+	acct-group/feature-writers
+	acct-user/feature-writers"
 
 DEPEND="
 	${COMMON_DEPEND}
-	chromeos-base/session_manager-client:=
 	chromeos-base/system_api:=
 	sys-apps/dbus:="
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 src_install() {
 	platform_src_install
 
@@ -76,7 +85,6 @@
 
 platform_pkg_test() {
 	platform_test "run" "${OUT}/feature_library_test"
-	platform_test "run" "${OUT}/hmac_test"
 	platform_test "run" "${OUT}/service_test"
 	platform_test "run" "${OUT}/store_impl_test"
 }
diff --git a/chromeos-base/federated-service/federated-service-0.0.1-r263.ebuild b/chromeos-base/federated-service/federated-service-0.0.1-r330.ebuild
similarity index 73%
rename from chromeos-base/federated-service/federated-service-0.0.1-r263.ebuild
rename to chromeos-base/federated-service/federated-service-0.0.1-r330.ebuild
index 9b65644..323af6c 100644
--- a/chromeos-base/federated-service/federated-service-0.0.1-r263.ebuild
+++ b/chromeos-base/federated-service/federated-service-0.0.1-r330.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d19f216bcb0cade40eec9fdbf34a3985aa865170" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "beb4db33a6b93e8d090c25ffffc0deee8d85dbc2" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
@@ -19,7 +19,7 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="*"
-IUSE="local-federated-server"
+IUSE="local-federated-server fuzzer"
 
 RDEPEND="
 	dev-db/sqlite:=
@@ -27,7 +27,10 @@
 	chromeos-base/metrics:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/shill-dbus-client:=
-	chromeos-base/system_api:=
+	chromeos-base/system_api:=[fuzzer?]
+	dev-cpp/abseil-cpp:=
+	dev-libs/protobuf:=
+	dev-libs/re2:=
 	sys-cluster/fcp:=
 "
 
@@ -52,6 +55,12 @@
 	dodir "${daemon_store}"
 	fperms 0700 "${daemon_store}"
 	fowners federated-service:federated-service "${daemon_store}"
+
+	local fuzzer_component_id="1176098"
+	for fuzzer in "${OUT}"/*_fuzzer; do
+		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}" \
+			--comp "${fuzzer_component_id}"
+	done
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/federated-service/federated-service-9999.ebuild b/chromeos-base/federated-service/federated-service-9999.ebuild
index cd5f1ca..2220c07 100644
--- a/chromeos-base/federated-service/federated-service-9999.ebuild
+++ b/chromeos-base/federated-service/federated-service-9999.ebuild
@@ -17,7 +17,7 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="local-federated-server"
+IUSE="local-federated-server fuzzer"
 
 RDEPEND="
 	dev-db/sqlite:=
@@ -25,7 +25,10 @@
 	chromeos-base/metrics:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/shill-dbus-client:=
-	chromeos-base/system_api:=
+	chromeos-base/system_api:=[fuzzer?]
+	dev-cpp/abseil-cpp:=
+	dev-libs/protobuf:=
+	dev-libs/re2:=
 	sys-cluster/fcp:=
 "
 
@@ -50,6 +53,12 @@
 	dodir "${daemon_store}"
 	fperms 0700 "${daemon_store}"
 	fowners federated-service:federated-service "${daemon_store}"
+
+	local fuzzer_component_id="1176098"
+	for fuzzer in "${OUT}"/*_fuzzer; do
+		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}" \
+			--comp "${fuzzer_component_id}"
+	done
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/feedback/feedback-0.0.1-r1027.ebuild b/chromeos-base/feedback/feedback-0.0.1-r1091.ebuild
similarity index 77%
rename from chromeos-base/feedback/feedback-0.0.1-r1027.ebuild
rename to chromeos-base/feedback/feedback-0.0.1-r1091.ebuild
index 8fd78b6..a45e96a 100644
--- a/chromeos-base/feedback/feedback-0.0.1-r1027.ebuild
+++ b/chromeos-base/feedback/feedback-0.0.1-r1091.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "ac644a8c45ff3f0c2e09777e736ce940f42e612e" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "650c3afb65bea82296448c7e7711e16c7a37e1c1" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/flex_bluetooth/flex_bluetooth-0.0.1-r5.ebuild b/chromeos-base/flex_bluetooth/flex_bluetooth-0.0.1-r66.ebuild
similarity index 78%
rename from chromeos-base/flex_bluetooth/flex_bluetooth-0.0.1-r5.ebuild
rename to chromeos-base/flex_bluetooth/flex_bluetooth-0.0.1-r66.ebuild
index 780f058..0a4eabd 100644
--- a/chromeos-base/flex_bluetooth/flex_bluetooth-0.0.1-r5.ebuild
+++ b/chromeos-base/flex_bluetooth/flex_bluetooth-0.0.1-r66.ebuild
@@ -3,8 +3,8 @@
 # found in the LICENSE file.
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "9ff890b3d92a8f707de8a1911defc04326b2de28" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "a5fdbbc61818ef9812202876f2ee071eb9c7785a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
diff --git a/chromeos-base/flex_id/flex_id-0.0.1-r143.ebuild b/chromeos-base/flex_id/flex_id-0.0.1-r203.ebuild
similarity index 78%
rename from chromeos-base/flex_id/flex_id-0.0.1-r143.ebuild
rename to chromeos-base/flex_id/flex_id-0.0.1-r203.ebuild
index 21add65..55b271a 100644
--- a/chromeos-base/flex_id/flex_id-0.0.1-r143.ebuild
+++ b/chromeos-base/flex_id/flex_id-0.0.1-r203.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "05da2d429111c57ff6211bd9c5da3fa0ba4781e7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "ad0037ea3ece0d38951407fda04d247468b76b23" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
diff --git a/chromeos-base/foomatic_shell/OWNERS b/chromeos-base/foomatic_shell/OWNERS
index db7e695..beaa400 100644
--- a/chromeos-base/foomatic_shell/OWNERS
+++ b/chromeos-base/foomatic_shell/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/foomatic_shell/OWNERS
diff --git a/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r290.ebuild b/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r380.ebuild
similarity index 78%
rename from chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r290.ebuild
rename to chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r380.ebuild
index 8d91371..dd10b63 100644
--- a/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r290.ebuild
+++ b/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r380.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "e6373a2daaba57846a830165d6d8efd5785e8292" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "97378d3cd982a2aeddbde7e641cd320800b47209" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/fusebox/OWNERS b/chromeos-base/fusebox/OWNERS
index db7e695..cc21e78 100644
--- a/chromeos-base/fusebox/OWNERS
+++ b/chromeos-base/fusebox/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/fusebox/OWNERS
diff --git a/chromeos-base/fusebox/fusebox-0.0.2-r356.ebuild b/chromeos-base/fusebox/fusebox-0.0.2-r414.ebuild
similarity index 82%
rename from chromeos-base/fusebox/fusebox-0.0.2-r356.ebuild
rename to chromeos-base/fusebox/fusebox-0.0.2-r414.ebuild
index 8bf2ba1..93b5496 100644
--- a/chromeos-base/fusebox/fusebox-0.0.2-r356.ebuild
+++ b/chromeos-base/fusebox/fusebox-0.0.2-r414.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "a3307abb7d6c9a029503cf2ad95ae8b6543b6e9e" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "769646fc945c4ddbcd3dd11693b45ddae2c25209" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
diff --git a/chromeos-base/g2f_tools/OWNERS b/chromeos-base/g2f_tools/OWNERS
index db7e695..4a35594 100644
--- a/chromeos-base/g2f_tools/OWNERS
+++ b/chromeos-base/g2f_tools/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/u2fd/OWNERS
diff --git a/chromeos-base/g2f_tools/g2f_tools-0.0.1-r1143.ebuild b/chromeos-base/g2f_tools/g2f_tools-0.0.1-r1285.ebuild
similarity index 71%
rename from chromeos-base/g2f_tools/g2f_tools-0.0.1-r1143.ebuild
rename to chromeos-base/g2f_tools/g2f_tools-0.0.1-r1285.ebuild
index b3e8a16..ee331ea 100644
--- a/chromeos-base/g2f_tools/g2f_tools-0.0.1-r1143.ebuild
+++ b/chromeos-base/g2f_tools/g2f_tools-0.0.1-r1285.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "1f62bd40c0cf61961c0452f4397935a0e0707e40" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "bfb0825fba5f58eda85c87558bd2074511c461d3" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -27,7 +27,10 @@
 	dev-libs/hidapi:=
 "
 
-RDEPEND="${COMMON_DEPEND}"
+RDEPEND="
+	${COMMON_DEPEND}
+	dev-libs/protobuf:=
+"
 
 DEPEND="
 	${COMMON_DEPEND}
diff --git a/chromeos-base/g2f_tools/g2f_tools-9999.ebuild b/chromeos-base/g2f_tools/g2f_tools-9999.ebuild
index 6f03093..5c6e97e 100644
--- a/chromeos-base/g2f_tools/g2f_tools-9999.ebuild
+++ b/chromeos-base/g2f_tools/g2f_tools-9999.ebuild
@@ -25,7 +25,10 @@
 	dev-libs/hidapi:=
 "
 
-RDEPEND="${COMMON_DEPEND}"
+RDEPEND="
+	${COMMON_DEPEND}
+	dev-libs/protobuf:=
+"
 
 DEPEND="
 	${COMMON_DEPEND}
diff --git a/chromeos-base/glib-bridge/OWNERS b/chromeos-base/glib-bridge/OWNERS
index db7e695..fdd593f 100644
--- a/chromeos-base/glib-bridge/OWNERS
+++ b/chromeos-base/glib-bridge/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/glib-bridge/OWNERS
diff --git a/chromeos-base/glib-bridge/glib-bridge-0.0.1-r409.ebuild b/chromeos-base/glib-bridge/glib-bridge-0.0.1-r468.ebuild
similarity index 89%
rename from chromeos-base/glib-bridge/glib-bridge-0.0.1-r409.ebuild
rename to chromeos-base/glib-bridge/glib-bridge-0.0.1-r468.ebuild
index e7e9a66..de22705 100644
--- a/chromeos-base/glib-bridge/glib-bridge-0.0.1-r409.ebuild
+++ b/chromeos-base/glib-bridge/glib-bridge-0.0.1-r468.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "27c04f7107e3a9ba51e73eccef6fce1443198f6d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "27c04f7107e3a9ba51e73eccef6fce1443198f6d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
diff --git a/chromeos-base/glib-bridge/glib-bridge-9999.ebuild b/chromeos-base/glib-bridge/glib-bridge-9999.ebuild
index 51a715d..2485797 100644
--- a/chromeos-base/glib-bridge/glib-bridge-9999.ebuild
+++ b/chromeos-base/glib-bridge/glib-bridge-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI="7"
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
diff --git a/chromeos-base/goldfishd/OWNERS b/chromeos-base/goldfishd/OWNERS
index db7e695..df7d0cd 100644
--- a/chromeos-base/goldfishd/OWNERS
+++ b/chromeos-base/goldfishd/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/goldfishd/OWNERS
diff --git a/chromeos-base/goldfishd/goldfishd-0.0.1-r711.ebuild b/chromeos-base/goldfishd/goldfishd-0.0.1-r769.ebuild
similarity index 77%
rename from chromeos-base/goldfishd/goldfishd-0.0.1-r711.ebuild
rename to chromeos-base/goldfishd/goldfishd-0.0.1-r769.ebuild
index 66e1dd9..c480ca6 100644
--- a/chromeos-base/goldfishd/goldfishd-0.0.1-r711.ebuild
+++ b/chromeos-base/goldfishd/goldfishd-0.0.1-r769.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "44a1cdef8cef77143c58782a382271b770cdf113" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e8a41bcd2ac22f03e940cb7109e46588fe1ba669" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/hammerd-test-utils/OWNERS b/chromeos-base/hammerd-test-utils/OWNERS
index db7e695..4074bef 100644
--- a/chromeos-base/hammerd-test-utils/OWNERS
+++ b/chromeos-base/hammerd-test-utils/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/hammerd/OWNERS
diff --git a/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r789.ebuild b/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r849.ebuild
similarity index 86%
rename from chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r789.ebuild
rename to chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r849.ebuild
index d7dbd21..3f6e807 100644
--- a/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r789.ebuild
+++ b/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r849.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c449d69cfb1e590c4db877fca72bffa52d1060a0" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "a9387abae458aafbe264f7ee5733b0c1bd3d0466" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/hammerd/OWNERS b/chromeos-base/hammerd/OWNERS
index db7e695..4074bef 100644
--- a/chromeos-base/hammerd/OWNERS
+++ b/chromeos-base/hammerd/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/hammerd/OWNERS
diff --git a/chromeos-base/hammerd/hammerd-0.0.1-r1250.ebuild b/chromeos-base/hammerd/hammerd-0.0.1-r1311.ebuild
similarity index 85%
rename from chromeos-base/hammerd/hammerd-0.0.1-r1250.ebuild
rename to chromeos-base/hammerd/hammerd-0.0.1-r1311.ebuild
index 53005c4..8bc6bf0 100644
--- a/chromeos-base/hammerd/hammerd-0.0.1-r1250.ebuild
+++ b/chromeos-base/hammerd/hammerd-0.0.1-r1311.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c449d69cfb1e590c4db877fca72bffa52d1060a0" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "a9387abae458aafbe264f7ee5733b0c1bd3d0466" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -32,6 +32,7 @@
 DEPEND="
 	${RDEPEND}
 	chromeos-base/system_api:=[fuzzer?]
+	dev-libs/libpcre
 "
 
 pkg_preinst() {
diff --git a/chromeos-base/hammerd/hammerd-9999.ebuild b/chromeos-base/hammerd/hammerd-9999.ebuild
index 2527d6b..551143b 100644
--- a/chromeos-base/hammerd/hammerd-9999.ebuild
+++ b/chromeos-base/hammerd/hammerd-9999.ebuild
@@ -30,6 +30,7 @@
 DEPEND="
 	${RDEPEND}
 	chromeos-base/system_api:=[fuzzer?]
+	dev-libs/libpcre
 "
 
 pkg_preinst() {
diff --git a/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r791.ebuild b/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r917.ebuild
similarity index 75%
rename from chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r791.ebuild
rename to chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r917.ebuild
index 07dee30e..7bc6233 100644
--- a/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r791.ebuild
+++ b/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r917.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "2a99315ed493d199035f51141d31af1cff5db802" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "0e36d9654da50d77f6c5cb72209cc649e3f5cade" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -29,6 +29,11 @@
 	chromeos-base/vboot_reference:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	# Create user and group for hardware_verifier
 	enewuser "hardware_verifier"
diff --git a/chromeos-base/hardware_verifier/hardware_verifier-9999.ebuild b/chromeos-base/hardware_verifier/hardware_verifier-9999.ebuild
index 9aa0d6d..ba4cb59 100644
--- a/chromeos-base/hardware_verifier/hardware_verifier-9999.ebuild
+++ b/chromeos-base/hardware_verifier/hardware_verifier-9999.ebuild
@@ -27,6 +27,11 @@
 	chromeos-base/vboot_reference:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	# Create user and group for hardware_verifier
 	enewuser "hardware_verifier"
diff --git a/chromeos-base/hardware_verifier_proto/OWNERS b/chromeos-base/hardware_verifier_proto/OWNERS
index db7e695..c101240 100644
--- a/chromeos-base/hardware_verifier_proto/OWNERS
+++ b/chromeos-base/hardware_verifier_proto/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/hardware_verifier/OWNERS
diff --git a/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r520.ebuild b/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r610.ebuild
similarity index 74%
rename from chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r520.ebuild
rename to chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r610.ebuild
index 3ce359b..ed3c5a3 100644
--- a/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r520.ebuild
+++ b/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r610.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "2a99315ed493d199035f51141d31af1cff5db802" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "0e36d9654da50d77f6c5cb72209cc649e3f5cade" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_GO_PACKAGES=(
 	"chromiumos/hardware_verifier/..."
 )
@@ -27,8 +27,11 @@
 DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/system_api:=
-	dev-go/protobuf
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 src_unpack() {
diff --git a/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-9999.ebuild b/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-9999.ebuild
index b996cc5..6d8072c 100644
--- a/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-9999.ebuild
+++ b/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-9999.ebuild
@@ -25,8 +25,11 @@
 DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/system_api:=
-	dev-go/protobuf
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 src_unpack() {
diff --git a/chromeos-base/hps-tool/hps-tool-0.0.1-r487.ebuild b/chromeos-base/hps-tool/hps-tool-0.0.1-r577.ebuild
similarity index 73%
rename from chromeos-base/hps-tool/hps-tool-0.0.1-r487.ebuild
rename to chromeos-base/hps-tool/hps-tool-0.0.1-r577.ebuild
index 9a759a2..d569b16 100644
--- a/chromeos-base/hps-tool/hps-tool-0.0.1-r487.ebuild
+++ b/chromeos-base/hps-tool/hps-tool-0.0.1-r577.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "12172eca3ae80405c6cb9808845db49370396d52" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "dea67c524ea11921b11a95b258a00f9309c3a683" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
diff --git a/chromeos-base/hpsd/hpsd-0.0.1-r475.ebuild b/chromeos-base/hpsd/hpsd-0.0.1-r565.ebuild
similarity index 81%
rename from chromeos-base/hpsd/hpsd-0.0.1-r475.ebuild
rename to chromeos-base/hpsd/hpsd-0.0.1-r565.ebuild
index 507af66..ce2e475 100644
--- a/chromeos-base/hpsd/hpsd-0.0.1-r475.ebuild
+++ b/chromeos-base/hpsd/hpsd-0.0.1-r565.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "12172eca3ae80405c6cb9808845db49370396d52" "1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "dea67c524ea11921b11a95b258a00f9309c3a683" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_SUBTREE=".gn hps common-mk metrics"
diff --git a/chromeos-base/hwsec-host-utils/hwsec-host-utils-0.0.1-r87.ebuild b/chromeos-base/hwsec-host-utils/hwsec-host-utils-0.0.1-r167.ebuild
similarity index 75%
rename from chromeos-base/hwsec-host-utils/hwsec-host-utils-0.0.1-r87.ebuild
rename to chromeos-base/hwsec-host-utils/hwsec-host-utils-0.0.1-r167.ebuild
index 025d854..346e0cb 100644
--- a/chromeos-base/hwsec-host-utils/hwsec-host-utils-0.0.1-r87.ebuild
+++ b/chromeos-base/hwsec-host-utils/hwsec-host-utils-0.0.1-r167.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d818c74755ac1a298f205ac7e4bdea67d6c6f6ef" "199cac0899daace8030b33f49dd183a5b5baf169" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "17be5b43e7bf114e6c39a16821b0247025e07fc3" "f73f25bb045d099841b3ac929b6d3218060216df" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/hwsec-optee-plugin/hwsec-optee-plugin-0.0.1-r105.ebuild b/chromeos-base/hwsec-optee-plugin/hwsec-optee-plugin-0.0.1-r210.ebuild
similarity index 77%
rename from chromeos-base/hwsec-optee-plugin/hwsec-optee-plugin-0.0.1-r105.ebuild
rename to chromeos-base/hwsec-optee-plugin/hwsec-optee-plugin-0.0.1-r210.ebuild
index 4efbe3b..cfe19e3 100644
--- a/chromeos-base/hwsec-optee-plugin/hwsec-optee-plugin-0.0.1-r105.ebuild
+++ b/chromeos-base/hwsec-optee-plugin/hwsec-optee-plugin-0.0.1-r210.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "4702b7ba54e3dcff8dcf28e0000324fda7971424" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "a15bbe606a63e289bfafe7dfcf4b1aac505b9409" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/hwsec-test-utils/OWNERS b/chromeos-base/hwsec-test-utils/OWNERS
index db7e695..718ded8 100644
--- a/chromeos-base/hwsec-test-utils/OWNERS
+++ b/chromeos-base/hwsec-test-utils/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/hwsec-test-utils/OWNERS
diff --git a/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r771.ebuild b/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r911.ebuild
similarity index 75%
rename from chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r771.ebuild
rename to chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r911.ebuild
index 574b898..ecf86e6 100644
--- a/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r771.ebuild
+++ b/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r911.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="4cd35fb11ce1d94e91ded61681327ee6738c3578"
-CROS_WORKON_TREE=("bccbc8518cd5c6093f62309eede93a41c3cb78b4" "1647a468f15f85e89d45c799e27359e3e664c67b" "f657b02d72e31422e7022fd2f4ff5420ba90857f" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "41112b3759d18a5cceaf1f06f65e6d4bdc406e33" "199cac0899daace8030b33f49dd183a5b5baf169" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("102d4ec63eaf55397c3fc456d3b70e574692dc44" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "351fb08db6b0e98a2c6de16681f05c1876359158" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "989acbd33fd18024396e010b1be43d25cbdf942d" "f73f25bb045d099841b3ac929b6d3218060216df" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -28,24 +28,24 @@
 "
 
 RDEPEND="
-	tpm2? (
-		chromeos-base/trunks:=
-	)
 	tpm? (
 		app-crypt/trousers:=
 	)
+	chromeos-base/attestation:=
 	chromeos-base/libhwsec:=
+	chromeos-base/libhwsec-foundation:=
+	chromeos-base/system_api:=
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
 "
 
 DEPEND="${RDEPEND}
 	tpm2? (
 		chromeos-base/trunks:=[test?]
 	)
-	chromeos-base/attestation:=
-	chromeos-base/libhwsec-foundation:=
-	chromeos-base/system_api:=
-	dev-libs/openssl:=
-	dev-libs/protobuf:=
 "
 
 platform_pkg_test() {
diff --git a/chromeos-base/hwsec-test-utils/hwsec-test-utils-9999.ebuild b/chromeos-base/hwsec-test-utils/hwsec-test-utils-9999.ebuild
index 9feadef..49d69a0 100644
--- a/chromeos-base/hwsec-test-utils/hwsec-test-utils-9999.ebuild
+++ b/chromeos-base/hwsec-test-utils/hwsec-test-utils-9999.ebuild
@@ -26,24 +26,24 @@
 "
 
 RDEPEND="
-	tpm2? (
-		chromeos-base/trunks:=
-	)
 	tpm? (
 		app-crypt/trousers:=
 	)
+	chromeos-base/attestation:=
 	chromeos-base/libhwsec:=
+	chromeos-base/libhwsec-foundation:=
+	chromeos-base/system_api:=
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
 "
 
 DEPEND="${RDEPEND}
 	tpm2? (
 		chromeos-base/trunks:=[test?]
 	)
-	chromeos-base/attestation:=
-	chromeos-base/libhwsec-foundation:=
-	chromeos-base/system_api:=
-	dev-libs/openssl:=
-	dev-libs/protobuf:=
 "
 
 platform_pkg_test() {
diff --git a/chromeos-base/iioservice/OWNERS b/chromeos-base/iioservice/OWNERS
index db7e695..825c3ee 100644
--- a/chromeos-base/iioservice/OWNERS
+++ b/chromeos-base/iioservice/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/iioservice/OWNERS
diff --git a/chromeos-base/iioservice/iioservice-0.0.1-r576.ebuild b/chromeos-base/iioservice/iioservice-0.0.1-r674.ebuild
similarity index 74%
rename from chromeos-base/iioservice/iioservice-0.0.1-r576.ebuild
rename to chromeos-base/iioservice/iioservice-0.0.1-r674.ebuild
index 94ff022..6f894fd 100644
--- a/chromeos-base/iioservice/iioservice-0.0.1-r576.ebuild
+++ b/chromeos-base/iioservice/iioservice-0.0.1-r674.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "5e9a89d06c41edf5cf43da8acf5f26ed104887e6")
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "e5213f48c6ed0dcfb7d1410f706196c31c5dbb40" "56cadd695cfe78ffe1dd01235485d645b181c844" "1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "66d9ece0c55ff21826b4962ffd402f0927467387" "693bb2d63562c6eff050d04f75aab1e9251e6548")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "5e9a89d06c41edf5cf43da8acf5f26ed104887e6")
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "2d06f979d9e0b056323b2b5e529823c338f2199f" "577d31d39eace970e22dbf9d4cda5aa2c0d1b75a" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a" "693bb2d63562c6eff050d04f75aab1e9251e6548")
 inherit cros-constants
 
 CROS_WORKON_PROJECT=(
@@ -54,6 +54,10 @@
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser "iioservice"
 	enewgroup "iioservice"
diff --git a/chromeos-base/iioservice/iioservice-9999.ebuild b/chromeos-base/iioservice/iioservice-9999.ebuild
index 2d2ad87..2dd0ccc 100644
--- a/chromeos-base/iioservice/iioservice-9999.ebuild
+++ b/chromeos-base/iioservice/iioservice-9999.ebuild
@@ -52,6 +52,10 @@
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser "iioservice"
 	enewgroup "iioservice"
diff --git a/chromeos-base/iioservice_simpleclient/OWNERS b/chromeos-base/iioservice_simpleclient/OWNERS
index db7e695..825c3ee 100644
--- a/chromeos-base/iioservice_simpleclient/OWNERS
+++ b/chromeos-base/iioservice_simpleclient/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/iioservice/OWNERS
diff --git a/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r400.ebuild b/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r467.ebuild
similarity index 75%
rename from chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r400.ebuild
rename to chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r467.ebuild
index d9e7e47..73669ab 100644
--- a/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r400.ebuild
+++ b/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r467.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "e5213f48c6ed0dcfb7d1410f706196c31c5dbb40" "56cadd695cfe78ffe1dd01235485d645b181c844" "66d9ece0c55ff21826b4962ffd402f0927467387" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "2d06f979d9e0b056323b2b5e529823c338f2199f" "577d31d39eace970e22dbf9d4cda5aa2c0d1b75a" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/imageloader-client/imageloader-client-0.0.1-r891.ebuild b/chromeos-base/imageloader-client/imageloader-client-0.0.1-r964.ebuild
similarity index 60%
rename from chromeos-base/imageloader-client/imageloader-client-0.0.1-r891.ebuild
rename to chromeos-base/imageloader-client/imageloader-client-0.0.1-r964.ebuild
index 497ee32..d6a2b33 100644
--- a/chromeos-base/imageloader-client/imageloader-client-0.0.1-r891.ebuild
+++ b/chromeos-base/imageloader-client/imageloader-client-0.0.1-r964.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "7ec79c95c31aaf9742faae6c9e4ee666b2805d0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "a6d9e991f6b49cd1684b65f17639491c08e0a208" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -20,16 +20,20 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="cros_host"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library.
-DEPEND="
-	cros_host? ( chromeos-base/chromeos-dbus-bindings:= )
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
 "
 
-RDEPEND="chromeos-base/imageloader"
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
+"
+
+RDEPEND="
+	chromeos-base/imageloader
+"
 
 src_install() {
 	platform_src_install
diff --git a/chromeos-base/imageloader-client/imageloader-client-9999.ebuild b/chromeos-base/imageloader-client/imageloader-client-9999.ebuild
index f2e83cd..22dac0a 100644
--- a/chromeos-base/imageloader-client/imageloader-client-9999.ebuild
+++ b/chromeos-base/imageloader-client/imageloader-client-9999.ebuild
@@ -18,16 +18,20 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="cros_host"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library.
-DEPEND="
-	cros_host? ( chromeos-base/chromeos-dbus-bindings:= )
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
 "
 
-RDEPEND="chromeos-base/imageloader"
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
+"
+
+RDEPEND="
+	chromeos-base/imageloader
+"
 
 src_install() {
 	platform_src_install
diff --git a/chromeos-base/imageloader/imageloader-0.0.1-r1850.ebuild b/chromeos-base/imageloader/imageloader-0.0.1-r1925.ebuild
similarity index 81%
rename from chromeos-base/imageloader/imageloader-0.0.1-r1850.ebuild
rename to chromeos-base/imageloader/imageloader-0.0.1-r1925.ebuild
index b58564b..1946ec3 100644
--- a/chromeos-base/imageloader/imageloader-0.0.1-r1850.ebuild
+++ b/chromeos-base/imageloader/imageloader-0.0.1-r1925.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "7ec79c95c31aaf9742faae6c9e4ee666b2805d0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "a6d9e991f6b49cd1684b65f17639491c08e0a208" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -33,6 +33,12 @@
 DEPEND="${RDEPEND}
 	chromeos-base/system_api:=[fuzzer?]"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/imageloader/imageloader-9999.ebuild b/chromeos-base/imageloader/imageloader-9999.ebuild
index a1bdbd0..360db4e 100644
--- a/chromeos-base/imageloader/imageloader-9999.ebuild
+++ b/chromeos-base/imageloader/imageloader-9999.ebuild
@@ -31,6 +31,12 @@
 DEPEND="${RDEPEND}
 	chromeos-base/system_api:=[fuzzer?]"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/intel-nnhal/intel-nnhal-0.0.1-r261.ebuild b/chromeos-base/intel-nnhal/intel-nnhal-0.0.1-r320.ebuild
similarity index 84%
rename from chromeos-base/intel-nnhal/intel-nnhal-0.0.1-r261.ebuild
rename to chromeos-base/intel-nnhal/intel-nnhal-0.0.1-r320.ebuild
index a6c92e9..93684ec 100644
--- a/chromeos-base/intel-nnhal/intel-nnhal-0.0.1-r261.ebuild
+++ b/chromeos-base/intel-nnhal/intel-nnhal-0.0.1-r320.ebuild
@@ -1,10 +1,10 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Copyright 2020 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 inherit cros-workon platform git-r3
 
 DESCRIPTION="Intel NNAPI HAL"
@@ -36,7 +36,7 @@
 
 	EGIT_REPO_URI="https://github.com/intel/nn-hal.git" \
 	EGIT_CHECKOUT_DIR="${S}" \
-	EGIT_COMMIT="8596953fb5904214ef770941f2a68633814797ab" \
+	EGIT_COMMIT="cda2d1ccec01ee1cd8a035a529d0e3e8aa5c4544" \
 	EGIT_BRANCH="chromeos-vpu" \
 	git-r3_src_unpack
 
diff --git a/chromeos-base/intel-nnhal/intel-nnhal-9999.ebuild b/chromeos-base/intel-nnhal/intel-nnhal-9999.ebuild
index 672445c..e81b884 100644
--- a/chromeos-base/intel-nnhal/intel-nnhal-9999.ebuild
+++ b/chromeos-base/intel-nnhal/intel-nnhal-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Copyright 2020 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
@@ -34,7 +34,7 @@
 
 	EGIT_REPO_URI="https://github.com/intel/nn-hal.git" \
 	EGIT_CHECKOUT_DIR="${S}" \
-	EGIT_COMMIT="8596953fb5904214ef770941f2a68633814797ab" \
+	EGIT_COMMIT="cda2d1ccec01ee1cd8a035a529d0e3e8aa5c4544" \
 	EGIT_BRANCH="chromeos-vpu" \
 	git-r3_src_unpack
 
diff --git a/chromeos-base/kerberos/OWNERS b/chromeos-base/kerberos/OWNERS
index db7e695..5a019bd 100644
--- a/chromeos-base/kerberos/OWNERS
+++ b/chromeos-base/kerberos/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/kerberos/OWNERS
diff --git a/chromeos-base/kerberos/kerberos-0.0.1-r699.ebuild b/chromeos-base/kerberos/kerberos-0.0.1-r799.ebuild
similarity index 84%
rename from chromeos-base/kerberos/kerberos-0.0.1-r699.ebuild
rename to chromeos-base/kerberos/kerberos-0.0.1-r799.ebuild
index c597d7b..ea14afcc 100644
--- a/chromeos-base/kerberos/kerberos-0.0.1-r699.ebuild
+++ b/chromeos-base/kerberos/kerberos-0.0.1-r799.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d8f58be412c915cb43a4e311d400d54781f01769" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "2bfd9a3927211af2a662c75958e1d940230bfbb8" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -40,6 +40,12 @@
 	chromeos-base/system_api:=[fuzzer?]
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs kerberosd.
diff --git a/chromeos-base/kerberos/kerberos-9999.ebuild b/chromeos-base/kerberos/kerberos-9999.ebuild
index 537d920..f8dd6ce 100644
--- a/chromeos-base/kerberos/kerberos-9999.ebuild
+++ b/chromeos-base/kerberos/kerberos-9999.ebuild
@@ -38,6 +38,12 @@
 	chromeos-base/system_api:=[fuzzer?]
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs kerberosd.
diff --git a/chromeos-base/lexmark-fax-pnh/OWNERS b/chromeos-base/lexmark-fax-pnh/OWNERS
index db7e695..b1457b8 100644
--- a/chromeos-base/lexmark-fax-pnh/OWNERS
+++ b/chromeos-base/lexmark-fax-pnh/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/third_party/lexmark-fax-pnh:master:/OWNERS
diff --git a/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r270.ebuild b/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r330.ebuild
similarity index 78%
rename from chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r270.ebuild
rename to chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r330.ebuild
index fc5a7f0..dad15bf 100644
--- a/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r270.ebuild
+++ b/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r330.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "38526cc0edb7544744aed004a1d2e9e00aa7fa7c")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "caa8bd82db41a4a86e7a9613439b027acf1320ac")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "d80cce020cf6bd6c29c4008beeffd9635a82173d")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6ff72b1c92c1d9ebb9d45ae248132b5d803e7122")
 CROS_WORKON_LOCALNAME=("platform2" "third_party/lexmark-fax-pnh")
 CROS_WORKON_EGIT_BRANCH=("main" "master")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/lexmark-fax-pnh")
diff --git a/chromeos-base/libbrillo/OWNERS b/chromeos-base/libbrillo/OWNERS
index db7e695..5add3a0 100644
--- a/chromeos-base/libbrillo/OWNERS
+++ b/chromeos-base/libbrillo/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/libbrillo/OWNERS
diff --git a/chromeos-base/libbrillo/files/lakitu-fix-llvm-compatibility.patch b/chromeos-base/libbrillo/files/lakitu-fix-llvm-compatibility.patch
new file mode 100644
index 0000000..ba4d978
--- /dev/null
+++ b/chromeos-base/libbrillo/files/lakitu-fix-llvm-compatibility.patch
@@ -0,0 +1,12 @@
+diff -Naur a/brillo/dbus/dbus_signature.h b/brillo/dbus/dbus_signature.h
+--- a/brillo/dbus/dbus_signature.h	2023-11-28 17:27:46.692301466 -0800
++++ b/brillo/dbus/dbus_signature.h	2023-11-28 17:28:17.244338858 -0800
+@@ -55,7 +55,7 @@
+ // holding the D-Bus signature.
+ template <typename T, typename = void>
+ struct DBusSignature {
+-  static_assert(false, "Unsupported type for D-Bus");
++  static_assert(sizeof(T) == -1, "Unsupported type for D-Bus");
+ };
+ 
+ template <>
diff --git a/chromeos-base/libbrillo/files/remove-glib-usage.patch b/chromeos-base/libbrillo/files/remove-glib-usage.patch
deleted file mode 100644
index 89ff35c..0000000
--- a/chromeos-base/libbrillo/files/remove-glib-usage.patch
+++ /dev/null
@@ -1,1619 +0,0 @@
-From e6cf7fb1960f544357925fed03e6c738e678f89b Mon Sep 17 00:00:00 2001
-From: Vaibhav Rustagi <vaibhavrustagi@google.com>
-Date: Tue, 21 Sep 2021 09:57:31 -0700
-Subject: [PATCH] libbrillo: remove glib usage
-
-We're ugprading glib to latest 2.68 which causes an API
-breakage and considering it is not used anymore in favor
-of libchrome, we drop glib support instead of fixing it.
-
-ChromeOS Reference: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3103795/
-
-Change-Id: I357b04beb1a4042e3d369189c56e4ddcb536ec08
----
- BUILD.gn                            |  42 --
- brillo/glib/README.md               |   5 -
- brillo/glib/abstract_dbus_service.cc      |  33 --
- brillo/glib/abstract_dbus_service.h |  50 --
- brillo/glib/dbus.cc                 | 331 ------------
- brillo/glib/dbus.h                  | 450 -----------------
- brillo/glib/object.h                | 469 ------------------
- brillo/glib/object_test.cc          | 132 -----
- 8 files changed, 1512 deletions(-)
- delete mode 100644 brillo/glib/README.md
- delete mode 100644 brillo/glib/abstract_dbus_service.cc
- delete mode 100644 brillo/glib/abstract_dbus_service.h
- delete mode 100644 brillo/glib/dbus.cc
- delete mode 100644 brillo/glib/dbus.h
- delete mode 100644 brillo/glib/object.h
- delete mode 100644 brillo/glib/object_test.cc
-
-diff --git a/BUILD.gn b/BUILD.gn
-index 7b2073b451..b263e02074 100644
---- a/BUILD.gn
-+++ b/BUILD.gn
-@@ -9,7 +9,6 @@ import("//common-mk/proto_library.gni")
- group("all") {
-   deps = [
-     ":libbrillo",
--    ":libbrillo-glib",
-     ":libbrillo-test",
-     ":libinstallattributes",
-     ":libpolicy",
-@@ -392,45 +391,6 @@ shared_library("libpolicy") {
-   ]
- }
- 
--libbrillo_glib_pkg_deps = [
--  "glib-2.0",
--  "gobject-2.0",
--]
--if (use.dbus) {
--  libbrillo_glib_pkg_deps += [
--    "dbus-1",
--    "dbus-glib-1",
--  ]
--}
--
--generate_pkg_config("libbrillo-glib_pc") {
--  name = "libbrillo-glib"
--  output_name = "libbrillo-glib"
--  description = "brillo glib wrapper library"
--  version = libbase_ver
--  requires_private = libbrillo_glib_pkg_deps
--  libs = [ "-lbrillo-glib" ]
--}
--
--shared_library("libbrillo-glib") {
--  configs += [ ":target_defaults" ]
--  cflags = [
--    # glib uses the deprecated "register" attribute in some header files.
--    "-Wno-deprecated-register",
--  ]
--  deps = [
--    ":libbrillo",
--    ":libbrillo-glib_pc",
--  ]
--  all_dependent_pkg_deps = libbrillo_glib_pkg_deps
--  if (use.dbus) {
--    sources = [
--      "brillo/glib/abstract_dbus_service.cc",
--      "brillo/glib/dbus.cc",
--    ]
--  }
--}
--
- if (use.test) {
-   static_library("libbrillo_static") {
-     configs += [ ":target_defaults" ]
-@@ -469,7 +429,6 @@ if (use.test) {
-       "brillo/files/file_util_test.cc",
-       "brillo/files/safe_fd_test.cc",
-       "brillo/flag_helper_test.cc",
--      "brillo/glib/object_test.cc",
-       "brillo/http/http_connection_curl_test.cc",
-       "brillo/http/http_form_data_test.cc",
-       "brillo/http/http_request_test.cc",
-@@ -537,7 +496,6 @@ if (use.test) {
-     cflags = [ "-Wno-format-zero-length" ]
-     pkg_deps = [ "libchrome-test" ]
-     deps = [
--      ":libbrillo-glib",
-       ":libbrillo-test",
-       ":libbrillo_static",
-       ":libbrillo_tests_proto",
-diff --git a/brillo/glib/README.md b/brillo/glib/README.md
-deleted file mode 100644
-index ef9ec9ee85..0000000000
---- a/brillo/glib/README.md
-+++ /dev/null
-@@ -1,5 +0,0 @@
--# libbrillo GLib support
--
--GLib is deprecated in Chrome OS. Use [libchrome] instead.
--
--[libchrome]: ../../../libchrome
-diff --git a/brillo/glib/abstract_dbus_service.cc b/brillo/glib/abstract_dbus_service.cc
-deleted file mode 100644
-index 4f3869715e..0000000000
---- a/brillo/glib/abstract_dbus_service.cc
-+++ /dev/null
-@@ -1,33 +0,0 @@
--// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style license that can be
--// found in the LICENSE file.
--
--#include <base/logging.h>
--
--#include "brillo/glib/abstract_dbus_service.h"
--
--namespace brillo {
--namespace dbus {
--
--bool AbstractDbusService::Register(const brillo::dbus::BusConnection& conn) {
--  return RegisterExclusiveService(conn, service_interface(), service_name(),
--                                  service_path(), service_object());
--}
--
--bool AbstractDbusService::Run() {
--  if (!main_loop()) {
--    LOG(ERROR) << "No run loop. Call Initialize before use.";
--    return false;
--  }
--  ::g_main_loop_run(main_loop());
--  DLOG(INFO) << "Run() completed";
--  return true;
--}
--
--bool AbstractDbusService::Shutdown() {
--  ::g_main_loop_quit(main_loop());
--  return true;
--}
--
--}  // namespace dbus
--}  // namespace brillo
-diff --git a/brillo/glib/abstract_dbus_service.h b/brillo/glib/abstract_dbus_service.h
-deleted file mode 100644
-index 32725c71bf..0000000000
---- a/brillo/glib/abstract_dbus_service.h
-+++ /dev/null
-@@ -1,50 +0,0 @@
--// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style license that can be
--// found in the LICENSE file.
--
--#ifndef LIBBRILLO_BRILLO_GLIB_ABSTRACT_DBUS_SERVICE_H_
--#define LIBBRILLO_BRILLO_GLIB_ABSTRACT_DBUS_SERVICE_H_
--
--// IMPORTANT: Do not use this in new code. Instead, use
--// <brillo/daemons/dbus_daemon.h>. See https://goo.gl/EH3MmR for more details.
--
--#include <brillo/brillo_export.h>
--#include <brillo/glib/dbus.h>
--
--namespace brillo {
--
--namespace dbus {
--class BRILLO_EXPORT AbstractDbusService {
-- public:
--  virtual ~AbstractDbusService() {}
--
--  // Setup the wrapped GObject and the GMainLoop
--  virtual bool Initialize() = 0;
--  virtual bool Reset() = 0;
--
--  // Registers the GObject as a service with the system DBus
--  // TODO(wad) make this testable by making BusConn and Proxy
--  //           subclassing friendly.
--  virtual bool Register(const brillo::dbus::BusConnection& conn);
--
--  // Starts the run loop
--  virtual bool Run();
--
--  // Stops the run loop
--  virtual bool Shutdown();
--
--  // Used internally during registration to set the
--  // proper service information.
--  virtual const char* service_name() const = 0;
--  virtual const char* service_path() const = 0;
--  virtual const char* service_interface() const = 0;
--  virtual GObject* service_object() const = 0;
--
-- protected:
--  virtual GMainLoop* main_loop() = 0;
--};
--
--}  // namespace dbus
--}  // namespace brillo
--
--#endif  // LIBBRILLO_BRILLO_GLIB_ABSTRACT_DBUS_SERVICE_H_
-diff --git a/brillo/glib/dbus.cc b/brillo/glib/dbus.cc
-deleted file mode 100644
-index 7525adfdfa..0000000000
---- a/brillo/glib/dbus.cc
-+++ /dev/null
-@@ -1,331 +0,0 @@
--// Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style license that can be
--// found in the LICENSE file.
--
--#include "brillo/glib/dbus.h"
--
--#include <base/check.h>
--#include <dbus/dbus.h>
--#include <dbus/dbus-glib-bindings.h>
--#include <dbus/dbus-glib-lowlevel.h>
--
--#include <base/logging.h>
--#include <base/strings/stringprintf.h>
--
--namespace brillo {
--namespace dbus {
--
--bool CallPtrArray(const Proxy& proxy,
--                  const char* method,
--                  glib::ScopedPtrArray<const char*>* result) {
--  glib::ScopedError error;
--
--  ::GType g_type_array =
--      ::dbus_g_type_get_collection("GPtrArray", DBUS_TYPE_G_OBJECT_PATH);
--
--  if (!::dbus_g_proxy_call(proxy.gproxy(), method, &Resetter(&error).lvalue(),
--                           G_TYPE_INVALID, g_type_array,
--                           &Resetter(result).lvalue(), G_TYPE_INVALID)) {
--    LOG(WARNING) << "CallPtrArray failed: "
--                 << (error->message ? error->message : "Unknown Error.");
--    return false;
--  }
--
--  return true;
--}
--
--BusConnection GetSystemBusConnection() {
--  glib::ScopedError error;
--  ::DBusGConnection* result =
--      ::dbus_g_bus_get(DBUS_BUS_SYSTEM, &Resetter(&error).lvalue());
--  if (!result) {
--    LOG(ERROR) << "dbus_g_bus_get(DBUS_BUS_SYSTEM) failed: "
--               << ((error.get() && error->message) ? error->message
--                                                   : "Unknown Error");
--    return BusConnection(nullptr);
--  }
--  // Set to not exit when system bus is disconnected.
--  // This fixes the problem where when the dbus daemon is stopped, exit is
--  // called which kills Chrome.
--  ::dbus_connection_set_exit_on_disconnect(
--      ::dbus_g_connection_get_connection(result), FALSE);
--  return BusConnection(result);
--}
--
--BusConnection GetPrivateBusConnection(const char* address) {
--  // Since dbus-glib does not have an API like dbus_g_connection_open_private(),
--  // we have to implement our own.
--
--  // We have to call _dbus_g_value_types_init() to register standard marshalers
--  // just like as dbus_g_bus_get() and dbus_g_connection_open() do, but the
--  // function is not exported. So we call GetPrivateBusConnection() which calls
--  // dbus_g_bus_get() here instead. Note that if we don't call
--  // _dbus_g_value_types_init(), we might get "WARNING **: No demarshaller
--  // registered for type xxxxx" error and might not be able to handle incoming
--  // signals nor method calls.
--  {
--    BusConnection system_bus_connection = GetSystemBusConnection();
--    if (!system_bus_connection.HasConnection()) {
--      return system_bus_connection;  // returns NULL connection.
--    }
--  }
--
--  ::DBusError error;
--  ::dbus_error_init(&error);
--
--  ::DBusGConnection* result = nullptr;
--  ::DBusConnection* raw_connection =
--      ::dbus_connection_open_private(address, &error);
--  if (!raw_connection) {
--    LOG(WARNING) << "dbus_connection_open_private failed: " << address;
--    return BusConnection(nullptr);
--  }
--
--  if (!::dbus_bus_register(raw_connection, &error)) {
--    LOG(ERROR) << "dbus_bus_register failed: "
--               << (error.message ? error.message : "Unknown Error.");
--    ::dbus_error_free(&error);
--    // TODO(yusukes): We don't call dbus_connection_close() nor g_object_unref()
--    // here for now since these calls might interfere with IBusBus connections
--    // in libcros and Chrome. See the comment in ~InputMethodStatusConnection()
--    // function in platform/cros/chromeos_input_method.cc for details.
--    return BusConnection(nullptr);
--  }
--
--  ::dbus_connection_setup_with_g_main(raw_connection,
--                                      nullptr /* default context */);
--
--  // A reference count of |raw_connection| is transferred to |result|. You don't
--  // have to (and should not) unref the |raw_connection|.
--  result = ::dbus_connection_get_g_connection(raw_connection);
--  CHECK(result);
--
--  ::dbus_connection_set_exit_on_disconnect(
--      ::dbus_g_connection_get_connection(result), FALSE);
--
--  return BusConnection(result);
--}
--
--bool RetrieveProperties(const Proxy& proxy,
--                        const char* interface,
--                        glib::ScopedHashTable* result) {
--  glib::ScopedError error;
--
--  if (!::dbus_g_proxy_call(
--          proxy.gproxy(), "GetAll", &Resetter(&error).lvalue(), G_TYPE_STRING,
--          interface, G_TYPE_INVALID,
--          ::dbus_g_type_get_map("GHashTable", G_TYPE_STRING, G_TYPE_VALUE),
--          &Resetter(result).lvalue(), G_TYPE_INVALID)) {
--    LOG(WARNING) << "RetrieveProperties failed: "
--                 << (error->message ? error->message : "Unknown Error.");
--    return false;
--  }
--  return true;
--}
--
--Proxy::Proxy() : object_(nullptr) {}
--
--// Set |connect_to_name_owner| true if you'd like to use
--// dbus_g_proxy_new_for_name_owner() rather than dbus_g_proxy_new_for_name().
--Proxy::Proxy(const BusConnection& connection,
--             const char* name,
--             const char* path,
--             const char* interface,
--             bool connect_to_name_owner)
--    : object_(GetGProxy(
--          connection, name, path, interface, connect_to_name_owner)) {}
--
--// Equivalent to Proxy(connection, name, path, interface, false).
--Proxy::Proxy(const BusConnection& connection,
--             const char* name,
--             const char* path,
--             const char* interface)
--    : object_(GetGProxy(connection, name, path, interface, false)) {}
--
--// Creates a peer proxy using dbus_g_proxy_new_for_peer.
--Proxy::Proxy(const BusConnection& connection,
--             const char* path,
--             const char* interface)
--    : object_(GetGPeerProxy(connection, path, interface)) {}
--
--Proxy::Proxy(const Proxy& x) : object_(x.object_) {
--  if (object_)
--    ::g_object_ref(object_);
--}
--
--Proxy::~Proxy() {
--  if (object_)
--    ::g_object_unref(object_);
--}
--
--/* static */
--Proxy::value_type Proxy::GetGProxy(const BusConnection& connection,
--                                   const char* name,
--                                   const char* path,
--                                   const char* interface,
--                                   bool connect_to_name_owner) {
--  value_type result = nullptr;
--  if (connect_to_name_owner) {
--    glib::ScopedError error;
--    result = ::dbus_g_proxy_new_for_name_owner(
--        connection.object_, name, path, interface, &Resetter(&error).lvalue());
--    if (!result) {
--      DLOG(ERROR) << "Failed to construct proxy: "
--                  << (error->message ? error->message : "Unknown Error") << ": "
--                  << path;
--    }
--  } else {
--    result =
--        ::dbus_g_proxy_new_for_name(connection.object_, name, path, interface);
--    if (!result) {
--      LOG(ERROR) << "Failed to construct proxy: " << path;
--    }
--  }
--  return result;
--}
--
--/* static */
--Proxy::value_type Proxy::GetGPeerProxy(const BusConnection& connection,
--                                       const char* path,
--                                       const char* interface) {
--  value_type result =
--      ::dbus_g_proxy_new_for_peer(connection.object_, path, interface);
--  if (!result)
--    LOG(ERROR) << "Failed to construct peer proxy: " << path;
--
--  return result;
--}
--
--bool RegisterExclusiveService(const BusConnection& connection,
--                              const char* interface_name,
--                              const char* service_name,
--                              const char* service_path,
--                              GObject* object) {
--  CHECK(object);
--  CHECK(interface_name);
--  CHECK(service_name);
--  // Create a proxy to DBus itself so that we can request to become a
--  // service name owner and then register an object at the related service path.
--  Proxy proxy = brillo::dbus::Proxy(connection, DBUS_SERVICE_DBUS,
--                                    DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
--  // Exclusivity is determined by replacing any existing
--  // service, not queuing, and ensuring we are the primary
--  // owner after the name is ours.
--  glib::ScopedError err;
--  guint result = 0;
--  // TODO(wad) determine if we are moving away from using generated functions
--  if (!org_freedesktop_DBus_request_name(proxy.gproxy(), service_name, 0,
--                                         &result, &Resetter(&err).lvalue())) {
--    LOG(ERROR) << "Unable to request service name: "
--               << (err->message ? err->message : "Unknown Error.");
--    return false;
--  }
--
--  // Handle the error codes, releasing the name if exclusivity conditions
--  // are not met.
--  bool needs_release = false;
--  if (result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
--    LOG(ERROR) << "Failed to become the primary owner. Releasing . . .";
--    needs_release = true;
--  }
--  if (result == DBUS_REQUEST_NAME_REPLY_EXISTS) {
--    LOG(ERROR) << "Service name exists: " << service_name;
--    return false;
--  } else if (result == DBUS_REQUEST_NAME_REPLY_IN_QUEUE) {
--    LOG(ERROR) << "Service name request enqueued despite our flags. Releasing";
--    needs_release = true;
--  }
--  LOG_IF(WARNING, result == DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER)
--      << "Service name already owned by this process";
--  if (needs_release) {
--    if (!org_freedesktop_DBus_release_name(proxy.gproxy(), service_name,
--                                           &result, &Resetter(&err).lvalue())) {
--      LOG(ERROR) << "Unabled to release service name: "
--                 << (err->message ? err->message : "Unknown Error.");
--    }
--    DLOG(INFO) << "ReleaseName returned code " << result;
--    return false;
--  }
--
--  // Determine a path from the service name and register the object.
--  dbus_g_connection_register_g_object(connection.g_connection(), service_path,
--                                      object);
--  return true;
--}
--
--void CallMethodWithNoArguments(const char* service_name,
--                               const char* path,
--                               const char* interface_name,
--                               const char* method_name) {
--  Proxy proxy(dbus::GetSystemBusConnection(), service_name, path,
--              interface_name);
--  ::dbus_g_proxy_call_no_reply(proxy.gproxy(), method_name, G_TYPE_INVALID);
--}
--
--void SignalWatcher::StartMonitoring(const std::string& interface,
--                                    const std::string& signal) {
--  DCHECK(interface_.empty()) << "StartMonitoring() must be called only once";
--  interface_ = interface;
--  signal_ = signal;
--
--  // Snoop on D-Bus messages so we can get notified about signals.
--  DBusConnection* dbus_conn =
--      dbus_g_connection_get_connection(GetSystemBusConnection().g_connection());
--  DCHECK(dbus_conn);
--
--  DBusError error;
--  dbus_error_init(&error);
--  dbus_bus_add_match(dbus_conn, GetDBusMatchString().c_str(), &error);
--  if (dbus_error_is_set(&error)) {
--    LOG(DFATAL) << "Got error while adding D-Bus match rule: " << error.name
--                << " (" << error.message << ")";
--  }
--
--  if (!dbus_connection_add_filter(dbus_conn, &SignalWatcher::FilterDBusMessage,
--                                  this,        // user_data
--                                  nullptr)) {  // free_data_function
--    LOG(DFATAL) << "Unable to add D-Bus filter";
--  }
--}
--
--SignalWatcher::~SignalWatcher() {
--  if (interface_.empty())
--    return;
--
--  DBusConnection* dbus_conn = dbus_g_connection_get_connection(
--      dbus::GetSystemBusConnection().g_connection());
--  DCHECK(dbus_conn);
--
--  dbus_connection_remove_filter(dbus_conn, &SignalWatcher::FilterDBusMessage,
--                                this);
--
--  DBusError error;
--  dbus_error_init(&error);
--  dbus_bus_remove_match(dbus_conn, GetDBusMatchString().c_str(), &error);
--  if (dbus_error_is_set(&error)) {
--    LOG(DFATAL) << "Got error while removing D-Bus match rule: " << error.name
--                << " (" << error.message << ")";
--  }
--}
--
--std::string SignalWatcher::GetDBusMatchString() const {
--  return base::StringPrintf("type='signal', interface='%s', member='%s'",
--                            interface_.c_str(), signal_.c_str());
--}
--
--/* static */
--DBusHandlerResult SignalWatcher::FilterDBusMessage(DBusConnection* dbus_conn,
--                                                   DBusMessage* message,
--                                                   void* data) {
--  SignalWatcher* self = static_cast<SignalWatcher*>(data);
--  if (dbus_message_is_signal(message, self->interface_.c_str(),
--                             self->signal_.c_str())) {
--    self->OnSignal(message);
--    return DBUS_HANDLER_RESULT_HANDLED;
--  } else {
--    return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
--  }
--}
--
--}  // namespace dbus
--}  // namespace brillo
-diff --git a/brillo/glib/dbus.h b/brillo/glib/dbus.h
-deleted file mode 100644
-index 299d65159e..0000000000
---- a/brillo/glib/dbus.h
-+++ /dev/null
-@@ -1,450 +0,0 @@
--// Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style license that can be
--// found in the LICENSE file.
--
--#ifndef LIBBRILLO_BRILLO_GLIB_DBUS_H_
--#define LIBBRILLO_BRILLO_GLIB_DBUS_H_
--
--// IMPORTANT: Do not use this in new code. Instead, use libchrome's D-Bus
--// bindings. See https://goo.gl/EH3MmR for more details.
--
--#include <base/check.h>
--#include <dbus/dbus-glib.h>
--#include <glib-object.h>
--
--#include <algorithm>
--#include <string>
--#include <utility>
--
--#include "base/logging.h"
--#include <brillo/brillo_export.h>
--#include <brillo/glib/object.h>
--
--struct DBusMessage;
--struct DBusConnection;
--
--namespace brillo {
--
--namespace dbus {
--
--// \brief   BusConnection manages the ref-count for a ::DBusGConnection*.
--//
--// A BusConnection has reference semantics bound to a particular communication
--// bus.
--//
--// \models Copyable, Assignable
--// \related GetSystemBusConnection()
--
--class BRILLO_EXPORT BusConnection {
-- public:
--  typedef ::DBusGConnection* value_type;
--
--  BusConnection(const BusConnection& x) : object_(x.object_) {
--    if (object_)
--      ::dbus_g_connection_ref(object_);
--  }
--
--  ~BusConnection() {
--    if (object_)
--      ::dbus_g_connection_unref(object_);
--  }
--
--  BusConnection& operator=(BusConnection x) {
--    swap(*this, x);
--    return *this;
--  }
--
--  const value_type& g_connection() const {
--    DCHECK(object_) << "referencing an empty connection";
--    return object_;
--  }
--
--  operator bool() const { return object_; }
--
--  bool HasConnection() const { return object_; }
--
-- private:
--  friend void swap(BusConnection& x, BusConnection& y);
--
--  friend class Proxy;
--  friend BusConnection GetSystemBusConnection();
--  friend BusConnection GetPrivateBusConnection(const char* address);
--
--  // Constructor takes ownership
--  BRILLO_PRIVATE explicit BusConnection(::DBusGConnection* x) : object_(x) {}
--
--  value_type object_;
--};
--
--inline void swap(BusConnection& x, BusConnection& y) {
--  std::swap(x.object_, y.object_);
--}
--
--// \brief Proxy manages the ref-count for a ::DBusGProxy*.
--//
--// Proxy has reference semantics and represents a connection to on object on
--// the bus. A proxy object is constructed with a connection to a bus, a name
--// to an entity on the bus, a path to an object owned by the entity, and an
--// interface protocol name used to communicate with the object.
--
--class BRILLO_EXPORT Proxy {
-- public:
--  typedef ::DBusGProxy* value_type;
--
--  Proxy();
--
--  // Set |connect_to_name_owner| true if you'd like to use
--  // dbus_g_proxy_new_for_name_owner() rather than dbus_g_proxy_new_for_name().
--  Proxy(const BusConnection& connection,
--        const char* name,
--        const char* path,
--        const char* interface,
--        bool connect_to_name_owner);
--
--  // Equivalent to Proxy(connection, name, path, interface, false).
--  Proxy(const BusConnection& connection,
--        const char* name,
--        const char* path,
--        const char* interface);
--
--  // Creates a peer proxy using dbus_g_proxy_new_for_peer.
--  Proxy(const BusConnection& connection,
--        const char* path,
--        const char* interface);
--
--  Proxy(const Proxy& x);
--
--  ~Proxy();
--
--  Proxy& operator=(Proxy x) {
--    swap(*this, x);
--    return *this;
--  }
--
--  const char* path() const {
--    DCHECK(object_) << "referencing an empty proxy";
--    return ::dbus_g_proxy_get_path(object_);
--  }
--
--  // gproxy() returns a reference to the underlying ::DBusGProxy*. As this
--  // library evolves, the gproxy() will be moved to be private.
--
--  const value_type& gproxy() const {
--    DCHECK(object_) << "referencing an empty proxy";
--    return object_;
--  }
--
--  operator bool() const { return object_; }
--
-- private:
--  BRILLO_PRIVATE static value_type GetGProxy(const BusConnection& connection,
--                                             const char* name,
--                                             const char* path,
--                                             const char* interface,
--                                             bool connect_to_name_owner);
--
--  BRILLO_PRIVATE static value_type GetGPeerProxy(
--      const BusConnection& connection, const char* path, const char* interface);
--
--  BRILLO_PRIVATE operator int() const;  // for safe bool cast
--  friend void swap(Proxy& x, Proxy& y);
--
--  value_type object_;
--};
--
--inline void swap(Proxy& x, Proxy& y) {
--  std::swap(x.object_, y.object_);
--}
--
--// \brief RegisterExclusiveService configures a GObject to run as a service on
--//  a supplied ::BusConnection.
--//
--//  RegisterExclusiveService encapsulates the process of configuring the
--//  supplied \param object at \param service_path on the \param connection.
--//  Exclusivity is ensured by replacing any existing services at that named
--//  location and confirming that the connection is the primary owner.
--//
--//  Type information for the \param object must be installed with
--//  dbus_g_object_type_install_info prior to use.
--
--BRILLO_EXPORT bool RegisterExclusiveService(const BusConnection& connection,
--                                            const char* interface_name,
--                                            const char* service_name,
--                                            const char* service_path,
--                                            GObject* object);
--
--template <typename F>  // F is a function signature
--class MonitorConnection;
--
--template <typename A1>
--class MonitorConnection<void(A1)> {
-- public:
--  MonitorConnection(const Proxy& proxy,
--                    const char* name,
--                    void (*monitor)(void*, A1),
--                    void* object)
--      : proxy_(proxy), name_(name), monitor_(monitor), object_(object) {}
--
--  static void Run(::DBusGProxy*, A1 x, MonitorConnection* self) {
--    self->monitor_(self->object_, x);
--  }
--  const Proxy& proxy() const { return proxy_; }
--  const std::string& name() const { return name_; }
--
-- private:
--  Proxy proxy_;
--  std::string name_;
--  void (*monitor_)(void*, A1);
--  void* object_;
--};
--
--template <typename A1, typename A2>
--class MonitorConnection<void(A1, A2)> {
-- public:
--  MonitorConnection(const Proxy& proxy,
--                    const char* name,
--                    void (*monitor)(void*, A1, A2),
--                    void* object)
--      : proxy_(proxy), name_(name), monitor_(monitor), object_(object) {}
--
--  static void Run(::DBusGProxy*, A1 x, A2 y, MonitorConnection* self) {
--    self->monitor_(self->object_, x, y);
--  }
--  const Proxy& proxy() const { return proxy_; }
--  const std::string& name() const { return name_; }
--
-- private:
--  Proxy proxy_;
--  std::string name_;
--  void (*monitor_)(void*, A1, A2);
--  void* object_;
--};
--
--template <typename A1, typename A2, typename A3>
--class MonitorConnection<void(A1, A2, A3)> {
-- public:
--  MonitorConnection(const Proxy& proxy,
--                    const char* name,
--                    void (*monitor)(void*, A1, A2, A3),
--                    void* object)
--      : proxy_(proxy), name_(name), monitor_(monitor), object_(object) {}
--
--  static void Run(::DBusGProxy*, A1 x, A2 y, A3 z, MonitorConnection* self) {
--    self->monitor_(self->object_, x, y, z);
--  }
--  const Proxy& proxy() const { return proxy_; }
--  const std::string& name() const { return name_; }
--
-- private:
--  Proxy proxy_;
--  std::string name_;
--  void (*monitor_)(void*, A1, A2, A3);
--  void* object_;
--};
--
--template <typename A1, typename A2, typename A3, typename A4>
--class MonitorConnection<void(A1, A2, A3, A4)> {
-- public:
--  MonitorConnection(const Proxy& proxy,
--                    const char* name,
--                    void (*monitor)(void*, A1, A2, A3, A4),
--                    void* object)
--      : proxy_(proxy), name_(name), monitor_(monitor), object_(object) {}
--
--  static void Run(
--      ::DBusGProxy*, A1 x, A2 y, A3 z, A4 w, MonitorConnection* self) {
--    self->monitor_(self->object_, x, y, z, w);
--  }
--  const Proxy& proxy() const { return proxy_; }
--  const std::string& name() const { return name_; }
--
-- private:
--  Proxy proxy_;
--  std::string name_;
--  void (*monitor_)(void*, A1, A2, A3, A4);
--  void* object_;
--};
--
--template <typename A1>
--MonitorConnection<void(A1)>* Monitor(const Proxy& proxy,
--                                     const char* name,
--                                     void (*monitor)(void*, A1),
--                                     void* object) {
--  typedef MonitorConnection<void(A1)> ConnectionType;
--
--  ConnectionType* result = new ConnectionType(proxy, name, monitor, object);
--
--  ::dbus_g_proxy_add_signal(proxy.gproxy(), name, glib::type_to_gtypeid<A1>(),
--                            G_TYPE_INVALID);
--  ::dbus_g_proxy_connect_signal(
--      proxy.gproxy(), name, G_CALLBACK(&ConnectionType::Run), result, nullptr);
--  return result;
--}
--
--template <typename A1, typename A2>
--MonitorConnection<void(A1, A2)>* Monitor(const Proxy& proxy,
--                                         const char* name,
--                                         void (*monitor)(void*, A1, A2),
--                                         void* object) {
--  typedef MonitorConnection<void(A1, A2)> ConnectionType;
--
--  ConnectionType* result = new ConnectionType(proxy, name, monitor, object);
--
--  ::dbus_g_proxy_add_signal(proxy.gproxy(), name, glib::type_to_gtypeid<A1>(),
--                            glib::type_to_gtypeid<A2>(), G_TYPE_INVALID);
--  ::dbus_g_proxy_connect_signal(
--      proxy.gproxy(), name, G_CALLBACK(&ConnectionType::Run), result, nullptr);
--  return result;
--}
--
--template <typename A1, typename A2, typename A3>
--MonitorConnection<void(A1, A2, A3)>* Monitor(const Proxy& proxy,
--                                             const char* name,
--                                             void (*monitor)(void*, A1, A2, A3),
--                                             void* object) {
--  typedef MonitorConnection<void(A1, A2, A3)> ConnectionType;
--
--  ConnectionType* result = new ConnectionType(proxy, name, monitor, object);
--
--  ::dbus_g_proxy_add_signal(proxy.gproxy(), name, glib::type_to_gtypeid<A1>(),
--                            glib::type_to_gtypeid<A2>(),
--                            glib::type_to_gtypeid<A3>(), G_TYPE_INVALID);
--  ::dbus_g_proxy_connect_signal(
--      proxy.gproxy(), name, G_CALLBACK(&ConnectionType::Run), result, nullptr);
--  return result;
--}
--
--template <typename A1, typename A2, typename A3, typename A4>
--MonitorConnection<void(A1, A2, A3, A4)>* Monitor(
--    const Proxy& proxy,
--    const char* name,
--    void (*monitor)(void*, A1, A2, A3, A4),
--    void* object) {
--  typedef MonitorConnection<void(A1, A2, A3, A4)> ConnectionType;
--
--  ConnectionType* result = new ConnectionType(proxy, name, monitor, object);
--
--  ::dbus_g_proxy_add_signal(proxy.gproxy(), name, glib::type_to_gtypeid<A1>(),
--                            glib::type_to_gtypeid<A2>(),
--                            glib::type_to_gtypeid<A3>(),
--                            glib::type_to_gtypeid<A4>(), G_TYPE_INVALID);
--  ::dbus_g_proxy_connect_signal(
--      proxy.gproxy(), name, G_CALLBACK(&ConnectionType::Run), result, nullptr);
--  return result;
--}
--
--template <typename F>
--void Disconnect(MonitorConnection<F>* connection) {
--  typedef MonitorConnection<F> ConnectionType;
--
--  ::dbus_g_proxy_disconnect_signal(
--      connection->proxy().gproxy(), connection->name().c_str(),
--      G_CALLBACK(&ConnectionType::Run), connection);
--  delete connection;
--}
--
--// \brief call_PtrArray() invokes a method on a proxy returning a
--//  glib::PtrArray.
--//
--// CallPtrArray is the first instance of what is likely to be a general
--// way to make method calls to a proxy. It will likely be replaced with
--// something like Call(proxy, method, arg1, arg2, ..., ResultType*) in the
--// future. However, I don't yet have enough cases to generalize from.
--
--BRILLO_EXPORT bool CallPtrArray(const Proxy& proxy,
--                                const char* method,
--                                glib::ScopedPtrArray<const char*>* result);
--
--// \brief RetrieveProperty() retrieves a property of an object associated with a
--//  proxy.
--//
--// Given a proxy to an object supporting the org.freedesktop.DBus.Properties
--// interface, the RetrieveProperty() call will retrieve a property of the
--// specified interface on the object storing it in \param result and returning
--// \true. If the dbus call fails or the object returned is not of type \param T,
--// then \false is returned and \param result is unchanged.
--//
--// \example
--// Proxy proxy(GetSystemBusConnection(),
--//             "org.freedesktop.DeviceKit.Power", // A named entity on the bus
--//             battery_name,  // Path to a battery on the bus
--//             "org.freedesktop.DBus.Properties") // Properties interface
--//
--// double x;
--// if (RetrieveProperty(proxy,
--//                      "org.freedesktop.DeviceKit.Power.Device",
--//                      "percentage")
--//   std::cout << "Battery charge is " << x << "% of capacity.";
--// \end_example
--
--template <typename T>
--inline bool RetrieveProperty(const Proxy& proxy,
--                             const char* interface,
--                             const char* property,
--                             T* result) {
--  glib::ScopedError error;
--  glib::Value value;
--
--  if (!::dbus_g_proxy_call(proxy.gproxy(), "Get", &Resetter(&error).lvalue(),
--                           G_TYPE_STRING, interface, G_TYPE_STRING, property,
--                           G_TYPE_INVALID, G_TYPE_VALUE, &value,
--                           G_TYPE_INVALID)) {
--    LOG(ERROR) << "Getting property failed: "
--               << (error->message ? error->message : "Unknown Error.");
--    return false;
--  }
--  return glib::Retrieve(value, result);
--}
--
--// \brief RetrieveProperties returns a HashTable of all properties for the
--// specified interface.
--
--BRILLO_EXPORT bool RetrieveProperties(const Proxy& proxy,
--                                      const char* interface,
--                                      glib::ScopedHashTable* result);
--
--// \brief Returns a connection to the system bus.
--
--BRILLO_EXPORT BusConnection GetSystemBusConnection();
--
--// \brief Returns a private connection to a bus at |address|.
--
--BRILLO_EXPORT BusConnection GetPrivateBusConnection(const char* address);
--
--// \brief Calls a method |method_name| with no arguments per the given |path|
--// and |interface_name|.  Ignores return value.
--
--BRILLO_EXPORT void CallMethodWithNoArguments(const char* service_name,
--                                             const char* path,
--                                             const char* interface_name,
--                                             const char* method_name);
--
--// \brief Low-level signal monitor base class.
--//
--// Used when there is no definite named signal sender (that Proxy
--// could be used for).
--
--class BRILLO_EXPORT SignalWatcher {
-- public:
--  SignalWatcher() {}
--  ~SignalWatcher();
--  void StartMonitoring(const std::string& interface, const std::string& signal);
--
-- private:
--  // Callback invoked on the given signal arrival.
--  virtual void OnSignal(DBusMessage* message) = 0;
--
--  // Returns a string matching the D-Bus messages that we want to listen for.
--  BRILLO_PRIVATE std::string GetDBusMatchString() const;
--
--  // A D-Bus message filter to receive signals.
--  BRILLO_PRIVATE static DBusHandlerResult FilterDBusMessage(
--      DBusConnection* dbus_conn, DBusMessage* message, void* data);
--  std::string interface_;
--  std::string signal_;
--};
--
--}  // namespace dbus
--}  // namespace brillo
--
--#endif  // LIBBRILLO_BRILLO_GLIB_DBUS_H_
-diff --git a/brillo/glib/object.h b/brillo/glib/object.h
-deleted file mode 100644
-index 87e5601648..0000000000
---- a/brillo/glib/object.h
-+++ /dev/null
-@@ -1,469 +0,0 @@
--// Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style license that can be
--// found in the LICENSE file.
--
--#ifndef LIBBRILLO_BRILLO_GLIB_OBJECT_H_
--#define LIBBRILLO_BRILLO_GLIB_OBJECT_H_
--
--#include <glib-object.h>
--#include <stdint.h>
--
--#include <algorithm>
--#include <cstddef>
--#include <memory>
--#include <string>
--#include <utility>
--
--#include <base/check.h>
--#include <base/logging.h>
--#include <base/macros.h>
--
--namespace brillo {
--
--namespace details {  // NOLINT
--
--// \brief ResetHelper is a private class for use with Resetter().
--//
--// ResetHelper passes ownership of a pointer to a scoped pointer type with reset
--// on destruction.
--
--template <typename T>  // T models ScopedPtr
--class ResetHelper {
-- public:
--  typedef typename T::element_type element_type;
--
--  explicit ResetHelper(T* x) : ptr_(nullptr), scoped_(x) {}
--  ~ResetHelper() { scoped_->reset(ptr_); }
--  element_type*& lvalue() { return ptr_; }
--
-- private:
--  element_type* ptr_;
--  T* scoped_;
--};
--
--}  // namespace details
--
--// \brief Resetter() is a utility function for passing pointers to
--//  scoped pointers.
--//
--// The Resetter() function return a temporary object containing an lvalue of
--// \code T::element_type which can be assigned to. When the temporary object
--// destructs, the associated scoped pointer is reset with the lvalue. It is of
--// general use when a pointer is returned as an out-argument.
--//
--// \example
--// void function(int** x) {
--//   *x = new int(10);
--// }
--// ...
--// std::unique_ptr<int> x;
--// function(Resetter(x).lvalue());
--//
--// \end_example
--
--template <typename T>  // T models ScopedPtr
--details::ResetHelper<T> Resetter(T* x) {
--  return details::ResetHelper<T>(x);
--}
--
--namespace glib {
--
--// \brief type_to_gtypeid is a type function mapping from a canonical type to
--// the GType typeid for the associated GType (see type_to_gtype).
--
--template <typename T>
--::GType type_to_gtypeid();
--
--template <>
--inline ::GType type_to_gtypeid<const char*>() {
--  return G_TYPE_STRING;
--}
--template <>
--inline ::GType type_to_gtypeid<char*>() {
--  return G_TYPE_STRING;
--}
--template <>
--inline ::GType type_to_gtypeid< ::uint8_t>() {
--  return G_TYPE_UCHAR;
--}
--template <>
--inline ::GType type_to_gtypeid<double>() {
--  return G_TYPE_DOUBLE;
--}
--template <>
--inline ::GType type_to_gtypeid<bool>() {
--  return G_TYPE_BOOLEAN;
--}
--class Value;
--template <>
--inline ::GType type_to_gtypeid<const Value*>() {
--  return G_TYPE_VALUE;
--}
--
--template <>
--inline ::GType type_to_gtypeid< ::uint32_t>() {
--  // REVISIT (seanparent) : There currently isn't any G_TYPE_UINT32, this code
--  // assumes sizeof(guint) == sizeof(guint32). Need a static_assert to assert
--  // that.
--  return G_TYPE_UINT;
--}
--
--template <>
--inline ::GType type_to_gtypeid< ::int64_t>() {
--  return G_TYPE_INT64;
--}
--
--template <>
--inline ::GType type_to_gtypeid< ::int32_t>() {
--  return G_TYPE_INT;
--}
--
--// \brief Value (and Retrieve) support using std::string as well as const char*
--// by promoting from const char* to the string. promote_from provides a mapping
--// for this promotion (and possibly others in the future).
--
--template <typename T>
--struct promotes_from {
--  typedef T type;
--};
--template <>
--struct promotes_from<std::string> {
--  typedef const char* type;
--};
--
--// \brief RawCast converts from a GValue to a value of a canonical type.
--//
--// RawCast is a low level function. Generally, use Cast() instead.
--//
--// \precondition \param x contains a value of type \param T.
--
--template <typename T>
--inline T RawCast(const ::GValue& x) {
--  // Use static_assert() to issue a meaningful compile-time error.
--  // To prevent this from happening for all references to RawCast, use sizeof(T)
--  // to make static_assert depend on type T and therefore prevent binding it
--  // unconditionally until the actual RawCast<T> instantiation happens.
--  static_assert(sizeof(T) == 0, "Using RawCast on unsupported type");
--  return T();
--}
--
--template <>
--inline const char* RawCast<const char*>(const ::GValue& x) {
--  return static_cast<const char*>(::g_value_get_string(&x));
--}
--template <>
--inline double RawCast<double>(const ::GValue& x) {
--  return static_cast<double>(::g_value_get_double(&x));
--}
--template <>
--inline bool RawCast<bool>(const ::GValue& x) {
--  return static_cast<bool>(::g_value_get_boolean(&x));
--}
--template <>
--inline ::uint32_t RawCast< ::uint32_t>(const ::GValue& x) {
--  return static_cast< ::uint32_t>(::g_value_get_uint(&x));
--}
--template <>
--inline ::uint8_t RawCast< ::uint8_t>(const ::GValue& x) {
--  return static_cast< ::uint8_t>(::g_value_get_uchar(&x));
--}
--template <>
--inline ::int64_t RawCast< ::int64_t>(const ::GValue& x) {
--  return static_cast< ::int64_t>(::g_value_get_int64(&x));
--}
--template <>
--inline ::int32_t RawCast< ::int32_t>(const ::GValue& x) {
--  return static_cast< ::int32_t>(::g_value_get_int(&x));
--}
--
--inline void RawSet(GValue* x, const std::string& v) {
--  ::g_value_set_string(x, v.c_str());
--}
--inline void RawSet(GValue* x, const char* v) {
--  ::g_value_set_string(x, v);
--}
--inline void RawSet(GValue* x, double v) {
--  ::g_value_set_double(x, v);
--}
--inline void RawSet(GValue* x, bool v) {
--  ::g_value_set_boolean(x, v);
--}
--inline void RawSet(GValue* x, ::uint32_t v) {
--  ::g_value_set_uint(x, v);
--}
--inline void RawSet(GValue* x, ::uint8_t v) {
--  ::g_value_set_uchar(x, v);
--}
--inline void RawSet(GValue* x, ::int64_t v) {
--  ::g_value_set_int64(x, v);
--}
--inline void RawSet(GValue* x, ::int32_t v) {
--  ::g_value_set_int(x, v);
--}
--
--// \brief Value is a data type for managing GValues.
--//
--// A Value is a polymorphic container holding at most a single value.
--//
--// The Value wrapper ensures proper initialization, copies, and assignment of
--// GValues.
--//
--// \note GValues are equationally incomplete and so can't support proper
--// equality. The semantics of copy are verified with equality of retrieved
--// values.
--
--class Value : public ::GValue {
-- public:
--  Value() : GValue() {}
--  explicit Value(const ::GValue& x) : GValue() {
--    *this = *static_cast<const Value*>(&x);
--  }
--  template <typename T>
--  explicit Value(T x) : GValue() {
--    ::g_value_init(this, type_to_gtypeid<typename promotes_from<T>::type>());
--    RawSet(this, x);
--  }
--  Value(const Value& x) : GValue() {
--    if (x.empty())
--      return;
--    ::g_value_init(this, G_VALUE_TYPE(&x));
--    ::g_value_copy(&x, this);
--  }
--  ~Value() { clear(); }
--  Value& operator=(const Value& x) {
--    if (this == &x)
--      return *this;
--    clear();
--    if (x.empty())
--      return *this;
--    ::g_value_init(this, G_VALUE_TYPE(&x));
--    ::g_value_copy(&x, this);
--    return *this;
--  }
--  template <typename T>
--  Value& operator=(const T& x) {
--    clear();
--    ::g_value_init(this, type_to_gtypeid<typename promotes_from<T>::type>());
--    RawSet(this, x);
--    return *this;
--  }
--
--  // Lower-case names to follow STL container conventions.
--
--  void clear() {
--    if (!empty())
--      ::g_value_unset(this);
--  }
--
--  bool empty() const { return G_VALUE_TYPE(this) == G_TYPE_INVALID; }
--};
--
--template <>
--inline const Value* RawCast<const Value*>(const ::GValue& x) {
--  return static_cast<const Value*>(&x);
--}
--
--// \brief Retrieve gets a value from a GValue.
--//
--// \postcondition If \param x contains a value of type \param T, then the
--//  value is copied to \param result and \true is returned. Otherwise, \param
--//  result is unchanged and \false is returned.
--//
--// \precondition \param result is not \nullptr.
--
--template <typename T>
--bool Retrieve(const ::GValue& x, T* result) {
--  if (!G_VALUE_HOLDS(&x, type_to_gtypeid<typename promotes_from<T>::type>())) {
--    LOG(WARNING) << "GValue retrieve failed. Expected: "
--                 << g_type_name(
--                        type_to_gtypeid<typename promotes_from<T>::type>())
--                 << ", Found: " << g_type_name(G_VALUE_TYPE(&x));
--    return false;
--  }
--
--  *result = RawCast<typename promotes_from<T>::type>(x);
--  return true;
--}
--
--inline bool Retrieve(const ::GValue& x, Value* result) {
--  *result = Value(x);
--  return true;
--}
--
--// \brief ScopedError holds a ::GError* and deletes it on destruction.
--
--struct FreeError {
--  void operator()(::GError* x) const {
--    if (x)
--      ::g_error_free(x);
--  }
--};
--
--typedef std::unique_ptr< ::GError, FreeError> ScopedError;
--
--// \brief ScopedArray holds a ::GArray* and deletes both the container and the
--// segment containing the elements on destruction.
--
--struct FreeArray {
--  void operator()(::GArray* x) const {
--    if (x)
--      ::g_array_free(x, TRUE);
--  }
--};
--
--typedef std::unique_ptr< ::GArray, FreeArray> ScopedArray;
--
--// \brief ScopedPtrArray adapts ::GPtrArray* to conform to the standard
--//  container requirements.
--//
--// \note ScopedPtrArray is only partially implemented and is being fleshed out
--//  as needed.
--//
--// \models Random Access Container, Back Insertion Sequence, ScopedPtrArray is
--//  not copyable and equationally incomplete.
--
--template <typename T>  // T models pointer
--class ScopedPtrArray {
-- public:
--  typedef ::GPtrArray element_type;
--
--  typedef T value_type;
--  typedef const value_type& const_reference;
--  typedef value_type* iterator;
--  typedef const value_type* const_iterator;
--
--  ScopedPtrArray() : object_(0) {}
--
--  explicit ScopedPtrArray(::GPtrArray* x) : object_(x) {}
--  ScopedPtrArray(const ScopedPtrArray&) = delete;
--  ScopedPtrArray& operator=(const ScopedPtrArray&) = delete;
--
--  ~ScopedPtrArray() { clear(); }
--
--  iterator begin() { return iterator(object_ ? object_->pdata : nullptr); }
--  iterator end() { return begin() + size(); }
--  const_iterator begin() const {
--    return const_iterator(object_ ? object_->pdata : nullptr);
--  }
--  const_iterator end() const { return begin() + size(); }
--
--  // \precondition x is a pointer to an object allocated with g_new().
--
--  void push_back(T x) {
--    if (!object_)
--      object_ = ::g_ptr_array_sized_new(1);
--    ::g_ptr_array_add(object_, ::gpointer(x));
--  }
--
--  T& operator[](std::size_t n) {
--    DCHECK(!(size() < n)) << "ScopedPtrArray index out-of-bound.";
--    return *(begin() + n);
--  }
--
--  std::size_t size() const { return object_ ? object_->len : 0; }
--
--  void clear() {
--    if (object_) {
--      std::for_each(begin(), end(), FreeHelper());
--      ::g_ptr_array_free(object_, true);
--      object_ = nullptr;
--    }
--  }
--
--  void reset(::GPtrArray* p = nullptr) {
--    if (p != object_) {
--      clear();
--      object_ = p;
--    }
--  }
--
-- private:
--  struct FreeHelper {
--    void operator()(T x) const { ::g_free(::gpointer(x)); }
--  };
--
--  template <typename U>
--  friend void swap(ScopedPtrArray<U>& x, ScopedPtrArray<U>& y);
--
--  ::GPtrArray* object_;
--};
--
--template <typename U>
--inline void swap(ScopedPtrArray<U>& x, ScopedPtrArray<U>& y) {
--  std::swap(x.object_, y.object_);
--}
--
--// \brief ScopedHashTable manages the lifetime of a ::GHashTable* with an
--// interface compatibitle with a scoped ptr.
--//
--// The ScopedHashTable is also the start of an adaptor to model a standard
--// Container. The standard for an associative container would have an iterator
--// returning a key value pair. However, that isn't possible with
--// ::GHashTable because there is no interface returning a reference to the
--// key value pair, only to retrieve the keys and values and individual elements.
--//
--// So the standard interface of find() wouldn't work. I considered implementing
--// operator[] and count() - operator []. So retrieving a value would look like:
--//
--// if (table.count(key))
--//   success = Retrieve(table[key], &value);
--//
--// But that requires hashing the key twice.
--// For now I implemented a Retrieve member function to follow the pattern
--// developed elsewhere in the code.
--//
--// bool success = Retrieve(key, &x);
--//
--// This is also a template to retrieve the corect type from the stored GValue
--// type.
--//
--// I may revisit this and use scoped_ptr_malloc and a non-member function
--// Retrieve() in the future. The Retrieve pattern is becoming common enough
--// that I want to give some thought as to how to generalize it further.
--
--class ScopedHashTable {
-- public:
--  typedef ::GHashTable element_type;
--
--  ScopedHashTable() : object_(nullptr) {}
--
--  explicit ScopedHashTable(::GHashTable* p) : object_(p) {}
--
--  ~ScopedHashTable() { clear(); }
--
--  template <typename T>
--  bool Retrieve(const char* key, T* result) const {
--    DCHECK(object_) << "Retrieve on empty ScopedHashTable.";
--    if (!object_)
--      return false;
--
--    ::gpointer ptr = ::g_hash_table_lookup(object_, key);
--    if (!ptr)
--      return false;
--    return glib::Retrieve(*static_cast< ::GValue*>(ptr), result);
--  }
--
--  void clear() {
--    if (object_) {
--      ::g_hash_table_unref(object_);
--      object_ = nullptr;
--    }
--  }
--
--  GHashTable* get() { return object_; }
--
--  void reset(::GHashTable* p = nullptr) {
--    if (p != object_) {
--      clear();
--      object_ = p;
--    }
--  }
--
-- private:
--  ::GHashTable* object_;
--};
--
--}  // namespace glib
--}  // namespace brillo
--
--#endif  // LIBBRILLO_BRILLO_GLIB_OBJECT_H_
-diff --git a/brillo/glib/object_test.cc b/brillo/glib/object_test.cc
-deleted file mode 100644
-index 9381866b9f..0000000000
---- a/brillo/glib/object_test.cc
-+++ /dev/null
-@@ -1,132 +0,0 @@
--// Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style license that can be
--// found in the LICENSE file.
--
--#include "brillo/glib/object.h"
--
--#include <gtest/gtest.h>
--
--#include <algorithm>
--#include <cstring>
--#include <iterator>
--#include <string>
--
--using brillo::Resetter;
--using brillo::glib::Retrieve;
--using brillo::glib::ScopedError;
--using brillo::glib::ScopedPtrArray;
--using brillo::glib::Value;
--
--namespace {  // NOLINT
--
--template <typename T>
--void SetRetrieveTest(const T& x) {
--  Value tmp(x);
--  T result;
--  EXPECT_TRUE(Retrieve(tmp, &result));
--  EXPECT_EQ(result, x);
--}
--
--void ModifyValue(Value* x) {
--  *x = 1.0 / 1231415926.0;  // An unlikely value
--}
--
--template <typename T, typename O>
--void MutableRegularTestValue(const T& x, O modify) {
--  Value tmp(x);
--  Value y = tmp;  // copy-construction
--  T result;
--  EXPECT_TRUE(Retrieve(y, &result));
--  EXPECT_EQ(result, x);
--  modify(&y);
--  LOG(INFO) << "Warning Expected.";
--  EXPECT_TRUE(!(Retrieve(y, &result) && result == x));
--  y = tmp;  // assignment
--  EXPECT_TRUE(Retrieve(y, &result));
--  EXPECT_EQ(result, x);
--  modify(&y);
--  LOG(INFO) << "Warning Expected.";
--  EXPECT_TRUE(!(Retrieve(y, &result) && result == x));
--}
--
--void OutArgument(int** x) {
--  *x = new int(10);  // NOLINT
--}
--
--}  // namespace
--
--TEST(ResetterTest, All) {
--  std::unique_ptr<int> x;
--  OutArgument(&Resetter(&x).lvalue());
--  EXPECT_EQ(*x, 10);
--}
--
--TEST(RetrieveTest, Types) {
--  SetRetrieveTest(std::string("Hello!"));
--  SetRetrieveTest(static_cast<uint32_t>(10));
--  SetRetrieveTest(10.5);
--  SetRetrieveTest(true);
--}
--
--TEST(ValueTest, All) {
--  Value x;      // default construction
--  Value y = x;  // copy with default value
--  x = y;        // assignment with default value
--  Value z(1.5);
--  x = z;  // assignment to default value
--  MutableRegularTestValue(std::string("Hello!"), &ModifyValue);
--}
--
--TEST(ScopedErrorTest, All) {
--  ScopedError a;  // default construction
--  ScopedError b(::g_error_new(::g_quark_from_static_string("error"), -1,
--                              ""));  // constructor
--  ::GError* c = ::g_error_new(::g_quark_from_static_string("error"), -1, "");
--  ::GError* d = ::g_error_new(::g_quark_from_static_string("error"), -1, "");
--  a.reset(c);  // reset form 1
--  (void)d;
--}
--
--TEST(ScopedPtrArrayTest, Construction) {
--  const char item[] = "a string";
--  char* a = static_cast<char*>(::g_malloc(sizeof(item)));
--  std::strcpy(a, &item[0]);  // NOLINT
--
--  ::GPtrArray* array = ::g_ptr_array_new();
--  ::g_ptr_array_add(array, ::gpointer(a));
--
--  ScopedPtrArray<const char*> x(array);
--  EXPECT_EQ(x.size(), 1);
--  EXPECT_EQ(x[0], a);  // indexing
--}
--
--TEST(ScopedPtrArrayTest, Reset) {
--  const char item[] = "a string";
--  char* a = static_cast<char*>(::g_malloc(sizeof(item)));
--  std::strcpy(a, &item[0]);  // NOLINT
--
--  ScopedPtrArray<const char*> x;  // default construction
--  x.push_back(a);
--  EXPECT_EQ(x.size(), 1);
--  x.reset();
--  EXPECT_EQ(x.size(), 0);
--
--  char* b = static_cast<char*>(::g_malloc(sizeof(item)));
--  std::strcpy(b, &item[0]);  // NOLINT
--
--  ::GPtrArray* array = ::g_ptr_array_new();
--  ::g_ptr_array_add(array, ::gpointer(b));
--
--  x.reset(array);
--  EXPECT_EQ(x.size(), 1);
--}
--
--TEST(ScopedPtrArrayTest, Iteration) {
--  char* a[] = {static_cast<char*>(::g_malloc(1)),
--               static_cast<char*>(::g_malloc(1)),
--               static_cast<char*>(::g_malloc(1))};
--
--  ScopedPtrArray<const char*> x;
--  std::copy(&a[0], &a[3], std::back_inserter(x));
--  EXPECT_TRUE(std::equal(x.begin(), x.end(), &a[0]));
--}
--- 
-2.33.0.464.g1972c5931b-goog
-
diff --git a/chromeos-base/libbrillo/libbrillo-0.0.1-r2192.ebuild b/chromeos-base/libbrillo/libbrillo-0.0.1-r2303.ebuild
similarity index 83%
rename from chromeos-base/libbrillo/libbrillo-0.0.1-r2192.ebuild
rename to chromeos-base/libbrillo/libbrillo-0.0.1-r2303.ebuild
index 6542f2d..525df30 100644
--- a/chromeos-base/libbrillo/libbrillo-0.0.1-r2192.ebuild
+++ b/chromeos-base/libbrillo/libbrillo-0.0.1-r2303.ebuild
@@ -3,13 +3,16 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "8e0ea8ff2f8911b66a4da95a9949d0d7c4bac5b0" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "72f44ffb4d28142fc4be0c9df092372d9e883cb3" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_REPO="${CROS_GIT_HOST_URL}"
+#CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_SUBTREE="common-mk libbrillo .gn"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_EGIT_BRANCH="main"
 
 PLATFORM_SUBDIR="libbrillo"
 
@@ -17,6 +20,10 @@
 # but this package should not have the dependency.
 WANT_LIBBRILLO="no"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-workon platform
 
 DESCRIPTION="Base library for Chromium OS"
@@ -24,12 +31,13 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="cros_host +dbus +device_mapper enterprise_rollback_reven fuzzer -lvm_stateful_partition +udev usb"
+IUSE="cros_host +dbus +device_mapper enterprise_rollback_reven fuzzer +udev usb"
 
 COMMON_DEPEND="
 	chromeos-base/minijail:=
+	chromeos-base/perfetto:=
 	>=chromeos-base/protofiles-0.0.75:=
-	dbus? ( dev-libs/dbus-glib:= )
+	chromeos-base/vboot_reference:=
 	dev-cpp/abseil-cpp:=
 	dev-libs/openssl:=
 	dev-libs/protobuf:=
@@ -37,7 +45,6 @@
 	net-misc/curl:=
 	sys-apps/rootdev:=
 	device_mapper? ( sys-fs/lvm2:=[thin] )
-	lvm_stateful_partition? ( sys-fs/lvm2:= )
 	udev? ( virtual/libudev )
 	usb? ( virtual/libusb:1= )
 "
@@ -53,6 +60,14 @@
 	dev-libs/modp_b64:=
 "
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
+PATCHES=(
+	"${FILESDIR}/lakitu-fix-llvm-compatibility.patch"
+)
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/libbrillo/libbrillo-9999.ebuild b/chromeos-base/libbrillo/libbrillo-9999.ebuild
index 273b447..01dca69 100644
--- a/chromeos-base/libbrillo/libbrillo-9999.ebuild
+++ b/chromeos-base/libbrillo/libbrillo-9999.ebuild
@@ -15,6 +15,10 @@
 # but this package should not have the dependency.
 WANT_LIBBRILLO="no"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-workon platform
 
 DESCRIPTION="Base library for Chromium OS"
@@ -22,12 +26,13 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="cros_host +dbus +device_mapper enterprise_rollback_reven fuzzer -lvm_stateful_partition +udev usb"
+IUSE="cros_host +dbus +device_mapper enterprise_rollback_reven fuzzer +udev usb"
 
 COMMON_DEPEND="
 	chromeos-base/minijail:=
+	chromeos-base/perfetto:=
 	>=chromeos-base/protofiles-0.0.75:=
-	dbus? ( dev-libs/dbus-glib:= )
+	chromeos-base/vboot_reference:=
 	dev-cpp/abseil-cpp:=
 	dev-libs/openssl:=
 	dev-libs/protobuf:=
@@ -35,7 +40,6 @@
 	net-misc/curl:=
 	sys-apps/rootdev:=
 	device_mapper? ( sys-fs/lvm2:=[thin] )
-	lvm_stateful_partition? ( sys-fs/lvm2:= )
 	udev? ( virtual/libudev )
 	usb? ( virtual/libusb:1= )
 "
@@ -51,6 +55,14 @@
 	dev-libs/modp_b64:=
 "
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
+PATCHES=(
+	"${FILESDIR}/lakitu-fix-llvm-compatibility.patch"
+)
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/libchrome/OWNERS b/chromeos-base/libchrome/OWNERS
index db7e695..0013577 100644
--- a/chromeos-base/libchrome/OWNERS
+++ b/chromeos-base/libchrome/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform/libchrome:/OWNERS
diff --git a/chromeos-base/libchrome/files/lakitu-openssl-compat.patch b/chromeos-base/libchrome/files/lakitu-openssl-compat.patch
new file mode 100644
index 0000000..8e25143
--- /dev/null
+++ b/chromeos-base/libchrome/files/lakitu-openssl-compat.patch
@@ -0,0 +1,12 @@
+diff --git a/BUILD.gn b/BUILD.gn
+index 384be47985..a9f7cd5714 100644
+--- a/BUILD.gn
++++ b/BUILD.gn
+@@ -85,6 +85,7 @@ config("libchrome_config") {
+   ]
+   cflags = [
+     "-Wno-deprecated-register",
++    "-Wno-deprecated-declarations",
+     "-Wno-narrowing",
+     "-Wno-unreachable-code-return",
+     "-Wno-unused-local-typedefs",
diff --git a/chromeos-base/libchrome/files/libchrome-Disable-object-tracking.patch b/chromeos-base/libchrome/files/libchrome-Disable-object-tracking.patch
deleted file mode 100644
index 2cf628d..0000000
--- a/chromeos-base/libchrome/files/libchrome-Disable-object-tracking.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Remove the object tracking code as it is causing memory leaks
-in sanitizer builds, https://crbug.com/908138.
-This code is already removed from upstream chromium //base code.
-
-diff --git a/base/tracked_objects.cc b/base/tracked_objects.cc
-index 1507c09..882f5fb 100644
---- a/base/tracked_objects.cc
-+++ b/base/tracked_objects.cc
-@@ -891,7 +891,6 @@ void ThreadData::ShutdownSingleThreadedCleanup(bool leak) {
- // static
- ThreadData* ThreadData::GetRetiredOrCreateThreadData(
-     const std::string& sanitized_thread_name) {
--  SCOPED_UMA_HISTOGRAM_TIMER("TrackedObjects.GetRetiredOrCreateThreadData");
- 
-   {
-     base::AutoLock lock(*list_lock_.Pointer());
diff --git a/chromeos-base/libchrome/files/revision_bump b/chromeos-base/libchrome/files/revision_bump
index d00491f..0cfbf08 100644
--- a/chromeos-base/libchrome/files/revision_bump
+++ b/chromeos-base/libchrome/files/revision_bump
@@ -1 +1 @@
-1
+2
diff --git a/chromeos-base/libchrome/libchrome-0.0.1-r674.ebuild b/chromeos-base/libchrome/libchrome-0.0.1-r826.ebuild
similarity index 65%
rename from chromeos-base/libchrome/libchrome-0.0.1-r674.ebuild
rename to chromeos-base/libchrome/libchrome-0.0.1-r826.ebuild
index 2d0249f..cd89133 100644
--- a/chromeos-base/libchrome/libchrome-0.0.1-r674.ebuild
+++ b/chromeos-base/libchrome/libchrome-0.0.1-r826.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "0af728e52e75f6f3cd4346fbaa1bbfa2bcc29366")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "1d2bed876af931a621ad83e5dd7b5b5d00682740")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "3e93855c118b357ee70ed9b60e76a8a94cd07042")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "8084b67b742592e99cd90d937cb6f81f2e064f10")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/platform/libchrome")
 CROS_WORKON_LOCALNAME=("platform2" "platform/libchrome")
 CROS_WORKON_EGIT_BRANCH=("main" "main")
@@ -20,15 +20,10 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-# TODO(b/204383858): remove 'endeavour' when patch
-# backward-compatibility-add-base-AdaptCallbackForRepaeting.patch is not needed
-IUSE="cros_host +crypto +dbus fuzzer +mojo media_perception"
+IUSE="cros_host +crypto +dbus fuzzer +mojo"
 
 PLATFORM_SUBDIR="libchrome"
 
-# TODO(avakulenko): Put dev-libs/nss behind a USE flag to make sure NSS is
-# pulled only into the configurations that require it.
-# TODO(fqj): remove !chromeos-base/libchrome-${BASE_VER} on next uprev to r680000.
 RDEPEND="
 	>=chromeos-base/perfetto-21.0-r4:=
 	>=dev-cpp/abseil-cpp-20200923-r4:=
@@ -45,23 +40,11 @@
 		dev-libs/protobuf:=
 	)
 	dev-libs/re2:=
-	!~chromeos-base/libchrome-576279
-	!chromeos-base/libchrome:576279
-	!chromeos-base/libchrome:462023
-	!chromeos-base/libchrome:456626
-	!chromeos-base/libchrome:395517
 "
 DEPEND="${RDEPEND}
 	dev-cpp/gtest:=
 "
 
-# libmojo used to be in a separate package, which now conflicts with libchrome.
-# Add softblocker here, to resolve the conflict, in case building the package
-# on the environment where old libmojo is installed.
-# TODO(hidehiko): Clean up the blocker after certain period.
-RDEPEND="${RDEPEND}
-	!chromeos-base/libmojo"
-
 # libmojo depends on libbase-crypto.
 REQUIRED_USE="mojo? ( crypto )"
 
@@ -78,20 +61,11 @@
 			rm "${S}/libchrome_tools/patches/${patch}" || die "failed to remove patch ${patch}"
 		fi
 	done < <(grep -E '^[^#]' "${S}/libchrome_tools/patches/patches.config")
-	# Apply all patches in directory, ordered by type then patch number.
-	for patch in "${S}"/libchrome_tools/patches/{long-term,cherry-pick,backward-compatibility,forward-compatibility}-*; do
-		local basename=$(basename "${patch}")
-		if [[ ${basename} == *"-*" ]]; then # patch type with no match
-			continue
-		elif [[ ${basename} == *.patch ]]; then
-			eapply "${patch}"
-		elif [[ -x "${patch}" ]]; then
-			einfo "Applying ${basename} ..."
-			"${patch}" || die "failed to patch by running script ${basename}"
-		else
-			die "Invalid patch file ${basename}"
-		fi
-	done
+
+	"${S}/libchrome_tools/apply_patches.py" "--ebuild" || die
+
+	eapply "${FILESDIR}/lakitu-openssl-compat.patch"
+
 	eapply_user
 }
 
diff --git a/chromeos-base/libchrome/libchrome-9999.ebuild b/chromeos-base/libchrome/libchrome-9999.ebuild
index 0d9a441..7964948 100644
--- a/chromeos-base/libchrome/libchrome-9999.ebuild
+++ b/chromeos-base/libchrome/libchrome-9999.ebuild
@@ -18,15 +18,10 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-# TODO(b/204383858): remove 'endeavour' when patch
-# backward-compatibility-add-base-AdaptCallbackForRepaeting.patch is not needed
-IUSE="cros_host +crypto +dbus fuzzer +mojo media_perception"
+IUSE="cros_host +crypto +dbus fuzzer +mojo"
 
 PLATFORM_SUBDIR="libchrome"
 
-# TODO(avakulenko): Put dev-libs/nss behind a USE flag to make sure NSS is
-# pulled only into the configurations that require it.
-# TODO(fqj): remove !chromeos-base/libchrome-${BASE_VER} on next uprev to r680000.
 RDEPEND="
 	>=chromeos-base/perfetto-21.0-r4:=
 	>=dev-cpp/abseil-cpp-20200923-r4:=
@@ -43,23 +38,11 @@
 		dev-libs/protobuf:=
 	)
 	dev-libs/re2:=
-	!~chromeos-base/libchrome-576279
-	!chromeos-base/libchrome:576279
-	!chromeos-base/libchrome:462023
-	!chromeos-base/libchrome:456626
-	!chromeos-base/libchrome:395517
 "
 DEPEND="${RDEPEND}
 	dev-cpp/gtest:=
 "
 
-# libmojo used to be in a separate package, which now conflicts with libchrome.
-# Add softblocker here, to resolve the conflict, in case building the package
-# on the environment where old libmojo is installed.
-# TODO(hidehiko): Clean up the blocker after certain period.
-RDEPEND="${RDEPEND}
-	!chromeos-base/libmojo"
-
 # libmojo depends on libbase-crypto.
 REQUIRED_USE="mojo? ( crypto )"
 
@@ -76,20 +59,11 @@
 			rm "${S}/libchrome_tools/patches/${patch}" || die "failed to remove patch ${patch}"
 		fi
 	done < <(grep -E '^[^#]' "${S}/libchrome_tools/patches/patches.config")
-	# Apply all patches in directory, ordered by type then patch number.
-	for patch in "${S}"/libchrome_tools/patches/{long-term,cherry-pick,backward-compatibility,forward-compatibility}-*; do
-		local basename=$(basename "${patch}")
-		if [[ ${basename} == *"-*" ]]; then # patch type with no match
-			continue
-		elif [[ ${basename} == *.patch ]]; then
-			eapply "${patch}"
-		elif [[ -x "${patch}" ]]; then
-			einfo "Applying ${basename} ..."
-			"${patch}" || die "failed to patch by running script ${basename}"
-		else
-			die "Invalid patch file ${basename}"
-		fi
-	done
+
+	"${S}/libchrome_tools/apply_patches.py" "--ebuild" || die
+
+	eapply "${FILESDIR}/lakitu-openssl-compat.patch"
+
 	eapply_user
 }
 
diff --git a/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r2020.ebuild b/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r2079.ebuild
similarity index 85%
rename from chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r2020.ebuild
rename to chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r2079.ebuild
index 28f4e55..d92c562 100644
--- a/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r2020.ebuild
+++ b/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r2079.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "52ffb399285c37f42cce58aee9c40b7226f4c603" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e88ee3bb0acded4e56b7ccf737bdee63141a7a78" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/libcontainer/OWNERS b/chromeos-base/libcontainer/OWNERS
index db7e695..36a8261 100644
--- a/chromeos-base/libcontainer/OWNERS
+++ b/chromeos-base/libcontainer/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/libcontainer/OWNERS
diff --git a/chromeos-base/libcontainer/libcontainer-0.0.1-r1781.ebuild b/chromeos-base/libcontainer/libcontainer-0.0.1-r1839.ebuild
similarity index 89%
rename from chromeos-base/libcontainer/libcontainer-0.0.1-r1781.ebuild
rename to chromeos-base/libcontainer/libcontainer-0.0.1-r1839.ebuild
index 8f632f6..15dbac2 100644
--- a/chromeos-base/libcontainer/libcontainer-0.0.1-r1781.ebuild
+++ b/chromeos-base/libcontainer/libcontainer-0.0.1-r1839.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "709a41e5e595b1ec20189cdc9912091ca7d8e048" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "709a41e5e595b1ec20189cdc9912091ca7d8e048" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
diff --git a/chromeos-base/libcrossystem/libcrossystem-0.0.1-r139.ebuild b/chromeos-base/libcrossystem/libcrossystem-0.0.1-r202.ebuild
similarity index 78%
rename from chromeos-base/libcrossystem/libcrossystem-0.0.1-r139.ebuild
rename to chromeos-base/libcrossystem/libcrossystem-0.0.1-r202.ebuild
index dfef553..b29dc85 100644
--- a/chromeos-base/libcrossystem/libcrossystem-0.0.1-r139.ebuild
+++ b/chromeos-base/libcrossystem/libcrossystem-0.0.1-r202.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "b6a499afe15c70520c73109f5587bd28f50964fa" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_USE_VCSID="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/libhwsec-foundation/libhwsec-foundation-0.0.1-r475.ebuild b/chromeos-base/libhwsec-foundation/libhwsec-foundation-0.0.1-r581.ebuild
similarity index 68%
rename from chromeos-base/libhwsec-foundation/libhwsec-foundation-0.0.1-r475.ebuild
rename to chromeos-base/libhwsec-foundation/libhwsec-foundation-0.0.1-r581.ebuild
index 5d8aa18..6635740 100644
--- a/chromeos-base/libhwsec-foundation/libhwsec-foundation-0.0.1-r475.ebuild
+++ b/chromeos-base/libhwsec-foundation/libhwsec-foundation-0.0.1-r581.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "0d9d2046eb78dc8620f7594f245298f9fd964832" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -27,6 +27,8 @@
 	>=chromeos-base/metrics-0.0.1-r3152
 	chromeos-base/system_api
 	chromeos-base/tpm_manager-client
+	dev-libs/openssl:=
+	dev-libs/re2:=
 	"
 
 RDEPEND="${DEPEND}"
@@ -38,6 +40,12 @@
 	if use profiling; then
 		dotmpfiles profiling/tmpfiles.d/profiling.conf
 	fi
+
+	local fuzzer_component_id="1188704"
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/libhwsec_foundation_rsa_oaep_decrypt_fuzzer \
+		--comp "${fuzzer_component_id}" \
+		fuzzers/testdata/*
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/libhwsec-foundation/libhwsec-foundation-9999.ebuild b/chromeos-base/libhwsec-foundation/libhwsec-foundation-9999.ebuild
index 6f06b20..4776383 100644
--- a/chromeos-base/libhwsec-foundation/libhwsec-foundation-9999.ebuild
+++ b/chromeos-base/libhwsec-foundation/libhwsec-foundation-9999.ebuild
@@ -25,6 +25,8 @@
 	>=chromeos-base/metrics-0.0.1-r3152
 	chromeos-base/system_api
 	chromeos-base/tpm_manager-client
+	dev-libs/openssl:=
+	dev-libs/re2:=
 	"
 
 RDEPEND="${DEPEND}"
@@ -36,6 +38,12 @@
 	if use profiling; then
 		dotmpfiles profiling/tmpfiles.d/profiling.conf
 	fi
+
+	local fuzzer_component_id="1188704"
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/libhwsec_foundation_rsa_oaep_decrypt_fuzzer \
+		--comp "${fuzzer_component_id}" \
+		fuzzers/testdata/*
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/libhwsec/OWNERS b/chromeos-base/libhwsec/OWNERS
index db7e695..29b9f58 100644
--- a/chromeos-base/libhwsec/OWNERS
+++ b/chromeos-base/libhwsec/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/libhwsec/OWNERS
diff --git a/chromeos-base/libhwsec/libhwsec-0.0.1-r717.ebuild b/chromeos-base/libhwsec/libhwsec-0.0.1-r717.ebuild
deleted file mode 100644
index c5f9724..0000000
--- a/chromeos-base/libhwsec/libhwsec-0.0.1-r717.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 2019 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="4cd35fb11ce1d94e91ded61681327ee6738c3578"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "41112b3759d18a5cceaf1f06f65e6d4bdc406e33" "035e5f57815742ad6e80d8821e81f18e0fcaa4f7" "199cac0899daace8030b33f49dd183a5b5baf169" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libhwsec libhwsec-foundation metrics tpm_manager tpm2-simulator trunks .gn"
-
-PLATFORM_SUBDIR="libhwsec"
-
-inherit cros-workon platform
-
-DESCRIPTION="Crypto and utility functions used in TPM related daemons."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libhwsec/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test fuzzer tpm tpm2 tpm_dynamic"
-
-COMMON_DEPEND="
-	chromeos-base/chromeos-ec-headers:=
-	chromeos-base/libhwsec-foundation:=
-	chromeos-base/metrics:=
-	chromeos-base/tpm_manager-client:=
-	dev-libs/openssl:0=
-	dev-libs/flatbuffers:=
-	tpm2? (
-		chromeos-base/pinweaver:=
-		chromeos-base/trunks:=[test?]
-	)
-	tpm? ( app-crypt/trousers:= )
-	fuzzer? (
-		app-crypt/trousers:=
-		chromeos-base/trunks:=
-	)
-	test? (
-		app-crypt/trousers:=
-		chromeos-base/pinweaver:=
-		chromeos-base/trunks:=[test]
-		chromeos-base/tpm2-simulator:=[test]
-	)
-"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-platform_pkg_test() {
-	platform test_all
-}
diff --git a/chromeos-base/libhwsec/libhwsec-0.0.1-r885.ebuild b/chromeos-base/libhwsec/libhwsec-0.0.1-r885.ebuild
new file mode 100644
index 0000000..7d7526b
--- /dev/null
+++ b/chromeos-base/libhwsec/libhwsec-0.0.1-r885.ebuild
@@ -0,0 +1,91 @@
+# Copyright 2019 The ChromiumOS Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "989acbd33fd18024396e010b1be43d25cbdf942d" "965e6fa3585e2d6493be1567791c13c633a9e8d7" "f73f25bb045d099841b3ac929b6d3218060216df" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+PYTHON_COMPAT=( python3_{8..11} )
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk libcrossystem libhwsec libhwsec-foundation metrics tpm_manager tpm2-simulator trunks .gn"
+
+PLATFORM_SUBDIR="libhwsec"
+
+inherit python-any-r1 cros-workon platform
+
+DESCRIPTION="Crypto and utility functions used in TPM related daemons."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libhwsec/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test fuzzer tpm tpm2 tpm_dynamic"
+
+COMMON_DEPEND="
+	chromeos-base/chromeos-ec-headers:=
+	chromeos-base/libhwsec-foundation:=
+	chromeos-base/metrics:=
+	chromeos-base/system_api:=
+	chromeos-base/tpm_manager-client:=
+	chromeos-base/libcrossystem:=
+	dev-cpp/abseil-cpp:=
+	dev-libs/openssl:0=
+	dev-libs/flatbuffers:=
+	dev-libs/re2:=
+	tpm2? (
+		chromeos-base/pinweaver:=
+		chromeos-base/trunks:=[test?]
+	)
+	tpm? ( app-crypt/trousers:= )
+	fuzzer? (
+		app-crypt/trousers:=
+		chromeos-base/trunks:=
+	)
+	test? (
+		app-crypt/trousers:=
+		chromeos-base/pinweaver:=
+		chromeos-base/trunks:=[test]
+		chromeos-base/tpm2-simulator:=[test]
+	)
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+# shellcheck disable=SC2016
+BDEPEND="
+	dev-libs/flatbuffers
+	dev-libs/protobuf
+	$(python_gen_any_dep '
+		dev-python/jinja[${PYTHON_USEDEP}]
+		dev-python/flatbuffers[${PYTHON_USEDEP}]
+	')
+"
+
+python_check_deps() {
+	python_has_version -b "dev-python/jinja[${PYTHON_USEDEP}]" &&
+		python_has_version -b "dev-python/flatbuffers[${PYTHON_USEDEP}]"
+}
+
+platform_pkg_test() {
+	platform test_all
+}
+
+src_install() {
+	platform_src_install
+
+	local fuzzer_component_id="1188704"
+
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/libhwsec_tpm1_cmk_migration_parser_fuzzer \
+		--comp "${fuzzer_component_id}"
+
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/libhwsec_tpm2_backend_fuzzer \
+		--comp "${fuzzer_component_id}" \
+		--dict "${S}"/fuzzers/testdata/tpm2_commands.dict
+}
diff --git a/chromeos-base/libhwsec/libhwsec-9999.ebuild b/chromeos-base/libhwsec/libhwsec-9999.ebuild
index a78e671..777a947 100644
--- a/chromeos-base/libhwsec/libhwsec-9999.ebuild
+++ b/chromeos-base/libhwsec/libhwsec-9999.ebuild
@@ -4,15 +4,17 @@
 
 EAPI=7
 
+PYTHON_COMPAT=( python3_{8..11} )
+
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libhwsec libhwsec-foundation metrics tpm_manager tpm2-simulator trunks .gn"
+CROS_WORKON_SUBTREE="common-mk libcrossystem libhwsec libhwsec-foundation metrics tpm_manager tpm2-simulator trunks .gn"
 
 PLATFORM_SUBDIR="libhwsec"
 
-inherit cros-workon platform
+inherit python-any-r1 cros-workon platform
 
 DESCRIPTION="Crypto and utility functions used in TPM related daemons."
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libhwsec/"
@@ -25,9 +27,13 @@
 	chromeos-base/chromeos-ec-headers:=
 	chromeos-base/libhwsec-foundation:=
 	chromeos-base/metrics:=
+	chromeos-base/system_api:=
 	chromeos-base/tpm_manager-client:=
+	chromeos-base/libcrossystem:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/openssl:0=
 	dev-libs/flatbuffers:=
+	dev-libs/re2:=
 	tpm2? (
 		chromeos-base/pinweaver:=
 		chromeos-base/trunks:=[test?]
@@ -48,6 +54,36 @@
 RDEPEND="${COMMON_DEPEND}"
 DEPEND="${COMMON_DEPEND}"
 
+# shellcheck disable=SC2016
+BDEPEND="
+	dev-libs/flatbuffers
+	dev-libs/protobuf
+	$(python_gen_any_dep '
+		dev-python/jinja[${PYTHON_USEDEP}]
+		dev-python/flatbuffers[${PYTHON_USEDEP}]
+	')
+"
+
+python_check_deps() {
+	python_has_version -b "dev-python/jinja[${PYTHON_USEDEP}]" &&
+		python_has_version -b "dev-python/flatbuffers[${PYTHON_USEDEP}]"
+}
+
 platform_pkg_test() {
 	platform test_all
 }
+
+src_install() {
+	platform_src_install
+
+	local fuzzer_component_id="1188704"
+
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/libhwsec_tpm1_cmk_migration_parser_fuzzer \
+		--comp "${fuzzer_component_id}"
+
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/libhwsec_tpm2_backend_fuzzer \
+		--comp "${fuzzer_component_id}" \
+		--dict "${S}"/fuzzers/testdata/tpm2_commands.dict
+}
diff --git a/chromeos-base/libiioservice_ipc/OWNERS b/chromeos-base/libiioservice_ipc/OWNERS
index db7e695..825c3ee 100644
--- a/chromeos-base/libiioservice_ipc/OWNERS
+++ b/chromeos-base/libiioservice_ipc/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/iioservice/OWNERS
diff --git a/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r437.ebuild b/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r502.ebuild
similarity index 72%
rename from chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r437.ebuild
rename to chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r502.ebuild
index 1ffe3d0..431d580 100644
--- a/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r437.ebuild
+++ b/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r502.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "e5213f48c6ed0dcfb7d1410f706196c31c5dbb40" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "2d06f979d9e0b056323b2b5e529823c338f2199f" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_SUBTREE=".gn iioservice common-mk"
diff --git a/chromeos-base/libipp/OWNERS b/chromeos-base/libipp/OWNERS
index db7e695..8e73228 100644
--- a/chromeos-base/libipp/OWNERS
+++ b/chromeos-base/libipp/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/libipp/OWNERS
diff --git a/chromeos-base/libipp/libipp-0.0.1-r390.ebuild b/chromeos-base/libipp/libipp-0.0.1-r451.ebuild
similarity index 81%
rename from chromeos-base/libipp/libipp-0.0.1-r390.ebuild
rename to chromeos-base/libipp/libipp-0.0.1-r451.ebuild
index 9b97252..48cd891 100644
--- a/chromeos-base/libipp/libipp-0.0.1-r390.ebuild
+++ b/chromeos-base/libipp/libipp-0.0.1-r451.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "377b0577fa128bef36a11eb8f26a2a8c3d8394b2" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "55b84a9bceec03b3829835decc70508a749019e8" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/libmems/OWNERS b/chromeos-base/libmems/OWNERS
index db7e695..855cd56 100644
--- a/chromeos-base/libmems/OWNERS
+++ b/chromeos-base/libmems/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/libmems/OWNERS
diff --git a/chromeos-base/libmems/libmems-0.0.1-r408.ebuild b/chromeos-base/libmems/libmems-0.0.1-r470.ebuild
similarity index 69%
rename from chromeos-base/libmems/libmems-0.0.1-r408.ebuild
rename to chromeos-base/libmems/libmems-0.0.1-r470.ebuild
index 21f72ae..511da16 100644
--- a/chromeos-base/libmems/libmems-0.0.1-r408.ebuild
+++ b/chromeos-base/libmems/libmems-0.0.1-r470.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "56cadd695cfe78ffe1dd01235485d645b181c844" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "577d31d39eace970e22dbf9d4cda5aa2c0d1b75a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -23,10 +23,12 @@
 IUSE=""
 
 COMMON_DEPEND="
-	net-libs/libiio:="
+	chromeos-base/system_api:=
+	net-libs/libiio:=
+	virtual/libudev:=
+"
 RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/system_api:="
+DEPEND="${COMMON_DEPEND}"
 
 platform_pkg_test() {
 	platform test_all
diff --git a/chromeos-base/libmems/libmems-9999.ebuild b/chromeos-base/libmems/libmems-9999.ebuild
index 544b067..32c26dd 100644
--- a/chromeos-base/libmems/libmems-9999.ebuild
+++ b/chromeos-base/libmems/libmems-9999.ebuild
@@ -21,10 +21,12 @@
 IUSE=""
 
 COMMON_DEPEND="
-	net-libs/libiio:="
+	chromeos-base/system_api:=
+	net-libs/libiio:=
+	virtual/libudev:=
+"
 RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/system_api:="
+DEPEND="${COMMON_DEPEND}"
 
 platform_pkg_test() {
 	platform test_all
diff --git a/chromeos-base/libpasswordprovider/OWNERS b/chromeos-base/libpasswordprovider/OWNERS
index db7e695..ea5521a 100644
--- a/chromeos-base/libpasswordprovider/OWNERS
+++ b/chromeos-base/libpasswordprovider/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/libpasswordprovider/OWNERS
diff --git a/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r647.ebuild b/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r705.ebuild
similarity index 92%
rename from chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r647.ebuild
rename to chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r705.ebuild
index 647b115..fcb36c8 100644
--- a/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r647.ebuild
+++ b/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r705.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/libsegmentation/OWNERS b/chromeos-base/libsegmentation/OWNERS
index 56ac5db..5b17332 100644
--- a/chromeos-base/libsegmentation/OWNERS
+++ b/chromeos-base/libsegmentation/OWNERS
@@ -1 +1 @@
-gwendal@chromium.org
+include chromiumos/owners:v1:/platform/OWNERS.segmentation
diff --git a/chromeos-base/libsegmentation/libsegmentation-0.0.1-r18.ebuild b/chromeos-base/libsegmentation/libsegmentation-0.0.1-r18.ebuild
deleted file mode 100644
index 0e1bb1a..0000000
--- a/chromeos-base/libsegmentation/libsegmentation-0.0.1-r18.ebuild
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2023 The ChromiumOS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "80550cf0dc7f2676a3dbaae513325a05380e4648" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libsegmentation .gn"
-
-PLATFORM_SUBDIR="libsegmentation"
-
-inherit cros-workon platform
-
-DESCRIPTION="Library to get Chromium OS system properties"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libsegmentation"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-platform_pkg_test() {
-	platform test_all
-}
diff --git a/chromeos-base/libsegmentation/libsegmentation-0.0.1-r98.ebuild b/chromeos-base/libsegmentation/libsegmentation-0.0.1-r98.ebuild
new file mode 100644
index 0000000..8293bee
--- /dev/null
+++ b/chromeos-base/libsegmentation/libsegmentation-0.0.1-r98.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2023 The ChromiumOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "3c167588538b9dd3054faa5a301fa17387858e60" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk libcrossystem libsegmentation .gn"
+
+PLATFORM_SUBDIR="libsegmentation"
+
+inherit cros-workon platform
+
+DESCRIPTION="Library to get Chromium OS system properties"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libsegmentation"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="feature_management"
+
+COMMON_DEPEND="
+	chromeos-base/libcrossystem:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/feature-management-data:=
+"
+
+BDEPEND="
+	dev-libs/protobuf
+"
+
+platform_pkg_test() {
+	platform test_all
+}
diff --git a/chromeos-base/libsegmentation/libsegmentation-9999.ebuild b/chromeos-base/libsegmentation/libsegmentation-9999.ebuild
index 6dc144b..5d726cd 100644
--- a/chromeos-base/libsegmentation/libsegmentation-9999.ebuild
+++ b/chromeos-base/libsegmentation/libsegmentation-9999.ebuild
@@ -5,7 +5,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libsegmentation .gn"
+CROS_WORKON_SUBTREE="common-mk libcrossystem libsegmentation .gn"
 
 PLATFORM_SUBDIR="libsegmentation"
 
@@ -16,6 +16,21 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
+IUSE="feature_management"
+
+COMMON_DEPEND="
+	chromeos-base/libcrossystem:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/feature-management-data:=
+"
+
+BDEPEND="
+	dev-libs/protobuf
+"
 
 platform_pkg_test() {
 	platform test_all
diff --git a/chromeos-base/libvda-gpu-tests/OWNERS b/chromeos-base/libvda-gpu-tests/OWNERS
index db7e695..28aa59d 100644
--- a/chromeos-base/libvda-gpu-tests/OWNERS
+++ b/chromeos-base/libvda-gpu-tests/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/vm/libvda/OWNERS
diff --git a/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r450.ebuild b/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r516.ebuild
similarity index 78%
rename from chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r450.ebuild
rename to chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r516.ebuild
index b21d666..14f974c 100644
--- a/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r450.ebuild
+++ b/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r516.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "dea6e080aaf6540d5299aae979e1ef56e12b2b9c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "4862249026d2d24325dcf29daec823a3ae7bb295" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -24,7 +24,6 @@
 IUSE=""
 
 RDEPEND="
-	chromeos-base/libbrillo:=
 	media-libs/minigbm:=
 "
 
diff --git a/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-9999.ebuild b/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-9999.ebuild
index caa420f..f9d9b5c 100644
--- a/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-9999.ebuild
+++ b/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
@@ -22,7 +22,6 @@
 IUSE=""
 
 RDEPEND="
-	chromeos-base/libbrillo:=
 	media-libs/minigbm:=
 "
 
diff --git a/chromeos-base/libvda/OWNERS b/chromeos-base/libvda/OWNERS
index db7e695..28aa59d 100644
--- a/chromeos-base/libvda/OWNERS
+++ b/chromeos-base/libvda/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/vm/libvda/OWNERS
diff --git a/chromeos-base/libvda/libvda-0.0.1-r457.ebuild b/chromeos-base/libvda/libvda-0.0.1-r522.ebuild
similarity index 81%
rename from chromeos-base/libvda/libvda-0.0.1-r457.ebuild
rename to chromeos-base/libvda/libvda-0.0.1-r522.ebuild
index 71f9def..b4860d92 100644
--- a/chromeos-base/libvda/libvda-0.0.1-r457.ebuild
+++ b/chromeos-base/libvda/libvda-0.0.1-r522.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "dea6e080aaf6540d5299aae979e1ef56e12b2b9c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "4862249026d2d24325dcf29daec823a3ae7bb295" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -47,6 +47,4 @@
 
 platform_pkg_test() {
 	platform_test "run" "${OUT}/libvda_fake_unittest"
-
-	platform_fuzzer_test "${OUT}"/libvda_fuzzer
 }
diff --git a/chromeos-base/libvda/libvda-9999.ebuild b/chromeos-base/libvda/libvda-9999.ebuild
index a843f48..54b1c05 100644
--- a/chromeos-base/libvda/libvda-9999.ebuild
+++ b/chromeos-base/libvda/libvda-9999.ebuild
@@ -45,6 +45,4 @@
 
 platform_pkg_test() {
 	platform_test "run" "${OUT}/libvda_fake_unittest"
-
-	platform_fuzzer_test "${OUT}"/libvda_fuzzer
 }
diff --git a/chromeos-base/lorgnette/DIR_METADATA b/chromeos-base/lorgnette/DIR_METADATA
new file mode 100644
index 0000000..4d203c2
--- /dev/null
+++ b/chromeos-base/lorgnette/DIR_METADATA
@@ -0,0 +1,27 @@
+# Metadata information for this directory.
+#
+# For more information on DIR_METADATA files, see:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md
+#
+# For the schema of this file, see Metadata message:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+
+team_email: "project-bolton@google.com"
+
+buganizer {
+  # https://b.corp.google.com/issues?q=status:open%20componentid:860616
+  # ChromeOS > Platform > Services > Scanning
+  component_id: 860616
+}
+
+chromeos {
+  cq {
+    source_test_plans {
+      test_plan_starlark_files {
+        host: "chrome-internal.googlesource.com"
+        project: "chromeos/config-internal"
+        path: "test/plans/v2/ctpv1_compatible/printscan_cq.star"
+      }
+    }
+  }
+}
diff --git a/chromeos-base/lorgnette/OWNERS b/chromeos-base/lorgnette/OWNERS
index c5d38b1..ad5f3c8 100644
--- a/chromeos-base/lorgnette/OWNERS
+++ b/chromeos-base/lorgnette/OWNERS
@@ -1 +1 @@
-include chromiumos/platform2:/cups_proxy/OWNERS
+include chromiumos/owners:v1:/printscan/OWNERS.printscan
diff --git a/chromeos-base/lorgnette/lorgnette-0.0.1-r3447.ebuild b/chromeos-base/lorgnette/lorgnette-0.0.1-r3567.ebuild
similarity index 71%
rename from chromeos-base/lorgnette/lorgnette-0.0.1-r3447.ebuild
rename to chromeos-base/lorgnette/lorgnette-0.0.1-r3567.ebuild
index 42e3048..014e1a5 100644
--- a/chromeos-base/lorgnette/lorgnette-0.0.1-r3447.ebuild
+++ b/chromeos-base/lorgnette/lorgnette-0.0.1-r3567.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "b65734a24535fe20135808af653c65065c660562" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "ff1bee10b208c0dfb180a3216565c4244be1d4c1" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
@@ -23,9 +23,15 @@
 
 COMMON_DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-cpp/abseil-cpp:=
+	dev-libs/protobuf:=
+	dev-libs/re2:=
+	media-libs/libjpeg-turbo:=
 	media-libs/libpng:=
 	media-gfx/sane-airscan:=
 	media-gfx/sane-backends:=
+	media-gfx/sane-backends-extras:=
+	sys-apps/util-linux:=
 	virtual/jpeg:0=
 	virtual/libusb:1
 "
@@ -43,6 +49,10 @@
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 pkg_preinst() {
 	enewgroup ippusb
 	enewgroup usbprinter
@@ -54,5 +64,5 @@
 }
 
 platform_pkg_test() {
-	platform_test "run" "${OUT}/lorgnette_unittest"
+	platform test_all
 }
diff --git a/chromeos-base/lorgnette/lorgnette-9999.ebuild b/chromeos-base/lorgnette/lorgnette-9999.ebuild
index 11ea2b5..6ff7824 100644
--- a/chromeos-base/lorgnette/lorgnette-9999.ebuild
+++ b/chromeos-base/lorgnette/lorgnette-9999.ebuild
@@ -21,9 +21,15 @@
 
 COMMON_DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-cpp/abseil-cpp:=
+	dev-libs/protobuf:=
+	dev-libs/re2:=
+	media-libs/libjpeg-turbo:=
 	media-libs/libpng:=
 	media-gfx/sane-airscan:=
 	media-gfx/sane-backends:=
+	media-gfx/sane-backends-extras:=
+	sys-apps/util-linux:=
 	virtual/jpeg:0=
 	virtual/libusb:1
 "
@@ -41,6 +47,10 @@
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 pkg_preinst() {
 	enewgroup ippusb
 	enewgroup usbprinter
@@ -52,5 +62,5 @@
 }
 
 platform_pkg_test() {
-	platform_test "run" "${OUT}/lorgnette_unittest"
+	platform test_all
 }
diff --git a/chromeos-base/lorgnette_cli/DIR_METADATA b/chromeos-base/lorgnette_cli/DIR_METADATA
new file mode 100644
index 0000000..4d203c2
--- /dev/null
+++ b/chromeos-base/lorgnette_cli/DIR_METADATA
@@ -0,0 +1,27 @@
+# Metadata information for this directory.
+#
+# For more information on DIR_METADATA files, see:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md
+#
+# For the schema of this file, see Metadata message:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+
+team_email: "project-bolton@google.com"
+
+buganizer {
+  # https://b.corp.google.com/issues?q=status:open%20componentid:860616
+  # ChromeOS > Platform > Services > Scanning
+  component_id: 860616
+}
+
+chromeos {
+  cq {
+    source_test_plans {
+      test_plan_starlark_files {
+        host: "chrome-internal.googlesource.com"
+        project: "chromeos/config-internal"
+        path: "test/plans/v2/ctpv1_compatible/printscan_cq.star"
+      }
+    }
+  }
+}
diff --git a/chromeos-base/lorgnette_cli/OWNERS b/chromeos-base/lorgnette_cli/OWNERS
index db7e695..ad5f3c8 100644
--- a/chromeos-base/lorgnette_cli/OWNERS
+++ b/chromeos-base/lorgnette_cli/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/owners:v1:/printscan/OWNERS.printscan
diff --git a/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r414.ebuild b/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r501.ebuild
similarity index 74%
rename from chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r414.ebuild
rename to chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r501.ebuild
index 75939ad..602f61d 100644
--- a/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r414.ebuild
+++ b/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r501.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "b65734a24535fe20135808af653c65065c660562" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "ff1bee10b208c0dfb180a3216565c4244be1d4c1" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
@@ -22,6 +22,8 @@
 
 RDEPEND="
 	chromeos-base/lorgnette
+	dev-libs/protobuf:=
+	dev-libs/re2:=
 "
 
 DEPEND="${RDEPEND}
@@ -29,6 +31,10 @@
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 src_install() {
 	# platform_src_install omitted, to avoid conflicts with
 	# chromeos-base/lorgnette.
diff --git a/chromeos-base/lorgnette_cli/lorgnette_cli-9999.ebuild b/chromeos-base/lorgnette_cli/lorgnette_cli-9999.ebuild
index 0c40255..ab94e69 100644
--- a/chromeos-base/lorgnette_cli/lorgnette_cli-9999.ebuild
+++ b/chromeos-base/lorgnette_cli/lorgnette_cli-9999.ebuild
@@ -20,6 +20,8 @@
 
 RDEPEND="
 	chromeos-base/lorgnette
+	dev-libs/protobuf:=
+	dev-libs/re2:=
 "
 
 DEPEND="${RDEPEND}
@@ -27,6 +29,10 @@
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 src_install() {
 	# platform_src_install omitted, to avoid conflicts with
 	# chromeos-base/lorgnette.
diff --git a/chromeos-base/lvmd-client/lvmd-client-0.0.1-r102.ebuild b/chromeos-base/lvmd-client/lvmd-client-0.0.1-r163.ebuild
similarity index 68%
rename from chromeos-base/lvmd-client/lvmd-client-0.0.1-r102.ebuild
rename to chromeos-base/lvmd-client/lvmd-client-0.0.1-r163.ebuild
index cf7087d..bf5fbf3 100644
--- a/chromeos-base/lvmd-client/lvmd-client-0.0.1-r102.ebuild
+++ b/chromeos-base/lvmd-client/lvmd-client-0.0.1-r163.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c4748e8dccd851254e416c0e623dd03ab27a9017" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "d44eaa9d4aeef1b3da8949ca2e90657848310664" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -25,11 +25,18 @@
 LICENSE="BSD-Google"
 KEYWORDS="*"
 
-RDEPEND=""
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
 DEPEND="
 	chromeos-base/chromeos-dbus-bindings:=
 "
 
+RDEPEND=""
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/lvmd-client/lvmd-client-9999.ebuild b/chromeos-base/lvmd-client/lvmd-client-9999.ebuild
index d89a9a0..a23b084 100644
--- a/chromeos-base/lvmd-client/lvmd-client-9999.ebuild
+++ b/chromeos-base/lvmd-client/lvmd-client-9999.ebuild
@@ -23,11 +23,18 @@
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 
-RDEPEND=""
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
 DEPEND="
 	chromeos-base/chromeos-dbus-bindings:=
 "
 
+RDEPEND=""
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/lvmd/lvmd-0.0.1-r102.ebuild b/chromeos-base/lvmd/lvmd-0.0.1-r162.ebuild
similarity index 82%
rename from chromeos-base/lvmd/lvmd-0.0.1-r102.ebuild
rename to chromeos-base/lvmd/lvmd-0.0.1-r162.ebuild
index 46bd776..ec54079 100644
--- a/chromeos-base/lvmd/lvmd-0.0.1-r102.ebuild
+++ b/chromeos-base/lvmd/lvmd-0.0.1-r162.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c4748e8dccd851254e416c0e623dd03ab27a9017" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "d44eaa9d4aeef1b3da8949ca2e90657848310664" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/mcastd/mcastd-0.0.1-r593.ebuild b/chromeos-base/mcastd/mcastd-0.0.1-r825.ebuild
similarity index 63%
rename from chromeos-base/mcastd/mcastd-0.0.1-r593.ebuild
rename to chromeos-base/mcastd/mcastd-0.0.1-r825.ebuild
index c956cfb..06634a0 100644
--- a/chromeos-base/mcastd/mcastd-0.0.1-r593.ebuild
+++ b/chromeos-base/mcastd/mcastd-0.0.1-r825.ebuild
@@ -3,13 +3,13 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "ae31ff3b3539d04d811debbdb392aa52095f0c1c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e74aa615248081a4161427718d8576d2a9968d5f" "220795476f9e204a14d660f47a2f6d41f8157991" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk patchpanel .gn"
+CROS_WORKON_SUBTREE="common-mk net-base patchpanel .gn"
 
 PLATFORM_SUBDIR="patchpanel/mcastd"
 
@@ -22,7 +22,7 @@
 
 COMMON_DEPEND="
 	dev-libs/protobuf:=
-	chromeos-base/libbrillo:=
+	chromeos-base/net-base:=
 "
 
 RDEPEND="
diff --git a/chromeos-base/mcastd/mcastd-9999.ebuild b/chromeos-base/mcastd/mcastd-9999.ebuild
index e4fa681..de0a727 100644
--- a/chromeos-base/mcastd/mcastd-9999.ebuild
+++ b/chromeos-base/mcastd/mcastd-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk patchpanel .gn"
+CROS_WORKON_SUBTREE="common-mk net-base patchpanel .gn"
 
 PLATFORM_SUBDIR="patchpanel/mcastd"
 
@@ -20,7 +20,7 @@
 
 COMMON_DEPEND="
 	dev-libs/protobuf:=
-	chromeos-base/libbrillo:=
+	chromeos-base/net-base:=
 "
 
 RDEPEND="
diff --git a/chromeos-base/mems_setup/OWNERS b/chromeos-base/mems_setup/OWNERS
index db7e695..fae42ff 100644
--- a/chromeos-base/mems_setup/OWNERS
+++ b/chromeos-base/mems_setup/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/owners:v1:/platform/OWNERS.sensor
diff --git a/chromeos-base/mems_setup/mems_setup-0.0.1-r743.ebuild b/chromeos-base/mems_setup/mems_setup-0.0.1-r852.ebuild
similarity index 71%
rename from chromeos-base/mems_setup/mems_setup-0.0.1-r743.ebuild
rename to chromeos-base/mems_setup/mems_setup-0.0.1-r852.ebuild
index 53a67cd..bf7dd70 100644
--- a/chromeos-base/mems_setup/mems_setup-0.0.1-r743.ebuild
+++ b/chromeos-base/mems_setup/mems_setup-0.0.1-r852.ebuild
@@ -3,14 +3,14 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "e5213f48c6ed0dcfb7d1410f706196c31c5dbb40" "4155fcc9b6fca6b7c5dd566307a963f9501bc8f4" "56cadd695cfe78ffe1dd01235485d645b181c844" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "2d06f979d9e0b056323b2b5e529823c338f2199f" "1f0e98c60804e0854326f3b20e6008fb5cb928ea" "577d31d39eace970e22dbf9d4cda5aa2c0d1b75a" "4e2cac5adeeeb372be7aaa3c4f317230a7652ae8" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 # TODO(crbug.com/809389): Remove libmems from this list.
-CROS_WORKON_SUBTREE="common-mk chromeos-config iioservice mems_setup libmems .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config iioservice mems_setup libmems libsar .gn"
 
 PLATFORM_SUBDIR="mems_setup"
 
@@ -21,11 +21,12 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="fuzzer"
+IUSE="fuzzer iioservice_proximity"
 
 COMMON_DEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/libmems:=
+	chromeos-base/libsar:=
 	net-libs/libiio:=
 	dev-libs/re2:=
 "
diff --git a/chromeos-base/mems_setup/mems_setup-9999.ebuild b/chromeos-base/mems_setup/mems_setup-9999.ebuild
index 83e1932..367b46b 100644
--- a/chromeos-base/mems_setup/mems_setup-9999.ebuild
+++ b/chromeos-base/mems_setup/mems_setup-9999.ebuild
@@ -8,7 +8,7 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 # TODO(crbug.com/809389): Remove libmems from this list.
-CROS_WORKON_SUBTREE="common-mk chromeos-config iioservice mems_setup libmems .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config iioservice mems_setup libmems libsar .gn"
 
 PLATFORM_SUBDIR="mems_setup"
 
@@ -19,11 +19,12 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="fuzzer"
+IUSE="fuzzer iioservice_proximity"
 
 COMMON_DEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/libmems:=
+	chromeos-base/libsar:=
 	net-libs/libiio:=
 	dev-libs/re2:=
 "
diff --git a/chromeos-base/metrics/metrics-0.0.1-r3598.ebuild b/chromeos-base/metrics/metrics-0.0.1-r3690.ebuild
similarity index 90%
rename from chromeos-base/metrics/metrics-0.0.1-r3598.ebuild
rename to chromeos-base/metrics/metrics-0.0.1-r3690.ebuild
index 658f038..3a3566f 100644
--- a/chromeos-base/metrics/metrics-0.0.1-r3598.ebuild
+++ b/chromeos-base/metrics/metrics-0.0.1-r3690.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -22,9 +22,11 @@
 IUSE="fuzzer metrics_uploader +passive_metrics systemd"
 
 COMMON_DEPEND="
+	chromeos-base/chromeos-base:=
 	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:=
 	dev-libs/re2:=
+	sys-apps/dbus:=
 	sys-apps/rootdev:=
 	"
 
@@ -36,6 +38,11 @@
 	chromeos-base/vboot_reference:=
 	"
 
+BDEPEND="
+	chromeos-base/chromeos-base
+	dev-libs/protobuf
+"
+
 src_install() {
 	platform_src_install
 
@@ -94,11 +101,15 @@
 	doins c_metrics_library.h \
 		cumulative_metrics.h \
 		metrics_library{,_mock}.h \
+		metrics_writer.h \
 		persistent_integer.h \
 		structured/c_structured_metrics.h \
 		timer{,_mock}.h \
 		"${OUT}"/gen/include/metrics/structured/structured_events.h
 
+	insinto /usr/include/metrics/serialization
+	doins serialization/metric_sample.h
+
 	insinto /usr/include/metrics/structured
 	doins structured/event_base.h
 
diff --git a/chromeos-base/metrics/metrics-9999.ebuild b/chromeos-base/metrics/metrics-9999.ebuild
index f7dab82..133eb4f 100644
--- a/chromeos-base/metrics/metrics-9999.ebuild
+++ b/chromeos-base/metrics/metrics-9999.ebuild
@@ -20,9 +20,11 @@
 IUSE="fuzzer metrics_uploader +passive_metrics systemd"
 
 COMMON_DEPEND="
+	chromeos-base/chromeos-base:=
 	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:=
 	dev-libs/re2:=
+	sys-apps/dbus:=
 	sys-apps/rootdev:=
 	"
 
@@ -34,6 +36,11 @@
 	chromeos-base/vboot_reference:=
 	"
 
+BDEPEND="
+	chromeos-base/chromeos-base
+	dev-libs/protobuf
+"
+
 src_install() {
 	platform_src_install
 
@@ -92,11 +99,15 @@
 	doins c_metrics_library.h \
 		cumulative_metrics.h \
 		metrics_library{,_mock}.h \
+		metrics_writer.h \
 		persistent_integer.h \
 		structured/c_structured_metrics.h \
 		timer{,_mock}.h \
 		"${OUT}"/gen/include/metrics/structured/structured_events.h
 
+	insinto /usr/include/metrics/serialization
+	doins serialization/metric_sample.h
+
 	insinto /usr/include/metrics/structured
 	doins structured/event_base.h
 
diff --git a/chromeos-base/midis/OWNERS b/chromeos-base/midis/OWNERS
index db7e695..71e6762 100644
--- a/chromeos-base/midis/OWNERS
+++ b/chromeos-base/midis/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/midis/OWNERS
diff --git a/chromeos-base/midis/midis-0.0.1-r1379.ebuild b/chromeos-base/midis/midis-0.0.1-r1441.ebuild
similarity index 81%
rename from chromeos-base/midis/midis-0.0.1-r1379.ebuild
rename to chromeos-base/midis/midis-0.0.1-r1441.ebuild
index f77b5d2..6f55a70 100644
--- a/chromeos-base/midis/midis-0.0.1-r1379.ebuild
+++ b/chromeos-base/midis/midis-0.0.1-r1441.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "77cc36d72b2a07ce056c6dc57290b2e094db7931")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c09d68ade2f94fe7c4c0caa7bb5399ae21b21a28" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "4baf7cba90f916c94dd07c5746355f65e2ee0d8e")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "77cc36d72b2a07ce056c6dc57290b2e094db7931")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "cc5ac5ecbd4739ffb148490a2d4af9939ef855bf" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "4baf7cba90f916c94dd07c5746355f65e2ee0d8e")
 CROS_WORKON_LOCALNAME=(
 	"platform2"
 	"chromium/src/media/midi"
@@ -40,7 +40,10 @@
 "
 
 RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api:=
+"
 
 src_install() {
 	platform_src_install
diff --git a/chromeos-base/midis/midis-9999.ebuild b/chromeos-base/midis/midis-9999.ebuild
index 2cfcdcd..d87909e 100644
--- a/chromeos-base/midis/midis-9999.ebuild
+++ b/chromeos-base/midis/midis-9999.ebuild
@@ -38,7 +38,10 @@
 "
 
 RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api:=
+"
 
 src_install() {
 	platform_src_install
diff --git a/chromeos-base/minios/minios-0.0.1-r429.ebuild b/chromeos-base/minios/minios-0.0.1-r534.ebuild
similarity index 86%
rename from chromeos-base/minios/minios-0.0.1-r429.ebuild
rename to chromeos-base/minios/minios-0.0.1-r534.ebuild
index 43ce624..301ce4c 100644
--- a/chromeos-base/minios/minios-0.0.1-r429.ebuild
+++ b/chromeos-base/minios/minios-0.0.1-r534.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="fcba98842d95d8e4a170c6d4bdbd08d0b4b71ccf"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "935df1d8c0d150d732247e4a7286c8c2a4f8d317" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "6cc45a58beb07dcc2868a1158e596e4193be86ba" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/missive/missive-0.0.1-r537.ebuild b/chromeos-base/missive/missive-0.0.1-r668.ebuild
similarity index 89%
rename from chromeos-base/missive/missive-0.0.1-r537.ebuild
rename to chromeos-base/missive/missive-0.0.1-r668.ebuild
index e3fa267..c033b20 100644
--- a/chromeos-base/missive/missive-0.0.1-r537.ebuild
+++ b/chromeos-base/missive/missive-0.0.1-r668.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="d8222f833d8fb3fb07e719a32df25e157a07abd7"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "da223b2a668d598e3576f36b498e8dbea518a7bb" "1e158fecf158ce21892d0c2646792a06a3e4c5bd" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "5c1598293a3b2d474abb7aafc492654f9cb521de" "81b21cf4bc4ba6fc087d329d7bbbd30064039769" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -27,7 +27,9 @@
 	app-arch/snappy
 	chromeos-base/metrics:=
 	chromeos-base/minijail:=
+	dev-libs/openssl:0=
 	dev-libs/protobuf:=
+	dev-libs/re2:=
 "
 
 DEPEND="
@@ -37,6 +39,11 @@
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	enewuser missived
 	enewgroup missived
diff --git a/chromeos-base/missive/missive-9999.ebuild b/chromeos-base/missive/missive-9999.ebuild
index 1e5ca8d..6ddbf49 100644
--- a/chromeos-base/missive/missive-9999.ebuild
+++ b/chromeos-base/missive/missive-9999.ebuild
@@ -25,7 +25,9 @@
 	app-arch/snappy
 	chromeos-base/metrics:=
 	chromeos-base/minijail:=
+	dev-libs/openssl:0=
 	dev-libs/protobuf:=
+	dev-libs/re2:=
 "
 
 DEPEND="
@@ -35,6 +37,11 @@
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	enewuser missived
 	enewgroup missived
diff --git a/chromeos-base/mist/OWNERS b/chromeos-base/mist/OWNERS
index db7e695..96e208f 100644
--- a/chromeos-base/mist/OWNERS
+++ b/chromeos-base/mist/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/mist/OWNERS
diff --git a/chromeos-base/mist/mist-0.0.1-r3431.ebuild b/chromeos-base/mist/mist-0.0.1-r3523.ebuild
similarity index 71%
rename from chromeos-base/mist/mist-0.0.1-r3431.ebuild
rename to chromeos-base/mist/mist-0.0.1-r3523.ebuild
index 904a586..59dd41f 100644
--- a/chromeos-base/mist/mist-0.0.1-r3431.ebuild
+++ b/chromeos-base/mist/mist-0.0.1-r3523.ebuild
@@ -1,9 +1,9 @@
 # Copyright 2014 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "693c6f3e89efd699238a8e9462136f6f9806a021" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+EAPI="7"
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "8ca416134a9bb6e7e2bcefc357241404f8e76a6f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
@@ -34,12 +34,10 @@
 
 DEPEND="${RDEPEND}"
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 platform_pkg_test() {
 	platform test_all
 }
-
-src_install() {
-	platform_src_install
-
-	udev_dorules 51-mist.rules
-}
diff --git a/chromeos-base/mist/mist-9999.ebuild b/chromeos-base/mist/mist-9999.ebuild
index 5150891..4fca949 100644
--- a/chromeos-base/mist/mist-9999.ebuild
+++ b/chromeos-base/mist/mist-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2014 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI="7"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
@@ -32,12 +32,10 @@
 
 DEPEND="${RDEPEND}"
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 platform_pkg_test() {
 	platform test_all
 }
-
-src_install() {
-	platform_src_install
-
-	udev_dorules 51-mist.rules
-}
diff --git a/chromeos-base/ml-benchmark/OWNERS b/chromeos-base/ml-benchmark/OWNERS
index db7e695..82e6e64 100644
--- a/chromeos-base/ml-benchmark/OWNERS
+++ b/chromeos-base/ml-benchmark/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/ml_benchmark/OWNERS
diff --git a/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r311.ebuild b/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r377.ebuild
similarity index 65%
rename from chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r311.ebuild
rename to chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r377.ebuild
index 98d7148..d35bf65 100644
--- a/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r311.ebuild
+++ b/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r377.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "9ba045590a286ea0a402f35c72f261c4892e4a07" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "a203a66cdff42be84e2b855e8f691928087e59eb" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
@@ -12,18 +12,21 @@
 DESCRIPTION="Chrome OS ML Benchmarking Suite"
 
 PLATFORM_SUBDIR="ml_benchmark"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform
 
 # chromeos-base/ml_benchmark blocked due to package rename
 RDEPEND="
 	!chromeos-base/ml_benchmark
+	dev-libs/protobuf:=
+	dev-libs/re2:=
 	vulkan? ( media-libs/clvk )
 "
 
-DEPEND="${RDEPEND}
-	dev-libs/protobuf:=
-"
+DEPEND="${RDEPEND}"
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
diff --git a/chromeos-base/ml-benchmark/ml-benchmark-9999.ebuild b/chromeos-base/ml-benchmark/ml-benchmark-9999.ebuild
index aac2c86..36ab347 100644
--- a/chromeos-base/ml-benchmark/ml-benchmark-9999.ebuild
+++ b/chromeos-base/ml-benchmark/ml-benchmark-9999.ebuild
@@ -10,18 +10,21 @@
 DESCRIPTION="Chrome OS ML Benchmarking Suite"
 
 PLATFORM_SUBDIR="ml_benchmark"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform
 
 # chromeos-base/ml_benchmark blocked due to package rename
 RDEPEND="
 	!chromeos-base/ml_benchmark
+	dev-libs/protobuf:=
+	dev-libs/re2:=
 	vulkan? ( media-libs/clvk )
 "
 
-DEPEND="${RDEPEND}
-	dev-libs/protobuf:=
-"
+DEPEND="${RDEPEND}"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
diff --git a/chromeos-base/ml-client/ml-client-0.0.1-r330.ebuild b/chromeos-base/ml-client/ml-client-0.0.1-r409.ebuild
similarity index 64%
rename from chromeos-base/ml-client/ml-client-0.0.1-r330.ebuild
rename to chromeos-base/ml-client/ml-client-0.0.1-r409.ebuild
index 135a8ae..7631c1a 100644
--- a/chromeos-base/ml-client/ml-client-0.0.1-r330.ebuild
+++ b/chromeos-base/ml-client/ml-client-0.0.1-r409.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c085160a72e85e27ad24173a4867bf4220bb6094" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "53843cfe493e9e9b129341f8a49d97a63eb0a136" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -22,6 +22,12 @@
 KEYWORDS="*"
 
 BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
 	chromeos-base/chromeos-dbus-bindings:=
 "
 
diff --git a/chromeos-base/ml-client/ml-client-9999.ebuild b/chromeos-base/ml-client/ml-client-9999.ebuild
index a1a8ece..72c6dfb 100644
--- a/chromeos-base/ml-client/ml-client-9999.ebuild
+++ b/chromeos-base/ml-client/ml-client-9999.ebuild
@@ -20,6 +20,12 @@
 KEYWORDS="~*"
 
 BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
 	chromeos-base/chromeos-dbus-bindings:=
 "
 
diff --git a/chromeos-base/ml-cmdline/OWNERS b/chromeos-base/ml-cmdline/OWNERS
index db7e695..8205ee5 100644
--- a/chromeos-base/ml-cmdline/OWNERS
+++ b/chromeos-base/ml-cmdline/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/ml/OWNERS
diff --git a/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r587.ebuild b/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r680.ebuild
similarity index 67%
rename from chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r587.ebuild
rename to chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r680.ebuild
index c5f404f..ebf74b01 100644
--- a/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r587.ebuild
+++ b/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r680.ebuild
@@ -2,14 +2,14 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c085160a72e85e27ad24173a4867bf4220bb6094" "9ba045590a286ea0a402f35c72f261c4892e4a07" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "53843cfe493e9e9b129341f8a49d97a63eb0a136" "a203a66cdff42be84e2b855e8f691928087e59eb" "cceb75d9e5555d3cccb273c52847819feabc9c65" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
 CROS_WORKON_SUBTREE="common-mk ml ml_benchmark ml_core .gn"
 
-PLATFORM_SUBDIR="ml"
+PLATFORM_SUBDIR="ml/cmdline"
 
 inherit cros-workon platform
 
@@ -24,16 +24,24 @@
 RDEPEND="
 	chromeos-base/chrome-icu:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/minijail:=
 	chromeos-base/ml:=
-	sci-libs/tensorflow:=
+	chromeos-base/system_api:=
 	dev-libs/ml-core:=
+	dev-libs/protobuf:=
+	sci-libs/tensorflow:=
+	sys-libs/zlib:=
 "
 
 DEPEND="
 	${RDEPEND}
-	chromeos-base/system_api:=
-	dev-libs/marisa-aosp:=
 	dev-libs/libutf:=
+	dev-libs/marisa-aosp:=
+"
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
 "
 
 platform_pkg_test() {
diff --git a/chromeos-base/ml-cmdline/ml-cmdline-9999.ebuild b/chromeos-base/ml-cmdline/ml-cmdline-9999.ebuild
index 0e30b02..fde67b1 100644
--- a/chromeos-base/ml-cmdline/ml-cmdline-9999.ebuild
+++ b/chromeos-base/ml-cmdline/ml-cmdline-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_DESTDIR="${S}/platform2"
 CROS_WORKON_SUBTREE="common-mk ml ml_benchmark ml_core .gn"
 
-PLATFORM_SUBDIR="ml"
+PLATFORM_SUBDIR="ml/cmdline"
 
 inherit cros-workon platform
 
@@ -22,16 +22,24 @@
 RDEPEND="
 	chromeos-base/chrome-icu:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/minijail:=
 	chromeos-base/ml:=
-	sci-libs/tensorflow:=
+	chromeos-base/system_api:=
 	dev-libs/ml-core:=
+	dev-libs/protobuf:=
+	sci-libs/tensorflow:=
+	sys-libs/zlib:=
 "
 
 DEPEND="
 	${RDEPEND}
-	chromeos-base/system_api:=
-	dev-libs/marisa-aosp:=
 	dev-libs/libutf:=
+	dev-libs/marisa-aosp:=
+"
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
 "
 
 platform_pkg_test() {
diff --git a/chromeos-base/ml/Manifest b/chromeos-base/ml/Manifest
index 11ac15b..1f132a2 100644
--- a/chromeos-base/ml/Manifest
+++ b/chromeos-base/ml/Manifest
@@ -2,6 +2,7 @@
 DIST mlservice-model-adaptive_charging-20211105.tflite 17932 BLAKE2B 30b25a0428c475a80fac9a1870f639714684766723a7ead7ac355574bb7873c1a4aa697d8bc02a2985202c9d2a0110273f6e28ba0aaaa4068037567ecda83266 SHA512 9d45cd53d81030c121afc0dcbde9e317a5e243724b81f24cc6323be2c09cb5245890be949a709f10d2400b2134646a9a76932ce1c027a5d4047a16678680d69a
 DIST mlservice-model-adaptive_charging-20230314-preprocessor.pb 31082 BLAKE2B 46c1cfffd8173d77ff86cfa9a8f610cbe98b36bea626c86ba27e8d19774a5985c7f8ad77048960e0c0b15e4e8ecec0b14624aa60e796bd96f5a53ef65eb1a222 SHA512 e2e19b1d6fb5ae7f5223d5874968c1dc70035d2a77373e6a790127a6c88d29e26d79df72f15857cbbfb22e597c7894859751ae9ab1e193f384a62a28b0be7eff
 DIST mlservice-model-adaptive_charging-20230314.tflite 124324 BLAKE2B cc35b25aa89ffa1c1a88ef7caf3126ec41be2321e195dfc91b8f74da966e4652d402f184a8997c7a23c1950963b5b718ed0466307744b4193a1d30aa5d03df63 SHA512 84c1ad16e06787c2c309380ed7a206be23aa9f4597d6492d52778b3347cf7032d8097112aa88af60d9025f588023b5092fa0618cde1f860bf67265207f93b688
+DIST mlservice-model-poncho_palm_rejection-20230907-v0.tflite 91384 BLAKE2B de21ba44ac9b3018d33d3f6da9ac673fac07f205eeaa205af9b53d0b40dfb3c36b67dd582627dc3580533b493343e1c66986c53ad5e1f6562595525ec4a600c2 SHA512 f44393dd28947b4265ab4dd58bfed0cae8cd8ff36dcafd8bf5126018092176ed273ac9f316cc20912fcc4d1a2f46091575b064222ec9f4a6a793bb17add8939a
 DIST mlservice-model-poncho_palm_rejection-test_quantized_20230213.tflite 27608 BLAKE2B d0e01f08f6f8bd34a6d517e184828de125f9073cf069a6e1e3b509cf1e1c1b7d9dcde7f26c42e50885d978bdddb0aa1c6cffdd7c0aab7306142359524db7f62c SHA512 31d43837f1108ba5b129d4a3364deb974748412bb491f1cdd059ac3ece5f4d772bae69c94a0712fb6d95a455a475308e4fa08bd6faa38dbd90eaba0d56154aec
 DIST mlservice-model-search_ranker-20190923.tflite 4224 BLAKE2B cff618e356bedeba67648f499d549fc4cf9446565e17316e5ec159b2e7a8d1e2009eec6894a236b8445171a5606b3472abb749efcbab60427b232eef200e0d1c SHA512 d3f90d9bc3e560d251eb3124e58822c4e798b1b220899d0f7b045289d98f558cfc4cbf9d0ad6c4b50565f89c34b8aaa5f0b85a5873551c1f909bf904191046e5
 DIST mlservice-model-smart_dim-20190521-preprocessor.pb 21495 BLAKE2B 266e14223e0a15aa708c5f1d7103a3987e98cf297a7acf689a9b1064f81ccfb77537781858b6d7f29973a274062e0ba5338db12df649e72879f2a3c3f7db278c SHA512 3bcd46fbc94ba5b07376963150ee7c03bda9cbd1f4fa12a4eb0038778ae888967b9bdc3ed585def60e6e2f31b1e1c95a350c1e3a8967972b24ef18a277f79f9a
diff --git a/chromeos-base/ml/OWNERS b/chromeos-base/ml/OWNERS
index db7e695..8205ee5 100644
--- a/chromeos-base/ml/OWNERS
+++ b/chromeos-base/ml/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/ml/OWNERS
diff --git a/chromeos-base/ml/ml-0.0.1-r915.ebuild b/chromeos-base/ml/ml-0.0.1-r1011.ebuild
similarity index 90%
rename from chromeos-base/ml/ml-0.0.1-r915.ebuild
rename to chromeos-base/ml/ml-0.0.1-r1011.ebuild
index 17e0bbb..a0f1d95 100644
--- a/chromeos-base/ml/ml-0.0.1-r915.ebuild
+++ b/chromeos-base/ml/ml-0.0.1-r1011.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c085160a72e85e27ad24173a4867bf4220bb6094" "9ba045590a286ea0a402f35c72f261c4892e4a07" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "53843cfe493e9e9b129341f8a49d97a63eb0a136" "a203a66cdff42be84e2b855e8f691928087e59eb" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "cceb75d9e5555d3cccb273c52847819feabc9c65")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 # TODO(amoylan): Set CROS_WORKON_OUTOFTREE_BUILD=1 after crbug.com/833675.
@@ -14,6 +14,10 @@
 
 inherit cros-workon platform user
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 DESCRIPTION="Machine learning service for Chromium OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/main/ml"
 
@@ -28,6 +32,7 @@
 	"gs://chromeos-localmirror/distfiles/mlservice-model-adaptive_charging-20211105.tflite"
 	"gs://chromeos-localmirror/distfiles/mlservice-model-poncho_palm_rejection-test_quantized_20230213.tflite"
 	"gs://chromeos-localmirror/distfiles/mlservice-model-adaptive_charging-20230314.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-poncho_palm_rejection-20230907-v0.tflite"
 )
 
 DOWNLOADABLE_MODELS=(
@@ -77,22 +82,24 @@
 "
 
 RDEPEND="
+	nnapi? ( chromeos-base/aosp-frameworks-ml-nn )
 	chromeos-base/chrome-icu:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/minijail:=
 	internal? ( ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) )
-	nnapi? ( chromeos-base/aosp-frameworks-ml-nn )
+	>=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=]
+	dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=]
+	internal? ( ondevice_image_content_annotation? ( dev-libs/libica:= ) )
+	>=dev-libs/libsuggest-0.0.9:=[ondevice_text_suggestions=]
+	>=dev-libs/libtextclassifier-0.0.1-r79:=
+	dev-libs/ml-core:=
+	dev-libs/protobuf:=
 	dlc? (
 		ondevice_document_scanner_dlc? ( media-libs/cros-camera-document-scanner-dlc )
 	)
 	media-libs/cros-camera-libfs:=[ondevice_document_scanner=,ondevice_document_scanner_dlc=]
-	>=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=]
-	dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=]
-	>=dev-libs/libsuggest-0.0.9:=[ondevice_text_suggestions=]
-	>=dev-libs/libtextclassifier-0.0.1-r79:=
 	sci-libs/tensorflow:=
-	internal? ( ondevice_image_content_annotation? ( dev-libs/libica:= ) )
-	dev-libs/ml-core:=
+	sys-libs/zlib:=
 "
 
 DEPEND="
@@ -104,14 +111,17 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 # SODA will not be supported on rootfs and only be supported through DLC.
 REQUIRED_USE="ondevice_speech? ( dlc )"
 
 src_install() {
-	# platform_src_install omitted, to avoid conflict with
-	# chromeos-base/ml-cmdline.
-	# TODO(b/261604868): Resolve this conflict, where two ebuilds point at
-	# the same BUILD.gn file.
+	platform_src_install
 
 	dobin "${OUT}"/ml_service
 
@@ -122,6 +132,7 @@
 	# Install seccomp policy files.
 	insinto /usr/share/policy
 	newins "seccomp/ml_service-seccomp-${ARCH}.policy" ml_service-seccomp.policy
+	newins "seccomp/ml_service-AdaptiveChargingModel-seccomp-${ARCH}.policy" ml_service-AdaptiveChargingModel-seccomp.policy
 	newins "seccomp/ml_service-BuiltinModel-seccomp-${ARCH}.policy" ml_service-BuiltinModel-seccomp.policy
 	newins "seccomp/ml_service-DocumentScanner-seccomp-${ARCH}.policy" ml_service-DocumentScanner-seccomp.policy
 	newins "seccomp/ml_service-FlatBufferModel-seccomp-${ARCH}.policy" ml_service-FlatBufferModel-seccomp.policy
diff --git a/chromeos-base/ml/ml-9999.ebuild b/chromeos-base/ml/ml-9999.ebuild
index 0b58a99..ae0cd45 100644
--- a/chromeos-base/ml/ml-9999.ebuild
+++ b/chromeos-base/ml/ml-9999.ebuild
@@ -12,6 +12,10 @@
 
 inherit cros-workon platform user
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 DESCRIPTION="Machine learning service for Chromium OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/main/ml"
 
@@ -26,6 +30,7 @@
 	"gs://chromeos-localmirror/distfiles/mlservice-model-adaptive_charging-20211105.tflite"
 	"gs://chromeos-localmirror/distfiles/mlservice-model-poncho_palm_rejection-test_quantized_20230213.tflite"
 	"gs://chromeos-localmirror/distfiles/mlservice-model-adaptive_charging-20230314.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-poncho_palm_rejection-20230907-v0.tflite"
 )
 
 DOWNLOADABLE_MODELS=(
@@ -75,22 +80,24 @@
 "
 
 RDEPEND="
+	nnapi? ( chromeos-base/aosp-frameworks-ml-nn )
 	chromeos-base/chrome-icu:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/minijail:=
 	internal? ( ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) )
-	nnapi? ( chromeos-base/aosp-frameworks-ml-nn )
+	>=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=]
+	dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=]
+	internal? ( ondevice_image_content_annotation? ( dev-libs/libica:= ) )
+	>=dev-libs/libsuggest-0.0.9:=[ondevice_text_suggestions=]
+	>=dev-libs/libtextclassifier-0.0.1-r79:=
+	dev-libs/ml-core:=
+	dev-libs/protobuf:=
 	dlc? (
 		ondevice_document_scanner_dlc? ( media-libs/cros-camera-document-scanner-dlc )
 	)
 	media-libs/cros-camera-libfs:=[ondevice_document_scanner=,ondevice_document_scanner_dlc=]
-	>=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=]
-	dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=]
-	>=dev-libs/libsuggest-0.0.9:=[ondevice_text_suggestions=]
-	>=dev-libs/libtextclassifier-0.0.1-r79:=
 	sci-libs/tensorflow:=
-	internal? ( ondevice_image_content_annotation? ( dev-libs/libica:= ) )
-	dev-libs/ml-core:=
+	sys-libs/zlib:=
 "
 
 DEPEND="
@@ -102,14 +109,17 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 # SODA will not be supported on rootfs and only be supported through DLC.
 REQUIRED_USE="ondevice_speech? ( dlc )"
 
 src_install() {
-	# platform_src_install omitted, to avoid conflict with
-	# chromeos-base/ml-cmdline.
-	# TODO(b/261604868): Resolve this conflict, where two ebuilds point at
-	# the same BUILD.gn file.
+	platform_src_install
 
 	dobin "${OUT}"/ml_service
 
@@ -120,6 +130,7 @@
 	# Install seccomp policy files.
 	insinto /usr/share/policy
 	newins "seccomp/ml_service-seccomp-${ARCH}.policy" ml_service-seccomp.policy
+	newins "seccomp/ml_service-AdaptiveChargingModel-seccomp-${ARCH}.policy" ml_service-AdaptiveChargingModel-seccomp.policy
 	newins "seccomp/ml_service-BuiltinModel-seccomp-${ARCH}.policy" ml_service-BuiltinModel-seccomp.policy
 	newins "seccomp/ml_service-DocumentScanner-seccomp-${ARCH}.policy" ml_service-DocumentScanner-seccomp.policy
 	newins "seccomp/ml_service-FlatBufferModel-seccomp-${ARCH}.policy" ml_service-FlatBufferModel-seccomp.policy
diff --git a/chromeos-base/modem-utilities/OWNERS b/chromeos-base/modem-utilities/OWNERS
index db7e695..89f821f 100644
--- a/chromeos-base/modem-utilities/OWNERS
+++ b/chromeos-base/modem-utilities/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/modem-utilities/OWNERS
diff --git a/chromeos-base/modem-utilities/modem-utilities-0.0.1-r3027.ebuild b/chromeos-base/modem-utilities/modem-utilities-0.0.1-r3086.ebuild
similarity index 79%
rename from chromeos-base/modem-utilities/modem-utilities-0.0.1-r3027.ebuild
rename to chromeos-base/modem-utilities/modem-utilities-0.0.1-r3086.ebuild
index f9073a7..e2b5be1 100644
--- a/chromeos-base/modem-utilities/modem-utilities-0.0.1-r3027.ebuild
+++ b/chromeos-base/modem-utilities/modem-utilities-0.0.1-r3086.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "aa30f7aeb3caa612448e2e6ea25ef48ae800c6ba" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "96df339f56ac8672c605a83db15e935ae21a9dcf" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_DESTDIR="${S}"
diff --git a/chromeos-base/modemfwd-proto/OWNERS b/chromeos-base/modemfwd-proto/OWNERS
index b9550a9..7c9359f 100644
--- a/chromeos-base/modemfwd-proto/OWNERS
+++ b/chromeos-base/modemfwd-proto/OWNERS
@@ -1,4 +1 @@
-andrewlassalle@chromium.org
-ejcaruso@chromium.org
-madhavadas@google.com
-pholla@chromium.org
+include chromiumos/platform2:/modemfwd/OWNERS
diff --git a/chromeos-base/modemfwd-proto/modemfwd-proto-0.0.1-r251.ebuild b/chromeos-base/modemfwd-proto/modemfwd-proto-0.0.1-r318.ebuild
similarity index 78%
rename from chromeos-base/modemfwd-proto/modemfwd-proto-0.0.1-r251.ebuild
rename to chromeos-base/modemfwd-proto/modemfwd-proto-0.0.1-r318.ebuild
index 25bd487..1cf375c 100644
--- a/chromeos-base/modemfwd-proto/modemfwd-proto-0.0.1-r251.ebuild
+++ b/chromeos-base/modemfwd-proto/modemfwd-proto-0.0.1-r318.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "606495ff2f1fd496daebebd6f9266f579711d012" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "4e0d8d2c1e2b266d16ff4c7f73fd1289f3e20cb7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_GO_PACKAGES=(
 	"chromiumos/modemfwd/..."
 )
@@ -30,8 +30,11 @@
 
 DEPEND="
 	${RDEPEND}
-	dev-go/protobuf
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 src_unpack() {
diff --git a/chromeos-base/modemfwd-proto/modemfwd-proto-9999.ebuild b/chromeos-base/modemfwd-proto/modemfwd-proto-9999.ebuild
index 159465b..d1888f2 100644
--- a/chromeos-base/modemfwd-proto/modemfwd-proto-9999.ebuild
+++ b/chromeos-base/modemfwd-proto/modemfwd-proto-9999.ebuild
@@ -28,8 +28,11 @@
 
 DEPEND="
 	${RDEPEND}
-	dev-go/protobuf
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 src_unpack() {
diff --git a/chromeos-base/modemfwd/OWNERS b/chromeos-base/modemfwd/OWNERS
index db7e695..7c9359f 100644
--- a/chromeos-base/modemfwd/OWNERS
+++ b/chromeos-base/modemfwd/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/modemfwd/OWNERS
diff --git a/chromeos-base/modemfwd/modemfwd-0.0.1-r1345.ebuild b/chromeos-base/modemfwd/modemfwd-0.0.1-r1475.ebuild
similarity index 77%
rename from chromeos-base/modemfwd/modemfwd-0.0.1-r1345.ebuild
rename to chromeos-base/modemfwd/modemfwd-0.0.1-r1475.ebuild
index ad6e378..43882c7 100644
--- a/chromeos-base/modemfwd/modemfwd-0.0.1-r1345.ebuild
+++ b/chromeos-base/modemfwd/modemfwd-0.0.1-r1475.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "606495ff2f1fd496daebebd6f9266f579711d012" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "4e0d8d2c1e2b266d16ff4c7f73fd1289f3e20cb7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -13,7 +13,7 @@
 
 PLATFORM_SUBDIR="modemfwd"
 
-inherit cros-workon platform tmpfiles user
+inherit cros-workon platform tmpfiles udev user
 
 DESCRIPTION="Modem firmware updater daemon"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/modemfwd"
@@ -25,7 +25,6 @@
 
 COMMON_DEPEND="
 	app-arch/xz-utils:=
-	chromeos-base/chromeos-config:=
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/dlcservice-client:=
 	chromeos-base/metrics:=
@@ -46,6 +45,10 @@
 
 	dotmpfiles tmpfiles.d/*.conf
 
+	# udev scripts and rules.
+	exeinto "$(get_udevdir)"
+	doexe udev/*.sh
+
 	local fuzzer_component_id="167157"
 	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/firmware_manifest_v2_fuzzer \
 		--comp "${fuzzer_component_id}"
diff --git a/chromeos-base/modemfwd/modemfwd-9999.ebuild b/chromeos-base/modemfwd/modemfwd-9999.ebuild
index 1045e38..883ec10 100644
--- a/chromeos-base/modemfwd/modemfwd-9999.ebuild
+++ b/chromeos-base/modemfwd/modemfwd-9999.ebuild
@@ -11,7 +11,7 @@
 
 PLATFORM_SUBDIR="modemfwd"
 
-inherit cros-workon platform tmpfiles user
+inherit cros-workon platform tmpfiles udev user
 
 DESCRIPTION="Modem firmware updater daemon"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/modemfwd"
@@ -23,7 +23,6 @@
 
 COMMON_DEPEND="
 	app-arch/xz-utils:=
-	chromeos-base/chromeos-config:=
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/dlcservice-client:=
 	chromeos-base/metrics:=
@@ -44,6 +43,10 @@
 
 	dotmpfiles tmpfiles.d/*.conf
 
+	# udev scripts and rules.
+	exeinto "$(get_udevdir)"
+	doexe udev/*.sh
+
 	local fuzzer_component_id="167157"
 	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/firmware_manifest_v2_fuzzer \
 		--comp "${fuzzer_component_id}"
diff --git a/chromeos-base/mojo_service_manager-test/mojo_service_manager-test-0.0.1-r76.ebuild b/chromeos-base/mojo_service_manager-test/mojo_service_manager-test-0.0.1-r137.ebuild
similarity index 77%
rename from chromeos-base/mojo_service_manager-test/mojo_service_manager-test-0.0.1-r76.ebuild
rename to chromeos-base/mojo_service_manager-test/mojo_service_manager-test-0.0.1-r137.ebuild
index 2c9be9d..3e60f2c 100644
--- a/chromeos-base/mojo_service_manager-test/mojo_service_manager-test-0.0.1-r76.ebuild
+++ b/chromeos-base/mojo_service_manager-test/mojo_service_manager-test-0.0.1-r137.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "66d9ece0c55ff21826b4962ffd402f0927467387" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
diff --git a/chromeos-base/mount-passthrough/OWNERS b/chromeos-base/mount-passthrough/OWNERS
index db7e695..1c75866 100644
--- a/chromeos-base/mount-passthrough/OWNERS
+++ b/chromeos-base/mount-passthrough/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/arc/mount-passthrough/OWNERS
diff --git a/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r695.ebuild b/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r756.ebuild
similarity index 77%
rename from chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r695.ebuild
rename to chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r756.ebuild
index c453c01..e84ebb5 100644
--- a/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r695.ebuild
+++ b/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r756.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "dc510a2c5f4950861cbac4319fc9ab46e17a440d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "5669f3503ddff8573fa92b3b8e8b3001e053ae7b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -21,7 +21,10 @@
 LICENSE="BSD-Google"
 KEYWORDS="*"
 
-IUSE="android-container-pi"
+IUSE="
+	android-container-pi
+	arcpp
+"
 
 COMMON_DEPEND="=sys-fs/fuse-2*
 	sys-libs/libcap:="
diff --git a/chromeos-base/mount-passthrough/mount-passthrough-9999.ebuild b/chromeos-base/mount-passthrough/mount-passthrough-9999.ebuild
index dbae2f5..9c65e4d 100644
--- a/chromeos-base/mount-passthrough/mount-passthrough-9999.ebuild
+++ b/chromeos-base/mount-passthrough/mount-passthrough-9999.ebuild
@@ -19,7 +19,10 @@
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 
-IUSE="android-container-pi"
+IUSE="
+	android-container-pi
+	arcpp
+"
 
 COMMON_DEPEND="=sys-fs/fuse-2*
 	sys-libs/libcap:="
diff --git a/chromeos-base/mtpd/mtpd-0.0.1-r1151.ebuild b/chromeos-base/mtpd/mtpd-0.0.1-r1210.ebuild
similarity index 83%
rename from chromeos-base/mtpd/mtpd-0.0.1-r1151.ebuild
rename to chromeos-base/mtpd/mtpd-0.0.1-r1210.ebuild
index 1dd5825c..6f63e21 100644
--- a/chromeos-base/mtpd/mtpd-0.0.1-r1151.ebuild
+++ b/chromeos-base/mtpd/mtpd-0.0.1-r1210.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "579490dac99ef5f7ec7ed4f5a830b7a305068823" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "579490dac99ef5f7ec7ed4f5a830b7a305068823" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -24,14 +24,22 @@
 COMMON_DEPEND="
 	dev-libs/protobuf:=
 	media-libs/libmtp:=
+	virtual/libudev:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
 	virtual/udev
 "
 
-RDEPEND="${COMMON_DEPEND}"
-
 DEPEND="${COMMON_DEPEND}
 	chromeos-base/system_api:="
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	seccomp? ( chromeos-base/minijail )
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/mtpd/mtpd-9999.ebuild b/chromeos-base/mtpd/mtpd-9999.ebuild
index b36b4bf..bf6d302 100644
--- a/chromeos-base/mtpd/mtpd-9999.ebuild
+++ b/chromeos-base/mtpd/mtpd-9999.ebuild
@@ -22,14 +22,22 @@
 COMMON_DEPEND="
 	dev-libs/protobuf:=
 	media-libs/libmtp:=
+	virtual/libudev:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
 	virtual/udev
 "
 
-RDEPEND="${COMMON_DEPEND}"
-
 DEPEND="${COMMON_DEPEND}
 	chromeos-base/system_api:="
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	seccomp? ( chromeos-base/minijail )
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/ndproxyd/ndproxyd-0.0.1-r593.ebuild b/chromeos-base/ndproxyd/ndproxyd-0.0.1-r825.ebuild
similarity index 63%
rename from chromeos-base/ndproxyd/ndproxyd-0.0.1-r593.ebuild
rename to chromeos-base/ndproxyd/ndproxyd-0.0.1-r825.ebuild
index 42f0526..0108047 100644
--- a/chromeos-base/ndproxyd/ndproxyd-0.0.1-r593.ebuild
+++ b/chromeos-base/ndproxyd/ndproxyd-0.0.1-r825.ebuild
@@ -3,13 +3,13 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "ae31ff3b3539d04d811debbdb392aa52095f0c1c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e74aa615248081a4161427718d8576d2a9968d5f" "220795476f9e204a14d660f47a2f6d41f8157991" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk patchpanel .gn"
+CROS_WORKON_SUBTREE="common-mk net-base patchpanel .gn"
 
 PLATFORM_SUBDIR="patchpanel/ndproxyd"
 
@@ -22,7 +22,7 @@
 
 COMMON_DEPEND="
 	dev-libs/protobuf:=
-	chromeos-base/libbrillo:=
+	chromeos-base/net-base:=
 "
 
 RDEPEND="
diff --git a/chromeos-base/ndproxyd/ndproxyd-9999.ebuild b/chromeos-base/ndproxyd/ndproxyd-9999.ebuild
index 76655c2..26e0127 100644
--- a/chromeos-base/ndproxyd/ndproxyd-9999.ebuild
+++ b/chromeos-base/ndproxyd/ndproxyd-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk patchpanel .gn"
+CROS_WORKON_SUBTREE="common-mk net-base patchpanel .gn"
 
 PLATFORM_SUBDIR="patchpanel/ndproxyd"
 
@@ -20,7 +20,7 @@
 
 COMMON_DEPEND="
 	dev-libs/protobuf:=
-	chromeos-base/libbrillo:=
+	chromeos-base/net-base:=
 "
 
 RDEPEND="
diff --git a/chromeos-base/nnapi/nnapi-0.0.2-r9.ebuild b/chromeos-base/nnapi/nnapi-0.0.2-r11.ebuild
similarity index 93%
rename from chromeos-base/nnapi/nnapi-0.0.2-r9.ebuild
rename to chromeos-base/nnapi/nnapi-0.0.2-r11.ebuild
index e38a8138..960aea7 100644
--- a/chromeos-base/nnapi/nnapi-0.0.2-r9.ebuild
+++ b/chromeos-base/nnapi/nnapi-0.0.2-r11.ebuild
@@ -3,9 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("0a1dee29b5d010da75693ce21924520954b5435b" "5e9a89d06c41edf5cf43da8acf5f26ed104887e6" "dcc518ef32993d0171d0849bd3677c9d0948f8bb" "6518555263253e9fdf7e37d26866cbe75bc11e97" "9537e373c71c26c5495be60d267dff5eb88b180f" "1d72513a44e4cb856c1cc70f95f9b1e88b1b4a78" "49005468bfa1d0c3ed69d8a61b8d0fbaafd1e836" "2e909ccdf779939e5caa5ab52851f38f22037ae9")
-CROS_WORKON_TREE=("ebcce78502266e81f55c63ade8f25b8888e2c103" "1ad280dd6478faa3706780e8f2c62ea5d0e0066a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "693bb2d63562c6eff050d04f75aab1e9251e6548" "1a77f7f025502657540bbec1f57cbbb6478be4b4" "6e40c8c1bb5c4bf8a74175e2f1cf12ca9071319a" "6fadd8addab8504349cdeefe51b583b97c2ae7f4" "420490156b9efe3f015ad092cc203f7d8bbdd6cf" "94b4cc4a6205839e2c297f30d0a2e62b1c221a04" "ae1614ebb22b8aa59ecd0d29e1a0e162deaa2d09")
-
+CROS_WORKON_COMMIT=("f7eec5dac30cfa9f2f9d1eb787cd061e8dcbe9b3" "5e9a89d06c41edf5cf43da8acf5f26ed104887e6" "dcc518ef32993d0171d0849bd3677c9d0948f8bb" "6518555263253e9fdf7e37d26866cbe75bc11e97" "9537e373c71c26c5495be60d267dff5eb88b180f" "1d72513a44e4cb856c1cc70f95f9b1e88b1b4a78" "49005468bfa1d0c3ed69d8a61b8d0fbaafd1e836" "2e909ccdf779939e5caa5ab52851f38f22037ae9")
+CROS_WORKON_TREE=("f15a2b6ce11bd1f9024dc5342bfe2b99ed4a24b3" "1ad280dd6478faa3706780e8f2c62ea5d0e0066a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "693bb2d63562c6eff050d04f75aab1e9251e6548" "1a77f7f025502657540bbec1f57cbbb6478be4b4" "6e40c8c1bb5c4bf8a74175e2f1cf12ca9071319a" "6fadd8addab8504349cdeefe51b583b97c2ae7f4" "420490156b9efe3f015ad092cc203f7d8bbdd6cf" "94b4cc4a6205839e2c297f30d0a2e62b1c221a04" "ae1614ebb22b8aa59ecd0d29e1a0e162deaa2d09")
 inherit cros-constants
 
 CROS_WORKON_MANUAL_UPREV="1"
@@ -72,6 +71,9 @@
 )
 
 PLATFORM_SUBDIR="nnapi"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform
 
@@ -100,6 +102,7 @@
 	"${FILESDIR}/00008-libutils-memory-leak.patch"
 	"${FILESDIR}/00009-libutils-timer-cast.patch"
 	"${FILESDIR}/00010-libutils-clock-test.patch"
+	"${FILESDIR}/00011-libutils-lightrefbase.patch"
 )
 
 src_prepare() {
@@ -116,6 +119,7 @@
 	eapply -p2 "${FILESDIR}/00008-libutils-memory-leak.patch"
 	eapply -p2 "${FILESDIR}/00009-libutils-timer-cast.patch"
 	eapply -p2 "${FILESDIR}/00010-libutils-clock-test.patch"
+	eapply -p2 "${FILESDIR}/00011-libutils-lightrefbase.patch"
 	popd || exit
 
 	eapply_user
@@ -150,7 +154,7 @@
 
 platform_pkg_test() {
 	local tests=(
-		base cutils fmq hidl hwbuf log utils
+		base cutils fmq hidl hwbuf log utils native
 	)
 
 	# When running in qemu, these tests freeze the emulator when hitting
diff --git a/chromeos-base/nnapi/nnapi-9999.ebuild b/chromeos-base/nnapi/nnapi-9999.ebuild
index cc5a426..3b177bc 100644
--- a/chromeos-base/nnapi/nnapi-9999.ebuild
+++ b/chromeos-base/nnapi/nnapi-9999.ebuild
@@ -69,6 +69,9 @@
 )
 
 PLATFORM_SUBDIR="nnapi"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform
 
diff --git a/chromeos-base/ocr/DIR_METADATA b/chromeos-base/ocr/DIR_METADATA
new file mode 100644
index 0000000..4d203c2
--- /dev/null
+++ b/chromeos-base/ocr/DIR_METADATA
@@ -0,0 +1,27 @@
+# Metadata information for this directory.
+#
+# For more information on DIR_METADATA files, see:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md
+#
+# For the schema of this file, see Metadata message:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+
+team_email: "project-bolton@google.com"
+
+buganizer {
+  # https://b.corp.google.com/issues?q=status:open%20componentid:860616
+  # ChromeOS > Platform > Services > Scanning
+  component_id: 860616
+}
+
+chromeos {
+  cq {
+    source_test_plans {
+      test_plan_starlark_files {
+        host: "chrome-internal.googlesource.com"
+        project: "chromeos/config-internal"
+        path: "test/plans/v2/ctpv1_compatible/printscan_cq.star"
+      }
+    }
+  }
+}
diff --git a/chromeos-base/ocr/OWNERS b/chromeos-base/ocr/OWNERS
index c5d38b1..ad5f3c8 100644
--- a/chromeos-base/ocr/OWNERS
+++ b/chromeos-base/ocr/OWNERS
@@ -1 +1 @@
-include chromiumos/platform2:/cups_proxy/OWNERS
+include chromiumos/owners:v1:/printscan/OWNERS.printscan
diff --git a/chromeos-base/ocr/ocr-0.0.1-r277.ebuild b/chromeos-base/ocr/ocr-0.0.1-r337.ebuild
similarity index 89%
rename from chromeos-base/ocr/ocr-0.0.1-r277.ebuild
rename to chromeos-base/ocr/ocr-0.0.1-r337.ebuild
index 262738d..1ca2a08 100644
--- a/chromeos-base/ocr/ocr-0.0.1-r277.ebuild
+++ b/chromeos-base/ocr/ocr-0.0.1-r337.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "07925669789bf74885a8afaec36ed054928f42c5" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "26ed68e3820a14de4b041e842ea9344989c226a6" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/oobe_config/OWNERS b/chromeos-base/oobe_config/OWNERS
index db7e695..afb1546 100644
--- a/chromeos-base/oobe_config/OWNERS
+++ b/chromeos-base/oobe_config/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/oobe_config/OWNERS
diff --git a/chromeos-base/oobe_config/oobe_config-0.0.1-r843.ebuild b/chromeos-base/oobe_config/oobe_config-0.0.1-r993.ebuild
similarity index 77%
rename from chromeos-base/oobe_config/oobe_config-0.0.1-r843.ebuild
rename to chromeos-base/oobe_config/oobe_config-0.0.1-r993.ebuild
index a71dd82..bc48d8e 100644
--- a/chromeos-base/oobe_config/oobe_config-0.0.1-r843.ebuild
+++ b/chromeos-base/oobe_config/oobe_config-0.0.1-r993.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "12ee450f2c13d23d384596443f387339caa2ee42" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "a7da143bfe48a06e0bb12b5cb12a8004852157a4" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -30,6 +30,7 @@
 COMMMON_DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/libhwsec:=[test?]
+	dev-libs/openssl:0=
 	sys-apps/dbus:=
 "
 RDEPEND="
@@ -42,11 +43,18 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	enewuser "oobe_config_save"
 	enewuser "oobe_config_restore"
 	enewgroup "oobe_config_save"
 	enewgroup "oobe_config_restore"
+	enewgroup "oobe_config"
 }
 
 src_install() {
diff --git a/chromeos-base/oobe_config/oobe_config-9999.ebuild b/chromeos-base/oobe_config/oobe_config-9999.ebuild
index 2ec1828..c44def4 100644
--- a/chromeos-base/oobe_config/oobe_config-9999.ebuild
+++ b/chromeos-base/oobe_config/oobe_config-9999.ebuild
@@ -28,6 +28,7 @@
 COMMMON_DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/libhwsec:=[test?]
+	dev-libs/openssl:0=
 	sys-apps/dbus:=
 "
 RDEPEND="
@@ -40,11 +41,18 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	enewuser "oobe_config_save"
 	enewuser "oobe_config_restore"
 	enewgroup "oobe_config_save"
 	enewgroup "oobe_config_restore"
+	enewgroup "oobe_config"
 }
 
 src_install() {
diff --git a/chromeos-base/p2p/OWNERS b/chromeos-base/p2p/OWNERS
index db7e695..83094d8 100644
--- a/chromeos-base/p2p/OWNERS
+++ b/chromeos-base/p2p/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/p2p/OWNERS
diff --git a/chromeos-base/p2p/p2p-0.0.1-r3649.ebuild b/chromeos-base/p2p/p2p-0.0.1-r3739.ebuild
similarity index 85%
rename from chromeos-base/p2p/p2p-0.0.1-r3649.ebuild
rename to chromeos-base/p2p/p2p-0.0.1-r3739.ebuild
index 72140cb..fe72c9a 100644
--- a/chromeos-base/p2p/p2p-0.0.1-r3649.ebuild
+++ b/chromeos-base/p2p/p2p-0.0.1-r3739.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "6150b6facfa8aa74749c74ca95364275f971f851" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "2a9c447bda70ed2d8efd8145b418458531b8a118" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
diff --git a/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r510.ebuild b/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r742.ebuild
similarity index 81%
rename from chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r510.ebuild
rename to chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r742.ebuild
index 621ef4c..ae62a07 100644
--- a/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r510.ebuild
+++ b/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r742.ebuild
@@ -3,13 +3,13 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "ae31ff3b3539d04d811debbdb392aa52095f0c1c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e74aa615248081a4161427718d8576d2a9968d5f" "220795476f9e204a14d660f47a2f6d41f8157991" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk patchpanel .gn"
+CROS_WORKON_SUBTREE="common-mk net-base patchpanel .gn"
 
 PLATFORM_SUBDIR="patchpanel/dbus"
 
@@ -24,6 +24,7 @@
 IUSE="fuzzer"
 
 COMMON_DEPEND="
+	chromeos-base/net-base:=
 	dev-libs/protobuf:=
 "
 
@@ -40,6 +41,10 @@
 	chromeos-base/vboot_reference:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 patchpanel_client_header() {
 	doins "$1"
 	sed -i '/.pb.h/! s:patchpanel/:chromeos/patchpanel/:g' \
diff --git a/chromeos-base/patchpanel-client/patchpanel-client-9999.ebuild b/chromeos-base/patchpanel-client/patchpanel-client-9999.ebuild
index 1805b07..228c4cd 100644
--- a/chromeos-base/patchpanel-client/patchpanel-client-9999.ebuild
+++ b/chromeos-base/patchpanel-client/patchpanel-client-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk patchpanel .gn"
+CROS_WORKON_SUBTREE="common-mk net-base patchpanel .gn"
 
 PLATFORM_SUBDIR="patchpanel/dbus"
 
@@ -22,6 +22,7 @@
 IUSE="fuzzer"
 
 COMMON_DEPEND="
+	chromeos-base/net-base:=
 	dev-libs/protobuf:=
 "
 
@@ -38,6 +39,10 @@
 	chromeos-base/vboot_reference:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 patchpanel_client_header() {
 	doins "$1"
 	sed -i '/.pb.h/! s:patchpanel/:chromeos/patchpanel/:g' \
diff --git a/chromeos-base/patchpanel/patchpanel-0.0.2-r810.ebuild b/chromeos-base/patchpanel/patchpanel-0.0.2-r1093.ebuild
similarity index 78%
rename from chromeos-base/patchpanel/patchpanel-0.0.2-r810.ebuild
rename to chromeos-base/patchpanel/patchpanel-0.0.2-r1093.ebuild
index 2925af1..4513c32 100644
--- a/chromeos-base/patchpanel/patchpanel-0.0.2-r810.ebuild
+++ b/chromeos-base/patchpanel/patchpanel-0.0.2-r1093.ebuild
@@ -3,17 +3,17 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "ae31ff3b3539d04d811debbdb392aa52095f0c1c" "3b19957182f1f8ab8ca820452f130eda7c823082" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "e74aa615248081a4161427718d8576d2a9968d5f" "220795476f9e204a14d660f47a2f6d41f8157991" "1576ec68ff22d35e20e4634656a91de5dbac4751" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk metrics patchpanel shill/net .gn"
+CROS_WORKON_SUBTREE="common-mk metrics net-base patchpanel shill/net .gn"
 
 PLATFORM_SUBDIR="patchpanel"
 
-inherit cros-workon libchrome platform user
+inherit cros-workon libchrome platform tmpfiles user
 
 DESCRIPTION="Patchpanel network connectivity management daemon"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/patchpanel/"
@@ -24,10 +24,12 @@
 IUSE="fuzzer arcvm"
 
 COMMON_DEPEND="
-	dev-libs/protobuf:=
 	chromeos-base/metrics:=
+	chromeos-base/net-base:=
 	chromeos-base/shill-net:=
 	chromeos-base/system_api:=[fuzzer?]
+	dev-libs/protobuf:=
+	dev-libs/re2:=
 "
 
 RDEPEND="
@@ -49,6 +51,12 @@
 	chromeos-base/vboot_reference:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 patchpanel_header() {
 	doins "$1"
 	sed -i '/.pb.h/! s:patchpanel/:chromeos/patchpanel/:g' \
@@ -65,7 +73,6 @@
 	insinto /usr/include/chromeos/patchpanel/
 	patchpanel_header address_manager.h
 	patchpanel_header file_descriptor_watcher_posix.h
-	patchpanel_header guest_type.h
 	patchpanel_header mac_address_generator.h
 	patchpanel_header message_dispatcher.h
 	patchpanel_header mock_message_dispatcher.h
@@ -81,6 +88,8 @@
 	patchpanel_header dns/dns_response.h
 	patchpanel_header dns/io_buffer.h
 
+	dotmpfiles tmpfiles.d/*.conf
+
 	local fuzzer
 	for fuzzer in "${OUT}"/*_fuzzer; do
 		local fuzzer_component_id="156085"
diff --git a/chromeos-base/patchpanel/patchpanel-9999.ebuild b/chromeos-base/patchpanel/patchpanel-9999.ebuild
index e87e238..3dbbf0d 100644
--- a/chromeos-base/patchpanel/patchpanel-9999.ebuild
+++ b/chromeos-base/patchpanel/patchpanel-9999.ebuild
@@ -7,11 +7,11 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk metrics patchpanel shill/net .gn"
+CROS_WORKON_SUBTREE="common-mk metrics net-base patchpanel shill/net .gn"
 
 PLATFORM_SUBDIR="patchpanel"
 
-inherit cros-workon libchrome platform user
+inherit cros-workon libchrome platform tmpfiles user
 
 DESCRIPTION="Patchpanel network connectivity management daemon"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/patchpanel/"
@@ -22,10 +22,12 @@
 IUSE="fuzzer arcvm"
 
 COMMON_DEPEND="
-	dev-libs/protobuf:=
 	chromeos-base/metrics:=
+	chromeos-base/net-base:=
 	chromeos-base/shill-net:=
 	chromeos-base/system_api:=[fuzzer?]
+	dev-libs/protobuf:=
+	dev-libs/re2:=
 "
 
 RDEPEND="
@@ -47,6 +49,12 @@
 	chromeos-base/vboot_reference:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 patchpanel_header() {
 	doins "$1"
 	sed -i '/.pb.h/! s:patchpanel/:chromeos/patchpanel/:g' \
@@ -63,7 +71,6 @@
 	insinto /usr/include/chromeos/patchpanel/
 	patchpanel_header address_manager.h
 	patchpanel_header file_descriptor_watcher_posix.h
-	patchpanel_header guest_type.h
 	patchpanel_header mac_address_generator.h
 	patchpanel_header message_dispatcher.h
 	patchpanel_header mock_message_dispatcher.h
@@ -79,6 +86,8 @@
 	patchpanel_header dns/dns_response.h
 	patchpanel_header dns/io_buffer.h
 
+	dotmpfiles tmpfiles.d/*.conf
+
 	local fuzzer
 	for fuzzer in "${OUT}"/*_fuzzer; do
 		local fuzzer_component_id="156085"
diff --git a/chromeos-base/pciguard/pciguard-0.0.1-r263.ebuild b/chromeos-base/pciguard/pciguard-0.0.1-r322.ebuild
similarity index 80%
rename from chromeos-base/pciguard/pciguard-0.0.1-r263.ebuild
rename to chromeos-base/pciguard/pciguard-0.0.1-r322.ebuild
index 868ad9d..017f6af 100644
--- a/chromeos-base/pciguard/pciguard-0.0.1-r263.ebuild
+++ b/chromeos-base/pciguard/pciguard-0.0.1-r322.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "2da9d61d19cec0757c1bf20a326e792be13ec50e" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "4376098c685982a6b43bac65b18b49b18da4227f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/perfetto/OWNERS b/chromeos-base/perfetto/OWNERS
index 95fa83c..cfd10a1 100644
--- a/chromeos-base/perfetto/OWNERS
+++ b/chromeos-base/perfetto/OWNERS
@@ -1,5 +1,5 @@
 chinglinyu@chromium.org
-hiroh@chromium.org
+skyostil@chromium.org
 
 # Used by PUpr
-chromeos-ci-prod@chromeos-bot.iam.gserviceaccount.com
+include chromiumos/owners:v1:/bots/OWNERS.pupr
diff --git a/chromeos-base/perfetto/perfetto-33.0-r22.ebuild b/chromeos-base/perfetto/perfetto-37.0-r16.ebuild
similarity index 94%
rename from chromeos-base/perfetto/perfetto-33.0-r22.ebuild
rename to chromeos-base/perfetto/perfetto-37.0-r16.ebuild
index ca4bc78..d05bad7 100644
--- a/chromeos-base/perfetto/perfetto-33.0-r22.ebuild
+++ b/chromeos-base/perfetto/perfetto-37.0-r16.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="6087bfd57d4cdb4eda85c9b32b73b3b55e48ad87"
-CROS_WORKON_TREE="90059a42c96c57bbfc29b6de029350d5b72465b3"
+CROS_WORKON_COMMIT="5d157cfb932c65c7803da78b9ab5c9d7931776f5"
+CROS_WORKON_TREE="695c0ed1c8b7a563b16df7f86872c835f46f6ea7"
 inherit cros-constants
 
 # This ebuild is upreved via PuPR, so disable the normal uprev process for
@@ -21,9 +21,9 @@
 HOMEPAGE="https://perfetto.dev/"
 
 KEYWORDS="*"
-IUSE="cros_host"
+IUSE="cros_host asan lsan msan tsan ubsan"
 LICENSE="Apache-2.0"
-SLOT="0"
+SLOT="0/${PVR}"
 
 # protobuf dep is for using protoc at build-time to generate perfetto's headers.
 # It is included in DEPEND as a hack to trigger a rebuild when protoc is
@@ -108,6 +108,16 @@
 enable_perfetto_trace_processor_linenoise=false
 enable_perfetto_llvm_demangle=false
 "
+	use asan && GN_ARGS+="
+is_asan=true"
+	use lsan && GN_ARGS+="
+is_lsan=true"
+	use msan && GN_ARGS+="
+is_msan=true"
+	use tsan && GN_ARGS+="
+is_tsan=true"
+	use ubsan && GN_ARGS+="
+is_ubsan=true"
 
 	einfo "GN_ARGS = ${GN_ARGS}"
 	gn gen "${BUILD_OUTPUT}" --args="${GN_ARGS}" || die
diff --git a/chromeos-base/perfetto/perfetto-9999.ebuild b/chromeos-base/perfetto/perfetto-9999.ebuild
index 0ae82e2..dd47617 100644
--- a/chromeos-base/perfetto/perfetto-9999.ebuild
+++ b/chromeos-base/perfetto/perfetto-9999.ebuild
@@ -19,9 +19,9 @@
 HOMEPAGE="https://perfetto.dev/"
 
 KEYWORDS="~*"
-IUSE="cros_host"
+IUSE="cros_host asan lsan msan tsan ubsan"
 LICENSE="Apache-2.0"
-SLOT="0"
+SLOT="0/${PVR}"
 
 # protobuf dep is for using protoc at build-time to generate perfetto's headers.
 # It is included in DEPEND as a hack to trigger a rebuild when protoc is
@@ -106,6 +106,16 @@
 enable_perfetto_trace_processor_linenoise=false
 enable_perfetto_llvm_demangle=false
 "
+	use asan && GN_ARGS+="
+is_asan=true"
+	use lsan && GN_ARGS+="
+is_lsan=true"
+	use msan && GN_ARGS+="
+is_msan=true"
+	use tsan && GN_ARGS+="
+is_tsan=true"
+	use ubsan && GN_ARGS+="
+is_ubsan=true"
 
 	einfo "GN_ARGS = ${GN_ARGS}"
 	gn gen "${BUILD_OUTPUT}" --args="${GN_ARGS}" || die
@@ -189,6 +199,7 @@
 	doins "${sdk_root}/perfetto.cc"
 	doins "${sdk_root}/perfetto.h"
 	newlib.a "${S}/out/sdk_gen/libperfetto_client_experimental.a" libperfetto_sdk.a
+	dolib.so "${S}/out/sdk_gen/gcc_like_host/protozero_plugin"
 	doins "${S}/out/sdk_gen/gen/build_config/perfetto_build_flags.h"
 
 	insinto "/usr/$(get_libdir)/pkgconfig"
@@ -205,6 +216,9 @@
 	insinto /usr/include/perfetto/protos
 	doins -r "${BUILD_OUTPUT}/gen/protos/perfetto"
 	insinto /usr/include/perfetto/perfetto/base
+
+	insinto /usr/include/proto
+	doins -r "${S}/protos/"
 }
 
 pkg_preinst() {
diff --git a/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-0.0.1-r224.ebuild b/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-0.0.1-r282.ebuild
similarity index 84%
rename from chromeos-base/perfetto_simple_producer/perfetto_simple_producer-0.0.1-r224.ebuild
rename to chromeos-base/perfetto_simple_producer/perfetto_simple_producer-0.0.1-r282.ebuild
index 7f90dbe..548ebd3 100644
--- a/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-0.0.1-r224.ebuild
+++ b/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-0.0.1-r282.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d77e43912d0bb32c7c16099d8ac4bd8d847f077b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "d77e43912d0bb32c7c16099d8ac4bd8d847f077b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/permission_broker-client/OWNERS b/chromeos-base/permission_broker-client/OWNERS
index db7e695..9652b9b 100644
--- a/chromeos-base/permission_broker-client/OWNERS
+++ b/chromeos-base/permission_broker-client/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/permission_broker/OWNERS
diff --git a/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r2133.ebuild b/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r2204.ebuild
similarity index 62%
rename from chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r2133.ebuild
rename to chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r2204.ebuild
index e8768b5..4458d14 100644
--- a/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r2133.ebuild
+++ b/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r2204.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "033e609e1aa1b4d07f99c4c3518aeb5a245c5e26" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "da1c895f49bb84a62727ab87f0f398599a747683" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -21,13 +21,15 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="cros_host"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies.
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
 DEPEND="
-	cros_host? ( chromeos-base/chromeos-dbus-bindings:= )
+	chromeos-base/chromeos-dbus-bindings:=
 "
 
 src_install() {
diff --git a/chromeos-base/permission_broker-client/permission_broker-client-9999.ebuild b/chromeos-base/permission_broker-client/permission_broker-client-9999.ebuild
index cc5e8db..10bf223 100644
--- a/chromeos-base/permission_broker-client/permission_broker-client-9999.ebuild
+++ b/chromeos-base/permission_broker-client/permission_broker-client-9999.ebuild
@@ -19,13 +19,15 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="cros_host"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies.
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
 DEPEND="
-	cros_host? ( chromeos-base/chromeos-dbus-bindings:= )
+	chromeos-base/chromeos-dbus-bindings:=
 "
 
 src_install() {
diff --git a/chromeos-base/permission_broker/OWNERS b/chromeos-base/permission_broker/OWNERS
index db7e695..9652b9b 100644
--- a/chromeos-base/permission_broker/OWNERS
+++ b/chromeos-base/permission_broker/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/permission_broker/OWNERS
diff --git a/chromeos-base/permission_broker/permission_broker-0.0.1-r3387.ebuild b/chromeos-base/permission_broker/permission_broker-0.0.1-r3501.ebuild
similarity index 69%
rename from chromeos-base/permission_broker/permission_broker-0.0.1-r3387.ebuild
rename to chromeos-base/permission_broker/permission_broker-0.0.1-r3501.ebuild
index c32d418..6ab105a 100644
--- a/chromeos-base/permission_broker/permission_broker-0.0.1-r3387.ebuild
+++ b/chromeos-base/permission_broker/permission_broker-0.0.1-r3501.ebuild
@@ -3,17 +3,21 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "033e609e1aa1b4d07f99c4c3518aeb5a245c5e26" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e74aa615248081a4161427718d8576d2a9968d5f" "da1c895f49bb84a62727ab87f0f398599a747683" "5c1598293a3b2d474abb7aafc492654f9cb521de" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk permission_broker .gn"
+CROS_WORKON_SUBTREE="common-mk net-base permission_broker featured .gn"
 
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="permission_broker"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-workon platform udev user
 
 DESCRIPTION="Permission Broker for Chromium OS"
@@ -24,18 +28,27 @@
 IUSE="cfm_enabled_device fuzzer"
 
 COMMMON_DEPEND="
+	chromeos-base/featured:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel-client:=
+	chromeos-base/system_api:=[fuzzer?]
 	sys-apps/dbus:=
 	virtual/libusb:1
-	virtual/udev
+	virtual/libudev:=
 "
 
-RDEPEND="${COMMMON_DEPEND}"
+RDEPEND="
+	${COMMMON_DEPEND}
+	virtual/udev
+"
 DEPEND="${COMMMON_DEPEND}
-	chromeos-base/system_api:=[fuzzer?]
 	sys-kernel/linux-headers:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/permission_broker/permission_broker-9999.ebuild b/chromeos-base/permission_broker/permission_broker-9999.ebuild
index cb25385..7041be8 100644
--- a/chromeos-base/permission_broker/permission_broker-9999.ebuild
+++ b/chromeos-base/permission_broker/permission_broker-9999.ebuild
@@ -7,11 +7,15 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk permission_broker .gn"
+CROS_WORKON_SUBTREE="common-mk net-base permission_broker featured .gn"
 
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="permission_broker"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-workon platform udev user
 
 DESCRIPTION="Permission Broker for Chromium OS"
@@ -22,18 +26,27 @@
 IUSE="cfm_enabled_device fuzzer"
 
 COMMMON_DEPEND="
+	chromeos-base/featured:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel-client:=
+	chromeos-base/system_api:=[fuzzer?]
 	sys-apps/dbus:=
 	virtual/libusb:1
-	virtual/udev
+	virtual/libudev:=
 "
 
-RDEPEND="${COMMMON_DEPEND}"
+RDEPEND="
+	${COMMMON_DEPEND}
+	virtual/udev
+"
 DEPEND="${COMMMON_DEPEND}
-	chromeos-base/system_api:=[fuzzer?]
 	sys-kernel/linux-headers:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/pinweaver/pinweaver-0.0.1-r190.ebuild b/chromeos-base/pinweaver/pinweaver-0.0.1-r258.ebuild
similarity index 72%
rename from chromeos-base/pinweaver/pinweaver-0.0.1-r190.ebuild
rename to chromeos-base/pinweaver/pinweaver-0.0.1-r258.ebuild
index 23a8b19..9da48ed 100644
--- a/chromeos-base/pinweaver/pinweaver-0.0.1-r190.ebuild
+++ b/chromeos-base/pinweaver/pinweaver-0.0.1-r258.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "e695b6b011775f7dbcc212fc3cecff00d3fdb431")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "e4add681f44daed1f8e13aa641e2338c3f23fd3c")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "41f3c0b526d4929ea3e54786908041ba0a7e8e2a")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "3e7b8bfb952f5efc1dcf217ebbd0a1e01374ca9c")
 inherit cros-constants
 
 CROS_WORKON_LOCALNAME=(
@@ -37,9 +37,8 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/pinweaver/+/main/"
 
 LICENSE="BSD-Google"
-SLOT="0"
 KEYWORDS="*"
-IUSE="+biometrics_dev"
+IUSE="fuzzer"
 
 RDEPEND=""
 
@@ -55,4 +54,10 @@
 	doins pinweaver.h
 	doins pinweaver_eal.h
 	doins pinweaver_types.h
+
+	local fuzzer_component_id="1188704"
+
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/pinweaver_fuzzer \
+		--comp "${fuzzer_component_id}"
 }
diff --git a/chromeos-base/pinweaver/pinweaver-9999.ebuild b/chromeos-base/pinweaver/pinweaver-9999.ebuild
index 5016842..b1fc043 100644
--- a/chromeos-base/pinweaver/pinweaver-9999.ebuild
+++ b/chromeos-base/pinweaver/pinweaver-9999.ebuild
@@ -35,9 +35,8 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/pinweaver/+/main/"
 
 LICENSE="BSD-Google"
-SLOT="0"
 KEYWORDS="~*"
-IUSE="+biometrics_dev"
+IUSE="fuzzer"
 
 RDEPEND=""
 
@@ -53,4 +52,10 @@
 	doins pinweaver.h
 	doins pinweaver_eal.h
 	doins pinweaver_types.h
+
+	local fuzzer_component_id="1188704"
+
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/pinweaver_fuzzer \
+		--comp "${fuzzer_component_id}"
 }
diff --git a/chromeos-base/policy-go-proto/OWNERS b/chromeos-base/policy-go-proto/OWNERS
index db7e695..15bb9b0 100644
--- a/chromeos-base/policy-go-proto/OWNERS
+++ b/chromeos-base/policy-go-proto/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/policy_proto/OWNERS
diff --git a/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r412.ebuild b/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r471.ebuild
similarity index 84%
rename from chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r412.ebuild
rename to chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r471.ebuild
index 0415faa..7e51471 100644
--- a/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r412.ebuild
+++ b/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r471.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "2343b73a380a93779b70b4c3099c7a86e473ab99" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "2343b73a380a93779b70b4c3099c7a86e473ab99" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_GO_PACKAGES=(
 	"chromiumos/policy/..."
 )
@@ -26,8 +26,11 @@
 DEPEND="
 	>=chromeos-base/protofiles-0.0.48:=
 	dev-go/protobuf:=
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api:=
-	dev-libs/protobuf:=
+	dev-libs/protobuf
 "
 
 src_install() {
diff --git a/chromeos-base/policy-go-proto/policy-go-proto-9999.ebuild b/chromeos-base/policy-go-proto/policy-go-proto-9999.ebuild
index d9fbda6..2c0f89c 100644
--- a/chromeos-base/policy-go-proto/policy-go-proto-9999.ebuild
+++ b/chromeos-base/policy-go-proto/policy-go-proto-9999.ebuild
@@ -24,8 +24,11 @@
 DEPEND="
 	>=chromeos-base/protofiles-0.0.48:=
 	dev-go/protobuf:=
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api:=
-	dev-libs/protobuf:=
+	dev-libs/protobuf
 "
 
 src_install() {
diff --git a/chromeos-base/policy_utils/OWNERS b/chromeos-base/policy_utils/OWNERS
index db7e695..83e595a 100644
--- a/chromeos-base/policy_utils/OWNERS
+++ b/chromeos-base/policy_utils/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/policy_utils/OWNERS
diff --git a/chromeos-base/policy_utils/policy_utils-0.0.1-r415.ebuild b/chromeos-base/policy_utils/policy_utils-0.0.1-r473.ebuild
similarity index 88%
rename from chromeos-base/policy_utils/policy_utils-0.0.1-r415.ebuild
rename to chromeos-base/policy_utils/policy_utils-0.0.1-r473.ebuild
index 97d1a5a..62c6cd0 100644
--- a/chromeos-base/policy_utils/policy_utils-0.0.1-r415.ebuild
+++ b/chromeos-base/policy_utils/policy_utils-0.0.1-r473.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "0284ccb9e26b0f3f933357beb71b64b044233d1c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "0284ccb9e26b0f3f933357beb71b64b044233d1c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
diff --git a/chromeos-base/power_manager/OWNERS b/chromeos-base/power_manager/OWNERS
index db7e695..ba85bb9 100644
--- a/chromeos-base/power_manager/OWNERS
+++ b/chromeos-base/power_manager/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/power_manager/OWNERS
diff --git a/chromeos-base/power_manager/power_manager-0.0.2-r4750.ebuild b/chromeos-base/power_manager/power_manager-0.0.2-r4980.ebuild
similarity index 61%
rename from chromeos-base/power_manager/power_manager-0.0.2-r4750.ebuild
rename to chromeos-base/power_manager/power_manager-0.0.2-r4980.ebuild
index 80e7f8d..f4e9748 100644
--- a/chromeos-base/power_manager/power_manager-0.0.2-r4750.ebuild
+++ b/chromeos-base/power_manager/power_manager-0.0.2-r4980.ebuild
@@ -2,17 +2,20 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="88a997c0584f2d03f6fc37253a8e587b08af9b21"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "da223b2a668d598e3576f36b498e8dbea518a7bb" "e5213f48c6ed0dcfb7d1410f706196c31c5dbb40" "2b162410dc0e1be38913a7e594b2bf865914baa9" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "66d9ece0c55ff21826b4962ffd402f0927467387" "9cb07ca3ec9b8c3b2c0f3a234d33e6cd79f4eb04" "f74f32e76e5f0463b8473657c06db9cbb493b16a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "5c1598293a3b2d474abb7aafc492654f9cb521de" "2d06f979d9e0b056323b2b5e529823c338f2199f" "67442b9578c0475865b147e940740e227d50027c" "4e2cac5adeeeb372be7aaa3c4f317230a7652ae8" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a" "11454ff9c2028c720e95d472e4376d20e735e34e" "d0e03da45483415bfa000f75e3a7a65193a6ff5d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_USE_VCSID="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk chromeos-config featured iioservice libec metrics mojo_service_manager power_manager shill/dbus/client .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config featured iioservice libec libsar metrics mojo_service_manager power_manager shill/dbus/client .gn"
 
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="power_manager"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit tmpfiles cros-workon cros-unibuild platform systemd udev user
 
@@ -21,27 +24,34 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="-als cellular +cras cros_embedded +display_backlight fuzzer -has_keyboard_backlight iioservice -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -powerd_manual_eventlog_add +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco qrtr"
+IUSE="-als cellular +cras cros_embedded +display_backlight fuzzer -has_keyboard_backlight iioservice iioservice_proximity -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -powerd_manual_eventlog_add +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco qrtr"
 REQUIRED_USE="
-	?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )"
+	?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )
+	unibuild
+"
 
 COMMON_DEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/featured:=
 	chromeos-base/libec:=
 	chromeos-base/libiioservice_ipc:=
+	chromeos-base/libsar:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/ml-client:=
 	chromeos-base/mojo_service_manager:=
 	chromeos-base/power_manager-client:=
 	chromeos-base/shill-dbus-client:=
 	chromeos-base/tpm_manager-client:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/libnl:=
 	dev-libs/protobuf:=
 	dev-libs/re2:=
 	cras? ( media-sound/adhd:= )
+	sys-fs/udev:=
+	virtual/libusb:=
 	virtual/udev
-	cellular? ( net-misc/modemmanager-next:= )"
+	cellular? ( net-misc/modemmanager-next:= )
+	sys-apps/dbus:="
 
 RDEPEND="${COMMON_DEPEND}
 	chromeos-base/libiioservice_ipc:=
@@ -55,6 +65,10 @@
 	qrtr? ( sys-apps/upstart:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 pkg_setup() {
 	# Create the 'power' user and group here in pkg_setup as src_install needs
 	# them to change the ownership of power manager files.
@@ -70,44 +84,9 @@
 	platform_src_install
 
 	# Binaries for production
-	dobin "${OUT}"/backlight_tool  # boot-splash, chromeos-boot-alert
-	dobin "${OUT}"/cpufreq_config
-	dobin "${OUT}"/dump_power_status  # crosh's battery_test command
-	dobin "${OUT}"/powerd
-	dobin "${OUT}"/powerd_setuid_helper
-	dobin "${OUT}"/power_supply_info  # feedback
-	dobin "${OUT}"/set_cellular_transmit_power
-	dobin "${OUT}"/set_wifi_transmit_power
 	fowners root:power /usr/bin/powerd_setuid_helper
 	fperms 4750 /usr/bin/powerd_setuid_helper
 
-	# Binaries for testing and debugging
-	dobin "${OUT}"/battery_saver
-	dobin "${OUT}"/check_powerd_config
-	use amd64 && dobin "${OUT}"/dump_intel_rapl_consumption
-	dobin "${OUT}"/inject_powerd_input_event
-	dobin "${OUT}"/memory_suspend_test
-	dobin "${OUT}"/powerd_dbus_suspend
-	dobin "${OUT}"/send_debug_power_status
-	dobin "${OUT}"/set_power_policy
-	dobin "${OUT}"/suspend_delay_sample
-
-	# Scripts for production
-	dobin powerd/powerd_suspend
-	dobin tools/print_sysfs_power_supply_data  # feedback
-	dobin tools/send_metrics_on_resume
-	dobin tools/thermal_zone_config
-
-	# Scripts for testing and debugging
-	dobin tools/activate_short_dark_resume
-	dobin tools/debug_sleep_quickly
-	dobin tools/set_short_powerd_timeouts
-	dobin tools/suspend_stress_test
-
-	# Scripts called from init scripts
-	exeinto /usr/share/cros/init/
-	doexe tools/temp_logger.sh
-
 	# Preferences
 	insinto /usr/share/power_manager
 	doins default_prefs/*
@@ -118,9 +97,6 @@
 	use legacy_power_button && doins optional_prefs/legacy_power_button
 	use powerd_manual_eventlog_add && doins optional_prefs/manual_eventlog_add
 
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.PowerManager.conf
-
 	# udev scripts and rules.
 	exeinto "$(get_udevdir)"
 	doexe udev/*.sh
@@ -140,13 +116,13 @@
 
 	if ! use touchpad_wakeup; then
 		udev_dorules udev/optional/93-powerd-tags-no-touchpad-wakeup.rules
-	elif use unibuild; then
+	else
 		udev_dorules udev/optional/93-powerd-tags-unibuild-touchpad-wakeup.rules
 	fi
 
 	if use touchscreen_wakeup; then
 		udev_dorules udev/optional/93-powerd-tags-touchscreen-wakeup.rules
-	elif use unibuild; then
+	else
 		udev_dorules udev/optional/93-powerd-tags-unibuild-touchscreen-wakeup.rules
 	fi
 
@@ -165,12 +141,9 @@
 		dotmpfiles init/systemd/powerd_directories.conf
 	else
 		insinto /etc/init
+		insopts -m0644
 		doins init/upstart/*.conf
 	fi
-	exeinto /usr/share/cros/init
-	doexe init/shared/powerd-pre-start.sh
-
-	dotmpfiles tmpfiles.d/*.conf
 
 	# Install fuzz targets.
 	local fuzzer
@@ -182,16 +155,5 @@
 }
 
 platform_pkg_test() {
-	local tests=(
-		power_manager_daemon_test
-		power_manager_policy_test
-		power_manager_system_test
-		power_manager_tools_battery_saver_test
-		power_manager_util_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
+	platform test_all
 }
diff --git a/chromeos-base/power_manager/power_manager-9999.ebuild b/chromeos-base/power_manager/power_manager-9999.ebuild
index b4a289e..389e80c 100644
--- a/chromeos-base/power_manager/power_manager-9999.ebuild
+++ b/chromeos-base/power_manager/power_manager-9999.ebuild
@@ -7,10 +7,13 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk chromeos-config featured iioservice libec metrics mojo_service_manager power_manager shill/dbus/client .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config featured iioservice libec libsar metrics mojo_service_manager power_manager shill/dbus/client .gn"
 
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="power_manager"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit tmpfiles cros-workon cros-unibuild platform systemd udev user
 
@@ -19,27 +22,34 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="-als cellular +cras cros_embedded +display_backlight fuzzer -has_keyboard_backlight iioservice -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -powerd_manual_eventlog_add +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco qrtr"
+IUSE="-als cellular +cras cros_embedded +display_backlight fuzzer -has_keyboard_backlight iioservice iioservice_proximity -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -powerd_manual_eventlog_add +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco qrtr"
 REQUIRED_USE="
-	?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )"
+	?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )
+	unibuild
+"
 
 COMMON_DEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/featured:=
 	chromeos-base/libec:=
 	chromeos-base/libiioservice_ipc:=
+	chromeos-base/libsar:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/ml-client:=
 	chromeos-base/mojo_service_manager:=
 	chromeos-base/power_manager-client:=
 	chromeos-base/shill-dbus-client:=
 	chromeos-base/tpm_manager-client:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/libnl:=
 	dev-libs/protobuf:=
 	dev-libs/re2:=
 	cras? ( media-sound/adhd:= )
+	sys-fs/udev:=
+	virtual/libusb:=
 	virtual/udev
-	cellular? ( net-misc/modemmanager-next:= )"
+	cellular? ( net-misc/modemmanager-next:= )
+	sys-apps/dbus:="
 
 RDEPEND="${COMMON_DEPEND}
 	chromeos-base/libiioservice_ipc:=
@@ -53,6 +63,10 @@
 	qrtr? ( sys-apps/upstart:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 pkg_setup() {
 	# Create the 'power' user and group here in pkg_setup as src_install needs
 	# them to change the ownership of power manager files.
@@ -68,44 +82,9 @@
 	platform_src_install
 
 	# Binaries for production
-	dobin "${OUT}"/backlight_tool  # boot-splash, chromeos-boot-alert
-	dobin "${OUT}"/cpufreq_config
-	dobin "${OUT}"/dump_power_status  # crosh's battery_test command
-	dobin "${OUT}"/powerd
-	dobin "${OUT}"/powerd_setuid_helper
-	dobin "${OUT}"/power_supply_info  # feedback
-	dobin "${OUT}"/set_cellular_transmit_power
-	dobin "${OUT}"/set_wifi_transmit_power
 	fowners root:power /usr/bin/powerd_setuid_helper
 	fperms 4750 /usr/bin/powerd_setuid_helper
 
-	# Binaries for testing and debugging
-	dobin "${OUT}"/battery_saver
-	dobin "${OUT}"/check_powerd_config
-	use amd64 && dobin "${OUT}"/dump_intel_rapl_consumption
-	dobin "${OUT}"/inject_powerd_input_event
-	dobin "${OUT}"/memory_suspend_test
-	dobin "${OUT}"/powerd_dbus_suspend
-	dobin "${OUT}"/send_debug_power_status
-	dobin "${OUT}"/set_power_policy
-	dobin "${OUT}"/suspend_delay_sample
-
-	# Scripts for production
-	dobin powerd/powerd_suspend
-	dobin tools/print_sysfs_power_supply_data  # feedback
-	dobin tools/send_metrics_on_resume
-	dobin tools/thermal_zone_config
-
-	# Scripts for testing and debugging
-	dobin tools/activate_short_dark_resume
-	dobin tools/debug_sleep_quickly
-	dobin tools/set_short_powerd_timeouts
-	dobin tools/suspend_stress_test
-
-	# Scripts called from init scripts
-	exeinto /usr/share/cros/init/
-	doexe tools/temp_logger.sh
-
 	# Preferences
 	insinto /usr/share/power_manager
 	doins default_prefs/*
@@ -116,9 +95,6 @@
 	use legacy_power_button && doins optional_prefs/legacy_power_button
 	use powerd_manual_eventlog_add && doins optional_prefs/manual_eventlog_add
 
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.PowerManager.conf
-
 	# udev scripts and rules.
 	exeinto "$(get_udevdir)"
 	doexe udev/*.sh
@@ -138,13 +114,13 @@
 
 	if ! use touchpad_wakeup; then
 		udev_dorules udev/optional/93-powerd-tags-no-touchpad-wakeup.rules
-	elif use unibuild; then
+	else
 		udev_dorules udev/optional/93-powerd-tags-unibuild-touchpad-wakeup.rules
 	fi
 
 	if use touchscreen_wakeup; then
 		udev_dorules udev/optional/93-powerd-tags-touchscreen-wakeup.rules
-	elif use unibuild; then
+	else
 		udev_dorules udev/optional/93-powerd-tags-unibuild-touchscreen-wakeup.rules
 	fi
 
@@ -163,12 +139,9 @@
 		dotmpfiles init/systemd/powerd_directories.conf
 	else
 		insinto /etc/init
+		insopts -m0644
 		doins init/upstart/*.conf
 	fi
-	exeinto /usr/share/cros/init
-	doexe init/shared/powerd-pre-start.sh
-
-	dotmpfiles tmpfiles.d/*.conf
 
 	# Install fuzz targets.
 	local fuzzer
@@ -180,16 +153,5 @@
 }
 
 platform_pkg_test() {
-	local tests=(
-		power_manager_daemon_test
-		power_manager_policy_test
-		power_manager_system_test
-		power_manager_tools_battery_saver_test
-		power_manager_util_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
+	platform test_all
 }
diff --git a/chromeos-base/print_tools/DIR_METADATA b/chromeos-base/print_tools/DIR_METADATA
new file mode 100644
index 0000000..5338dad
--- /dev/null
+++ b/chromeos-base/print_tools/DIR_METADATA
@@ -0,0 +1,27 @@
+# Metadata information for this directory.
+#
+# For more information on DIR_METADATA files, see:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md
+#
+# For the schema of this file, see Metadata message:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+
+team_email: "project-bolton@google.com"
+
+buganizer {
+  # https://b.corp.google.com/issues?q=status:open%20componentid:167231
+  # ChromeOS > Platform > Services > Printing
+  component_id: 167231
+}
+
+chromeos {
+  cq {
+    source_test_plans {
+      test_plan_starlark_files {
+        host: "chrome-internal.googlesource.com"
+        project: "chromeos/config-internal"
+        path: "test/plans/v2/ctpv1_compatible/printscan_cq.star"
+      }
+    }
+  }
+}
diff --git a/chromeos-base/print_tools/OWNERS b/chromeos-base/print_tools/OWNERS
index e356f4c..ad5f3c8 100644
--- a/chromeos-base/print_tools/OWNERS
+++ b/chromeos-base/print_tools/OWNERS
@@ -1 +1 @@
-include chromiumos/platform2:/print_tools/OWNERS
+include chromiumos/owners:v1:/printscan/OWNERS.printscan
diff --git a/chromeos-base/print_tools/print_tools-0.0.1-r350.ebuild b/chromeos-base/print_tools/print_tools-0.0.1-r410.ebuild
similarity index 72%
rename from chromeos-base/print_tools/print_tools-0.0.1-r350.ebuild
rename to chromeos-base/print_tools/print_tools-0.0.1-r410.ebuild
index ed222c9..00768d6 100644
--- a/chromeos-base/print_tools/print_tools-0.0.1-r350.ebuild
+++ b/chromeos-base/print_tools/print_tools-0.0.1-r410.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "22f28ef1b6b791229f1f07bda688d805ae4a5a76" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f5ab02c9e082f5d337591b3f6e0c0232de4d06e4" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -27,12 +27,6 @@
 RDEPEND="${COMMON_DEPEND}"
 DEPEND="${COMMON_DEPEND}"
 
-src_install() {
-	platform_src_install
-
-	dobin "${OUT}"/printer_diag
-}
-
 platform_pkg_test() {
 	platform test_all
 }
diff --git a/chromeos-base/print_tools/print_tools-9999.ebuild b/chromeos-base/print_tools/print_tools-9999.ebuild
index c534962..90d6800 100644
--- a/chromeos-base/print_tools/print_tools-9999.ebuild
+++ b/chromeos-base/print_tools/print_tools-9999.ebuild
@@ -25,12 +25,6 @@
 RDEPEND="${COMMON_DEPEND}"
 DEPEND="${COMMON_DEPEND}"
 
-src_install() {
-	platform_src_install
-
-	dobin "${OUT}"/printer_diag
-}
-
 platform_pkg_test() {
 	platform test_all
 }
diff --git a/chromeos-base/printscanmgr/DIR_METADATA b/chromeos-base/printscanmgr/DIR_METADATA
new file mode 100644
index 0000000..5338dad
--- /dev/null
+++ b/chromeos-base/printscanmgr/DIR_METADATA
@@ -0,0 +1,27 @@
+# Metadata information for this directory.
+#
+# For more information on DIR_METADATA files, see:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md
+#
+# For the schema of this file, see Metadata message:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+
+team_email: "project-bolton@google.com"
+
+buganizer {
+  # https://b.corp.google.com/issues?q=status:open%20componentid:167231
+  # ChromeOS > Platform > Services > Printing
+  component_id: 167231
+}
+
+chromeos {
+  cq {
+    source_test_plans {
+      test_plan_starlark_files {
+        host: "chrome-internal.googlesource.com"
+        project: "chromeos/config-internal"
+        path: "test/plans/v2/ctpv1_compatible/printscan_cq.star"
+      }
+    }
+  }
+}
diff --git a/chromeos-base/printscanmgr/OWNERS b/chromeos-base/printscanmgr/OWNERS
index e4e8568..ad5f3c8 100644
--- a/chromeos-base/printscanmgr/OWNERS
+++ b/chromeos-base/printscanmgr/OWNERS
@@ -1 +1 @@
-include chromiumos/platform2:/printscanmgr/OWNERS
+include chromiumos/owners:v1:/printscan/OWNERS.printscan
diff --git a/chromeos-base/printscanmgr/printscanmgr-0.0.1-r53.ebuild b/chromeos-base/printscanmgr/printscanmgr-0.0.1-r139.ebuild
similarity index 73%
rename from chromeos-base/printscanmgr/printscanmgr-0.0.1-r53.ebuild
rename to chromeos-base/printscanmgr/printscanmgr-0.0.1-r139.ebuild
index 4bc9d1a..e53a711 100644
--- a/chromeos-base/printscanmgr/printscanmgr-0.0.1-r53.ebuild
+++ b/chromeos-base/printscanmgr/printscanmgr-0.0.1-r139.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f1006ab4d9e727597a14bed38ac445aa6b7758a1" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "4bc22609fdc97e6427d7eeba5ed7862d1bf0ac13" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
@@ -24,12 +24,21 @@
 	chromeos-base/minijail:=
 "
 
-RDEPEND="${COMMON_DEPEND}
-	"
+RDEPEND="
+	${COMMON_DEPEND}
+	dev-libs/protobuf:=
+	sys-apps/dbus:=
+"
 
 DEPEND="${COMMON_DEPEND}
+	chromeos-base/lorgnette-client:=
 	chromeos-base/system_api:=[fuzzer?]
-	sys-apps/dbus:="
+"
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
 
 pkg_preinst() {
 	enewuser printscanmgr
diff --git a/chromeos-base/printscanmgr/printscanmgr-9999.ebuild b/chromeos-base/printscanmgr/printscanmgr-9999.ebuild
index 7edaedd..be6a0b2 100644
--- a/chromeos-base/printscanmgr/printscanmgr-9999.ebuild
+++ b/chromeos-base/printscanmgr/printscanmgr-9999.ebuild
@@ -22,12 +22,21 @@
 	chromeos-base/minijail:=
 "
 
-RDEPEND="${COMMON_DEPEND}
-	"
+RDEPEND="
+	${COMMON_DEPEND}
+	dev-libs/protobuf:=
+	sys-apps/dbus:=
+"
 
 DEPEND="${COMMON_DEPEND}
+	chromeos-base/lorgnette-client:=
 	chromeos-base/system_api:=[fuzzer?]
-	sys-apps/dbus:="
+"
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
 
 pkg_preinst() {
 	enewuser printscanmgr
diff --git a/chromeos-base/private_computing/private_computing-0.0.1-r69.ebuild b/chromeos-base/private_computing/private_computing-0.0.1-r129.ebuild
similarity index 80%
rename from chromeos-base/private_computing/private_computing-0.0.1-r69.ebuild
rename to chromeos-base/private_computing/private_computing-0.0.1-r129.ebuild
index ddd0af6..a1905dd 100644
--- a/chromeos-base/private_computing/private_computing-0.0.1-r69.ebuild
+++ b/chromeos-base/private_computing/private_computing-0.0.1-r129.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("35652fa4943f690c1c18660dacc0ba829808085b" "1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("620d5849e397f835191153c8a9827eb41932f7e3" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -31,6 +31,10 @@
 	sys-apps/dbus:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 src_install() {
 	platform_src_install
 	dotmpfiles tmpfiles.d/private_computing.conf
diff --git a/chromeos-base/private_computing/private_computing-9999.ebuild b/chromeos-base/private_computing/private_computing-9999.ebuild
index d5195ae..6f5c3a3 100644
--- a/chromeos-base/private_computing/private_computing-9999.ebuild
+++ b/chromeos-base/private_computing/private_computing-9999.ebuild
@@ -29,6 +29,10 @@
 	sys-apps/dbus:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 src_install() {
 	platform_src_install
 	dotmpfiles tmpfiles.d/private_computing.conf
diff --git a/chromeos-base/qc-modemfwd-helper/qc-modemfwd-helper-0.0.1-r117.ebuild b/chromeos-base/qc-modemfwd-helper/qc-modemfwd-helper-0.0.1-r183.ebuild
similarity index 80%
rename from chromeos-base/qc-modemfwd-helper/qc-modemfwd-helper-0.0.1-r117.ebuild
rename to chromeos-base/qc-modemfwd-helper/qc-modemfwd-helper-0.0.1-r183.ebuild
index 919433c..676b339 100644
--- a/chromeos-base/qc-modemfwd-helper/qc-modemfwd-helper-0.0.1-r117.ebuild
+++ b/chromeos-base/qc-modemfwd-helper/qc-modemfwd-helper-0.0.1-r183.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "606495ff2f1fd496daebebd6f9266f579711d012" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "4e0d8d2c1e2b266d16ff4c7f73fd1289f3e20cb7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/quipper/Manifest b/chromeos-base/quipper/Manifest
index 1cb3619..d7d6ee3 100644
--- a/chromeos-base/quipper/Manifest
+++ b/chromeos-base/quipper/Manifest
@@ -1 +1 @@
-DIST quipper-6563d72362da75a02f4e65533a896c2e5eb59280.tar.gz 93445360 BLAKE2B fc206592f0d5e569f6753ba2889cf438026aa964c7e6ecab93cfbe3523c0c7f7da6be0622e8d9e44f2d6fc588a8f698807e1981cbe5e3ee2df48d3df3c019ab5 SHA512 148f611f5e8f4c2d66e51c60978bd1a417f7262d7d2687dacb0f517836da0e7b371f14b530b3392d7be04b2357a780b83d016faca879b34528e85386faff60be
+DIST quipper-b1c2b82a8ec75b016c36da31c845491c75b9adae.tar.gz 93441725 BLAKE2B 1be30b69dc5cc9b3d6bfb52aa817efaa6f0b5511c1d76eb05733ef7923690dbc91be0b0bcd31215bbfc24e5391d6d6ec91d3cb9c02f30b477462efd3371670ed SHA512 4e9a1664dc4d362d680adc9428b22ce3e933636ee97967de6ea5ef2a8b7ea08633fc8eb780c0b468909f8096c04a7da12fe7077128ff51cc869446dfc1252027
diff --git a/chromeos-base/quipper/files/quipper-inject-timeout.patch b/chromeos-base/quipper/files/quipper-inject-timeout.patch
new file mode 100644
index 0000000..8ef55e3
--- /dev/null
+++ b/chromeos-base/quipper/files/quipper-inject-timeout.patch
@@ -0,0 +1,14 @@
+This is a temporary mitigation to b/276372121.
+
+diff --git a/perf_recorder.cc b/perf_recorder.cc
+index 3369f77..f901e26 100644
+--- a/perf_recorder.cc
++++ b/perf_recorder.cc
+@@ -122,6 +122,7 @@ std::vector<std::string> PerfRecorder::FullPerfCommand(
+     full_perf_args.insert(full_perf_args.end(),
+                           {"--", "sleep", time_string.str()});
+   } else {
++    full_perf_args.insert(full_perf_args.begin(), {"timeout", "3"});
+     // We use sudo for all commands and perf inject may complain about the input
+     // file is not owned by current user or root.
+     full_perf_args.emplace_back("-f");
diff --git a/chromeos-base/quipper/quipper-0.0.1-r2880.ebuild b/chromeos-base/quipper/quipper-0.0.1-r2942.ebuild
similarity index 87%
rename from chromeos-base/quipper/quipper-0.0.1-r2880.ebuild
rename to chromeos-base/quipper/quipper-0.0.1-r2942.ebuild
index 35bc60c..e4992b6 100644
--- a/chromeos-base/quipper/quipper-0.0.1-r2880.ebuild
+++ b/chromeos-base/quipper/quipper-0.0.1-r2942.ebuild
@@ -4,8 +4,8 @@
 # Don't use Makefile.external here as it fetches from the network.
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 
 CROS_WORKON_LOCALNAME="platform2"
@@ -21,7 +21,7 @@
 DESCRIPTION="quipper: chromiumos wide profiling"
 HOMEPAGE="http://www.chromium.org/chromium-os/profiling-in-chromeos"
 
-GIT_SHA1="6563d72362da75a02f4e65533a896c2e5eb59280"
+GIT_SHA1="b1c2b82a8ec75b016c36da31c845491c75b9adae"
 SRC="quipper-${GIT_SHA1}.tar.gz"
 SRC_URI="gs://chromeos-localmirror/distfiles/${SRC}"
 SRC_DIR="src/${PN}"
@@ -46,6 +46,10 @@
 	test? ( app-shells/dash )
 "
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 src_unpack() {
 	platform_src_unpack
 	mkdir "${S}"
@@ -55,6 +59,7 @@
 	mv "${SRC_DIR}"/{.[!.],}* ./ || die
 	eapply "${FILESDIR}"/quipper-disable-flaky-tests.patch
 	eapply "${FILESDIR}"/quipper-check-header.patch
+	eapply "${FILESDIR}"/quipper-inject-timeout.patch
 	popd >/dev/null || die
 }
 
diff --git a/chromeos-base/quipper/quipper-9999.ebuild b/chromeos-base/quipper/quipper-9999.ebuild
index 032f9e4..f0b7b8a 100644
--- a/chromeos-base/quipper/quipper-9999.ebuild
+++ b/chromeos-base/quipper/quipper-9999.ebuild
@@ -19,7 +19,7 @@
 DESCRIPTION="quipper: chromiumos wide profiling"
 HOMEPAGE="http://www.chromium.org/chromium-os/profiling-in-chromeos"
 
-GIT_SHA1="6563d72362da75a02f4e65533a896c2e5eb59280"
+GIT_SHA1="b1c2b82a8ec75b016c36da31c845491c75b9adae"
 SRC="quipper-${GIT_SHA1}.tar.gz"
 SRC_URI="gs://chromeos-localmirror/distfiles/${SRC}"
 SRC_DIR="src/${PN}"
@@ -44,6 +44,10 @@
 	test? ( app-shells/dash )
 "
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 src_unpack() {
 	platform_src_unpack
 	mkdir "${S}"
@@ -53,6 +57,7 @@
 	mv "${SRC_DIR}"/{.[!.],}* ./ || die
 	eapply "${FILESDIR}"/quipper-disable-flaky-tests.patch
 	eapply "${FILESDIR}"/quipper-check-header.patch
+	eapply "${FILESDIR}"/quipper-inject-timeout.patch
 	popd >/dev/null || die
 }
 
diff --git a/chromeos-base/redaction_tool/redaction_tool-0.0.1-r40.ebuild b/chromeos-base/redaction_tool/redaction_tool-0.0.1-r130.ebuild
similarity index 60%
rename from chromeos-base/redaction_tool/redaction_tool-0.0.1-r40.ebuild
rename to chromeos-base/redaction_tool/redaction_tool-0.0.1-r130.ebuild
index 10a6a20..3dd94c9 100644
--- a/chromeos-base/redaction_tool/redaction_tool-0.0.1-r40.ebuild
+++ b/chromeos-base/redaction_tool/redaction_tool-0.0.1-r130.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "649e9a45c023170ed76b2f7a94cef4fd654cc0d8")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "4fa2d11ba3f3636d2cf7a6ab3908293c03c2075e")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "652894ea880dfd0ed451f1bc16e4e428722c281b")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "2f42cfffa985d335548d2016894f5b790e46bc56")
 CROS_WORKON_PROJECT=(
 	"chromiumos/platform2"
 	"chromiumos/platform/redaction_tool"
@@ -24,7 +24,7 @@
 	"${S}/platform2/redaction_tool"
 )
 
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
+CROS_WORKON_SUBTREE=("common-mk metrics .gn" "")
 
 PLATFORM_SUBDIR="redaction_tool"
 
@@ -36,6 +36,18 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="*"
+IUSE="+cpp20"
+
+COMMON_DEPEND="
+	chromeos-base/metrics:=
+	dev-libs/re2:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/session_manager-client
+"
 
 platform_pkg_test() {
 	platform test_all
diff --git a/chromeos-base/redaction_tool/redaction_tool-9999.ebuild b/chromeos-base/redaction_tool/redaction_tool-9999.ebuild
index 7881de6..b930e95 100644
--- a/chromeos-base/redaction_tool/redaction_tool-9999.ebuild
+++ b/chromeos-base/redaction_tool/redaction_tool-9999.ebuild
@@ -22,7 +22,7 @@
 	"${S}/platform2/redaction_tool"
 )
 
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
+CROS_WORKON_SUBTREE=("common-mk metrics .gn" "")
 
 PLATFORM_SUBDIR="redaction_tool"
 
@@ -34,6 +34,18 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="~*"
+IUSE="+cpp20"
+
+COMMON_DEPEND="
+	chromeos-base/metrics:=
+	dev-libs/re2:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/session_manager-client
+"
 
 platform_pkg_test() {
 	platform test_all
diff --git a/chromeos-base/reporting-proto/reporting-proto-0.0.1-r139.ebuild b/chromeos-base/reporting-proto/reporting-proto-0.0.1-r249.ebuild
similarity index 78%
rename from chromeos-base/reporting-proto/reporting-proto-0.0.1-r139.ebuild
rename to chromeos-base/reporting-proto/reporting-proto-0.0.1-r249.ebuild
index 87c17ae..3bd350c 100644
--- a/chromeos-base/reporting-proto/reporting-proto-0.0.1-r139.ebuild
+++ b/chromeos-base/reporting-proto/reporting-proto-0.0.1-r249.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="d8222f833d8fb3fb07e719a32df25e157a07abd7"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "1e158fecf158ce21892d0c2646792a06a3e4c5bd" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "81b21cf4bc4ba6fc087d329d7bbbd30064039769" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_GO_PACKAGES=(
 	"chromiumos/reporting/..."
 )
@@ -30,8 +30,11 @@
 
 DEPEND="
 	${RDEPEND}
-	dev-go/protobuf
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 src_unpack() {
diff --git a/chromeos-base/reporting-proto/reporting-proto-9999.ebuild b/chromeos-base/reporting-proto/reporting-proto-9999.ebuild
index 051bd40..8067f4c 100644
--- a/chromeos-base/reporting-proto/reporting-proto-9999.ebuild
+++ b/chromeos-base/reporting-proto/reporting-proto-9999.ebuild
@@ -28,8 +28,11 @@
 
 DEPEND="
 	${RDEPEND}
-	dev-go/protobuf
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 src_unpack() {
diff --git a/chromeos-base/rgbkbd/rgbkbd-0.0.1-r302.ebuild b/chromeos-base/rgbkbd/rgbkbd-0.0.1-r427.ebuild
similarity index 65%
rename from chromeos-base/rgbkbd/rgbkbd-0.0.1-r302.ebuild
rename to chromeos-base/rgbkbd/rgbkbd-0.0.1-r427.ebuild
index 113e346..ffe01a2 100644
--- a/chromeos-base/rgbkbd/rgbkbd-0.0.1-r302.ebuild
+++ b/chromeos-base/rgbkbd/rgbkbd-0.0.1-r427.ebuild
@@ -3,15 +3,18 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "2b162410dc0e1be38913a7e594b2bf865914baa9" "12457839992654654c3e961b437effcbfd494567" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "67442b9578c0475865b147e940740e227d50027c" "475760c87c0b356465a77ced0cbdd6587bfb9f1d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk chromeos-config libec rgbkbd .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec rgbkbd .gn"
 CROS_WORKON_OUTOFTREE_BUILD=1
 
 PLATFORM_SUBDIR="rgbkbd"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon cros-unibuild platform tmpfiles user udev
 
@@ -27,12 +30,17 @@
 DEPEND="
 	${RDEPEND}
 	chromeos-base/chromeos-config-tools:=
-	chromeos-base/libbrillo:=
+	chromeos-base/libcrossystem:=
 	chromeos-base/libec:=
 	chromeos-base/system_api:=
 	virtual/udev
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	# Ensure that this group exists so that rgbkbd can access /dev/cros_ec.
 	enewgroup "cros_ec-access"
diff --git a/chromeos-base/rgbkbd/rgbkbd-9999.ebuild b/chromeos-base/rgbkbd/rgbkbd-9999.ebuild
index 990a008..8966171 100644
--- a/chromeos-base/rgbkbd/rgbkbd-9999.ebuild
+++ b/chromeos-base/rgbkbd/rgbkbd-9999.ebuild
@@ -6,10 +6,13 @@
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk chromeos-config libec rgbkbd .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec rgbkbd .gn"
 CROS_WORKON_OUTOFTREE_BUILD=1
 
 PLATFORM_SUBDIR="rgbkbd"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon cros-unibuild platform tmpfiles user udev
 
@@ -25,12 +28,17 @@
 DEPEND="
 	${RDEPEND}
 	chromeos-base/chromeos-config-tools:=
-	chromeos-base/libbrillo:=
+	chromeos-base/libcrossystem:=
 	chromeos-base/libec:=
 	chromeos-base/system_api:=
 	virtual/udev
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	# Ensure that this group exists so that rgbkbd can access /dev/cros_ec.
 	enewgroup "cros_ec-access"
diff --git a/chromeos-base/rmad/rmad-0.0.1-r875.ebuild b/chromeos-base/rmad/rmad-0.0.1-r1079.ebuild
similarity index 73%
rename from chromeos-base/rmad/rmad-0.0.1-r875.ebuild
rename to chromeos-base/rmad/rmad-0.0.1-r1079.ebuild
index 51ab924..ba5fe5c 100644
--- a/chromeos-base/rmad/rmad-0.0.1-r875.ebuild
+++ b/chromeos-base/rmad/rmad-0.0.1-r1079.ebuild
@@ -3,14 +3,14 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "2a99315ed493d199035f51141d31af1cff5db802" "2b162410dc0e1be38913a7e594b2bf865914baa9" "56cadd695cfe78ffe1dd01235485d645b181c844" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "66d9ece0c55ff21826b4962ffd402f0927467387" "c3e9b879fe24fb559e59f76852e9c6b8bdbc1fbe" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "0e36d9654da50d77f6c5cb72209cc649e3f5cade" "67442b9578c0475865b147e940740e227d50027c" "577d31d39eace970e22dbf9d4cda5aa2c0d1b75a" "3c167588538b9dd3054faa5a301fa17387858e60" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a" "e2089faeadf20ea1dc98f4c83eb107c638c997bb" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk chromeos-config hardware_verifier libec libmems metrics mojo_service_manager rmad .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config hardware_verifier libec libmems libsegmentation metrics mojo_service_manager rmad .gn"
 
 # Tests use /dev/loop*.
 PLATFORM_HOST_DEV_TEST="yes"
@@ -28,6 +28,7 @@
 COMMON_DEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/minijail:=
+	dev-libs/openssl:0=
 "
 
 RDEPEND="
@@ -46,6 +47,7 @@
 	chromeos-base/cryptohome-client:=
 	chromeos-base/libec:=
 	chromeos-base/libiioservice_ipc:=
+	chromeos-base/libsegmentation:=
 	chromeos-base/metrics:=
 	chromeos-base/mojo_service_manager:=
 	chromeos-base/runtime_probe-client:=
diff --git a/chromeos-base/rmad/rmad-9999.ebuild b/chromeos-base/rmad/rmad-9999.ebuild
index 525d0fe..0d44445 100644
--- a/chromeos-base/rmad/rmad-9999.ebuild
+++ b/chromeos-base/rmad/rmad-9999.ebuild
@@ -8,7 +8,7 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk chromeos-config hardware_verifier libec libmems metrics mojo_service_manager rmad .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config hardware_verifier libec libmems libsegmentation metrics mojo_service_manager rmad .gn"
 
 # Tests use /dev/loop*.
 PLATFORM_HOST_DEV_TEST="yes"
@@ -26,6 +26,7 @@
 COMMON_DEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/minijail:=
+	dev-libs/openssl:0=
 "
 
 RDEPEND="
@@ -44,6 +45,7 @@
 	chromeos-base/cryptohome-client:=
 	chromeos-base/libec:=
 	chromeos-base/libiioservice_ipc:=
+	chromeos-base/libsegmentation:=
 	chromeos-base/metrics:=
 	chromeos-base/mojo_service_manager:=
 	chromeos-base/runtime_probe-client:=
diff --git a/chromeos-base/run_oci/OWNERS b/chromeos-base/run_oci/OWNERS
index db7e695..4a49960 100644
--- a/chromeos-base/run_oci/OWNERS
+++ b/chromeos-base/run_oci/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/run_oci/OWNERS
diff --git a/chromeos-base/run_oci/run_oci-0.0.1-r1331.ebuild b/chromeos-base/run_oci/run_oci-0.0.1-r1389.ebuild
similarity index 89%
rename from chromeos-base/run_oci/run_oci-0.0.1-r1331.ebuild
rename to chromeos-base/run_oci/run_oci-0.0.1-r1389.ebuild
index d79a5c5..a1e58a9 100644
--- a/chromeos-base/run_oci/run_oci-0.0.1-r1331.ebuild
+++ b/chromeos-base/run_oci/run_oci-0.0.1-r1389.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "709a41e5e595b1ec20189cdc9912091ca7d8e048" "8fe586809b6f0b0400057d70e801e30e3e2f2b07" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "709a41e5e595b1ec20189cdc9912091ca7d8e048" "8fe586809b6f0b0400057d70e801e30e3e2f2b07" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
diff --git a/chromeos-base/runtime_probe-client/runtime_probe-client-0.0.1-r163.ebuild b/chromeos-base/runtime_probe-client/runtime_probe-client-0.0.1-r240.ebuild
similarity index 68%
rename from chromeos-base/runtime_probe-client/runtime_probe-client-0.0.1-r163.ebuild
rename to chromeos-base/runtime_probe-client/runtime_probe-client-0.0.1-r240.ebuild
index df5198f..97b91cc 100644
--- a/chromeos-base/runtime_probe-client/runtime_probe-client-0.0.1-r163.ebuild
+++ b/chromeos-base/runtime_probe-client/runtime_probe-client-0.0.1-r240.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "2e3445a27c1de907606469cb96a391a0630e5fd2" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "bca396820264795b2925f1b6a51e996a279bdc31" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
@@ -24,14 +24,20 @@
 KEYWORDS="*"
 IUSE=""
 
-RDEPEND="
-	chromeos-base/runtime_probe
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
 "
 
-BDEPEND="
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
 	chromeos-base/chromeos-dbus-bindings:=
 "
 
+RDEPEND="
+	chromeos-base/runtime_probe
+"
+
 src_install() {
 	platform_src_install
 	platform_install_dbus_client_lib "runtime_probe"
diff --git a/chromeos-base/runtime_probe-client/runtime_probe-client-9999.ebuild b/chromeos-base/runtime_probe-client/runtime_probe-client-9999.ebuild
index 2302bbf..c2388a0 100644
--- a/chromeos-base/runtime_probe-client/runtime_probe-client-9999.ebuild
+++ b/chromeos-base/runtime_probe-client/runtime_probe-client-9999.ebuild
@@ -22,14 +22,20 @@
 KEYWORDS="~*"
 IUSE=""
 
-RDEPEND="
-	chromeos-base/runtime_probe
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
 "
 
-BDEPEND="
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="
 	chromeos-base/chromeos-dbus-bindings:=
 "
 
+RDEPEND="
+	chromeos-base/runtime_probe
+"
+
 src_install() {
 	platform_src_install
 	platform_install_dbus_client_lib "runtime_probe"
diff --git a/chromeos-base/runtime_probe/runtime_probe-0.0.1-r1132.ebuild b/chromeos-base/runtime_probe/runtime_probe-0.0.1-r1270.ebuild
similarity index 69%
rename from chromeos-base/runtime_probe/runtime_probe-0.0.1-r1132.ebuild
rename to chromeos-base/runtime_probe/runtime_probe-0.0.1-r1270.ebuild
index 0a5cbf5..5ccff93 100644
--- a/chromeos-base/runtime_probe/runtime_probe-0.0.1-r1132.ebuild
+++ b/chromeos-base/runtime_probe/runtime_probe-0.0.1-r1270.ebuild
@@ -3,13 +3,13 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f2431337126663ce80d01b13755ed940d700e70a" "b6a499afe15c70520c73109f5587bd28f50964fa" "2b162410dc0e1be38913a7e594b2bf865914baa9" "2e3445a27c1de907606469cb96a391a0630e5fd2" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9942607d3de36a375711502f44f44d28aac7bd3a" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "67442b9578c0475865b147e940740e227d50027c" "bca396820264795b2925f1b6a51e996a279bdc31" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec runtime_probe .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec runtime_probe mojo_service_manager .gn"
 
 PLATFORM_SUBDIR="runtime_probe"
 
@@ -26,11 +26,15 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cros-camera-libs:=
 	chromeos-base/debugd-client:=
+	chromeos-base/diagnostics:=
 	chromeos-base/libcrossystem:=
 	chromeos-base/libec:=
+	chromeos-base/mojo_service_manager:=
 	chromeos-base/shill-client:=
 	dev-libs/libpcre:=
+	dev-libs/protobuf:=
 	media-libs/minigbm:=
+	virtual/libusb:=
 "
 
 RDEPEND="${COMMON_DEPEND}"
@@ -39,6 +43,11 @@
 	chromeos-base/system_api:=[fuzzer?]
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	# Create user and group for runtime_probe
 	enewuser "runtime_probe"
diff --git a/chromeos-base/runtime_probe/runtime_probe-9999.ebuild b/chromeos-base/runtime_probe/runtime_probe-9999.ebuild
index 06a7adf..67b1dc1 100644
--- a/chromeos-base/runtime_probe/runtime_probe-9999.ebuild
+++ b/chromeos-base/runtime_probe/runtime_probe-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec runtime_probe .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config libcrossystem libec runtime_probe mojo_service_manager .gn"
 
 PLATFORM_SUBDIR="runtime_probe"
 
@@ -24,11 +24,15 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cros-camera-libs:=
 	chromeos-base/debugd-client:=
+	chromeos-base/diagnostics:=
 	chromeos-base/libcrossystem:=
 	chromeos-base/libec:=
+	chromeos-base/mojo_service_manager:=
 	chromeos-base/shill-client:=
 	dev-libs/libpcre:=
+	dev-libs/protobuf:=
 	media-libs/minigbm:=
+	virtual/libusb:=
 "
 
 RDEPEND="${COMMON_DEPEND}"
@@ -37,6 +41,11 @@
 	chromeos-base/system_api:=[fuzzer?]
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	# Create user and group for runtime_probe
 	enewuser "runtime_probe"
diff --git a/chromeos-base/screen-capture-utils/OWNERS b/chromeos-base/screen-capture-utils/OWNERS
index db7e695..d2f632e 100644
--- a/chromeos-base/screen-capture-utils/OWNERS
+++ b/chromeos-base/screen-capture-utils/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/screen-capture-utils/OWNERS
diff --git a/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r342.ebuild b/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r405.ebuild
similarity index 85%
rename from chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r342.ebuild
rename to chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r405.ebuild
index a411176..4be510e 100644
--- a/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r342.ebuild
+++ b/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r405.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "8fabd02d254cf4cd5e1fc23d7727d20e511f1249" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9cbb23f69160872ffa3a94bd972615a4d4cd0067" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_SUBTREE="common-mk screen-capture-utils .gn"
diff --git a/chromeos-base/secagentd/secagentd-0.0.1-r181.ebuild b/chromeos-base/secagentd/secagentd-0.0.1-r181.ebuild
deleted file mode 100644
index fe27ede..0000000
--- a/chromeos-base/secagentd/secagentd-0.0.1-r181.ebuild
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2022 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "9bfdd9cb6b8f6262a4a7d760d1f51f213b1e85f5" "da223b2a668d598e3576f36b498e8dbea518a7bb" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-#TODO(b/272132524): Remove featured.
-CROS_WORKON_SUBTREE="common-mk secagentd featured .gn"
-
-PLATFORM_SUBDIR="secagentd"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Enterprise security event reporting."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/secagentd/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+secagentd_min_core_btf proto_force_optimize_speed"
-
-COMMON_DEPEND="
-	chromeos-base/attestation-client:=
-	chromeos-base/featured:=
-	chromeos-base/missive:=
-	chromeos-base/tpm_manager-client:=
-	chromeos-base/vboot_reference:=
-	>=dev-libs/libbpf-0.8.1
-"
-
-RDEPEND="${COMMON_DEPEND}
-	>=sys-process/audit-3.0
-"
-
-# Depending on linux-sources makes it so vmlinux is available on the board
-# build root. This is needed so bpftool can generate vmlinux.h at build time.
-DEPEND="${COMMON_DEPEND}
-	virtual/linux-sources:=
-	virtual/pkgconfig:=
-"
-
-# bpftool is needed in the SDK to generate C code skeletons from compiled BPF applications.
-# pahole is needed in the SDK to generate vmlinux.h and detached BTFs.
-BDEPEND="
-	dev-util/bpftool:=
-	dev-util/pahole:=
-"
-
-pkg_setup() {
-	enewuser "secagentd"
-	enewgroup "secagentd"
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	platform_src_install
-
-	dosbin "${OUT}"/secagentd
-	if use secagentd_min_core_btf; then
-		insinto /usr/share/btf/secagentd
-		doins "${OUT}"/gen/btf/*.min.btf
-	fi
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/secagentd_testrunner"
-}
diff --git a/chromeos-base/secagentd/secagentd-0.0.1-r311.ebuild b/chromeos-base/secagentd/secagentd-0.0.1-r311.ebuild
new file mode 100644
index 0000000..7fe8228
--- /dev/null
+++ b/chromeos-base/secagentd/secagentd-0.0.1-r311.ebuild
@@ -0,0 +1,97 @@
+# Copyright 2022 The ChromiumOS Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+EAPI=7
+CROS_WORKON_COMMIT="63150342c81b7d2c6e55b02852c0837a782f27f6"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "2951cc414747c37d82fc61f67e24aec6cd522c1c" "5c1598293a3b2d474abb7aafc492654f9cb521de" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+#TODO(b/272132524): Remove featured.
+CROS_WORKON_SUBTREE="common-mk secagentd featured .gn"
+
+PLATFORM_SUBDIR="secagentd"
+
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Enterprise security event reporting."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/secagentd/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+secagentd_min_core_btf proto_force_optimize_speed kernel-5_10 kernel-5_15"
+
+COMMON_DEPEND="
+	chromeos-base/attestation-client:=
+	chromeos-base/cryptohome-client:=
+	chromeos-base/featured:=
+	chromeos-base/metrics:=
+	chromeos-base/missive:=
+	chromeos-base/session_manager-client:=
+	chromeos-base/shill-dbus-client:=
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=
+	chromeos-base/tpm_manager-client:=
+	chromeos-base/vboot_reference:=
+	dev-cpp/abseil-cpp:=
+	dev-libs/openssl:0=
+	dev-libs/re2:=
+	dev-libs/protobuf:=
+	>=dev-libs/libbpf-0.8.1
+"
+
+# RDepending on linux-sources makes it so that the min BTFs are rebuilt (if
+# applicable) once when any kernel source is updated.
+RDEPEND="${COMMON_DEPEND}
+	>=sys-process/audit-3.0
+	secagentd_min_core_btf? (
+		virtual/linux-sources:=
+	)
+"
+
+# Depending on linux-sources makes it so vmlinux is available on the board
+# build root. This is needed so bpftool can generate vmlinux.h at build time.
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/protofiles:=
+	virtual/linux-sources:=
+	virtual/pkgconfig:=
+"
+
+# bpftool is needed in the SDK to generate C code skeletons from compiled BPF applications.
+# pahole is needed in the SDK to generate vmlinux.h and detached BTFs.
+BDEPEND="
+	dev-libs/protobuf
+	dev-util/bpftool:=
+	dev-util/pahole:=
+"
+
+pkg_setup() {
+	enewuser "secagentd"
+	enewgroup "secagentd"
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	platform_src_install
+
+	dosbin "${OUT}"/secagentd
+	if use secagentd_min_core_btf; then
+		insinto /usr/share/btf/secagentd
+		doins "${OUT}"/gen/btf/*.min.btf
+	fi
+
+	# Daemon store is used to store the device user's ID.
+	local daemon_store="/etc/daemon-store/secagentd"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners secagentd:secagentd "${daemon_store}"
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/secagentd_testrunner"
+}
diff --git a/chromeos-base/secagentd/secagentd-9999.ebuild b/chromeos-base/secagentd/secagentd-9999.ebuild
index a779f15..24fe1c4 100644
--- a/chromeos-base/secagentd/secagentd-9999.ebuild
+++ b/chromeos-base/secagentd/secagentd-9999.ebuild
@@ -12,30 +12,50 @@
 
 PLATFORM_SUBDIR="secagentd"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-workon platform user
 
 DESCRIPTION="Enterprise security event reporting."
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/secagentd/"
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="+secagentd_min_core_btf proto_force_optimize_speed"
+IUSE="+secagentd_min_core_btf proto_force_optimize_speed kernel-5_10 kernel-5_15"
 
 COMMON_DEPEND="
 	chromeos-base/attestation-client:=
+	chromeos-base/cryptohome-client:=
 	chromeos-base/featured:=
+	chromeos-base/metrics:=
 	chromeos-base/missive:=
+	chromeos-base/session_manager-client:=
+	chromeos-base/shill-dbus-client:=
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=
 	chromeos-base/tpm_manager-client:=
 	chromeos-base/vboot_reference:=
+	dev-cpp/abseil-cpp:=
+	dev-libs/openssl:0=
+	dev-libs/re2:=
+	dev-libs/protobuf:=
 	>=dev-libs/libbpf-0.8.1
 "
 
+# RDepending on linux-sources makes it so that the min BTFs are rebuilt (if
+# applicable) once when any kernel source is updated.
 RDEPEND="${COMMON_DEPEND}
 	>=sys-process/audit-3.0
+	secagentd_min_core_btf? (
+		virtual/linux-sources:=
+	)
 "
 
 # Depending on linux-sources makes it so vmlinux is available on the board
 # build root. This is needed so bpftool can generate vmlinux.h at build time.
 DEPEND="${COMMON_DEPEND}
+	chromeos-base/protofiles:=
 	virtual/linux-sources:=
 	virtual/pkgconfig:=
 "
@@ -43,6 +63,7 @@
 # bpftool is needed in the SDK to generate C code skeletons from compiled BPF applications.
 # pahole is needed in the SDK to generate vmlinux.h and detached BTFs.
 BDEPEND="
+	dev-libs/protobuf
 	dev-util/bpftool:=
 	dev-util/pahole:=
 "
@@ -61,6 +82,12 @@
 		insinto /usr/share/btf/secagentd
 		doins "${OUT}"/gen/btf/*.min.btf
 	fi
+
+	# Daemon store is used to store the device user's ID.
+	local daemon_store="/etc/daemon-store/secagentd"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners secagentd:secagentd "${daemon_store}"
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/secanomalyd/secanomalyd-0.0.1-r405.ebuild b/chromeos-base/secanomalyd/secanomalyd-0.0.1-r514.ebuild
similarity index 67%
rename from chromeos-base/secanomalyd/secanomalyd-0.0.1-r405.ebuild
rename to chromeos-base/secanomalyd/secanomalyd-0.0.1-r514.ebuild
index e5e9e6b..7d172d0 100644
--- a/chromeos-base/secanomalyd/secanomalyd-0.0.1-r405.ebuild
+++ b/chromeos-base/secanomalyd/secanomalyd-0.0.1-r514.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "cb30f6f4f691f679a744c23c18b4f837be5656c3" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "6fe97cda7c4f85b5807d49b6eb4d5ebada15948e" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
@@ -23,6 +23,7 @@
 COMMON_DEPEND="
 	chromeos-base/metrics:=
 	chromeos-base/vboot_reference:=
+	dev-libs/re2:=
 "
 RDEPEND="${COMMON_DEPEND}
 	chromeos-base/minijail:=
@@ -38,16 +39,6 @@
 	cros-workon_pkg_setup
 }
 
-src_install() {
-	platform_src_install
-
-	dosbin "${OUT}"/secanomalyd
-
-	# Install Upstart configuration.
-	insinto /etc/init
-	doins secanomalyd.conf
-}
-
 platform_pkg_test() {
-	platform_test "run" "${OUT}/secanomalyd_testrunner"
+	platform test_all
 }
diff --git a/chromeos-base/secanomalyd/secanomalyd-9999.ebuild b/chromeos-base/secanomalyd/secanomalyd-9999.ebuild
index 1fa2b08..aeb5256 100644
--- a/chromeos-base/secanomalyd/secanomalyd-9999.ebuild
+++ b/chromeos-base/secanomalyd/secanomalyd-9999.ebuild
@@ -21,6 +21,7 @@
 COMMON_DEPEND="
 	chromeos-base/metrics:=
 	chromeos-base/vboot_reference:=
+	dev-libs/re2:=
 "
 RDEPEND="${COMMON_DEPEND}
 	chromeos-base/minijail:=
@@ -36,16 +37,6 @@
 	cros-workon_pkg_setup
 }
 
-src_install() {
-	platform_src_install
-
-	dosbin "${OUT}"/secanomalyd
-
-	# Install Upstart configuration.
-	insinto /etc/init
-	doins secanomalyd.conf
-}
-
 platform_pkg_test() {
-	platform_test "run" "${OUT}/secanomalyd_testrunner"
+	platform test_all
 }
diff --git a/chromeos-base/secure-erase-file/OWNERS b/chromeos-base/secure-erase-file/OWNERS
index db7e695..b67eec7 100644
--- a/chromeos-base/secure-erase-file/OWNERS
+++ b/chromeos-base/secure-erase-file/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/secure_erase_file/OWNERS
diff --git a/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r1131.ebuild b/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r1189.ebuild
similarity index 83%
rename from chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r1131.ebuild
rename to chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r1189.ebuild
index 608e34d..2280a98 100644
--- a/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r1131.ebuild
+++ b/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r1189.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "585af077146f2e4daaaec14eb5814cd8507e862c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "585af077146f2e4daaaec14eb5814cd8507e862c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/secure-wipe/OWNERS b/chromeos-base/secure-wipe/OWNERS
index db7e695..1eb5838 100644
--- a/chromeos-base/secure-wipe/OWNERS
+++ b/chromeos-base/secure-wipe/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/secure-wipe/OWNERS
diff --git a/chromeos-base/secure-wipe/secure-wipe-0.0.1-r351.ebuild b/chromeos-base/secure-wipe/secure-wipe-0.0.1-r409.ebuild
similarity index 88%
rename from chromeos-base/secure-wipe/secure-wipe-0.0.1-r351.ebuild
rename to chromeos-base/secure-wipe/secure-wipe-0.0.1-r409.ebuild
index fc13d13..5791bea 100644
--- a/chromeos-base/secure-wipe/secure-wipe-0.0.1-r351.ebuild
+++ b/chromeos-base/secure-wipe/secure-wipe-0.0.1-r409.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c6ea5693096bd64b7cd39b26ffadf3cb52a1914b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "c6ea5693096bd64b7cd39b26ffadf3cb52a1914b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD="1"
diff --git a/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r1465.ebuild b/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r1772.ebuild
similarity index 76%
rename from chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r1465.ebuild
rename to chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r1772.ebuild
index 1f56e0e..495068a 100644
--- a/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r1465.ebuild
+++ b/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r1772.ebuild
@@ -3,13 +3,13 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "3e0f1d92c5c9152a5fa861254a1a9b447d2b0c71" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e74aa615248081a4161427718d8576d2a9968d5f" "f5d1fb3224b3787945b343084fbd5397a2e97ed7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk shill .gn"
+CROS_WORKON_SUBTREE="common-mk net-base shill .gn"
 
 PLATFORM_SUBDIR="shill/dbus/client"
 
@@ -24,6 +24,7 @@
 IUSE=""
 
 DEPEND="
+	chromeos-base/net-base:=
 	chromeos-base/system_api:=
 	chromeos-base/shill-client:=
 	chromeos-base/shill-net
diff --git a/chromeos-base/shill-dbus-client/shill-dbus-client-9999.ebuild b/chromeos-base/shill-dbus-client/shill-dbus-client-9999.ebuild
index ab1fbcd..3d293ac 100644
--- a/chromeos-base/shill-dbus-client/shill-dbus-client-9999.ebuild
+++ b/chromeos-base/shill-dbus-client/shill-dbus-client-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk shill .gn"
+CROS_WORKON_SUBTREE="common-mk net-base shill .gn"
 
 PLATFORM_SUBDIR="shill/dbus/client"
 
@@ -22,6 +22,7 @@
 IUSE=""
 
 DEPEND="
+	chromeos-base/net-base:=
 	chromeos-base/system_api:=
 	chromeos-base/shill-client:=
 	chromeos-base/shill-net
diff --git a/chromeos-base/shill-net/shill-net-0.0.1-r1540.ebuild b/chromeos-base/shill-net/shill-net-0.0.1-r1848.ebuild
similarity index 76%
rename from chromeos-base/shill-net/shill-net-0.0.1-r1540.ebuild
rename to chromeos-base/shill-net/shill-net-0.0.1-r1848.ebuild
index f488cb9..5ec5d0d 100644
--- a/chromeos-base/shill-net/shill-net-0.0.1-r1540.ebuild
+++ b/chromeos-base/shill-net/shill-net-0.0.1-r1848.ebuild
@@ -3,13 +3,13 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "3e0f1d92c5c9152a5fa861254a1a9b447d2b0c71" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e74aa615248081a4161427718d8576d2a9968d5f" "f5d1fb3224b3787945b343084fbd5397a2e97ed7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk shill .gn"
+CROS_WORKON_SUBTREE="common-mk net-base shill .gn"
 
 PLATFORM_SUBDIR="shill/net"
 
@@ -23,10 +23,16 @@
 KEYWORDS="*"
 IUSE="fuzzer"
 
+COMMON_DEPEND="
+	chromeos-base/minijail:=
+	chromeos-base/net-base:=
+"
 DEPEND="
+	${COMMON_DEPEND}
 	dev-libs/re2:=
 "
 RDEPEND="
+	${COMMON_DEPEND}
 	!<chromeos-base/shill-0.0.5
 "
 
@@ -43,8 +49,6 @@
 	local platform_wifi_component_id="893827"
 
 	# These each have different listed component ids.
-	platform_fuzzer_install "${S}"/../OWNERS "${OUT}/ip_address_fuzzer" \
-		--comp "${platform_network_component_id}"
 	platform_fuzzer_install "${S}"/../OWNERS "${OUT}/netlink_attribute_list_fuzzer" \
 		--comp "${platform_network_component_id}"
 	platform_fuzzer_install "${S}"/../OWNERS "${OUT}/nl80211_message_fuzzer" \
diff --git a/chromeos-base/shill-net/shill-net-9999.ebuild b/chromeos-base/shill-net/shill-net-9999.ebuild
index 1def5ac..ce9d020 100644
--- a/chromeos-base/shill-net/shill-net-9999.ebuild
+++ b/chromeos-base/shill-net/shill-net-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk shill .gn"
+CROS_WORKON_SUBTREE="common-mk net-base shill .gn"
 
 PLATFORM_SUBDIR="shill/net"
 
@@ -21,10 +21,16 @@
 KEYWORDS="~*"
 IUSE="fuzzer"
 
+COMMON_DEPEND="
+	chromeos-base/minijail:=
+	chromeos-base/net-base:=
+"
 DEPEND="
+	${COMMON_DEPEND}
 	dev-libs/re2:=
 "
 RDEPEND="
+	${COMMON_DEPEND}
 	!<chromeos-base/shill-0.0.5
 "
 
@@ -41,8 +47,6 @@
 	local platform_wifi_component_id="893827"
 
 	# These each have different listed component ids.
-	platform_fuzzer_install "${S}"/../OWNERS "${OUT}/ip_address_fuzzer" \
-		--comp "${platform_network_component_id}"
 	platform_fuzzer_install "${S}"/../OWNERS "${OUT}/netlink_attribute_list_fuzzer" \
 		--comp "${platform_network_component_id}"
 	platform_fuzzer_install "${S}"/../OWNERS "${OUT}/nl80211_message_fuzzer" \
diff --git a/chromeos-base/shill/shill-0.0.5-r3976.ebuild b/chromeos-base/shill/shill-0.0.5-r4347.ebuild
similarity index 88%
rename from chromeos-base/shill/shill-0.0.5-r3976.ebuild
rename to chromeos-base/shill/shill-0.0.5-r4347.ebuild
index fb0ba8b..8083d14 100644
--- a/chromeos-base/shill/shill-0.0.5-r3976.ebuild
+++ b/chromeos-base/shill/shill-0.0.5-r4347.ebuild
@@ -3,16 +3,19 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="89ccff35e79a0d7ba46339b9364d496eb35c58d1"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "859ba3422589c5109a1952a54081d12b3c218b8a" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "3e0f1d92c5c9152a5fa861254a1a9b447d2b0c71" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "66d9ece0c55ff21826b4962ffd402f0927467387")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e83be5edf8be7a36d9035ec4c15671caa7d5ff56" "9942607d3de36a375711502f44f44d28aac7bd3a" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "e74aa615248081a4161427718d8576d2a9968d5f" "f5d1fb3224b3787945b343084fbd5397a2e97ed7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk chaps libpasswordprovider metrics shill .gn mojo_service_manager"
+CROS_WORKON_SUBTREE="common-mk chaps chromeos-config libpasswordprovider metrics net-base shill .gn mojo_service_manager"
 
 PLATFORM_SUBDIR="shill"
+# Do not run test parallelly for shill. See b/293995835.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform systemd tmpfiles udev user
 
@@ -27,7 +30,9 @@
 COMMON_DEPEND="
 	chromeos-base/bootstat:=
 	chromeos-base/chaps:=
+	chromeos-base/chromeos-config-tools:=
 	chromeos-base/minijail:=
+	chromeos-base/net-base:=
 	chromeos-base/libpasswordprovider:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/mojo_service_manager:=
@@ -38,9 +43,10 @@
 	cellular? ( net-dialup/ppp:= )
 	vpn? ( net-dialup/ppp:= )
 	net-dns/c-ares:=
-	net-libs/libtirpc:=
 	virtual/wpa_supplicant
+	sys-apps/dbus:=
 	sys-apps/rootdev:=
+	sys-apps/util-linux:=
 "
 
 RDEPEND="${COMMON_DEPEND}
@@ -60,6 +66,11 @@
 "
 PDEPEND="chromeos-base/patchpanel"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	enewgroup "shill"
 	enewuser "shill"
@@ -141,7 +152,6 @@
 	if use cellular; then
 		insinto /usr/share/shill
 		doins "${OUT}"/serviceproviders.pbf
-		doins "${OUT}"/tethering_experimental.pbf
 		insinto /usr/share/protofiles
 		doins "${S}/mobile_operator_db/mobile_operator_db.proto"
 	fi
diff --git a/chromeos-base/shill/shill-9999.ebuild b/chromeos-base/shill/shill-9999.ebuild
index a9c8372..3394257 100644
--- a/chromeos-base/shill/shill-9999.ebuild
+++ b/chromeos-base/shill/shill-9999.ebuild
@@ -8,9 +8,12 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk chaps libpasswordprovider metrics shill .gn mojo_service_manager"
+CROS_WORKON_SUBTREE="common-mk chaps chromeos-config libpasswordprovider metrics net-base shill .gn mojo_service_manager"
 
 PLATFORM_SUBDIR="shill"
+# Do not run test parallelly for shill. See b/293995835.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform systemd tmpfiles udev user
 
@@ -25,7 +28,9 @@
 COMMON_DEPEND="
 	chromeos-base/bootstat:=
 	chromeos-base/chaps:=
+	chromeos-base/chromeos-config-tools:=
 	chromeos-base/minijail:=
+	chromeos-base/net-base:=
 	chromeos-base/libpasswordprovider:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/mojo_service_manager:=
@@ -36,9 +41,10 @@
 	cellular? ( net-dialup/ppp:= )
 	vpn? ( net-dialup/ppp:= )
 	net-dns/c-ares:=
-	net-libs/libtirpc:=
 	virtual/wpa_supplicant
+	sys-apps/dbus:=
 	sys-apps/rootdev:=
+	sys-apps/util-linux:=
 "
 
 RDEPEND="${COMMON_DEPEND}
@@ -58,6 +64,11 @@
 "
 PDEPEND="chromeos-base/patchpanel"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	enewgroup "shill"
 	enewuser "shill"
@@ -139,7 +150,6 @@
 	if use cellular; then
 		insinto /usr/share/shill
 		doins "${OUT}"/serviceproviders.pbf
-		doins "${OUT}"/tethering_experimental.pbf
 		insinto /usr/share/protofiles
 		doins "${S}/mobile_operator_db/mobile_operator_db.proto"
 	fi
diff --git a/chromeos-base/smbfs/OWNERS b/chromeos-base/smbfs/OWNERS
index db7e695..1261db2 100644
--- a/chromeos-base/smbfs/OWNERS
+++ b/chromeos-base/smbfs/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/smbfs/OWNERS
diff --git a/chromeos-base/smbfs/smbfs-0.0.1-r440.ebuild b/chromeos-base/smbfs/smbfs-0.0.1-r504.ebuild
similarity index 81%
rename from chromeos-base/smbfs/smbfs-0.0.1-r440.ebuild
rename to chromeos-base/smbfs/smbfs-0.0.1-r504.ebuild
index 7f84c82..55b1f98 100644
--- a/chromeos-base/smbfs/smbfs-0.0.1-r440.ebuild
+++ b/chromeos-base/smbfs/smbfs-0.0.1-r504.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "2d35bb62ab011b4878b494d24cf5e26cb0d9ebc1" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "f978288eedfb8e8ad98713f0377b6937191decd3" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -24,8 +24,9 @@
 KEYWORDS="*"
 
 COMMON_DEPEND="
-	=sys-fs/fuse-2.9*:=
+	dev-libs/protobuf:=
 	net-fs/samba:=
+	=sys-fs/fuse-2.9*:=
 "
 
 RDEPEND="${COMMON_DEPEND}"
@@ -35,6 +36,10 @@
 	chromeos-base/libpasswordprovider:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs <daemon_user> and <daemon_group>.
diff --git a/chromeos-base/smbfs/smbfs-9999.ebuild b/chromeos-base/smbfs/smbfs-9999.ebuild
index d0565f1..d9e95c1 100644
--- a/chromeos-base/smbfs/smbfs-9999.ebuild
+++ b/chromeos-base/smbfs/smbfs-9999.ebuild
@@ -22,8 +22,9 @@
 KEYWORDS="~*"
 
 COMMON_DEPEND="
-	=sys-fs/fuse-2.9*:=
+	dev-libs/protobuf:=
 	net-fs/samba:=
+	=sys-fs/fuse-2.9*:=
 "
 
 RDEPEND="${COMMON_DEPEND}"
@@ -33,6 +34,10 @@
 	chromeos-base/libpasswordprovider:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs <daemon_user> and <daemon_group>.
diff --git a/chromeos-base/smbprovider/OWNERS b/chromeos-base/smbprovider/OWNERS
index db7e695..ec09fb2 100644
--- a/chromeos-base/smbprovider/OWNERS
+++ b/chromeos-base/smbprovider/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/smbprovider/OWNERS
diff --git a/chromeos-base/smbprovider/smbprovider-0.0.1-r943.ebuild b/chromeos-base/smbprovider/smbprovider-0.0.1-r1005.ebuild
similarity index 81%
rename from chromeos-base/smbprovider/smbprovider-0.0.1-r943.ebuild
rename to chromeos-base/smbprovider/smbprovider-0.0.1-r1005.ebuild
index c515cfd..a4bbaf4 100644
--- a/chromeos-base/smbprovider/smbprovider-0.0.1-r943.ebuild
+++ b/chromeos-base/smbprovider/smbprovider-0.0.1-r1005.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "82e0a050057e2365328f875f59c827a6c07a6bcf" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "e8b1b53ac4aea205cedd62a2fb73fe10fca04b95" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -39,6 +39,11 @@
 	chromeos-base/libpasswordprovider:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs smbproviderd:smbproviderd.
diff --git a/chromeos-base/smbprovider/smbprovider-9999.ebuild b/chromeos-base/smbprovider/smbprovider-9999.ebuild
index 713b2e7..2983ae8 100644
--- a/chromeos-base/smbprovider/smbprovider-9999.ebuild
+++ b/chromeos-base/smbprovider/smbprovider-9999.ebuild
@@ -37,6 +37,11 @@
 	chromeos-base/libpasswordprovider:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs smbproviderd:smbproviderd.
diff --git a/chromeos-base/sommelier/sommelier-0.0.1-r463.ebuild b/chromeos-base/sommelier/sommelier-0.0.1-r552.ebuild
similarity index 91%
rename from chromeos-base/sommelier/sommelier-0.0.1-r463.ebuild
rename to chromeos-base/sommelier/sommelier-0.0.1-r552.ebuild
index 9e392ac..e9e35d2 100644
--- a/chromeos-base/sommelier/sommelier-0.0.1-r463.ebuild
+++ b/chromeos-base/sommelier/sommelier-0.0.1-r552.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="76741400c5c0e74bf39bb2fbcc944b3f8356179c"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "49773306fb85a7a0601f6cb33d5e87e910844ad3" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "cc392a419c736a744509c4ac2d6f9efee7b27abd" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/spaced/spaced-0.0.1-r528.ebuild b/chromeos-base/spaced/spaced-0.0.1-r730.ebuild
similarity index 74%
rename from chromeos-base/spaced/spaced-0.0.1-r528.ebuild
rename to chromeos-base/spaced/spaced-0.0.1-r730.ebuild
index f40edb4..c8acc69 100644
--- a/chromeos-base/spaced/spaced-0.0.1-r528.ebuild
+++ b/chromeos-base/spaced/spaced-0.0.1-r730.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="89ccff35e79a0d7ba46339b9364d496eb35c58d1"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "136234c73d08340bd5c0f9edba6797b4d7ee4218" "6c90099ac14f834f71c81a3bfd87cc761be8f863" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="63150342c81b7d2c6e55b02852c0837a782f27f6"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "d052bf0047bb66e913823ec7c29ffdd334428418" "77e4caa9f948914a0566ea295df91f90b7c821d6" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
@@ -22,10 +22,20 @@
 KEYWORDS="*"
 IUSE="+seccomp"
 
+RDEPEND="
+	dev-libs/protobuf:=
+	sys-apps/rootdev:=
+"
 DEPEND="
+	${RDEPEND}
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser "spaced"
 	enewgroup "spaced"
diff --git a/chromeos-base/spaced/spaced-9999.ebuild b/chromeos-base/spaced/spaced-9999.ebuild
index 243bfc8..06d49a9 100644
--- a/chromeos-base/spaced/spaced-9999.ebuild
+++ b/chromeos-base/spaced/spaced-9999.ebuild
@@ -20,10 +20,20 @@
 KEYWORDS="~*"
 IUSE="+seccomp"
 
+RDEPEND="
+	dev-libs/protobuf:=
+	sys-apps/rootdev:=
+"
 DEPEND="
+	${RDEPEND}
 	chromeos-base/system_api:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser "spaced"
 	enewgroup "spaced"
diff --git a/chromeos-base/st_flash/st_flash-0.0.1-r1455.ebuild b/chromeos-base/st_flash/st_flash-0.0.1-r1514.ebuild
similarity index 80%
rename from chromeos-base/st_flash/st_flash-0.0.1-r1455.ebuild
rename to chromeos-base/st_flash/st_flash-0.0.1-r1514.ebuild
index 7081663..6aa6c5c 100644
--- a/chromeos-base/st_flash/st_flash-0.0.1-r1455.ebuild
+++ b/chromeos-base/st_flash/st_flash-0.0.1-r1514.ebuild
@@ -1,9 +1,9 @@
 # Copyright 2016 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "a3e2de3c2cdc6702011f5b3b1b2039cfd2868c7e" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+EAPI="7"
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "a3e2de3c2cdc6702011f5b3b1b2039cfd2868c7e" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
diff --git a/chromeos-base/st_flash/st_flash-9999.ebuild b/chromeos-base/st_flash/st_flash-9999.ebuild
index 41b4fd5..e7a9e0d 100644
--- a/chromeos-base/st_flash/st_flash-9999.ebuild
+++ b/chromeos-base/st_flash/st_flash-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2016 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
diff --git a/chromeos-base/swap_management/swap_management-0.0.1-r63.ebuild b/chromeos-base/swap_management/swap_management-0.0.1-r161.ebuild
similarity index 63%
rename from chromeos-base/swap_management/swap_management-0.0.1-r63.ebuild
rename to chromeos-base/swap_management/swap_management-0.0.1-r161.ebuild
index 3455d76..9571617 100644
--- a/chromeos-base/swap_management/swap_management-0.0.1-r63.ebuild
+++ b/chromeos-base/swap_management/swap_management-0.0.1-r161.ebuild
@@ -2,13 +2,13 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "7cd24ab64c7943bf193004fa610e7b32284074fd" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "1c79de5714c3e0196c8b04c59cb61a73e89a007c" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk swap_management .gn"
+CROS_WORKON_SUBTREE="common-mk swap_management metrics .gn"
 
 PLATFORM_SUBDIR="swap_management"
 
@@ -21,7 +21,9 @@
 KEYWORDS="*"
 
 COMMON_DEPEND="
+	chromeos-base/metrics:=
 	chromeos-base/minijail:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:="
 
 RDEPEND="${COMMON_DEPEND}"
@@ -30,6 +32,10 @@
 	chromeos-base/system_api:=
 	sys-apps/dbus:="
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 platform_pkg_test() {
 	platform test_all
 }
diff --git a/chromeos-base/swap_management/swap_management-9999.ebuild b/chromeos-base/swap_management/swap_management-9999.ebuild
index a355273..9e9f8bc 100644
--- a/chromeos-base/swap_management/swap_management-9999.ebuild
+++ b/chromeos-base/swap_management/swap_management-9999.ebuild
@@ -6,7 +6,7 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk swap_management .gn"
+CROS_WORKON_SUBTREE="common-mk swap_management metrics .gn"
 
 PLATFORM_SUBDIR="swap_management"
 
@@ -19,7 +19,9 @@
 KEYWORDS="~*"
 
 COMMON_DEPEND="
+	chromeos-base/metrics:=
 	chromeos-base/minijail:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:="
 
 RDEPEND="${COMMON_DEPEND}"
@@ -28,6 +30,10 @@
 	chromeos-base/system_api:=
 	sys-apps/dbus:="
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
 platform_pkg_test() {
 	platform test_all
 }
diff --git a/chromeos-base/syslog-cat/OWNERS b/chromeos-base/syslog-cat/OWNERS
index db7e695..7a455f8 100644
--- a/chromeos-base/syslog-cat/OWNERS
+++ b/chromeos-base/syslog-cat/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/syslog-cat/OWNERS
diff --git a/chromeos-base/syslog-cat/syslog-cat-0.0.1-r250.ebuild b/chromeos-base/syslog-cat/syslog-cat-0.0.1-r310.ebuild
similarity index 84%
rename from chromeos-base/syslog-cat/syslog-cat-0.0.1-r250.ebuild
rename to chromeos-base/syslog-cat/syslog-cat-0.0.1-r310.ebuild
index 33272c6..8a4a0ea 100644
--- a/chromeos-base/syslog-cat/syslog-cat-0.0.1-r250.ebuild
+++ b/chromeos-base/syslog-cat/syslog-cat-0.0.1-r310.ebuild
@@ -3,8 +3,8 @@
 # found in the LICENSE file.
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "20515ed7d22d24b8029a66e6330f6ab99c2ff3ac" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "20515ed7d22d24b8029a66e6330f6ab99c2ff3ac" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
diff --git a/chromeos-base/system-proxy/system-proxy-0.0.1-r444.ebuild b/chromeos-base/system-proxy/system-proxy-0.0.1-r544.ebuild
similarity index 70%
rename from chromeos-base/system-proxy/system-proxy-0.0.1-r444.ebuild
rename to chromeos-base/system-proxy/system-proxy-0.0.1-r544.ebuild
index 27851f9..41d0865 100644
--- a/chromeos-base/system-proxy/system-proxy-0.0.1-r444.ebuild
+++ b/chromeos-base/system-proxy/system-proxy-0.0.1-r544.ebuild
@@ -3,15 +3,18 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "d4b8b5eed3578085c354c24a4a64bd7aae2976a4" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "083569b82e5bcbfefd8700a2cd52ea619e712f7a" "e74aa615248081a4161427718d8576d2a9968d5f" "c5d91d2a6640dbb1301571ba16fc31323465b434" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libpasswordprovider system-proxy .gn"
+CROS_WORKON_SUBTREE="common-mk libpasswordprovider net-base system-proxy .gn"
 
 PLATFORM_SUBDIR="system-proxy"
+# Do not run test parallelly for system-proxy. See b/293997430.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform user
 
@@ -27,6 +30,7 @@
 COMMON_DEPEND="
 	chromeos-base/libpasswordprovider:=
 	chromeos-base/minijail:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel:=
 	chromeos-base/patchpanel-client:=
 	dev-libs/protobuf:=
@@ -40,6 +44,12 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	enewuser "system-proxy"
 	enewgroup "system-proxy"
diff --git a/chromeos-base/system-proxy/system-proxy-9999.ebuild b/chromeos-base/system-proxy/system-proxy-9999.ebuild
index bb93d01..9d8b40c 100644
--- a/chromeos-base/system-proxy/system-proxy-9999.ebuild
+++ b/chromeos-base/system-proxy/system-proxy-9999.ebuild
@@ -7,9 +7,12 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libpasswordprovider system-proxy .gn"
+CROS_WORKON_SUBTREE="common-mk libpasswordprovider net-base system-proxy .gn"
 
 PLATFORM_SUBDIR="system-proxy"
+# Do not run test parallelly for system-proxy. See b/293997430.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon platform user
 
@@ -25,6 +28,7 @@
 COMMON_DEPEND="
 	chromeos-base/libpasswordprovider:=
 	chromeos-base/minijail:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel:=
 	chromeos-base/patchpanel-client:=
 	dev-libs/protobuf:=
@@ -38,6 +42,12 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	enewuser "system-proxy"
 	enewgroup "system-proxy"
diff --git a/chromeos-base/system_api/files/cos-platform2.patch b/chromeos-base/system_api/files/cos-platform2.patch
deleted file mode 100644
index f9fad5d..0000000
--- a/chromeos-base/system_api/files/cos-platform2.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-# COS: This patch is needed for updating packages in chromiumos-overlay.
-# commit 8b639eaa96932565b41da559e4a533f65ba471af introduces a change in
-# namespaces.SimpleUnshare() in common-mk/platform2_test.py. Until we pick
-# up the change in our mirror repo, we have to keep the old interface.
-# commit 3bb505c6986 introduces dependency on gtest_parallel. We need to
-# remove that dependency since we don't have it in COS source code.
-# commit 3ce1c04bb8 removed post_test support. We need to add it back.
-diff --git a/common-mk/platform2_test.py b/common-mk/platform2_test.py
-index 435e7e8dde..d051b371af 100755
---- a/common-mk/platform2_test.py
-+++ b/common-mk/platform2_test.py
-@@ -434,6 +434,12 @@ class Platform2Test:
-             self.qemu.Install()
-             self.qemu.RegisterBinfmt()
- 
-+    def post_test(self):
-+        """Runs post-test teardown.
-+
-+        Removes mounts/files copied during pre-test.
-+        """
-+
-     def _remount_ro(self, path: str) -> None:
-         """Helper to remount a path as read-only.
- 
-@@ -759,25 +765,6 @@ class Platform2Test:
-         if gtest_filter != "-":
-             argv.append("--gtest_filter=" + gtest_filter)
- 
--        # Default for jobs is 1 right now in which case we run the test runner
--        # directly since running it as gtest_parallel carries a non-trivial
--        # overhead.
--        if self.jobs != 1:
--            # Switch to using gtest-parallel instead to run tests parallelly.
--            # Introduces a dependency on python while running tests, which
--            # means that for some cross compilations this maybe slower.
--            cmd = os.path.join(
--                constants.CHROOT_SOURCE_ROOT,
--                "src/third_party/gtest-parallel/gtest-parallel",
--            )
--            argv.insert(0, cmd)
--            # Special value 0 is used to indicate “use all available CPU cores".
--            # If the invocation specifies any number other than zero or one, use
--            # that. The default for gtest-parallel is to use all available
--            # workers.
--            if self.jobs:
--                argv.append(f"--workers={self.jobs}")
--
-         # Make orphaned child processes reparent to this process
-         # instead of the init process.  This allows us to kill them if
-         # they do not terminate after the test has finished running.
-@@ -1024,14 +1011,12 @@ def _ReExecuteIfNeeded(
-             print(f"error: user not supported: {user}", file=sys.stderr)
-             sys.exit(1)
- 
--    namespaces.SimpleUnshare(
--        net=ns_net, pid=ns_pid, pid_uid=pid_uid, pid_gid=pid_gid
--    )
-+    namespaces.SimpleUnshare(net=ns_net, pid=ns_pid)
- 
- 
- def GetParser():
-     """Return a command line parser."""
--    actions = ["pre_test", "run"]
-+    actions = ["pre_test", "post_test", "run"]
- 
-     parser = commandline.ArgumentParser(description=__doc__)
-     group = parser.add_argument_group("Namespaces")
-@@ -1141,9 +1126,6 @@ def main(argv):
-         if not os.path.isdir(options.sysroot):
-             parser.error(message="Sysroot does not exist: %s" % options.sysroot)
- 
--    if options.jobs < 0:
--        parser.error("You must specify jobs greater than or equal to 0")
--
-     if options.strategy == "sudo":
-         if options.pid_uid is None:
-             options.pid_uid = os.getuid()
diff --git a/chromeos-base/system_api/system_api-0.0.1-r5482.ebuild b/chromeos-base/system_api/system_api-0.0.1-r5440.ebuild
similarity index 81%
rename from chromeos-base/system_api/system_api-0.0.1-r5482.ebuild
rename to chromeos-base/system_api/system_api-0.0.1-r5440.ebuild
index e33e7e8..ae1537f 100644
--- a/chromeos-base/system_api/system_api-0.0.1-r5482.ebuild
+++ b/chromeos-base/system_api/system_api-0.0.1-r5440.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="616f79a64ee4913c7c250ab3d89f244dc37bbd05"
-CROS_WORKON_TREE=("ba80a91918aee97ac5011b4e955452356f776259" "eea8bf9c068fda3954b318fd09f72c0b5fd6369a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="63150342c81b7d2c6e55b02852c0837a782f27f6"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "77e4caa9f948914a0566ea295df91f90b7c821d6" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_GO_PACKAGES=(
 	"chromiumos/system_api/..."
 )
@@ -46,14 +46,6 @@
 	CROS_GO_WORKSPACE="${OUT}/gen/go"
 }
 
-src_prepare() {
-	# COS: This patch is needed for new chromiumos-overlay
-	# pkg version to work with our old platform2 repo.
-	cd  "${WORKDIR}"/"${P}" || die
-	eapply "${FILESDIR}"/cos-platform2.patch
-	default
-}
-
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r424.ebuild b/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r493.ebuild
similarity index 80%
rename from chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r424.ebuild
rename to chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r493.ebuild
index ea64aba..976189d 100644
--- a/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r424.ebuild
+++ b/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r493.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "e4d3d4f3944562ab51eb77b6b7189819263eb81a")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "fc0b42ee9b991326727312893ffe8ccab61ed19f")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "0bcb8f49aa236a08aec052fe63abc61912482007")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "19c59550cb1c392135948201672d36abae2a0028")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/platform/tast-tests")
 CROS_WORKON_LOCALNAME=("platform2" "platform/tast-tests")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/tast-tests")
@@ -23,6 +23,7 @@
 KEYWORDS="*"
 
 COMMON_DEPEND="
+	chromeos-base/metrics:=
 	dev-cpp/gtest:=
 	media-libs/minigbm:=
 	x11-libs/libdrm:=
@@ -31,10 +32,17 @@
 	${COMMON_DEPEND}
 	chromeos-base/featured
 	chromeos-base/goldctl
+	chromeos-base/mitmproxy
+	dev-go/martian
 	media-video/ffmpeg
 "
 DEPEND="${RDEPEND}
 	dev-rust/libchromeos:=
+	dev-rust/metrics_rs:=
+"
+
+BDEPEND="
+	chromeos-base/google-breakpad
 "
 
 src_unpack() {
@@ -67,6 +75,7 @@
 
 	local build_dir="$(cros-rust_get_build_dir)"
 	newexe "${build_dir}/crash_rust_panic" crash.Rust.panic
+	newexe "${build_dir}/metrics_rust_bindings" metrics.RustBindings
 
 	# Install symbol list file to the location required by minidump_stackwalk.
 	# See https://www.chromium.org/developers/decoding-crash-dumps for details.
diff --git a/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-9999.ebuild b/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-9999.ebuild
index 396f1dd..1f1ad01 100644
--- a/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-9999.ebuild
+++ b/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-9999.ebuild
@@ -21,6 +21,7 @@
 KEYWORDS="~*"
 
 COMMON_DEPEND="
+	chromeos-base/metrics:=
 	dev-cpp/gtest:=
 	media-libs/minigbm:=
 	x11-libs/libdrm:=
@@ -29,10 +30,17 @@
 	${COMMON_DEPEND}
 	chromeos-base/featured
 	chromeos-base/goldctl
+	chromeos-base/mitmproxy
+	dev-go/martian
 	media-video/ffmpeg
 "
 DEPEND="${RDEPEND}
 	dev-rust/libchromeos:=
+	dev-rust/metrics_rs:=
+"
+
+BDEPEND="
+	chromeos-base/google-breakpad
 "
 
 src_unpack() {
@@ -65,6 +73,7 @@
 
 	local build_dir="$(cros-rust_get_build_dir)"
 	newexe "${build_dir}/crash_rust_panic" crash.Rust.panic
+	newexe "${build_dir}/metrics_rust_bindings" metrics.RustBindings
 
 	# Install symbol list file to the location required by minidump_stackwalk.
 	# See https://www.chromium.org/developers/decoding-crash-dumps for details.
diff --git a/chromeos-base/timberslide/OWNERS b/chromeos-base/timberslide/OWNERS
index db7e695..026211a 100644
--- a/chromeos-base/timberslide/OWNERS
+++ b/chromeos-base/timberslide/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/timberslide/OWNERS
diff --git a/chromeos-base/timberslide/timberslide-0.0.1-r1881.ebuild b/chromeos-base/timberslide/timberslide-0.0.1-r1970.ebuild
similarity index 73%
rename from chromeos-base/timberslide/timberslide-0.0.1-r1881.ebuild
rename to chromeos-base/timberslide/timberslide-0.0.1-r1970.ebuild
index 4e79683..620ccd8 100644
--- a/chromeos-base/timberslide/timberslide-0.0.1-r1881.ebuild
+++ b/chromeos-base/timberslide/timberslide-0.0.1-r1970.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "e8debca8316aaf0fa3291b72dd8c59e0a6192a9c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "bce70a061c6526a8d12ed70642e20209776763a9" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/touch_firmware_calibration/OWNERS b/chromeos-base/touch_firmware_calibration/OWNERS
index db7e695..3d5bec0 100644
--- a/chromeos-base/touch_firmware_calibration/OWNERS
+++ b/chromeos-base/touch_firmware_calibration/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/touch_firmware_calibration/OWNERS
diff --git a/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r1095.ebuild b/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r1154.ebuild
similarity index 89%
rename from chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r1095.ebuild
rename to chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r1154.ebuild
index 94ed7e2..97684a7 100644
--- a/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r1095.ebuild
+++ b/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r1154.ebuild
@@ -1,9 +1,9 @@
 # Copyright 2017 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "c7f5d93abf48655d8f69e8e2763be699e6c7c59e" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+EAPI="7"
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "c7f5d93abf48655d8f69e8e2763be699e6c7c59e" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
diff --git a/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-9999.ebuild b/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-9999.ebuild
index 6cbc40c..eb5e0c8 100644
--- a/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-9999.ebuild
+++ b/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2017 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_INCREMENTAL_BUILD=1
diff --git a/chromeos-base/tpm2-simulator/OWNERS b/chromeos-base/tpm2-simulator/OWNERS
index db7e695..5c959d1 100644
--- a/chromeos-base/tpm2-simulator/OWNERS
+++ b/chromeos-base/tpm2-simulator/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/tpm2-simulator/OWNERS
diff --git a/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r2082.ebuild b/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r2163.ebuild
similarity index 72%
rename from chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r2082.ebuild
rename to chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r2163.ebuild
index 8ee64aa..133a96d 100644
--- a/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r2082.ebuild
+++ b/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r2163.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "035e5f57815742ad6e80d8821e81f18e0fcaa4f7" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "965e6fa3585e2d6493be1567791c13c633a9e8d7" "0d9d2046eb78dc8620f7594f245298f9fd964832" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -18,10 +18,9 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/tpm2-simulator/"
 
 LICENSE="BSD-Google"
-SLOT="0/0"
 KEYWORDS="*"
 
-IUSE="+biometrics_dev selinux ti50_onboard tpm tpm2 test tpm2_simulator tpm2_simulator_manufacturer"
+IUSE="selinux ti50_onboard tpm tpm2 test tpm2_simulator tpm2_simulator_manufacturer"
 
 COMMON_DEPEND="
 	tpm? ( !test? ( dev-libs/libtpms:= ) )
@@ -47,13 +46,11 @@
 "
 DEPEND="${COMMON_DEPEND}"
 
+BDEPEND="
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser tpm2-simulator
 	enewgroup tpm2-simulator
 }
-
-src_install() {
-	platform_src_install
-
-	dotmpfiles tmpfiles.d/*.conf
-}
diff --git a/chromeos-base/tpm2-simulator/tpm2-simulator-9999.ebuild b/chromeos-base/tpm2-simulator/tpm2-simulator-9999.ebuild
index 7a4007e..d21501b 100644
--- a/chromeos-base/tpm2-simulator/tpm2-simulator-9999.ebuild
+++ b/chromeos-base/tpm2-simulator/tpm2-simulator-9999.ebuild
@@ -16,10 +16,9 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/tpm2-simulator/"
 
 LICENSE="BSD-Google"
-SLOT="0/0"
 KEYWORDS="~*"
 
-IUSE="+biometrics_dev selinux ti50_onboard tpm tpm2 test tpm2_simulator tpm2_simulator_manufacturer"
+IUSE="selinux ti50_onboard tpm tpm2 test tpm2_simulator tpm2_simulator_manufacturer"
 
 COMMON_DEPEND="
 	tpm? ( !test? ( dev-libs/libtpms:= ) )
@@ -45,13 +44,11 @@
 "
 DEPEND="${COMMON_DEPEND}"
 
+BDEPEND="
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser tpm2-simulator
 	enewgroup tpm2-simulator
 }
-
-src_install() {
-	platform_src_install
-
-	dotmpfiles tmpfiles.d/*.conf
-}
diff --git a/chromeos-base/tpm_manager-client/OWNERS b/chromeos-base/tpm_manager-client/OWNERS
index db7e695..9d33f02 100644
--- a/chromeos-base/tpm_manager-client/OWNERS
+++ b/chromeos-base/tpm_manager-client/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/tpm_manager/OWNERS
diff --git a/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r596.ebuild b/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r688.ebuild
similarity index 63%
rename from chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r596.ebuild
rename to chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r688.ebuild
index 056a2ff..eefe30d 100644
--- a/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r596.ebuild
+++ b/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r688.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
-CROS_WORKON_COMMIT="4cd35fb11ce1d94e91ded61681327ee6738c3578"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "41112b3759d18a5cceaf1f06f65e6d4bdc406e33" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "0d9d2046eb78dc8620f7594f245298f9fd964832" "989acbd33fd18024396e010b1be43d25cbdf942d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -19,20 +19,23 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/tpm_manager/client/"
 
 LICENSE="BSD-Google"
-SLOT="0"
 KEYWORDS="*"
-IUSE="cros_host test tpm tpm2 fuzzer"
+IUSE="test tpm tpm2 fuzzer"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies. We require the particular
-# revision because libbrillo-0.0.1-r1 changed location of header files from
-# chromeos/ to brillo/ and chromeos-dbus-bindings-0.0.1-r1058 generates the
-# code using the new location.
-DEPEND="
-	cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 )
-	chromeos-base/libbrillo:=
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+COMMON_DEPEND="
 	chromeos-base/system_api:=[fuzzer?]
+	dev-libs/openssl:0=
+	dev-libs/protobuf:=
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/chromeos-dbus-bindings:=
 "
 
 # Note that for RDEPEND, we conflict with tpm_manager package older than
@@ -40,10 +43,8 @@
 # 0.0.1. We didn't RDEPEND on tpm_manager version 0.0.1 or greater because
 # we don't want to create circular dependency in case the package tpm_manager
 # depends on some package foo that also depend on this package.
-RDEPEND="
+RDEPEND="${COMMON_DEPEND}
 	!<chromeos-base/tpm_manager-0.0.1-r2238
-	chromeos-base/libbrillo:=
-	chromeos-base/system_api:=[fuzzer?]
 "
 
 src_install() {
diff --git a/chromeos-base/tpm_manager-client/tpm_manager-client-9999.ebuild b/chromeos-base/tpm_manager-client/tpm_manager-client-9999.ebuild
index a1892c1..575af43 100644
--- a/chromeos-base/tpm_manager-client/tpm_manager-client-9999.ebuild
+++ b/chromeos-base/tpm_manager-client/tpm_manager-client-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
@@ -17,20 +17,23 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/tpm_manager/client/"
 
 LICENSE="BSD-Google"
-SLOT="0"
 KEYWORDS="~*"
-IUSE="cros_host test tpm tpm2 fuzzer"
+IUSE="test tpm tpm2 fuzzer"
 
-# D-Bus proxies generated by this client library depend on the code generator
-# itself (chromeos-dbus-bindings) and produce header files that rely on
-# libbrillo library, hence both dependencies. We require the particular
-# revision because libbrillo-0.0.1-r1 changed location of header files from
-# chromeos/ to brillo/ and chromeos-dbus-bindings-0.0.1-r1058 generates the
-# code using the new location.
-DEPEND="
-	cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 )
-	chromeos-base/libbrillo:=
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+COMMON_DEPEND="
 	chromeos-base/system_api:=[fuzzer?]
+	dev-libs/openssl:0=
+	dev-libs/protobuf:=
+"
+
+# Workaround to rebuild this package on the chromeos-dbus-bindings update.
+# Please find the comment in chromeos-dbus-bindings for its background.
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/chromeos-dbus-bindings:=
 "
 
 # Note that for RDEPEND, we conflict with tpm_manager package older than
@@ -38,10 +41,8 @@
 # 0.0.1. We didn't RDEPEND on tpm_manager version 0.0.1 or greater because
 # we don't want to create circular dependency in case the package tpm_manager
 # depends on some package foo that also depend on this package.
-RDEPEND="
+RDEPEND="${COMMON_DEPEND}
 	!<chromeos-base/tpm_manager-0.0.1-r2238
-	chromeos-base/libbrillo:=
-	chromeos-base/system_api:=[fuzzer?]
 "
 
 src_install() {
diff --git a/chromeos-base/tpm_manager/OWNERS b/chromeos-base/tpm_manager/OWNERS
index db7e695..9d33f02 100644
--- a/chromeos-base/tpm_manager/OWNERS
+++ b/chromeos-base/tpm_manager/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/tpm_manager/OWNERS
diff --git a/chromeos-base/tpm_manager/tpm_manager-0.0.1-r2880.ebuild b/chromeos-base/tpm_manager/tpm_manager-0.0.1-r3040.ebuild
similarity index 82%
rename from chromeos-base/tpm_manager/tpm_manager-0.0.1-r2880.ebuild
rename to chromeos-base/tpm_manager/tpm_manager-0.0.1-r3040.ebuild
index 322a9c8..3f9e069 100644
--- a/chromeos-base/tpm_manager/tpm_manager-0.0.1-r2880.ebuild
+++ b/chromeos-base/tpm_manager/tpm_manager-0.0.1-r3040.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="4cd35fb11ce1d94e91ded61681327ee6738c3578"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "41112b3759d18a5cceaf1f06f65e6d4bdc406e33" "199cac0899daace8030b33f49dd183a5b5baf169" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "989acbd33fd18024396e010b1be43d25cbdf942d" "f73f25bb045d099841b3ac929b6d3218060216df" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -20,7 +20,6 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/tpm_manager/"
 
 LICENSE="BSD-Google"
-SLOT="0"
 KEYWORDS="*"
 IUSE="cr50_onboard double_extend_pcr_issue pinweaver_csme profiling test ti50_onboard
 	tpm tpm_dynamic tpm_insecure_fallback tpm2 tpm2_simulator fuzzer os_install_service
@@ -33,17 +32,18 @@
 "
 
 RDEPEND="
-	tpm? ( app-crypt/trousers )
+	tpm? ( app-crypt/trousers:= )
 	tpm2? (
-		chromeos-base/trunks
+		chromeos-base/trunks:=
 	)
 	tpm2_simulator? ( chromeos-base/tpm2-simulator:= )
 	>=chromeos-base/metrics-0.0.1-r3152
-	chromeos-base/minijail
-	chromeos-base/libhwsec[test?]
-	chromeos-base/libhwsec-foundation
+	chromeos-base/minijail:=
+	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/tpm_manager-client
+	chromeos-base/tpm_manager-client:=
+	dev-libs/openssl:0=
 	"
 
 DEPEND="${RDEPEND}
@@ -51,6 +51,12 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator )
 	"
 
+BDEPEND="
+	dev-libs/protobuf
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser tpm_manager
 	enewgroup tpm_manager
diff --git a/chromeos-base/tpm_manager/tpm_manager-9999.ebuild b/chromeos-base/tpm_manager/tpm_manager-9999.ebuild
index 8c12ba5..234d6a9 100644
--- a/chromeos-base/tpm_manager/tpm_manager-9999.ebuild
+++ b/chromeos-base/tpm_manager/tpm_manager-9999.ebuild
@@ -18,7 +18,6 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/tpm_manager/"
 
 LICENSE="BSD-Google"
-SLOT="0"
 KEYWORDS="~*"
 IUSE="cr50_onboard double_extend_pcr_issue pinweaver_csme profiling test ti50_onboard
 	tpm tpm_dynamic tpm_insecure_fallback tpm2 tpm2_simulator fuzzer os_install_service
@@ -31,17 +30,18 @@
 "
 
 RDEPEND="
-	tpm? ( app-crypt/trousers )
+	tpm? ( app-crypt/trousers:= )
 	tpm2? (
-		chromeos-base/trunks
+		chromeos-base/trunks:=
 	)
 	tpm2_simulator? ( chromeos-base/tpm2-simulator:= )
 	>=chromeos-base/metrics-0.0.1-r3152
-	chromeos-base/minijail
-	chromeos-base/libhwsec[test?]
-	chromeos-base/libhwsec-foundation
+	chromeos-base/minijail:=
+	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/tpm_manager-client
+	chromeos-base/tpm_manager-client:=
+	dev-libs/openssl:0=
 	"
 
 DEPEND="${RDEPEND}
@@ -49,6 +49,12 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator )
 	"
 
+BDEPEND="
+	dev-libs/protobuf
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+"
+
 pkg_preinst() {
 	enewuser tpm_manager
 	enewgroup tpm_manager
diff --git a/chromeos-base/tpm_softclear_utils/OWNERS b/chromeos-base/tpm_softclear_utils/OWNERS
index db7e695..3d3b834 100644
--- a/chromeos-base/tpm_softclear_utils/OWNERS
+++ b/chromeos-base/tpm_softclear_utils/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/tpm_softclear_utils/OWNERS
diff --git a/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r688.ebuild b/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r809.ebuild
similarity index 65%
rename from chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r688.ebuild
rename to chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r809.ebuild
index 50536aa..787511b 100644
--- a/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r688.ebuild
+++ b/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r809.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "3c31fe487262b92426519f0dc12c1fbe6b6dd3e1" "199cac0899daace8030b33f49dd183a5b5baf169" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "739cd16827b84ea6fe490e8ed912713ef1d17c71" "f73f25bb045d099841b3ac929b6d3218060216df" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -35,24 +35,17 @@
 		app-crypt/trousers:=
 	)
 	chromeos-base/libhwsec-foundation:=
+	dev-libs/protobuf:=
 "
 
 DEPEND="${RDEPEND}
 	tpm2? (
+		chromeos-base/chromeos-ec-headers:=
 		chromeos-base/system_api:=
 		chromeos-base/trunks:=[test?]
 	)
 "
 
-src_install() {
-	platform_src_install
-
-	# Installs the utilities executable.
-	insinto /usr/local/bin
-	doins "${OUT}/tpm_softclear"
-	chmod u+x "${D}/usr/local/bin/tpm_softclear"
-}
-
 platform_pkg_test() {
-	platform_test "run" "${OUT}/tpm_softclear_utils_testrunner"
+	platform test_all
 }
diff --git a/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-9999.ebuild b/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-9999.ebuild
index c3ad487..b1836fa 100644
--- a/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-9999.ebuild
+++ b/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-9999.ebuild
@@ -33,24 +33,17 @@
 		app-crypt/trousers:=
 	)
 	chromeos-base/libhwsec-foundation:=
+	dev-libs/protobuf:=
 "
 
 DEPEND="${RDEPEND}
 	tpm2? (
+		chromeos-base/chromeos-ec-headers:=
 		chromeos-base/system_api:=
 		chromeos-base/trunks:=[test?]
 	)
 "
 
-src_install() {
-	platform_src_install
-
-	# Installs the utilities executable.
-	insinto /usr/local/bin
-	doins "${OUT}/tpm_softclear"
-	chmod u+x "${D}/usr/local/bin/tpm_softclear"
-}
-
 platform_pkg_test() {
-	platform_test "run" "${OUT}/tpm_softclear_utils_testrunner"
+	platform test_all
 }
diff --git a/chromeos-base/trunks/OWNERS b/chromeos-base/trunks/OWNERS
index db7e695..f0061ae 100644
--- a/chromeos-base/trunks/OWNERS
+++ b/chromeos-base/trunks/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/trunks/OWNERS
diff --git a/chromeos-base/trunks/trunks-0.0.1-r3490.ebuild b/chromeos-base/trunks/trunks-0.0.1-r3612.ebuild
similarity index 92%
rename from chromeos-base/trunks/trunks-0.0.1-r3490.ebuild
rename to chromeos-base/trunks/trunks-0.0.1-r3612.ebuild
index 3c59e3a..06dea3bb 100644
--- a/chromeos-base/trunks/trunks-0.0.1-r3490.ebuild
+++ b/chromeos-base/trunks/trunks-0.0.1-r3612.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "199cac0899daace8030b33f49dd183a5b5baf169" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f73f25bb045d099841b3ac929b6d3218060216df" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -48,6 +48,8 @@
 	ftdi_tpm? ( dev-embedded/libftdi:= )
 	test? ( chromeos-base/tpm2:=[test] )
 	tpm2_simulator? ( chromeos-base/tpm2-simulator:= )
+	dev-cpp/abseil-cpp:=
+	dev-libs/openssl:=
 	dev-libs/protobuf:=
 	fuzzer? (
 		dev-cpp/gtest:=
@@ -69,6 +71,11 @@
 	chromeos-base/chromeos-ec-headers:=
 	"
 
+BDEPEND="
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/trunks/trunks-9999.ebuild b/chromeos-base/trunks/trunks-9999.ebuild
index 14d329b..28fdff4 100644
--- a/chromeos-base/trunks/trunks-9999.ebuild
+++ b/chromeos-base/trunks/trunks-9999.ebuild
@@ -46,6 +46,8 @@
 	ftdi_tpm? ( dev-embedded/libftdi:= )
 	test? ( chromeos-base/tpm2:=[test] )
 	tpm2_simulator? ( chromeos-base/tpm2-simulator:= )
+	dev-cpp/abseil-cpp:=
+	dev-libs/openssl:=
 	dev-libs/protobuf:=
 	fuzzer? (
 		dev-cpp/gtest:=
@@ -67,6 +69,11 @@
 	chromeos-base/chromeos-ec-headers:=
 	"
 
+BDEPEND="
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/typecd/OWNERS b/chromeos-base/typecd/OWNERS
index db7e695..7f5f56a 100644
--- a/chromeos-base/typecd/OWNERS
+++ b/chromeos-base/typecd/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/typecd/OWNERS
diff --git a/chromeos-base/typecd/typecd-0.0.1-r478.ebuild b/chromeos-base/typecd/typecd-0.0.1-r546.ebuild
similarity index 91%
rename from chromeos-base/typecd/typecd-0.0.1-r478.ebuild
rename to chromeos-base/typecd/typecd-0.0.1-r546.ebuild
index cce2fa4..90dbd95 100644
--- a/chromeos-base/typecd/typecd-0.0.1-r478.ebuild
+++ b/chromeos-base/typecd/typecd-0.0.1-r546.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "8dbb0050e7d6e81346f1ede27b8b37d4f0b1694c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "fb64fbeda7aea3ec9d62b335e222329448566af7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/u2fd-client/u2fd-client-0.0.1-r309.ebuild b/chromeos-base/u2fd-client/u2fd-client-0.0.1-r465.ebuild
similarity index 67%
rename from chromeos-base/u2fd-client/u2fd-client-0.0.1-r309.ebuild
rename to chromeos-base/u2fd-client/u2fd-client-0.0.1-r465.ebuild
index e29bfa3..8a28ffd 100644
--- a/chromeos-base/u2fd-client/u2fd-client-0.0.1-r309.ebuild
+++ b/chromeos-base/u2fd-client/u2fd-client-0.0.1-r465.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "199cac0899daace8030b33f49dd183a5b5baf169" "1f62bd40c0cf61961c0452f4397935a0e0707e40" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f73f25bb045d099841b3ac929b6d3218060216df" "bfb0825fba5f58eda85c87558bd2074511c461d3" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_USE_VCSID="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -26,6 +26,7 @@
 COMMON_DEPEND="
 	chromeos-base/libhwsec:=
 	chromeos-base/session_manager-client:=
+	dev-libs/openssl:=
 "
 
 RDEPEND="${COMMON_DEPEND}"
@@ -35,3 +36,11 @@
 	>=chromeos-base/protofiles-0.0.43:=
 	chromeos-base/system_api:=
 "
+
+BDEPEND="
+	dev-libs/protobuf
+"
+
+platform_pkg_test() {
+	platform test_all
+}
diff --git a/chromeos-base/u2fd-client/u2fd-client-9999.ebuild b/chromeos-base/u2fd-client/u2fd-client-9999.ebuild
index 8d076a9..3305990 100644
--- a/chromeos-base/u2fd-client/u2fd-client-9999.ebuild
+++ b/chromeos-base/u2fd-client/u2fd-client-9999.ebuild
@@ -24,6 +24,7 @@
 COMMON_DEPEND="
 	chromeos-base/libhwsec:=
 	chromeos-base/session_manager-client:=
+	dev-libs/openssl:=
 "
 
 RDEPEND="${COMMON_DEPEND}"
@@ -33,3 +34,11 @@
 	>=chromeos-base/protofiles-0.0.43:=
 	chromeos-base/system_api:=
 "
+
+BDEPEND="
+	dev-libs/protobuf
+"
+
+platform_pkg_test() {
+	platform test_all
+}
diff --git a/chromeos-base/u2fd/OWNERS b/chromeos-base/u2fd/OWNERS
index db7e695..4a35594 100644
--- a/chromeos-base/u2fd/OWNERS
+++ b/chromeos-base/u2fd/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/u2fd/OWNERS
diff --git a/chromeos-base/u2fd/u2fd-0.0.1-r1831.ebuild b/chromeos-base/u2fd/u2fd-0.0.1-r1996.ebuild
similarity index 80%
rename from chromeos-base/u2fd/u2fd-0.0.1-r1831.ebuild
rename to chromeos-base/u2fd/u2fd-0.0.1-r1996.ebuild
index 0c035fb..483c4fa 100644
--- a/chromeos-base/u2fd/u2fd-0.0.1-r1831.ebuild
+++ b/chromeos-base/u2fd/u2fd-0.0.1-r1996.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="4cd35fb11ce1d94e91ded61681327ee6738c3578"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "199cac0899daace8030b33f49dd183a5b5baf169" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "41112b3759d18a5cceaf1f06f65e6d4bdc406e33" "1f62bd40c0cf61961c0452f4397935a0e0707e40" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "7a325f49c4f6a99fe834186bd9e7a550595ca033" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f73f25bb045d099841b3ac929b6d3218060216df" "9dbbe059a64bdb3260dc088895573df5ea421399" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "989acbd33fd18024396e010b1be43d25cbdf942d" "bfb0825fba5f58eda85c87558bd2074511c461d3" "0d9d2046eb78dc8620f7594f245298f9fd964832" "9dbbe059a64bdb3260dc088895573df5ea421399" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_USE_VCSID="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -30,10 +30,12 @@
 	chromeos-base/chromeos-ec-headers:=
 	chromeos-base/cryptohome-client:=
 	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/power_manager-client:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/u2fd-client:=
+	dev-libs/openssl:0=
 "
 
 RDEPEND="${COMMON_DEPEND}"
@@ -44,6 +46,10 @@
 	chromeos-base/system_api:=[fuzzer?]
 "
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs the u2f user and group.
diff --git a/chromeos-base/u2fd/u2fd-9999.ebuild b/chromeos-base/u2fd/u2fd-9999.ebuild
index 264d3cc..ede4a9a 100644
--- a/chromeos-base/u2fd/u2fd-9999.ebuild
+++ b/chromeos-base/u2fd/u2fd-9999.ebuild
@@ -28,10 +28,12 @@
 	chromeos-base/chromeos-ec-headers:=
 	chromeos-base/cryptohome-client:=
 	chromeos-base/libhwsec:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/power_manager-client:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/u2fd-client:=
+	dev-libs/openssl:0=
 "
 
 RDEPEND="${COMMON_DEPEND}"
@@ -42,6 +44,10 @@
 	chromeos-base/system_api:=[fuzzer?]
 "
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 pkg_setup() {
 	# Has to be done in pkg_setup() instead of pkg_preinst() since
 	# src_install() needs the u2f user and group.
diff --git a/chromeos-base/update_engine/files/lakitu-openssl-compat.patch b/chromeos-base/update_engine/files/lakitu-openssl-compat.patch
new file mode 100644
index 0000000..423f8d8
--- /dev/null
+++ b/chromeos-base/update_engine/files/lakitu-openssl-compat.patch
@@ -0,0 +1,12 @@
+diff --git a/BUILD.gn b/BUILD.gn
+index 8f7b64f6..a708837a 100644
+--- a/BUILD.gn
++++ b/BUILD.gn
+@@ -57,6 +57,7 @@ pkg_config("target_defaults") {
+   cflags_cc = [
+     "-fno-strict-aliasing",
+     "-Wdelete-non-virtual-dtor",
++    "-Wno-deprecated-declarations",
+   ]
+   cflags = [ "-ffunction-sections" ]
+   ldflags = [ "-Wl,--gc-sections" ]
diff --git a/chromeos-base/update_engine/update_engine-0.0.3-r4593.ebuild b/chromeos-base/update_engine/update_engine-0.0.3-r4803.ebuild
similarity index 84%
rename from chromeos-base/update_engine/update_engine-0.0.3-r4593.ebuild
rename to chromeos-base/update_engine/update_engine-0.0.3-r4803.ebuild
index ac9563d..638b5aa 100644
--- a/chromeos-base/update_engine/update_engine-0.0.3-r4593.ebuild
+++ b/chromeos-base/update_engine/update_engine-0.0.3-r4803.ebuild
@@ -3,20 +3,24 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("af29f016e8f4212c169ba01cd70714022633c97a" "5fff24e28971186fde2d938088502e483ea46101")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "2ec930eda3bed6c8db27306438d8508382e36e7b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "bb9b9206819f44caab0a23c0d6a81958a4cedb99")
+CROS_WORKON_COMMIT=("86ba3fa471ca07a91f67585494747bbcbbe26fcc" "e4c4df48ca7dcafc9de9ba51d2c3458a8fa0a99d")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "42fc0885940e227b7136c838904c91f132100b16")
 CROS_WORKON_LOCALNAME=("platform2" "aosp/system/update_engine")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/system/update_engine")
 CROS_WORKON_EGIT_BRANCH=("main" "master")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/update_engine")
 CROS_WORKON_USE_VCSID=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE=("common-mk diagnostics .gn" "")
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
 
 PLATFORM_SUBDIR="update_engine"
 # Tests use /dev/loop*.
 PLATFORM_HOST_DEV_TEST="yes"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-debug cros-workon platform systemd
 
 DESCRIPTION="Chrome OS Update Engine"
@@ -31,10 +35,11 @@
 	app-arch/bzip2:=
 	chromeos-base/chromeos-ca-certificates:=
 	hw_details? (
-		chromeos-base/mojo_service_manager:=
 		chromeos-base/diagnostics:=
+		chromeos-base/mojo_service_manager:=
 	)
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/libcrossystem:=
 	chromeos-base/vboot_reference:=
 	cros_p2p? ( chromeos-base/p2p:= )
 	dev-libs/expat:=
@@ -48,19 +53,24 @@
 	sys-fs/e2fsprogs:=
 "
 
-DEPEND="
-	app-arch/xz-utils:=
+CLIENT_DEPEND="
 	chromeos-base/debugd-client:=
 	dlc? ( chromeos-base/dlcservice-client:= )
-	chromeos-base/imageloader:=
+	chromeos-base/imageloader-client:=
 	chromeos-base/power_manager-client:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/shill-client:=
-	chromeos-base/system_api:=[fuzzer?]
 	chromeos-base/update_engine-client:=
 	hibernate? ( chromeos-base/hiberman-client:= )
+"
+
+DEPEND="
+	app-arch/xz-utils:=
+	chromeos-base/system_api:=[fuzzer?]
 	test? ( sys-fs/squashfs-tools )
-	${COMMON_DEPEND}"
+	${CLIENT_DEPEND}
+	${COMMON_DEPEND}
+"
 
 DELTA_GENERATOR_RDEPEND="
 	app-arch/unzip:=
@@ -73,17 +83,28 @@
 "
 
 RDEPEND="
-	!cros_host? ( chromeos-base/chromeos-installer )
+	!cros_host? (
+		chromeos-base/chromeos-installer
+		virtual/update-policy:=
+	)
+	${CLIENT_DEPEND}
 	${COMMON_DEPEND}
 	cros_host? (
 		${DEPEND}
 		${DELTA_GENERATOR_RDEPEND}
 	)
 	power_management? ( chromeos-base/power_manager:= )
-	virtual/update-policy:=
-	chromeos-base/imageloader:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
+"
+
+PATCHES=(
+	"${FILESDIR}/lakitu-openssl-compat.patch"
+)
+
 platform_pkg_test() {
 	local unittests_binary="${OUT}"/update_engine_unittests
 
@@ -114,22 +135,11 @@
 	else
 		platform_test "run" "${unittests_binary}" 1 "${GTEST_FILTER}"
 	fi
-
-	for f in "omaha_request_action" "delta_performer"; do
-		platform_fuzzer_test "${OUT}/update_engine_${f}_fuzzer"
-	done
 }
 
 src_install() {
 	platform_src_install
 
-	dosbin "${OUT}"/update_engine
-	dobin "${OUT}"/update_engine_client
-
-	if use cros_host; then
-		dobin "${OUT}"/delta_generator
-	fi
-
 	insinto /etc
 	newins update_engine.conf.chromeos update_engine.conf
 
diff --git a/chromeos-base/update_engine/update_engine-9999.ebuild b/chromeos-base/update_engine/update_engine-9999.ebuild
index cb4bd3b..baf25f1 100644
--- a/chromeos-base/update_engine/update_engine-9999.ebuild
+++ b/chromeos-base/update_engine/update_engine-9999.ebuild
@@ -9,12 +9,16 @@
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/update_engine")
 CROS_WORKON_USE_VCSID=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE=("common-mk diagnostics .gn" "")
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
 
 PLATFORM_SUBDIR="update_engine"
 # Tests use /dev/loop*.
 PLATFORM_HOST_DEV_TEST="yes"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-debug cros-workon platform systemd
 
 DESCRIPTION="Chrome OS Update Engine"
@@ -29,10 +33,11 @@
 	app-arch/bzip2:=
 	chromeos-base/chromeos-ca-certificates:=
 	hw_details? (
-		chromeos-base/mojo_service_manager:=
 		chromeos-base/diagnostics:=
+		chromeos-base/mojo_service_manager:=
 	)
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/libcrossystem:=
 	chromeos-base/vboot_reference:=
 	cros_p2p? ( chromeos-base/p2p:= )
 	dev-libs/expat:=
@@ -46,19 +51,24 @@
 	sys-fs/e2fsprogs:=
 "
 
-DEPEND="
-	app-arch/xz-utils:=
+CLIENT_DEPEND="
 	chromeos-base/debugd-client:=
 	dlc? ( chromeos-base/dlcservice-client:= )
-	chromeos-base/imageloader:=
+	chromeos-base/imageloader-client:=
 	chromeos-base/power_manager-client:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/shill-client:=
-	chromeos-base/system_api:=[fuzzer?]
 	chromeos-base/update_engine-client:=
 	hibernate? ( chromeos-base/hiberman-client:= )
+"
+
+DEPEND="
+	app-arch/xz-utils:=
+	chromeos-base/system_api:=[fuzzer?]
 	test? ( sys-fs/squashfs-tools )
-	${COMMON_DEPEND}"
+	${CLIENT_DEPEND}
+	${COMMON_DEPEND}
+"
 
 DELTA_GENERATOR_RDEPEND="
 	app-arch/unzip:=
@@ -71,17 +81,28 @@
 "
 
 RDEPEND="
-	!cros_host? ( chromeos-base/chromeos-installer )
+	!cros_host? (
+		chromeos-base/chromeos-installer
+		virtual/update-policy:=
+	)
+	${CLIENT_DEPEND}
 	${COMMON_DEPEND}
 	cros_host? (
 		${DEPEND}
 		${DELTA_GENERATOR_RDEPEND}
 	)
 	power_management? ( chromeos-base/power_manager:= )
-	virtual/update-policy:=
-	chromeos-base/imageloader:=
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	dev-libs/protobuf
+"
+
+PATCHES=(
+	"${FILESDIR}/lakitu-openssl-compat.patch"
+)
+
 platform_pkg_test() {
 	local unittests_binary="${OUT}"/update_engine_unittests
 
@@ -112,22 +133,11 @@
 	else
 		platform_test "run" "${unittests_binary}" 1 "${GTEST_FILTER}"
 	fi
-
-	for f in "omaha_request_action" "delta_performer"; do
-		platform_fuzzer_test "${OUT}/update_engine_${f}_fuzzer"
-	done
 }
 
 src_install() {
 	platform_src_install
 
-	dosbin "${OUT}"/update_engine
-	dobin "${OUT}"/update_engine_client
-
-	if use cros_host; then
-		dobin "${OUT}"/delta_generator
-	fi
-
 	insinto /etc
 	newins update_engine.conf.chromeos update_engine.conf
 
diff --git a/chromeos-base/ureadahead-diff/OWNERS b/chromeos-base/ureadahead-diff/OWNERS
index db7e695..dd2dd69 100644
--- a/chromeos-base/ureadahead-diff/OWNERS
+++ b/chromeos-base/ureadahead-diff/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/ureadahead-diff/OWNERS
diff --git a/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r299.ebuild b/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r357.ebuild
similarity index 84%
rename from chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r299.ebuild
rename to chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r357.ebuild
index 2e2bfe1..bc5b4aa 100644
--- a/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r299.ebuild
+++ b/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r357.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "5d1b5a3787012c115e613e6f4721653b4b392630" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "5d1b5a3787012c115e613e6f4721653b4b392630" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/chromeos-base/usb_bouncer/OWNERS b/chromeos-base/usb_bouncer/OWNERS
index db7e695..bc4b7ec 100644
--- a/chromeos-base/usb_bouncer/OWNERS
+++ b/chromeos-base/usb_bouncer/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/usb_bouncer/OWNERS
diff --git a/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r697.ebuild b/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r793.ebuild
similarity index 83%
rename from chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r697.ebuild
rename to chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r793.ebuild
index 387e495..ff49bc9 100644
--- a/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r697.ebuild
+++ b/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r793.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "ba4fae2381294a124ef187ba8b957fd3dd628f09" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "9e9c3d918778bd1e5e6c837254e83b19fb2a8f4d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -29,12 +29,19 @@
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/minijail:=
 	dev-libs/openssl:0=
+	dev-libs/re2:=
 	sys-apps/usbguard:=
+	sys-libs/libcap:=
 "
 RDEPEND="${COMMON_DEPEND}"
 DEPEND="${COMMON_DEPEND}
 	chromeos-base/session_manager-client:="
 
+BDEPEND="
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/usb_bouncer/usb_bouncer-9999.ebuild b/chromeos-base/usb_bouncer/usb_bouncer-9999.ebuild
index 3a97711..7b9278c 100644
--- a/chromeos-base/usb_bouncer/usb_bouncer-9999.ebuild
+++ b/chromeos-base/usb_bouncer/usb_bouncer-9999.ebuild
@@ -27,12 +27,19 @@
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/minijail:=
 	dev-libs/openssl:0=
+	dev-libs/re2:=
 	sys-apps/usbguard:=
+	sys-libs/libcap:=
 "
 RDEPEND="${COMMON_DEPEND}"
 DEPEND="${COMMON_DEPEND}
 	chromeos-base/session_manager-client:="
 
+BDEPEND="
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/vboot_reference/OWNERS b/chromeos-base/vboot_reference/OWNERS
index db7e695..27f3d3d 100644
--- a/chromeos-base/vboot_reference/OWNERS
+++ b/chromeos-base/vboot_reference/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform/vboot_reference:/OWNERS
diff --git a/chromeos-base/vboot_reference/vboot_reference-1.0-r2500.ebuild b/chromeos-base/vboot_reference/vboot_reference-1.0-r2654.ebuild
similarity index 87%
rename from chromeos-base/vboot_reference/vboot_reference-1.0-r2500.ebuild
rename to chromeos-base/vboot_reference/vboot_reference-1.0-r2654.ebuild
index 35f4492..c51a8ff 100644
--- a/chromeos-base/vboot_reference/vboot_reference-1.0-r2500.ebuild
+++ b/chromeos-base/vboot_reference/vboot_reference-1.0-r2654.ebuild
@@ -3,9 +3,9 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("f029229daac8a4571be184641cb135ff9c59b6b0" "424149d2a083ff5213897ca292ab4f986f0b58c0")
-CROS_WORKON_TREE=("4c962ec5013f16c83dbb79241002f86d517b7efa" "1647a468f15f85e89d45c799e27359e3e664c67b")
-PYTHON_COMPAT=( python3_{6..11} )
+CROS_WORKON_COMMIT=("3545f8b440a15b5e744f57d812f43c44ca7007e5" "8b6e11a069e490c761cdab7ab3ff59434806cd9c")
+CROS_WORKON_TREE=("aa7c95de0a02167afefb780547df8ae964d30fd5" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
+PYTHON_COMPAT=( python3_{8..11} )
 
 # platform2 is used purely for the platform2_test.py wrapper
 
@@ -132,17 +132,6 @@
 		DESTDIR="${D}" \
 		install install_dev
 
-	# Copy futility and all of its dependencies to separate directory
-	# so it can be used to update src/platform/signing/signer-*
-	if use cros_host; then
-		"${CHROMITE_DIR}/bin/lddtree" \
-			"${D}/usr/bin/futility" \
-			--bindir "/" \
-			--libdir "/lib/" \
-			--generate-wrappers \
-			--copy-to-tree "${D}/usr/share/signer-bundle/" || die
-	fi
-
 	if use tpmtests; then
 		into /usr
 		# copy files starting with tpmtest, but skip .d files.
diff --git a/chromeos-base/vboot_reference/vboot_reference-9999.ebuild b/chromeos-base/vboot_reference/vboot_reference-9999.ebuild
index f315d25..ba087ce 100644
--- a/chromeos-base/vboot_reference/vboot_reference-9999.ebuild
+++ b/chromeos-base/vboot_reference/vboot_reference-9999.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=7
 
-PYTHON_COMPAT=( python3_{6..11} )
+PYTHON_COMPAT=( python3_{8..11} )
 
 # platform2 is used purely for the platform2_test.py wrapper
 
@@ -130,17 +130,6 @@
 		DESTDIR="${D}" \
 		install install_dev
 
-	# Copy futility and all of its dependencies to separate directory
-	# so it can be used to update src/platform/signing/signer-*
-	if use cros_host; then
-		"${CHROMITE_DIR}/bin/lddtree" \
-			"${D}/usr/bin/futility" \
-			--bindir "/" \
-			--libdir "/lib/" \
-			--generate-wrappers \
-			--copy-to-tree "${D}/usr/share/signer-bundle/" || die
-	fi
-
 	if use tpmtests; then
 		into /usr
 		# copy files starting with tpmtest, but skip .d files.
diff --git a/chromeos-base/verity/OWNERS b/chromeos-base/verity/OWNERS
index db7e695..75f228c 100644
--- a/chromeos-base/verity/OWNERS
+++ b/chromeos-base/verity/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/verity/OWNERS
diff --git a/chromeos-base/verity/files/0001-Add-version-to-PrintTable-and-GetTable.patch b/chromeos-base/verity/files/0001-Add-version-to-PrintTable-and-GetTable.patch
index 5d1099a..29eedb4 100644
--- a/chromeos-base/verity/files/0001-Add-version-to-PrintTable-and-GetTable.patch
+++ b/chromeos-base/verity/files/0001-Add-version-to-PrintTable-and-GetTable.patch
@@ -11,10 +11,10 @@
  verity/file_hasher_test.cc | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/verity/file_hasher_test.cc b/verity/file_hasher_test.cc
+diff --git a/file_hasher_test.cc b/file_hasher_test.cc
 index ec9e6b364e..dc6050e13e 100644
---- a/verity/file_hasher_test.cc
-+++ b/verity/file_hasher_test.cc
+--- a/file_hasher_test.cc
++++ b/file_hasher_test.cc
 @@ -55,8 +55,8 @@ TEST_F(FileHasherTest, EndToEnd) {
    EXPECT_TRUE(hasher.Hash());
    EXPECT_TRUE(hasher.Store());
diff --git a/chromeos-base/verity/files/support-new-dm-verity-format.patch b/chromeos-base/verity/files/support-new-dm-verity-format.patch
index 552acbc..7ca0198 100644
--- a/chromeos-base/verity/files/support-new-dm-verity-format.patch
+++ b/chromeos-base/verity/files/support-new-dm-verity-format.patch
@@ -17,10 +17,10 @@
  verity/verity_main.cc | 16 ++++++++++---
  3 files changed, 54 insertions(+), 20 deletions(-)
 
-diff --git a/verity/file_hasher.cc b/verity/file_hasher.cc
+diff --git a/file_hasher.cc b/file_hasher.cc
 index f3624bf1ae..f5ec32a7f0 100644
---- a/verity/file_hasher.cc
-+++ b/verity/file_hasher.cc
+--- a/file_hasher.cc
++++ b/file_hasher.cc
 @@ -146,7 +146,8 @@ const char* FileHasher::RandomSalt() {
    return random_salt_;
  }
@@ -93,10 +93,10 @@
  }
  
  }  // namespace verity
-diff --git a/verity/file_hasher.h b/verity/file_hasher.h
+diff --git a/file_hasher.h b/file_hasher.h
 index 4db0233bf1..5c2e6b1683 100644
---- a/verity/file_hasher.h
-+++ b/verity/file_hasher.h
+--- a/file_hasher.h
++++ b/file_hasher.h
 @@ -40,8 +40,8 @@ class BRILLO_EXPORT FileHasher {
    virtual bool Hash();
    virtual bool Store();
@@ -108,10 +108,10 @@
  
    virtual const char* RandomSalt();
    virtual void set_salt(const char* salt);
-diff --git a/verity/verity_main.cc b/verity/verity_main.cc
+diff --git a/verity_main.cc b/verity_main.cc
 index 8fb8ed0e51..9d10366007 100644
---- a/verity/verity_main.cc
-+++ b/verity/verity_main.cc
+--- a/verity_main.cc
++++ b/verity_main.cc
 @@ -33,6 +33,7 @@ void print_usage(const char* name) {
        "  hashtree          Path to a hash tree to create or read from\n"
        "  root_hexdigest    Digest of the root node (in hex) for verification\n"
diff --git a/chromeos-base/verity/verity-0.0.1-r396.ebuild b/chromeos-base/verity/verity-0.0.1-r396.ebuild
deleted file mode 100644
index 1a53f4e..0000000
--- a/chromeos-base/verity/verity-0.0.1-r396.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2012 The ChromiumOS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "eefdbdd1fc1ebba4472d615dce2391b37e2c6872" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_REPO="${CROS_GIT_HOST_URL}"
-#CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk verity .gn"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_EGIT_BRANCH="main"
-
-PLATFORM_SUBDIR="verity"
-
-inherit cros-workon platform
-
-DESCRIPTION="File system integrity image generator for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/verity/"
-
-LICENSE="BSD-Google GPL-2"
-KEYWORDS="*"
-
-PATCHES=(
-	"${FILESDIR}/verity-print.patch"
-)
-
-src_prepare() {
-	# The workdir is platform2/nnapi - we need to pop up one level in the stack
-	# to apply our patches.
-	pushd .. || exit
-	eapply -p1 "${FILESDIR}/support-new-dm-verity-format.patch"
-	eapply -p1 "${FILESDIR}/0001-Add-version-to-PrintTable-and-GetTable.patch"
-	popd || exit
-
-	eapply_user
-}
-
-src_install() {
-	platform_src_install
-
-	dobin "${OUT}"/verity
-
-	dolib.so "${OUT}"/lib/libdm-bht.so
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins libdm-bht.pc
-
-	insinto /usr/include/verity
-	doins dm-bht.h dm-bht-userspace.h file_hasher.h
-	cd include || die
-	doins -r asm-generic
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/verity_tests"
-}
diff --git a/chromeos-base/verity/verity-0.0.1-r458.ebuild b/chromeos-base/verity/verity-0.0.1-r458.ebuild
new file mode 100644
index 0000000..ec3590b
--- /dev/null
+++ b/chromeos-base/verity/verity-0.0.1-r458.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2012 The ChromiumOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "466d46556e26af1d31a5e30f9001eb07fa4ad00c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_REPO="${CROS_GIT_HOST_URL}"
+#CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk verity .gn"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_EGIT_BRANCH="main"
+
+PLATFORM_SUBDIR="verity"
+
+inherit cros-workon platform
+
+DESCRIPTION="File system integrity image generator for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/verity/"
+
+LICENSE="BSD-Google GPL-2"
+KEYWORDS="*"
+
+PATCHES=(
+	"${FILESDIR}/support-new-dm-verity-format.patch"
+	"${FILESDIR}/0001-Add-version-to-PrintTable-and-GetTable.patch"
+)
+
+src_install() {
+	platform_src_install
+}
+
+platform_pkg_test() {
+	platform test_all
+}
diff --git a/chromeos-base/verity/verity-9999.ebuild b/chromeos-base/verity/verity-9999.ebuild
index 238815c..677e48f 100644
--- a/chromeos-base/verity/verity-9999.ebuild
+++ b/chromeos-base/verity/verity-9999.ebuild
@@ -6,8 +6,11 @@
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_REPO="${CROS_GIT_HOST_URL}"
+#CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_SUBTREE="common-mk verity .gn"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_EGIT_BRANCH="main"
 
 PLATFORM_SUBDIR="verity"
 
@@ -19,21 +22,15 @@
 LICENSE="BSD-Google GPL-2"
 KEYWORDS="~*"
 
+PATCHES=(
+	"${FILESDIR}/support-new-dm-verity-format.patch"
+	"${FILESDIR}/0001-Add-version-to-PrintTable-and-GetTable.patch"
+)
+
 src_install() {
 	platform_src_install
-
-	dobin "${OUT}"/verity
-
-	dolib.so "${OUT}"/lib/libdm-bht.so
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins libdm-bht.pc
-
-	insinto /usr/include/verity
-	doins dm-bht.h dm-bht-userspace.h file_hasher.h
-	cd include || die
-	doins -r asm-generic
 }
 
 platform_pkg_test() {
-	platform_test "run" "${OUT}/verity_tests"
+	platform test_all
 }
diff --git a/chromeos-base/virtual-file-provider/OWNERS b/chromeos-base/virtual-file-provider/OWNERS
index db7e695..5fda6c0 100644
--- a/chromeos-base/virtual-file-provider/OWNERS
+++ b/chromeos-base/virtual-file-provider/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/virtual_file_provider/OWNERS
diff --git a/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r1036.ebuild b/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r1036.ebuild
deleted file mode 100644
index 66b4603..0000000
--- a/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r1036.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2017 The ChromiumOS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "37c1b567edf6c5dadec78911c5ae703bc9d31456" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk virtual_file_provider .gn"
-
-PLATFORM_SUBDIR="virtual_file_provider"
-
-inherit cros-workon platform user
-
-DESCRIPTION="D-Bus service to provide virtual file"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/virtual_file_provider"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="arcvm"
-
-RDEPEND="
-	sys-fs/fuse:=
-	sys-libs/libcap:=
-"
-
-DEPEND="${RDEPEND}
-	chromeos-base/system_api:="
-
-
-src_install() {
-	platform_src_install
-
-	dobin "${OUT}"/virtual-file-provider
-	if use arcvm; then
-		newbin virtual-file-provider-jailed-arcvm.sh virtual-file-provider-jailed
-	else
-		newbin virtual-file-provider-jailed.sh virtual-file-provider-jailed
-	fi
-
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.VirtualFileProvider.conf
-
-	insinto /etc/init
-	doins init/virtual-file-provider.conf
-	doins init/virtual-file-provider-cgroup.conf
-
-	insinto /usr/share/power_manager
-	doins powerd_prefs/suspend_freezer_deps_virtual-file-provider
-}
-
-pkg_preinst() {
-	enewuser "virtual-file-provider"
-	enewgroup "virtual-file-provider"
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/virtual-file-provider_testrunner"
-}
diff --git a/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r1097.ebuild b/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r1097.ebuild
new file mode 100644
index 0000000..1ccedfe
--- /dev/null
+++ b/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r1097.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2017 The ChromiumOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "fc80164750b3a06d340414acb8934f6fe4d72811" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk virtual_file_provider .gn"
+
+PLATFORM_SUBDIR="virtual_file_provider"
+
+inherit cros-workon platform user
+
+DESCRIPTION="D-Bus service to provide virtual file"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/virtual_file_provider"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="arcvm"
+
+RDEPEND="
+	sys-fs/fuse:=
+	sys-libs/libcap:=
+"
+
+DEPEND="${RDEPEND}
+	chromeos-base/system_api:="
+
+
+src_install() {
+	platform_src_install
+}
+
+pkg_preinst() {
+	enewuser "virtual-file-provider"
+	enewgroup "virtual-file-provider"
+}
+
+platform_pkg_test() {
+	platform test_all
+}
diff --git a/chromeos-base/virtual-file-provider/virtual-file-provider-9999.ebuild b/chromeos-base/virtual-file-provider/virtual-file-provider-9999.ebuild
index 34234ca..d325d8a 100644
--- a/chromeos-base/virtual-file-provider/virtual-file-provider-9999.ebuild
+++ b/chromeos-base/virtual-file-provider/virtual-file-provider-9999.ebuild
@@ -31,23 +31,6 @@
 
 src_install() {
 	platform_src_install
-
-	dobin "${OUT}"/virtual-file-provider
-	if use arcvm; then
-		newbin virtual-file-provider-jailed-arcvm.sh virtual-file-provider-jailed
-	else
-		newbin virtual-file-provider-jailed.sh virtual-file-provider-jailed
-	fi
-
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.VirtualFileProvider.conf
-
-	insinto /etc/init
-	doins init/virtual-file-provider.conf
-	doins init/virtual-file-provider-cgroup.conf
-
-	insinto /usr/share/power_manager
-	doins powerd_prefs/suspend_freezer_deps_virtual-file-provider
 }
 
 pkg_preinst() {
@@ -56,5 +39,5 @@
 }
 
 platform_pkg_test() {
-	platform_test "run" "${OUT}/virtual-file-provider_testrunner"
+	platform test_all
 }
diff --git a/chromeos-base/virtual-usb-printer/DIR_METADATA b/chromeos-base/virtual-usb-printer/DIR_METADATA
new file mode 100644
index 0000000..5338dad
--- /dev/null
+++ b/chromeos-base/virtual-usb-printer/DIR_METADATA
@@ -0,0 +1,27 @@
+# Metadata information for this directory.
+#
+# For more information on DIR_METADATA files, see:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/README.md
+#
+# For the schema of this file, see Metadata message:
+#   https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+
+team_email: "project-bolton@google.com"
+
+buganizer {
+  # https://b.corp.google.com/issues?q=status:open%20componentid:167231
+  # ChromeOS > Platform > Services > Printing
+  component_id: 167231
+}
+
+chromeos {
+  cq {
+    source_test_plans {
+      test_plan_starlark_files {
+        host: "chrome-internal.googlesource.com"
+        project: "chromeos/config-internal"
+        path: "test/plans/v2/ctpv1_compatible/printscan_cq.star"
+      }
+    }
+  }
+}
diff --git a/chromeos-base/virtual-usb-printer/OWNERS b/chromeos-base/virtual-usb-printer/OWNERS
index 30a10d5..ad5f3c8 100644
--- a/chromeos-base/virtual-usb-printer/OWNERS
+++ b/chromeos-base/virtual-usb-printer/OWNERS
@@ -1 +1 @@
-include chromiumos/third_party/virtual-usb-printer:/OWNERS
+include chromiumos/owners:v1:/printscan/OWNERS.printscan
diff --git a/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r523.ebuild b/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r586.ebuild
similarity index 88%
rename from chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r523.ebuild
rename to chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r586.ebuild
index fe8825a..b7c2f16 100644
--- a/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r523.ebuild
+++ b/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r586.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "7a80df5bd2636d9ef60735ed859b8c156045b19b")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "a2a9aed115d04405f4dd0b8e88e0bd071aaf8e78")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "a84706954fed8d459413c55d3c3214a2a4546eeb")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "776c975db20faf261469da2b5166177eb92196b1")
 CROS_WORKON_LOCALNAME=("platform2" "third_party/virtual-usb-printer")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/virtual-usb-printer")
 CROS_WORKON_EGIT_BRANCH=("main" "chromeos")
@@ -34,6 +34,10 @@
 
 DEPEND="${RDEPEND}"
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 platform_pkg_test() {
 	platform_test "run" "${OUT}/escl-manager-testrunner"
 	platform_test "run" "${OUT}/http-util-testrunner"
diff --git a/chromeos-base/virtual-usb-printer/virtual-usb-printer-9999.ebuild b/chromeos-base/virtual-usb-printer/virtual-usb-printer-9999.ebuild
index c35c963..3a60200 100644
--- a/chromeos-base/virtual-usb-printer/virtual-usb-printer-9999.ebuild
+++ b/chromeos-base/virtual-usb-printer/virtual-usb-printer-9999.ebuild
@@ -32,6 +32,10 @@
 
 DEPEND="${RDEPEND}"
 
+BDEPEND="
+	dev-libs/protobuf
+"
+
 platform_pkg_test() {
 	platform_test "run" "${OUT}/escl-manager-testrunner"
 	platform_test "run" "${OUT}/http-util-testrunner"
diff --git a/chromeos-base/vm_guest_tools/OWNERS b/chromeos-base/vm_guest_tools/OWNERS
index db7e695..390b7e8 100644
--- a/chromeos-base/vm_guest_tools/OWNERS
+++ b/chromeos-base/vm_guest_tools/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/vm_tools/OWNERS
diff --git a/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1557.ebuild b/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1672.ebuild
similarity index 80%
rename from chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1557.ebuild
rename to chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1672.ebuild
index c65f3f8..7a205ac 100644
--- a/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1557.ebuild
+++ b/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1672.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="76741400c5c0e74bf39bb2fbcc944b3f8356179c"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "af42858f0c4f3fae729c03bccb4e1eb13c295957" "61561ec69ca2e81072887f8239af4c30593d6b2c" "05b7c63c9f143e2b1c3c1065e1e97fae39e8741f" "f368627960e9d37dd0154fe8655e3370bd2bba38" "54c311e4b73e4ad2e531c9f7769412802cc8b19c" "0c5a113933f1222bcbe43f22d86e947ce021ba47" "b9bd55def48444485319240582319d8472c48632" "53f880566f2b527bdeec79a916504c3abb305b20" "49773306fb85a7a0601f6cb33d5e87e910844ad3" "c1ed260766cf73beeb86cb03f8b90f0ec1042810" "b43e886293a2377f871de47ee78cf83c596cdf4d" "53d7146a8355184359434857b66bdadeb40b66a1" "d35909dbcae691b9e9da4ba50e11ca2ed91d1c45" "0f8ac67491f7a52e0de6999644a3797b7fed364c" "a01dc69a1e1fa54805fe9b48ce5c278a7e70de0c")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "af42858f0c4f3fae729c03bccb4e1eb13c295957" "81406a32898f310de1ad0fb773c7c66c0d2d59a5" "cf96d802dc00e52f7f7fd26da97fce4b68560514" "f368627960e9d37dd0154fe8655e3370bd2bba38" "431e35862e2cd724e8727c4dae1f7e0aa3c8462a" "0c5a113933f1222bcbe43f22d86e947ce021ba47" "f06d46920c6ec15e6e0b551a53ab3ac686157e3d" "1d9ce187cc73a8cdb8f522eb5163315cac04a557" "cc392a419c736a744509c4ac2d6f9efee7b27abd" "e82758de7a4b5df7c04dff01174e2f8d77c8e408" "363f05d82723f00e35badca3f23b3b75ab52d543" "53d7146a8355184359434857b66bdadeb40b66a1" "550c26f7b039924bbefed8b2d17ad6a8d4c6cdd5" "0f8ac67491f7a52e0de6999644a3797b7fed364c" "a01dc69a1e1fa54805fe9b48ce5c278a7e70de0c")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -44,7 +44,7 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-IUSE="kvm_guest vm-containers fuzzer vm_borealis"
+IUSE="kvm_guest vm-containers fuzzer vm_borealis vm_sludge"
 
 # This ebuild should only be used on VM guest boards.
 REQUIRED_USE="kvm_guest"
@@ -53,6 +53,7 @@
 	!!chromeos-base/vm_tools
 	chromeos-base/minijail:=
 	net-libs/grpc:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:=
 	dev-go/protobuf-legacy-api:=
 "
diff --git a/chromeos-base/vm_guest_tools/vm_guest_tools-9999.ebuild b/chromeos-base/vm_guest_tools/vm_guest_tools-9999.ebuild
index ca205f9..f501066 100644
--- a/chromeos-base/vm_guest_tools/vm_guest_tools-9999.ebuild
+++ b/chromeos-base/vm_guest_tools/vm_guest_tools-9999.ebuild
@@ -42,7 +42,7 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="kvm_guest vm-containers fuzzer vm_borealis"
+IUSE="kvm_guest vm-containers fuzzer vm_borealis vm_sludge"
 
 # This ebuild should only be used on VM guest boards.
 REQUIRED_USE="kvm_guest"
@@ -51,6 +51,7 @@
 	!!chromeos-base/vm_tools
 	chromeos-base/minijail:=
 	net-libs/grpc:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:=
 	dev-go/protobuf-legacy-api:=
 "
diff --git a/chromeos-base/vm_host_tools/OWNERS b/chromeos-base/vm_host_tools/OWNERS
index db7e695..390b7e8 100644
--- a/chromeos-base/vm_host_tools/OWNERS
+++ b/chromeos-base/vm_host_tools/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/vm_tools/OWNERS
diff --git a/chromeos-base/vm_host_tools/metadata.xml b/chromeos-base/vm_host_tools/metadata.xml
new file mode 100644
index 0000000..07a85e9
--- /dev/null
+++ b/chromeos-base/vm_host_tools/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<use>
+	<flag name='fuzzer'>Set up fuzzer</flag>
+	<flag name='wilco'>Set up Wilco DTC</flag>
+	<flag name='crosvm-virtio-video'>Enable the virtio video decoder. Enabled by default but disabled on betty which does not have hardware video decoder.</flag>
+	<flag name='vulkan'>Enable vulcan for ARCVM.</flag>
+	<flag name='libglvnd'>Enable BigGL when libglvnd is available.</flag>
+	<flag name='virtgpu_native_context'>Pass drm flag to vulkan.</flag>
+	<flag name='cross_domain_context'>Pass cross-domain to vulkan.</flag>
+	<flag name='iioservice'>Sets androidboot.iioservice_present flag.</flag>
+	<flag name='vfio_gpu'>Enable GPU passthrough.</flag>
+	<flag name='arcvm_gki'>Switch to GKI kernel for ARCVM</flag>
+	<flag name='borealis_host'></flag>
+</use>
+</pkgmetadata>
diff --git a/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r2227.ebuild b/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r2603.ebuild
similarity index 70%
rename from chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r2227.ebuild
rename to chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r2603.ebuild
index 8fe2d05..9686b81 100644
--- a/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r2227.ebuild
+++ b/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r2603.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="af29f016e8f4212c169ba01cd70714022633c97a"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "da223b2a668d598e3576f36b498e8dbea518a7bb" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "e1126a7bca529afdbaf1a59f6f0b8bae42321a02" "136234c73d08340bd5c0f9edba6797b4d7ee4218" "b6a499afe15c70520c73109f5587bd28f50964fa" "af42858f0c4f3fae729c03bccb4e1eb13c295957" "d0e202602f89d5ebd7432869dd20c0955c84ce05" "05b7c63c9f143e2b1c3c1065e1e97fae39e8741f" "82f83a571666133966ac21c23f4c619cae2a8519" "44a043a3d0026594d49ecb5f0472b1d12bdf766b" "17c31229f9e5067410533a254148a4c29637123e" "0830dc7ffcbe4f21c9b24856eabf9b6b750648f0" "44f8f4cb1c0a79e35f706c91bf056ef16feab851" "ee7a391100d5bf60f65682988029562ee9c82798" "4f9e997c7cfc37f43a50de4fe1749cc5c93fa102" "e7484fcabff8350254feec93c24db8c75bdc4965" "32a4c9aa5d67daa8e92c0435ab1fdb64fc85438c" "c1ed260766cf73beeb86cb03f8b90f0ec1042810" "2ea09c9017c8b7e70d371d6f9cc3d6d1b55b3540" "cce74c629937a0b4909bb94dedb84bfdc9a6463d" "d35909dbcae691b9e9da4ba50e11ca2ed91d1c45" "0f8ac67491f7a52e0de6999644a3797b7fed364c" "f2431337126663ce80d01b13755ed940d700e70a")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "5c1598293a3b2d474abb7aafc492654f9cb521de" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "e74aa615248081a4161427718d8576d2a9968d5f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d052bf0047bb66e913823ec7c29ffdd334428418" "88bcc1d39084f5d0a4ca836beaf45c0b55dbc1c3" "af42858f0c4f3fae729c03bccb4e1eb13c295957" "1eac0a1d2c0b2e515686533e05b19ace8704b119" "cf96d802dc00e52f7f7fd26da97fce4b68560514" "f302986533348ad36e4452cb4e2c12153e7a544d" "27312c4c282a7780d431c3346d522e2f96b474da" "fb7927f3a2a4ef162cfa0aa35968cbf14ed01be0" "e4ad513703fcb62eaff94bc2a6e1cfcd9baf0a2b" "814ddf533d10c557e69c4a02ea8fadb0629a2bb0" "ee7a391100d5bf60f65682988029562ee9c82798" "4f9e997c7cfc37f43a50de4fe1749cc5c93fa102" "143a0b5c9182111af77c7e35ce2a89a0cf17491d" "8e1e8de1211d481b9c31e9a6fd1d8264c424b86e" "e82758de7a4b5df7c04dff01174e2f8d77c8e408" "76d848e95fbd8b4f1e5e79c97cf77eda442b4ba7" "0c4a08a4f57b5d6806df4ad5cec9d2c8fb02fab0" "550c26f7b039924bbefed8b2d17ad6a8d4c6cdd5" "0f8ac67491f7a52e0de6999644a3797b7fed364c" "9942607d3de36a375711502f44f44d28aac7bd3a")
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
@@ -14,8 +14,8 @@
 	common-mk
 	featured
 	metrics
+	net-base
 	.gn
-	sirenia
 	spaced
 	libcrossystem
 
@@ -46,6 +46,9 @@
 CROS_WORKON_SUBTREE="${PLATFORM2_PATHS[*]}"
 
 PLATFORM_SUBDIR="vm_tools"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit tmpfiles cros-workon platform udev user arc-build-constants
 
@@ -54,13 +57,11 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="*"
-# The crosvm-wl-dmabuf and crosvm-virtio-video USE flags
-# are used when preprocessing concierge source.
-IUSE="+kvm_host +seccomp +crosvm-wl-dmabuf fuzzer wilco +crosvm-virtio-video vulkan libglvnd virtgpu_native_context cross_domain_context iioservice vfio_gpu arcvm_gki borealis_host"
-REQUIRED_USE="
-	kvm_host
-	virtgpu_native_context? ( cross_domain_context )
-"
+# TODO(b/296341333): USE=vmt-tracing is only needed to prevent tracing from
+# being compiled into tests (which would cause symbol conflicts). Advice from
+# build team is that we can just have tracing always-on once we fix the bug.
+IUSE="+kvm_host +seccomp fuzzer wilco +crosvm-virtio-video vulkan libglvnd virtgpu_native_context cross_domain_context iioservice vfio_gpu arcvm_gki borealis_host vmt-tracing"
+REQUIRED_USE="kvm_host"
 
 COMMON_DEPEND="
 	app-arch/libarchive:=
@@ -69,13 +70,15 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/crosvm:=
 	chromeos-base/libcrossystem:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
+	>=chromeos-base/metrics-0.0.1-r3617:=
 	chromeos-base/minijail:=
-	chromeos-base/patchpanel:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel-client:=
 	chromeos-base/spaced
-	net-libs/grpc:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:=
+	dev-libs/re2:=
+	net-libs/grpc:=
 	sys-apps/util-linux:=
 "
 
@@ -88,7 +91,8 @@
 	${COMMON_DEPEND}
 	chromeos-base/dlcservice-client:=
 	chromeos-base/featured:=
-	chromeos-base/manatee-client:=
+	vmt-tracing? ( chromeos-base/perfetto:= )
+	chromeos-base/session_manager-client:=
 	chromeos-base/shill-client:=
 	chromeos-base/system_api:=[fuzzer?]
 	chromeos-base/vboot_reference:=
@@ -96,6 +100,12 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 get_vmlog_forwarder_start_services() {
 	local start_services="starting vm_concierge"
 	if use wilco; then
@@ -151,6 +161,9 @@
 
 	insinto /etc/init
 	doins init/seneschal.conf
+	# TODO(b/288998343): remove when bug is fixed and interrupted discards are
+	# not lost.
+	doins init/trim_filesystem.conf
 	doins init/vm_cicerone.conf
 	doins init/vm_concierge.conf
 
@@ -177,11 +190,7 @@
 	fi
 
 	insinto /usr/local/vms/etc
-	doins init/arcvm_dev.conf
-
-	# TODO(b/159953121): File and steps below should be removed later.
-	insinto /etc
-	newins init/arcvm_dev.conf_deprecated arcvm_dev.conf
+	doins concierge/config/arcvm_dev.conf
 
 	insinto /usr/share/policy
 	if use seccomp; then
diff --git a/chromeos-base/vm_host_tools/vm_host_tools-9999.ebuild b/chromeos-base/vm_host_tools/vm_host_tools-9999.ebuild
index c308fb0..93508b0 100644
--- a/chromeos-base/vm_host_tools/vm_host_tools-9999.ebuild
+++ b/chromeos-base/vm_host_tools/vm_host_tools-9999.ebuild
@@ -12,8 +12,8 @@
 	common-mk
 	featured
 	metrics
+	net-base
 	.gn
-	sirenia
 	spaced
 	libcrossystem
 
@@ -44,6 +44,9 @@
 CROS_WORKON_SUBTREE="${PLATFORM2_PATHS[*]}"
 
 PLATFORM_SUBDIR="vm_tools"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit tmpfiles cros-workon platform udev user arc-build-constants
 
@@ -52,13 +55,11 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-# The crosvm-wl-dmabuf and crosvm-virtio-video USE flags
-# are used when preprocessing concierge source.
-IUSE="+kvm_host +seccomp +crosvm-wl-dmabuf fuzzer wilco +crosvm-virtio-video vulkan libglvnd virtgpu_native_context cross_domain_context iioservice vfio_gpu arcvm_gki borealis_host"
-REQUIRED_USE="
-	kvm_host
-	virtgpu_native_context? ( cross_domain_context )
-"
+# TODO(b/296341333): USE=vmt-tracing is only needed to prevent tracing from
+# being compiled into tests (which would cause symbol conflicts). Advice from
+# build team is that we can just have tracing always-on once we fix the bug.
+IUSE="+kvm_host +seccomp fuzzer wilco +crosvm-virtio-video vulkan libglvnd virtgpu_native_context cross_domain_context iioservice vfio_gpu arcvm_gki borealis_host vmt-tracing"
+REQUIRED_USE="kvm_host"
 
 COMMON_DEPEND="
 	app-arch/libarchive:=
@@ -67,13 +68,15 @@
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/crosvm:=
 	chromeos-base/libcrossystem:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
+	>=chromeos-base/metrics-0.0.1-r3617:=
 	chromeos-base/minijail:=
-	chromeos-base/patchpanel:=
+	chromeos-base/net-base:=
 	chromeos-base/patchpanel-client:=
 	chromeos-base/spaced
-	net-libs/grpc:=
+	dev-cpp/abseil-cpp:=
 	dev-libs/protobuf:=
+	dev-libs/re2:=
+	net-libs/grpc:=
 	sys-apps/util-linux:=
 "
 
@@ -86,7 +89,8 @@
 	${COMMON_DEPEND}
 	chromeos-base/dlcservice-client:=
 	chromeos-base/featured:=
-	chromeos-base/manatee-client:=
+	vmt-tracing? ( chromeos-base/perfetto:= )
+	chromeos-base/session_manager-client:=
 	chromeos-base/shill-client:=
 	chromeos-base/system_api:=[fuzzer?]
 	chromeos-base/vboot_reference:=
@@ -94,6 +98,12 @@
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 "
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 get_vmlog_forwarder_start_services() {
 	local start_services="starting vm_concierge"
 	if use wilco; then
@@ -149,6 +159,9 @@
 
 	insinto /etc/init
 	doins init/seneschal.conf
+	# TODO(b/288998343): remove when bug is fixed and interrupted discards are
+	# not lost.
+	doins init/trim_filesystem.conf
 	doins init/vm_cicerone.conf
 	doins init/vm_concierge.conf
 
@@ -175,11 +188,7 @@
 	fi
 
 	insinto /usr/local/vms/etc
-	doins init/arcvm_dev.conf
-
-	# TODO(b/159953121): File and steps below should be removed later.
-	insinto /etc
-	newins init/arcvm_dev.conf_deprecated arcvm_dev.conf
+	doins concierge/config/arcvm_dev.conf
 
 	insinto /usr/share/policy
 	if use seccomp; then
diff --git a/chromeos-base/vm_protos/files/cos-platform2.patch b/chromeos-base/vm_protos/files/cos-platform2.patch
deleted file mode 100644
index f9fad5d..0000000
--- a/chromeos-base/vm_protos/files/cos-platform2.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-# COS: This patch is needed for updating packages in chromiumos-overlay.
-# commit 8b639eaa96932565b41da559e4a533f65ba471af introduces a change in
-# namespaces.SimpleUnshare() in common-mk/platform2_test.py. Until we pick
-# up the change in our mirror repo, we have to keep the old interface.
-# commit 3bb505c6986 introduces dependency on gtest_parallel. We need to
-# remove that dependency since we don't have it in COS source code.
-# commit 3ce1c04bb8 removed post_test support. We need to add it back.
-diff --git a/common-mk/platform2_test.py b/common-mk/platform2_test.py
-index 435e7e8dde..d051b371af 100755
---- a/common-mk/platform2_test.py
-+++ b/common-mk/platform2_test.py
-@@ -434,6 +434,12 @@ class Platform2Test:
-             self.qemu.Install()
-             self.qemu.RegisterBinfmt()
- 
-+    def post_test(self):
-+        """Runs post-test teardown.
-+
-+        Removes mounts/files copied during pre-test.
-+        """
-+
-     def _remount_ro(self, path: str) -> None:
-         """Helper to remount a path as read-only.
- 
-@@ -759,25 +765,6 @@ class Platform2Test:
-         if gtest_filter != "-":
-             argv.append("--gtest_filter=" + gtest_filter)
- 
--        # Default for jobs is 1 right now in which case we run the test runner
--        # directly since running it as gtest_parallel carries a non-trivial
--        # overhead.
--        if self.jobs != 1:
--            # Switch to using gtest-parallel instead to run tests parallelly.
--            # Introduces a dependency on python while running tests, which
--            # means that for some cross compilations this maybe slower.
--            cmd = os.path.join(
--                constants.CHROOT_SOURCE_ROOT,
--                "src/third_party/gtest-parallel/gtest-parallel",
--            )
--            argv.insert(0, cmd)
--            # Special value 0 is used to indicate “use all available CPU cores".
--            # If the invocation specifies any number other than zero or one, use
--            # that. The default for gtest-parallel is to use all available
--            # workers.
--            if self.jobs:
--                argv.append(f"--workers={self.jobs}")
--
-         # Make orphaned child processes reparent to this process
-         # instead of the init process.  This allows us to kill them if
-         # they do not terminate after the test has finished running.
-@@ -1024,14 +1011,12 @@ def _ReExecuteIfNeeded(
-             print(f"error: user not supported: {user}", file=sys.stderr)
-             sys.exit(1)
- 
--    namespaces.SimpleUnshare(
--        net=ns_net, pid=ns_pid, pid_uid=pid_uid, pid_gid=pid_gid
--    )
-+    namespaces.SimpleUnshare(net=ns_net, pid=ns_pid)
- 
- 
- def GetParser():
-     """Return a command line parser."""
--    actions = ["pre_test", "run"]
-+    actions = ["pre_test", "post_test", "run"]
- 
-     parser = commandline.ArgumentParser(description=__doc__)
-     group = parser.add_argument_group("Namespaces")
-@@ -1141,9 +1126,6 @@ def main(argv):
-         if not os.path.isdir(options.sysroot):
-             parser.error(message="Sysroot does not exist: %s" % options.sysroot)
- 
--    if options.jobs < 0:
--        parser.error("You must specify jobs greater than or equal to 0")
--
-     if options.strategy == "sudo":
-         if options.pid_uid is None:
-             options.pid_uid = os.getuid()
diff --git a/chromeos-base/vm_protos/vm_protos-0.0.1-r513.ebuild b/chromeos-base/vm_protos/vm_protos-0.0.1-r499.ebuild
similarity index 79%
rename from chromeos-base/vm_protos/vm_protos-0.0.1-r513.ebuild
rename to chromeos-base/vm_protos/vm_protos-0.0.1-r499.ebuild
index 3640387..f5bc047 100644
--- a/chromeos-base/vm_protos/vm_protos-0.0.1-r513.ebuild
+++ b/chromeos-base/vm_protos/vm_protos-0.0.1-r499.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="c668732ef009989fa61b70b1fc50f97d0cc86132"
-CROS_WORKON_TREE=("ba80a91918aee97ac5011b4e955452356f776259" "29c6261285fe55255630471c6dc6becc9547d8da" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "29c6261285fe55255630471c6dc6becc9547d8da" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_GO_PACKAGES=(
 	"chromiumos/vm_tools/..."
 )
@@ -49,14 +49,6 @@
 	CROS_GO_WORKSPACE="${OUT}/gen/go"
 }
 
-src_prepare() {
-	# COS: This patch is needed for new chromiumos-overlay
-	# pkg version to work with our old platform2 repo.
-	cd  "${WORKDIR}"/"${P}" || die
-	eapply "${FILESDIR}"/cos-platform2.patch
-	default
-}
-
 src_install() {
 	platform_src_install
 
diff --git a/chromeos-base/vtpm/OWNERS b/chromeos-base/vtpm/OWNERS
index 2acb68f..1589920 100644
--- a/chromeos-base/vtpm/OWNERS
+++ b/chromeos-base/vtpm/OWNERS
@@ -1 +1 @@
-cylai@chromium.org
+include chromiumos/platform2:/vtpm/OWNERS
diff --git a/chromeos-base/vtpm/vtpm-0.0.1-r331.ebuild b/chromeos-base/vtpm/vtpm-0.0.1-r485.ebuild
similarity index 66%
rename from chromeos-base/vtpm/vtpm-0.0.1-r331.ebuild
rename to chromeos-base/vtpm/vtpm-0.0.1-r485.ebuild
index 4b6d796..7b10ffc 100644
--- a/chromeos-base/vtpm/vtpm-0.0.1-r331.ebuild
+++ b/chromeos-base/vtpm/vtpm-0.0.1-r485.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="4cd35fb11ce1d94e91ded61681327ee6738c3578"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "bccbc8518cd5c6093f62309eede93a41c3cb78b4" "bdc2fe06e72f494e59d3000e9c660943df59f82c" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "41112b3759d18a5cceaf1f06f65e6d4bdc406e33" "199cac0899daace8030b33f49dd183a5b5baf169" "433baf0de74de8f33b68fd0bec974e95440ecd74" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "102d4ec63eaf55397c3fc456d3b70e574692dc44" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "989acbd33fd18024396e010b1be43d25cbdf942d" "f73f25bb045d099841b3ac929b6d3218060216df" "48055d0695b9f9dbfaf4545e2bfd0797d7ee30ed" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
@@ -12,6 +12,9 @@
 CROS_WORKON_SUBTREE="common-mk attestation libhwsec-foundation metrics tpm_manager trunks vtpm .gn"
 
 PLATFORM_SUBDIR="vtpm"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon libchrome platform user
 
@@ -24,9 +27,11 @@
 
 RDEPEND="
 	chromeos-base/attestation:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	chromeos-base/system_api:=
-	chromeos-base/tpm_manager:=
+	chromeos-base/tpm_manager-client:=
 	chromeos-base/trunks:=
+	dev-libs/protobuf:=
 	"
 
 DEPEND="
@@ -35,6 +40,12 @@
 	chromeos-base/trunks:=[test?]
 	"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	# Create user and group for vtpm.
 	enewuser "vtpm"
diff --git a/chromeos-base/vtpm/vtpm-9999.ebuild b/chromeos-base/vtpm/vtpm-9999.ebuild
index 5ba0d19..e9f9ba0 100644
--- a/chromeos-base/vtpm/vtpm-9999.ebuild
+++ b/chromeos-base/vtpm/vtpm-9999.ebuild
@@ -10,6 +10,9 @@
 CROS_WORKON_SUBTREE="common-mk attestation libhwsec-foundation metrics tpm_manager trunks vtpm .gn"
 
 PLATFORM_SUBDIR="vtpm"
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
 
 inherit cros-workon libchrome platform user
 
@@ -22,9 +25,11 @@
 
 RDEPEND="
 	chromeos-base/attestation:=[test?]
+	chromeos-base/libhwsec-foundation:=
 	chromeos-base/system_api:=
-	chromeos-base/tpm_manager:=
+	chromeos-base/tpm_manager-client:=
 	chromeos-base/trunks:=
+	dev-libs/protobuf:=
 	"
 
 DEPEND="
@@ -33,6 +38,12 @@
 	chromeos-base/trunks:=[test?]
 	"
 
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+	chromeos-base/minijail
+	dev-libs/protobuf
+"
+
 pkg_preinst() {
 	# Create user and group for vtpm.
 	enewuser "vtpm"
diff --git a/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r358.ebuild b/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r417.ebuild
similarity index 84%
rename from chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r358.ebuild
rename to chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r417.ebuild
index 6b049d9..04e9425 100644
--- a/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r358.ebuild
+++ b/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r417.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "cd857fe2b5ecdbe73201e3881c114ccb50ba7a8a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "cd857fe2b5ecdbe73201e3881c114ccb50ba7a8a" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_GO_PACKAGES=(
 	"chromiumos/wilco_dtc/..."
 )
@@ -36,6 +36,11 @@
 	dev-go/protobuf
 	dev-go/grpc
 "
+BDEPEND="
+	dev-libs/protobuf
+	dev-go/protobuf-legacy-api
+	net-libs/grpc
+"
 
 src_unpack() {
 	platform_src_unpack
diff --git a/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-9999.ebuild b/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-9999.ebuild
index cca415c..6c55bd7 100644
--- a/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-9999.ebuild
+++ b/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-9999.ebuild
@@ -34,6 +34,11 @@
 	dev-go/protobuf
 	dev-go/grpc
 "
+BDEPEND="
+	dev-libs/protobuf
+	dev-go/protobuf-legacy-api
+	net-libs/grpc
+"
 
 src_unpack() {
 	platform_src_unpack
diff --git a/chromeos-base/xdr-proto/xdr-proto-0.0.1-r81.ebuild b/chromeos-base/xdr-proto/xdr-proto-0.0.1-r186.ebuild
similarity index 78%
rename from chromeos-base/xdr-proto/xdr-proto-0.0.1-r81.ebuild
rename to chromeos-base/xdr-proto/xdr-proto-0.0.1-r186.ebuild
index 495206d..13138c0 100644
--- a/chromeos-base/xdr-proto/xdr-proto-0.0.1-r81.ebuild
+++ b/chromeos-base/xdr-proto/xdr-proto-0.0.1-r186.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "9bfdd9cb6b8f6262a4a7d760d1f51f213b1e85f5" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="63150342c81b7d2c6e55b02852c0837a782f27f6"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "2951cc414747c37d82fc61f67e24aec6cd522c1c" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_GO_PACKAGES=(
 	"chromiumos/xdr/secagentd/..."
 )
@@ -30,8 +30,11 @@
 
 DEPEND="
 	${RDEPEND}
-	dev-go/protobuf
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 src_unpack() {
diff --git a/chromeos-base/xdr-proto/xdr-proto-9999.ebuild b/chromeos-base/xdr-proto/xdr-proto-9999.ebuild
index e10a6d3..a168dd9 100644
--- a/chromeos-base/xdr-proto/xdr-proto-9999.ebuild
+++ b/chromeos-base/xdr-proto/xdr-proto-9999.ebuild
@@ -28,8 +28,11 @@
 
 DEPEND="
 	${RDEPEND}
-	dev-go/protobuf
+"
+
+BDEPEND="
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 src_unpack() {
diff --git a/dev-go/perfetto-protos/OWNERS b/dev-go/perfetto-protos/OWNERS
index 83301cd..cfd10a1 100644
--- a/dev-go/perfetto-protos/OWNERS
+++ b/dev-go/perfetto-protos/OWNERS
@@ -1,2 +1,5 @@
-chenghaoyang@chromium.org
 chinglinyu@chromium.org
+skyostil@chromium.org
+
+# Used by PUpr
+include chromiumos/owners:v1:/bots/OWNERS.pupr
diff --git a/dev-go/perfetto-protos/perfetto-protos-33.0-r13.ebuild b/dev-go/perfetto-protos/perfetto-protos-37.0-r16.ebuild
similarity index 85%
rename from dev-go/perfetto-protos/perfetto-protos-33.0-r13.ebuild
rename to dev-go/perfetto-protos/perfetto-protos-37.0-r16.ebuild
index 2a5a7ec..e03c660 100644
--- a/dev-go/perfetto-protos/perfetto-protos-33.0-r13.ebuild
+++ b/dev-go/perfetto-protos/perfetto-protos-37.0-r16.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("6087bfd57d4cdb4eda85c9b32b73b3b55e48ad87" "f5c57304fe9e1f0faabad3652b1ac731017962b2")
-CROS_WORKON_TREE=("90059a42c96c57bbfc29b6de029350d5b72465b3" "de893318afddde7f89666376b8f346ea40e2fdf7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT=("5d157cfb932c65c7803da78b9ab5c9d7931776f5" "59bd094e412045c9e3398ff1a5a7ee558430d4b9")
+CROS_WORKON_TREE=("695c0ed1c8b7a563b16df7f86872c835f46f6ea7" "5b94fa77cb158a5b9294bcbc6d0dc1138f75c838" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_GO_PACKAGES=(
 	"android.googlesource.com/platform/external/perfetto/protos/perfetto/metrics/github.com/google/perfetto/perfetto_proto"
 	"android.googlesource.com/platform/external/perfetto/protos/perfetto/trace/github.com/google/perfetto/perfetto_proto"
@@ -38,6 +38,7 @@
 BDEPEND="
 	dev-go/protobuf
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 RDEPEND="
diff --git a/dev-go/perfetto-protos/perfetto-protos-9999.ebuild b/dev-go/perfetto-protos/perfetto-protos-9999.ebuild
index 25fcac2..41ce08f8 100644
--- a/dev-go/perfetto-protos/perfetto-protos-9999.ebuild
+++ b/dev-go/perfetto-protos/perfetto-protos-9999.ebuild
@@ -36,6 +36,7 @@
 BDEPEND="
 	dev-go/protobuf
 	dev-go/protobuf-legacy-api
+	dev-libs/protobuf
 "
 
 RDEPEND="
diff --git a/dev-libs/libtextclassifier/OWNERS b/dev-libs/libtextclassifier/OWNERS
new file mode 100644
index 0000000..db7e695
--- /dev/null
+++ b/dev-libs/libtextclassifier/OWNERS
@@ -0,0 +1,2 @@
+# TODO: Add per-package OWNERS and delete this when done.
+*
diff --git a/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r317.ebuild b/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r376.ebuild
similarity index 96%
rename from dev-libs/libtextclassifier/libtextclassifier-0.0.1-r317.ebuild
rename to dev-libs/libtextclassifier/libtextclassifier-0.0.1-r376.ebuild
index a3d259f..58e8500 100644
--- a/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r317.ebuild
+++ b/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r376.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "01652c17e116baa8ebd7083e8cbc3dede513ac9e")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "4fa2be0611424952390eb570106ed5944e294b46")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "01652c17e116baa8ebd7083e8cbc3dede513ac9e")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "4fa2be0611424952390eb570106ed5944e294b46")
 CROS_WORKON_LOCALNAME=("../platform2" "libtextclassifier")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/libtextclassifier")
 CROS_WORKON_EGIT_BRANCH=("main" "master")
@@ -50,6 +50,10 @@
 	dev-libs/marisa-aosp:=
 "
 
+BDEPEND="
+	dev-libs/flatbuffers
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/dev-libs/libtextclassifier/libtextclassifier-9999.ebuild b/dev-libs/libtextclassifier/libtextclassifier-9999.ebuild
index 8938fe7..64facf6 100644
--- a/dev-libs/libtextclassifier/libtextclassifier-9999.ebuild
+++ b/dev-libs/libtextclassifier/libtextclassifier-9999.ebuild
@@ -48,6 +48,10 @@
 	dev-libs/marisa-aosp:=
 "
 
+BDEPEND="
+	dev-libs/flatbuffers
+"
+
 src_install() {
 	platform_src_install
 
diff --git a/dev-libs/libutf/OWNERS b/dev-libs/libutf/OWNERS
new file mode 100644
index 0000000..db7e695
--- /dev/null
+++ b/dev-libs/libutf/OWNERS
@@ -0,0 +1,2 @@
+# TODO: Add per-package OWNERS and delete this when done.
+*
diff --git a/dev-libs/libutf/libutf-0.0.1-r268.ebuild b/dev-libs/libutf/libutf-0.0.1-r326.ebuild
similarity index 87%
rename from dev-libs/libutf/libutf-0.0.1-r268.ebuild
rename to dev-libs/libutf/libutf-0.0.1-r326.ebuild
index 0880f11..6e0c71d 100644
--- a/dev-libs/libutf/libutf-0.0.1-r268.ebuild
+++ b/dev-libs/libutf/libutf-0.0.1-r326.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "c17bb435be940edf1aff81469215bb6a071f3c38")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "fc022abae9d52285526cb0dda697e2bea18696ca")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "c17bb435be940edf1aff81469215bb6a071f3c38")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "fc022abae9d52285526cb0dda697e2bea18696ca")
 CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/libutf")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/external/libutf")
 CROS_WORKON_EGIT_BRANCH=("main" "master")
diff --git a/dev-libs/marisa-aosp/OWNERS b/dev-libs/marisa-aosp/OWNERS
new file mode 100644
index 0000000..db7e695
--- /dev/null
+++ b/dev-libs/marisa-aosp/OWNERS
@@ -0,0 +1,2 @@
+# TODO: Add per-package OWNERS and delete this when done.
+*
diff --git a/dev-libs/marisa-aosp/marisa-aosp-0.0.2-r2.ebuild b/dev-libs/marisa-aosp/marisa-aosp-0.0.2-r3.ebuild
similarity index 93%
rename from dev-libs/marisa-aosp/marisa-aosp-0.0.2-r2.ebuild
rename to dev-libs/marisa-aosp/marisa-aosp-0.0.2-r3.ebuild
index 04392c5..c54f301 100644
--- a/dev-libs/marisa-aosp/marisa-aosp-0.0.2-r2.ebuild
+++ b/dev-libs/marisa-aosp/marisa-aosp-0.0.2-r3.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("1047347e73cbb85e8c8ce9926acac81eceb37d29" "54417d28a5273a8d759b28882a0c96335e192756")
-CROS_WORKON_TREE=("c70c24e7eeb0c8aad6108bedde29b6984f63cd54" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "f68e9f2c95cfb02b54d9697d8b4a2ae0be2d546c")
+CROS_WORKON_COMMIT=("19fa770a8cfaaeaf75c0337a44a647a6e55c5116" "54417d28a5273a8d759b28882a0c96335e192756")
+CROS_WORKON_TREE=("f15a2b6ce11bd1f9024dc5342bfe2b99ed4a24b3" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "f68e9f2c95cfb02b54d9697d8b4a2ae0be2d546c")
 DESCRIPTION="MARISA: Matching Algorithm with Recursively Implemented StorAge (AOSP fork)"
 HOMEPAGE="https://android.googlesource.com/platform/external/marisa-trie/"
 
diff --git a/dev-libs/ml-core-tests/ml-core-tests-0.0.1-r84.ebuild b/dev-libs/ml-core-tests/ml-core-tests-0.0.1-r150.ebuild
similarity index 77%
rename from dev-libs/ml-core-tests/ml-core-tests-0.0.1-r84.ebuild
rename to dev-libs/ml-core-tests/ml-core-tests-0.0.1-r150.ebuild
index f0382f9..8aab522 100644
--- a/dev-libs/ml-core-tests/ml-core-tests-0.0.1-r84.ebuild
+++ b/dev-libs/ml-core-tests/ml-core-tests-0.0.1-r150.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "cceb75d9e5555d3cccb273c52847819feabc9c65" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
@@ -14,6 +14,10 @@
 
 PLATFORM_SUBDIR="ml_core/tests"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-workon platform
 
 # camera_feature_effects needed as `use.camera_feature_effects` is
diff --git a/dev-libs/ml-core-tests/ml-core-tests-9999.ebuild b/dev-libs/ml-core-tests/ml-core-tests-9999.ebuild
index 8e814fa..f7eed91 100644
--- a/dev-libs/ml-core-tests/ml-core-tests-9999.ebuild
+++ b/dev-libs/ml-core-tests/ml-core-tests-9999.ebuild
@@ -12,6 +12,10 @@
 
 PLATFORM_SUBDIR="ml_core/tests"
 
+# Do not run test parallelly until unit tests are fixed.
+# shellcheck disable=SC2034
+PLATFORM_PARALLEL_GTEST_TEST="no"
+
 inherit cros-workon platform
 
 # camera_feature_effects needed as `use.camera_feature_effects` is
diff --git a/dev-libs/ml-core/Manifest b/dev-libs/ml-core/Manifest
index d602177..d5200b9 100644
--- a/dev-libs/ml-core/Manifest
+++ b/dev-libs/ml-core/Manifest
@@ -1 +1,2 @@
-DIST ml-core-headers-20230419.tar.xz 1968 BLAKE2B bd6293e53e82cf47511b86d414230dcd4e87f96596de84d8b3eb0088eee4ea1fcb4a6a06bcfb6e743e90e4db407d22983664bf6d851a2f1f5138b57add858e26 SHA512 7e7c8ea780c2a23cde9f2555a188f81007d0babaeaeac2b2a8a927b048de5c7058dfdc31da65e9aebd61b70c012ab1f7586239944d41760ed3dbc0bc756c6fc3
+DIST ml-core-headers-20230616.tar.xz 2428 BLAKE2B 8ef8631fc4e11db82444f915e2aaecabd65c5294ef33ce412ab1aadf691afaf7ceb0722aa210fadf1bdf0ecee158a6c2250bce648bad8803877109b2bbaf83c1 SHA512 0de51ed813829abf384c5c98f08d001cf8a4ee29d529b1aa717c78b91cd42ca68d7169f28e4ead3d5dfa9d2155723fe0301453d5f29c8b3990a137f358df8171
+DIST ml-core-headers-20230711.tar.xz 2396 BLAKE2B 5ab36c45c6d622e96b07c90fddf4f610ca7c47dcb1183f2ae86cb4103a031f7b5633675c267808657328a66e1ae3194c48060fac6beae168d6e96616eef6ec18 SHA512 b39ab73fa5a879c0f31c6eb092487c6b51abe32a9de2746f2c07ea6701895d3d99e81106fe9349a9467a7532df4b0cbc09619acfd18763117e40ac6a241cfdfe
diff --git a/dev-libs/ml-core/ml-core-0.0.1-r157.ebuild b/dev-libs/ml-core/ml-core-0.0.1-r226.ebuild
similarity index 78%
rename from dev-libs/ml-core/ml-core-0.0.1-r157.ebuild
rename to dev-libs/ml-core/ml-core-0.0.1-r226.ebuild
index 948959f..e90907e 100644
--- a/dev-libs/ml-core/ml-core-0.0.1-r157.ebuild
+++ b/dev-libs/ml-core/ml-core-0.0.1-r226.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "cceb75d9e5555d3cccb273c52847819feabc9c65" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
@@ -21,14 +21,17 @@
 
 # camera_feature_effects needed as `use.camera_feature_effects` is
 # referenced in BUILD.gn
-IUSE="internal local_ml_core_internal camera_feature_effects"
+IUSE="internal local_ml_core_internal camera_feature_effects ondevice_image_content_annotation"
 
-SRC_URI="gs://chromeos-localmirror/distfiles/ml-core-headers-20230419.tar.xz"
+SRC_URI="gs://chromeos-localmirror/distfiles/ml-core-headers-20230711.tar.xz"
 
 RDEPEND="
 	chromeos-base/dlcservice-client:=
 	chromeos-base/session_manager-client:=
-	internal? ( chromeos-base/ml-core-internal:= )
+	internal? (
+		camera_feature_effects? ( chromeos-base/ml-core-internal:= )
+		ondevice_image_content_annotation? ( chromeos-base/ml-core-internal:= )
+	)
 "
 DEPEND="${RDEPEND}
 "
diff --git a/dev-libs/ml-core/ml-core-9999.ebuild b/dev-libs/ml-core/ml-core-9999.ebuild
index 15532d5..fe83ba6 100644
--- a/dev-libs/ml-core/ml-core-9999.ebuild
+++ b/dev-libs/ml-core/ml-core-9999.ebuild
@@ -19,14 +19,17 @@
 
 # camera_feature_effects needed as `use.camera_feature_effects` is
 # referenced in BUILD.gn
-IUSE="internal local_ml_core_internal camera_feature_effects"
+IUSE="internal local_ml_core_internal camera_feature_effects ondevice_image_content_annotation"
 
-SRC_URI="gs://chromeos-localmirror/distfiles/ml-core-headers-20230419.tar.xz"
+SRC_URI="gs://chromeos-localmirror/distfiles/ml-core-headers-20230711.tar.xz"
 
 RDEPEND="
 	chromeos-base/dlcservice-client:=
 	chromeos-base/session_manager-client:=
-	internal? ( chromeos-base/ml-core-internal:= )
+	internal? (
+		camera_feature_effects? ( chromeos-base/ml-core-internal:= )
+		ondevice_image_content_annotation? ( chromeos-base/ml-core-internal:= )
+	)
 "
 DEPEND="${RDEPEND}
 "
diff --git a/dev-libs/modp_b64/OWNERS b/dev-libs/modp_b64/OWNERS
new file mode 100644
index 0000000..db7e695
--- /dev/null
+++ b/dev-libs/modp_b64/OWNERS
@@ -0,0 +1,2 @@
+# TODO: Add per-package OWNERS and delete this when done.
+*
diff --git a/dev-libs/modp_b64/modp_b64-0.0.1-r332.ebuild b/dev-libs/modp_b64/modp_b64-0.0.1-r391.ebuild
similarity index 89%
rename from dev-libs/modp_b64/modp_b64-0.0.1-r332.ebuild
rename to dev-libs/modp_b64/modp_b64-0.0.1-r391.ebuild
index d77ade5..5e1c202 100644
--- a/dev-libs/modp_b64/modp_b64-0.0.1-r332.ebuild
+++ b/dev-libs/modp_b64/modp_b64-0.0.1-r391.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2015 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "68a503fff7af8fbf6f78cd496830813d41150817")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "125355d4e19f5d859a5fb379fdaeb75fc7e14083")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "68a503fff7af8fbf6f78cd496830813d41150817")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "125355d4e19f5d859a5fb379fdaeb75fc7e14083")
 inherit cros-constants
 
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/modp_b64")
diff --git a/dev-libs/modp_b64/modp_b64-9999.ebuild b/dev-libs/modp_b64/modp_b64-9999.ebuild
index 9427b15..324c193 100644
--- a/dev-libs/modp_b64/modp_b64-9999.ebuild
+++ b/dev-libs/modp_b64/modp_b64-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2015 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 inherit cros-constants
 
diff --git a/eclass/cros-camera.eclass b/eclass/cros-camera.eclass
index 14555e1..e9d2657 100644
--- a/eclass/cros-camera.eclass
+++ b/eclass/cros-camera.eclass
@@ -48,44 +48,6 @@
 	)
 }
 
-# @FUNCTION: cros-camera_get_arch_march_path
-# @USAGE:
-# @DESCRIPTION:
-# Some libraries store the .so files built by different "-march" configuration
-# under "${arch}-${march}" folders. This function returns the "${arch}-${march}"
-# path according to the use flags.
-cros-camera_get_arch_march_path() {
-	if use march_alderlake; then
-		echo "x86_64-alderlake"
-	elif use march_armv8; then
-		echo "armv7-armv8-a+crc"
-	elif use march_bdver4; then
-		echo "x86_64-bdver4"
-	elif use march_corei7; then
-		echo "x86_64-corei7"
-	elif use march_goldmont; then
-		echo "x86_64-goldmont"
-	elif use march_silvermont; then
-		echo "x86_64-silvermont"
-	elif use march_skylake; then
-		echo "x86_64-skylake"
-	elif use march_tigerlake; then
-		echo "x86_64-tigerlake"
-	elif use march_tremont; then
-		echo "x86_64-tremont"
-	elif use march_znver1; then
-		echo "x86_64-znver1"
-	elif use amd64; then
-		echo "x86_64"
-	elif use arm; then
-		echo "armv7"
-	elif use arm64; then
-		echo "arm"
-	else
-		die "Unknown microarchitecture"
-	fi
-}
-
 # @FUNCTION: cros-camera_generate_conditional_SRC_URI
 # @USAGE:
 # @DESCRIPTION:
@@ -112,6 +74,23 @@
 	done
 }
 
+# @FUNCTION: cros-camera_generate_auto_framing_package_SRC_URI
+# @USAGE:
+# @DESCRIPTION:
+# Generate SRC_URI for auto framing package by PV.
+cros-camera_generate_auto_framing_package_SRC_URI() {
+	local pv="$1"
+	local prefix="gs://chromeos-localmirror/distfiles/chromeos-camera-libautoframing"
+	local suffix="${pv}.tar.zst"
+	# Skip the check for this variable since it's indirectly referenced in
+	# cros-camera_generate_conditional_SRC_URI (local -n).
+	# shellcheck disable=SC2034
+	local auto_framing_flag_src_mappings=(
+		"amd64 ${prefix}-x86_64-${suffix}"
+	)
+	cros-camera_generate_conditional_SRC_URI auto_framing_flag_src_mappings
+}
+
 # @FUNCTION: cros-camera_generate_document_scanning_package_SRC_URI
 # @USAGE:
 # @DESCRIPTION:
@@ -141,6 +120,53 @@
 	cros-camera_generate_conditional_SRC_URI document_scanning_flag_src_mappings
 }
 
+# @FUNCTION: cros-camera_generate_facessd_package_SRC_URI
+# @USAGE:
+# @DESCRIPTION:
+# Generate SRC_URI for facessd package by PV.
+cros-camera_generate_facessd_package_SRC_URI() {
+	local pv="$1"
+	local prefix="gs://chromeos-localmirror/distfiles/chromeos-facessd-lib"
+	local suffix="${pv}.tar.zst"
+	# Skip the check for this variable since it's indirectly referenced in
+	# cros-camera_generate_conditional_SRC_URI (local -n).
+	# shellcheck disable=SC2034
+	local facessd_flag_src_mappings=(
+		"march_alderlake ${prefix}-x86_64-alderlake-${suffix}"
+		"march_armv8 ${prefix}-armv7-armv8-${suffix}"
+		"march_bdver4 ${prefix}-x86_64-bdver4-${suffix}"
+		"march_corei7 ${prefix}-x86_64-corei7-${suffix}"
+		"march_goldmont ${prefix}-x86_64-goldmont-${suffix}"
+		"march_silvermont ${prefix}-x86_64-silvermont-${suffix}"
+		"march_skylake ${prefix}-x86_64-skylake-${suffix}"
+		"march_tigerlake ${prefix}-x86_64-tigerlake-${suffix}"
+		"march_tremont ${prefix}-x86_64-tremont-${suffix}"
+		"march_znver1 ${prefix}-x86_64-znver1-${suffix}"
+		"amd64 ${prefix}-x86_64-${suffix}"
+		"arm ${prefix}-armv7-${suffix}"
+		"arm64 ${prefix}-arm-${suffix}"
+	)
+	cros-camera_generate_conditional_SRC_URI facessd_flag_src_mappings
+}
+
+# @FUNCTION: cros-camera_generate_gcam_package_SRC_URI
+# @USAGE:
+# @DESCRIPTION:
+# Generate SRC_URI for gcam package by PV.
+cros-camera_generate_gcam_package_SRC_URI() {
+	local pv="$1"
+	local prefix="gs://chromeos-localmirror/distfiles/chromeos-camera-libgcam"
+	local suffix="${pv}.tar.zst"
+	# Skip the check for this variable since it's indirectly referenced in
+	# cros-camera_generate_conditional_SRC_URI (local -n).
+	# shellcheck disable=SC2034
+	local gcam_flag_src_mappings=(
+		"march_alderlake ${prefix}-x86_64-alderlake-${suffix}"
+		"march_skylake ${prefix}-x86_64-skylake-${suffix}"
+	)
+	cros-camera_generate_conditional_SRC_URI gcam_flag_src_mappings
+}
+
 # @FUNCTION: cros-camera_generate_portrait_mode_package_SRC_URI
 # @USAGE:
 # @DESCRIPTION:
@@ -155,6 +181,7 @@
 	local portrait_mode_flag_src_mappings=(
 		"amd64 ${prefix}-x86_64-${suffix}"
 		"arm ${prefix}-armv7-${suffix}"
+		"arm64 ${prefix}-arm-${suffix}"
 	)
 	cros-camera_generate_conditional_SRC_URI portrait_mode_flag_src_mappings
 }
diff --git a/eclass/platform.eclass b/eclass/platform.eclass
index 620cdf9..32ebad6 100644
--- a/eclass/platform.eclass
+++ b/eclass/platform.eclass
@@ -11,6 +11,11 @@
 # Packages in src/platform2 are in active development. We want builds to be
 # incremental and fast. This centralized the logic needed for this.
 
+# Check for EAPI 7+.
+case "${EAPI:-0}" in
+[0123456]) die "unsupported EAPI (${EAPI}) in eclass (${ECLASS})" ;;
+esac
+
 # @ECLASS-VARIABLE: WANT_LIBCHROME
 # @DESCRIPTION:
 # Set to yes if the package needs libchrome.
@@ -52,9 +57,16 @@
 # platform_src_unpack is called; not intended to be set in ebuilds that inherit
 # this eclass.
 
+# @ECLASS-VARIABLE: PLATFORM_PARALLEL_GTEST_TEST
+# @DESCRIPTION:
+# Flag to only use job while running the test runner. The default is to use
+#  $(makeopt_jobs) while running the test.
+: "${PLATFORM_PARALLEL_GTEST_TEST:=yes}"
+
 inherit cros-debug cros-fuzzer cros-sanitizers cros-workon flag-o-matic toolchain-funcs multiprocessing
 
 # Define these so they can be appended to.
+BDEPEND=""
 DEPEND=""
 RDEPEND=""
 
@@ -73,7 +85,15 @@
 # While not all packages utilize USE=test, it's common to write gn conditionals
 # based on the flag.  Add it to the eclass so ebuilds don't have to duplicate it
 # everywhere even if they otherwise aren't using the flag.
-IUSE="compdb_only compilation_database cros_host test"
+IUSE="
+	compdb_only
+	compilation_database
+	+cpp20
+	cros_host
+	function_elimination_experiment
+	lto_experiment
+	test
+"
 
 # Similarly to above, we use gtest (includes gmock) for unittests in platform2
 # packages. Add the dep all the time even if a few packages wouldn't use it as
@@ -85,6 +105,25 @@
 	>=dev-cpp/gtest-1.10.0:=
 "
 
+# platform2_test.py, which is used to run tests, calls gtest-parallel, which
+# is written in Python and requires /usr/bin/env from coreutils.
+# These dependencies are needed to run the test, not build them.
+# When cross-compiling, they will be executed on the architecture being built,
+# so we used DEPEND, rather then BDEPEND.
+DEPEND+="
+	test? (
+		dev-lang/python
+		sys-apps/coreutils
+	)
+"
+
+# platform2.py imports chromite. This means we need chromite present in the
+# python site-packages.
+BDEPEND+="
+	chromeos-base/chromite-sdk
+	dev-util/gn
+	dev-util/ninja
+"
 
 # @FUNCTION: platform_gen_compilation_database
 # @DESCRIPTION:
@@ -138,7 +177,6 @@
 		"${platform2_py}"
 		--libdir="${libdir}"
 		--use_flags="${USE}"
-		--jobs="$(makeopts_jobs)"
 		--action="${action}"
 		--cache_dir="${cache_dir}"
 		--platform_subdir="${PLATFORM_SUBDIR}"
@@ -150,6 +188,18 @@
 	if [[ "${CROS_WORKON_INCREMENTAL_BUILD}" != "1" ]]; then
 		cmd+=( --disable_incremental )
 	fi
+	if [[ "${action}" != "test_all" ]]; then
+		cmd+=(--jobs="$(makeopts_jobs)")
+	else
+		# The default is to run tests with platform2.py with --jobs="$(makeopt_jobs)",
+		# with the exception being when a package has explicitly disabled parallel gtest
+		# or the platform is not native.
+		if [[ "${PLATFORM_PARALLEL_GTEST_TEST}" == "yes" ]]  && platform_is_native ; then
+			cmd+=(--jobs="$(makeopts_jobs)")
+		else
+			cmd+=(--jobs=1)
+		fi
+	fi
 	"${cmd[@]}" || die
 	# The stdout from this function used in platform_src_install
 }
@@ -197,6 +247,14 @@
 		cmd+=( --run_as_root )
 	fi
 
+	if [[ "${action}" == "run" &&  "${PLATFORM_PARALLEL_GTEST_TEST}" == "yes" ]] && platform_is_native; then
+		# This makes the default as parallel jobs until the dependencies' unit tests
+		# are rewritten to be run parallelly.
+		# If this branch is not entered, then the default is 1, which is defined in
+		# platform2_test.py script.
+		cmd+=(--jobs="$(makeopts_jobs)")
+	fi
+
 	# Only add these options if they're specified ... leads to cleaner output
 	# for developers to read.
 	[[ -n ${gtest_filter} ]] && cmd+=( --gtest_filter="${gtest_filter}" )
@@ -220,16 +278,6 @@
 	fuzzer_install "$@"
 }
 
-# @FUNCTION: platform_fuzzer_test
-# @DESCRIPTION:
-# Tests a fuzzer binary (passed as an argument) against a small corpus of
-# files. This is needed to make sure the fuzzer is built correctly and runs
-# properly before being uploaded for contiguous tests.
-# @USAGE: <fuzzer binary> [corpus_path]
-platform_fuzzer_test() {
-	fuzzer_test "$@" "${PLATFORM_TOOLDIR}"/fuzzer_corpus || die
-}
-
 platform_src_compile() {
 	use compdb_only || platform "compile" "all"
 
@@ -266,7 +314,6 @@
 	# Make sure this is available to platform2_test.py when run via platform2.py.
 	export PLATFORM_HOST_DEV_TEST
 	[[ "$(type -t platform_pkg_test)" == "function" ]] && platform_pkg_test
-	platform_test "post_test"
 }
 
 platform_src_install() {
diff --git a/media-libs/arc-camera-profile/OWNERS b/media-libs/arc-camera-profile/OWNERS
index db7e695..8f44c3e 100644
--- a/media-libs/arc-camera-profile/OWNERS
+++ b/media-libs/arc-camera-profile/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r1230.ebuild b/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r1341.ebuild
similarity index 65%
rename from media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r1230.ebuild
rename to media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r1341.ebuild
index ca56073..f05c47c 100644
--- a/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r1230.ebuild
+++ b/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r1341.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2017 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "152f7a4c3a86075c9718b0df309dda5757ae3bfe" "4905252d7c2626874b087f7fedb988e06769a3d0" "73aa3d6be026ab3d98d6df5321892428e9d47e45" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "30bfaefc2eed36d56ffbbb2151a90e6ade095d6a" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "73aa3d6be026ab3d98d6df5321892428e9d47e45" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal/usb camera/include camera/tools common-mk"
diff --git a/media-libs/arc-camera-profile/arc-camera-profile-9999.ebuild b/media-libs/arc-camera-profile/arc-camera-profile-9999.ebuild
index 8edfa06..8e3badf 100644
--- a/media-libs/arc-camera-profile/arc-camera-profile-9999.ebuild
+++ b/media-libs/arc-camera-profile/arc-camera-profile-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2017 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
diff --git a/media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-0.0.1-r433.ebuild b/media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-0.0.1-r635.ebuild
similarity index 61%
rename from media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-0.0.1-r433.ebuild
rename to media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-0.0.1-r635.ebuild
index 0931487..785512f 100644
--- a/media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-0.0.1-r433.ebuild
+++ b/media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-0.0.1-r635.ebuild
@@ -3,12 +3,12 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "ddb7cf2ecd4ddddcdb48872581ff50992714e916" "4905252d7c2626874b087f7fedb988e06769a3d0" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "ccd70993df3dbf4fff4325967037745b83ccbde8" "f2431337126663ce80d01b13755ed940d700e70a" "1647a468f15f85e89d45c799e27359e3e664c67b" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "21bea9b039270722a2838496f241927aab594088" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "da79a0cb46b293055987ed8190b88d813d8df81e" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "9942607d3de36a375711502f44f44d28aac7bd3a" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "cceb75d9e5555d3cccb273c52847819feabc9c65" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # iioservice/ is included just to make sandbox happy when running `gn gen`.
-CROS_WORKON_SUBTREE=".gn camera/build camera/features camera/include camera/gpu camera/common camera/mojo chromeos-config common-mk iioservice/libiioservice_ipc iioservice/mojo metrics ml_core ml_core/mojo"
+CROS_WORKON_SUBTREE=".gn camera/build camera/features camera/include camera/gpu camera/common camera/mojo chromeos-config common-mk iioservice/libiioservice_ipc iioservice/mojo metrics ml_core ml_core/mojo mojo_service_manager"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -28,6 +28,7 @@
 RDEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cros-camera-android-deps:=
+	chromeos-base/mojo_service_manager:=
 	dev-cpp/gtest:=
 	media-libs/cros-camera-libfs:=
 	media-libs/libexif:=
diff --git a/media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-9999.ebuild b/media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-9999.ebuild
index 433cfdc..c6e618d 100644
--- a/media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-9999.ebuild
+++ b/media-libs/cros-camera-auto-framing-tests/cros-camera-auto-framing-tests-9999.ebuild
@@ -6,7 +6,7 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # iioservice/ is included just to make sandbox happy when running `gn gen`.
-CROS_WORKON_SUBTREE=".gn camera/build camera/features camera/include camera/gpu camera/common camera/mojo chromeos-config common-mk iioservice/libiioservice_ipc iioservice/mojo metrics ml_core ml_core/mojo"
+CROS_WORKON_SUBTREE=".gn camera/build camera/features camera/include camera/gpu camera/common camera/mojo chromeos-config common-mk iioservice/libiioservice_ipc iioservice/mojo metrics ml_core ml_core/mojo mojo_service_manager"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -26,6 +26,7 @@
 RDEPEND="
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cros-camera-android-deps:=
+	chromeos-base/mojo_service_manager:=
 	dev-cpp/gtest:=
 	media-libs/cros-camera-libfs:=
 	media-libs/libexif:=
diff --git a/media-libs/cros-camera-connector-client/OWNERS b/media-libs/cros-camera-connector-client/OWNERS
index db7e695..8f44c3e 100644
--- a/media-libs/cros-camera-connector-client/OWNERS
+++ b/media-libs/cros-camera-connector-client/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r707.ebuild b/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r801.ebuild
similarity index 66%
rename from media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r707.ebuild
rename to media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r801.ebuild
index 44c0086..838d625 100644
--- a/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r707.ebuild
+++ b/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r801.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "f506ba0a7105f21002afbb635421a675527054d0" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "4905252d7c2626874b087f7fedb988e06769a3d0" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "f506ba0a7105f21002afbb635421a675527054d0" "da79a0cb46b293055987ed8190b88d813d8df81e" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/tools/connector_client camera/common camera/include common-mk"
diff --git a/media-libs/cros-camera-document-scanning-test/cros-camera-document-scanning-test-0.0.1-r203.ebuild b/media-libs/cros-camera-document-scanning-test/cros-camera-document-scanning-test-0.0.1-r263.ebuild
similarity index 72%
rename from media-libs/cros-camera-document-scanning-test/cros-camera-document-scanning-test-0.0.1-r203.ebuild
rename to media-libs/cros-camera-document-scanning-test/cros-camera-document-scanning-test-0.0.1-r263.ebuild
index a34492e..987286d 100644
--- a/media-libs/cros-camera-document-scanning-test/cros-camera-document-scanning-test-0.0.1-r203.ebuild
+++ b/media-libs/cros-camera-document-scanning-test/cros-camera-document-scanning-test-0.0.1-r263.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "a215e45ca182155f6e3ad1205087f5a88bc2c4df" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "a215e45ca182155f6e3ad1205087f5a88bc2c4df" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/features/document_scanning common-mk"
diff --git a/media-libs/cros-camera-effects-sm-tests/cros-camera-effects-sm-tests-0.0.1-r231.ebuild b/media-libs/cros-camera-effects-sm-tests/cros-camera-effects-sm-tests-0.0.1-r430.ebuild
similarity index 68%
rename from media-libs/cros-camera-effects-sm-tests/cros-camera-effects-sm-tests-0.0.1-r231.ebuild
rename to media-libs/cros-camera-effects-sm-tests/cros-camera-effects-sm-tests-0.0.1-r430.ebuild
index 123073d..e4efeea 100644
--- a/media-libs/cros-camera-effects-sm-tests/cros-camera-effects-sm-tests-0.0.1-r231.ebuild
+++ b/media-libs/cros-camera-effects-sm-tests/cros-camera-effects-sm-tests-0.0.1-r430.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "1647a468f15f85e89d45c799e27359e3e664c67b" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "ddb7cf2ecd4ddddcdb48872581ff50992714e916" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "4905252d7c2626874b087f7fedb988e06769a3d0" "ccd70993df3dbf4fff4325967037745b83ccbde8" "f2431337126663ce80d01b13755ed940d700e70a" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "21bea9b039270722a2838496f241927aab594088" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "9942607d3de36a375711502f44f44d28aac7bd3a" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "cceb75d9e5555d3cccb273c52847819feabc9c65")
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_DESTDIR="${S}/platform2"
diff --git a/media-libs/cros-camera-frame-annotator/cros-camera-frame-annotator-0.0.1-r342.ebuild b/media-libs/cros-camera-frame-annotator/cros-camera-frame-annotator-0.0.1-r513.ebuild
similarity index 60%
rename from media-libs/cros-camera-frame-annotator/cros-camera-frame-annotator-0.0.1-r342.ebuild
rename to media-libs/cros-camera-frame-annotator/cros-camera-frame-annotator-0.0.1-r513.ebuild
index 1245f78..ff5f229 100644
--- a/media-libs/cros-camera-frame-annotator/cros-camera-frame-annotator-0.0.1-r342.ebuild
+++ b/media-libs/cros-camera-frame-annotator/cros-camera-frame-annotator-0.0.1-r513.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "4905252d7c2626874b087f7fedb988e06769a3d0" "ddb7cf2ecd4ddddcdb48872581ff50992714e916" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "ccd70993df3dbf4fff4325967037745b83ccbde8" "f2431337126663ce80d01b13755ed940d700e70a" "1647a468f15f85e89d45c799e27359e3e664c67b" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "21bea9b039270722a2838496f241927aab594088" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "9942607d3de36a375711502f44f44d28aac7bd3a" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "cceb75d9e5555d3cccb273c52847819feabc9c65")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/features camera/gpu camera/mojo chromeos-config common-mk iioservice/libiioservice_ipc iioservice/mojo ml_core"
diff --git a/media-libs/cros-camera-gpu-test/cros-camera-gpu-test-0.0.1-r465.ebuild b/media-libs/cros-camera-gpu-test/cros-camera-gpu-test-0.0.1-r559.ebuild
similarity index 69%
rename from media-libs/cros-camera-gpu-test/cros-camera-gpu-test-0.0.1-r465.ebuild
rename to media-libs/cros-camera-gpu-test/cros-camera-gpu-test-0.0.1-r559.ebuild
index 613d2e4..a51f36f 100644
--- a/media-libs/cros-camera-gpu-test/cros-camera-gpu-test-0.0.1-r465.ebuild
+++ b/media-libs/cros-camera-gpu-test/cros-camera-gpu-test-0.0.1-r559.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "4905252d7c2626874b087f7fedb988e06769a3d0" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "da79a0cb46b293055987ed8190b88d813d8df81e" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/include camera/gpu camera/common common-mk"
diff --git a/media-libs/cros-camera-hal-fake/cros-camera-hal-fake-0.0.1-r205.ebuild b/media-libs/cros-camera-hal-fake/cros-camera-hal-fake-0.0.1-r305.ebuild
similarity index 62%
rename from media-libs/cros-camera-hal-fake/cros-camera-hal-fake-0.0.1-r205.ebuild
rename to media-libs/cros-camera-hal-fake/cros-camera-hal-fake-0.0.1-r305.ebuild
index 5a9559b..2ef8592 100644
--- a/media-libs/cros-camera-hal-fake/cros-camera-hal-fake-0.0.1-r205.ebuild
+++ b/media-libs/cros-camera-hal-fake/cros-camera-hal-fake-0.0.1-r305.ebuild
@@ -1,10 +1,10 @@
-# Copyright 2022 The ChromiumOS Authors.
+# Copyright 2022 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "5edd92b3d81ffc47c4f5cd452d943222d43341b1" "4905252d7c2626874b087f7fedb988e06769a3d0" "ccd70993df3dbf4fff4325967037745b83ccbde8" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "83b5dd27984d304a08a3043b55c2708afe90522e" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # TODO(b/187784160): Avoid directly including headers from other packages.
diff --git a/media-libs/cros-camera-hal-fake/cros-camera-hal-fake-9999.ebuild b/media-libs/cros-camera-hal-fake/cros-camera-hal-fake-9999.ebuild
index e5271de..f94bf1a 100644
--- a/media-libs/cros-camera-hal-fake/cros-camera-hal-fake-9999.ebuild
+++ b/media-libs/cros-camera-hal-fake/cros-camera-hal-fake-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022 The ChromiumOS Authors.
+# Copyright 2022 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
diff --git a/media-libs/cros-camera-hal-intel-ipu6/OWNERS b/media-libs/cros-camera-hal-intel-ipu6/OWNERS
index db7e695..8f44c3e 100644
--- a/media-libs/cros-camera-hal-intel-ipu6/OWNERS
+++ b/media-libs/cros-camera-hal-intel-ipu6/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r346.ebuild b/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r410.ebuild
similarity index 79%
rename from media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r346.ebuild
rename to media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r410.ebuild
index fbf07d0..5e564f3 100644
--- a/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r346.ebuild
+++ b/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r410.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "a86ce183b23ac51eb2d3e44584715d2a3db197ba")
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "1647a468f15f85e89d45c799e27359e3e664c67b" "2f24e8184e9b3ee1b1c32ccd37bf46bf94a5156f")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "9dce6a90a1189ec1463b3e3c4be5ef05e65bb888")
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "7cf668390127849681875b70eeeb648f6e04bae9")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/platform/camera")
 CROS_WORKON_LOCALNAME=("../platform2" "../platform/camera")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/camera_hal")
@@ -33,7 +33,10 @@
 		x11-libs/libva-intel-media-driver
 	)
 	ipu6ep? ( media-libs/intel-ipu6ep-camera-bins )
-	ipu6epadln? ( media-libs/intel-ipu6epadln-camera-bins )
+	ipu6epadln? (
+		media-libs/intel-ipu6epadln-camera-bins
+		x11-libs/libva
+	)
 	ipu6epmtl? ( media-libs/intel-ipu6epmtl-camera-bins )
 	!media-libs/cros-camera-hal-intel-ipu6-squash
 	media-libs/libsync
diff --git a/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-9999.ebuild b/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-9999.ebuild
index 85ee635..52d642c 100644
--- a/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-9999.ebuild
+++ b/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-9999.ebuild
@@ -31,7 +31,10 @@
 		x11-libs/libva-intel-media-driver
 	)
 	ipu6ep? ( media-libs/intel-ipu6ep-camera-bins )
-	ipu6epadln? ( media-libs/intel-ipu6epadln-camera-bins )
+	ipu6epadln? (
+		media-libs/intel-ipu6epadln-camera-bins
+		x11-libs/libva
+	)
 	ipu6epmtl? ( media-libs/intel-ipu6epmtl-camera-bins )
 	!media-libs/cros-camera-hal-intel-ipu6-squash
 	media-libs/libsync
diff --git a/media-libs/cros-camera-hal-ip/OWNERS b/media-libs/cros-camera-hal-ip/OWNERS
index db7e695..8f44c3e 100644
--- a/media-libs/cros-camera-hal-ip/OWNERS
+++ b/media-libs/cros-camera-hal-ip/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r1149.ebuild b/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r1296.ebuild
similarity index 61%
rename from media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r1149.ebuild
rename to media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r1296.ebuild
index 2eafae5..cbf08c0 100644
--- a/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r1149.ebuild
+++ b/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r1296.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "13a1732d79ff7a78aec895914901f7207cb5770c" "152f7a4c3a86075c9718b0df309dda5757ae3bfe" "4905252d7c2626874b087f7fedb988e06769a3d0" "ccd70993df3dbf4fff4325967037745b83ccbde8" "f2431337126663ce80d01b13755ed940d700e70a" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "13a1732d79ff7a78aec895914901f7207cb5770c" "30bfaefc2eed36d56ffbbb2151a90e6ade095d6a" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "9942607d3de36a375711502f44f44d28aac7bd3a" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal/ip camera/hal/usb camera/include camera/mojo chromeos-config common-mk"
diff --git a/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-9999.ebuild b/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-9999.ebuild
index 814926d..e9a52b3 100644
--- a/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-9999.ebuild
+++ b/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
diff --git a/media-libs/cros-camera-hal-usb/OWNERS b/media-libs/cros-camera-hal-usb/OWNERS
index db7e695..8f44c3e 100644
--- a/media-libs/cros-camera-hal-usb/OWNERS
+++ b/media-libs/cros-camera-hal-usb/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r1464.ebuild b/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r1577.ebuild
similarity index 68%
rename from media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r1464.ebuild
rename to media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r1577.ebuild
index fe9e595..b296902 100644
--- a/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r1464.ebuild
+++ b/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r1577.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2017 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "152f7a4c3a86075c9718b0df309dda5757ae3bfe" "4905252d7c2626874b087f7fedb988e06769a3d0" "ccd70993df3dbf4fff4325967037745b83ccbde8" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "30bfaefc2eed36d56ffbbb2151a90e6ade095d6a" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
diff --git a/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-9999.ebuild b/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-9999.ebuild
index f6a112c..ef2edfa 100644
--- a/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-9999.ebuild
+++ b/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2017 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
diff --git a/media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-0.0.1-r737.ebuild b/media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-0.0.1-r909.ebuild
similarity index 63%
rename from media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-0.0.1-r737.ebuild
rename to media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-0.0.1-r909.ebuild
index cb3a55e..9be5edb 100644
--- a/media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-0.0.1-r737.ebuild
+++ b/media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-0.0.1-r909.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "ddb7cf2ecd4ddddcdb48872581ff50992714e916" "4905252d7c2626874b087f7fedb988e06769a3d0" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "ccd70993df3dbf4fff4325967037745b83ccbde8" "f2431337126663ce80d01b13755ed940d700e70a" "1647a468f15f85e89d45c799e27359e3e664c67b" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "21bea9b039270722a2838496f241927aab594088" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "da79a0cb46b293055987ed8190b88d813d8df81e" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "9942607d3de36a375711502f44f44d28aac7bd3a" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "cceb75d9e5555d3cccb273c52847819feabc9c65")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # iioservice/ is included just to make sandbox happy when running `gn gen`.
@@ -22,7 +22,7 @@
 KEYWORDS="*"
 
 # 'ipu6' and 'ipu6ep' are passed to and used in BUILD.gn files.
-IUSE="ipu6 ipu6ep"
+IUSE="ipu6 ipu6ep ipu6epmtl"
 
 BDEPEND="virtual/pkgconfig"
 
diff --git a/media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-9999.ebuild b/media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-9999.ebuild
index 6c8cf7a..821af3d 100644
--- a/media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-9999.ebuild
+++ b/media-libs/cros-camera-hdrnet-tests/cros-camera-hdrnet-tests-9999.ebuild
@@ -20,7 +20,7 @@
 KEYWORDS="~*"
 
 # 'ipu6' and 'ipu6ep' are passed to and used in BUILD.gn files.
-IUSE="ipu6 ipu6ep"
+IUSE="ipu6 ipu6ep ipu6epmtl"
 
 BDEPEND="virtual/pkgconfig"
 
diff --git a/media-libs/cros-camera-libcamera_connector_test/OWNERS b/media-libs/cros-camera-libcamera_connector_test/OWNERS
index db7e695..8f44c3e 100644
--- a/media-libs/cros-camera-libcamera_connector_test/OWNERS
+++ b/media-libs/cros-camera-libcamera_connector_test/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r692.ebuild b/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r786.ebuild
similarity index 70%
rename from media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r692.ebuild
rename to media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r786.ebuild
index cfbd3ae..3054fcf 100644
--- a/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r692.ebuild
+++ b/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r786.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "4905252d7c2626874b087f7fedb988e06769a3d0" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
diff --git a/media-libs/cros-camera-libfs/Manifest b/media-libs/cros-camera-libfs/Manifest
index 6404290..0be8343 100644
--- a/media-libs/cros-camera-libfs/Manifest
+++ b/media-libs/cros-camera-libfs/Manifest
@@ -1,18 +1,34 @@
-DIST chromeos-camera-libautoframing-2022.09.06.tbz2 8342711 BLAKE2B e85dbef4965ca10a221372ff07882cdd2a16436c30e7290a2d8887c11f26463bd3d798b35fd0be271cbf5df4b3348e55ef6aa6f98d7d6d33b50b3d2c63223a3b SHA512 081a5f26f9712428d56b641b2090f81f5bf6bca52a6494e4d816d9a2c489f0a4a2c935acc1fdbba1429cf8e8af92156e31cd892faabbf0cf2786ab94669515ed
-DIST chromeos-camera-libgcam-2023.01.11.tar.zst 76508929 BLAKE2B 9f20156c2b4bbc0246800ed07bbcebc53eff87d86d3c62c592e452553b325331cc438048ecd1f73011416f12b0cd4424918510659cbe84f6b9aedd51624b74c4 SHA512 f2bd870ee1c9d9db0727d5b436d8700b3d2deed62bb2482bf0515a57ca96df849c8df9d125619c43d37d85c5500bfb0ea8c2717a842bc2e56c76a267ca46dac6
-DIST chromeos-facessd-lib-2021.10.27.tar.bz2 551925955 BLAKE2B 667fdf4e6aa157e66fd4ec3c5fe711b1d353945b3778cc606eadb8b10bb7106da1c3e15e714b723ba71270f928fa3999f75661fc51a58568ccfb4d099160e056 SHA512 448806aeba26254787c039b89228a86d19fd9714c4432e9c903293d15baa839e84a2c801fd0e68a716ef717974130dca8ecff9af3cf2a1e0d9fff266182094dd
-DIST portrait-processor-lib-armv7-2023.03.14.tar.zst 86863381 BLAKE2B 5e8b9966494818c74ae13b90590a9cd08c2286b6c21e8377e57906007d7f7552d24923a269791bc415e7af01e1d06f808939b9a2b0bf9741da1a4df44eb9f1b5 SHA512 d06e40fa6d9f56a8304df19f290acb75c1f05afafa08adfeb9f6fb8eedf85d0f8ddab49ad541a42c7487e8524c16bd9455448a854c3e72a647b2316b42cd19cd
-DIST portrait-processor-lib-x86_64-2023.03.14.tar.zst 87374239 BLAKE2B 8432b397ca9d8d4be6adb4d088d54a98ce862d2c8e3a0a1b19947fad81419e1c017619cc5777f64f29c593d5c7d98bfc3170bb9ea3cd31ced463d3c7875c7485 SHA512 0e1157e58c9888203a238ccf8a9e95daefdca7268862865a75ccbc83b5facf9fc9238c0b7501e640917c8b8212ecff4b6c1d64d80de46b460b1142c41f67c2b6
-DIST chromeos-document-scanning-lib-x86_64-1.0.0.tar.zst 3765474 BLAKE2B 50ab7d2dc5b38b0e13fa8944b8db0797231d928e1fc1104c0872e7811f044468a5420ab002a40d3e769e275706b1998467e90e2a868ee0ad7d54275976a07974 SHA512 396e8fc2933952fdd8db0b491dfbc63e7d3d377bd5ae037d9a64b5c7625be0ecb2d8b00e8c9fcc9a22d6a9bfa5c9569e44c425ad92f3ec728f26611172f7ce71
-DIST chromeos-document-scanning-lib-x86_64-alderlake-1.0.0.tar.zst 4116096 BLAKE2B 8037d4b7051b7930897dbb0f84cdb3a3f56cfd4615c9ca042758650d8e624a89111196ee9b1aa14b47917469ebeed98dde24338076fcbbfaf38608f49e87a69a SHA512 f25eeaa1ac63fb8101aabe6908c5ccc8f778eea649a4e1dfd12f540f90d9e43b9de3d7cb0c96b8a567ed3816c9c49482691c9ba13b9aea23a879472a133777f9
-DIST chromeos-document-scanning-lib-x86_64-bdver4-1.0.0.tar.zst 3763052 BLAKE2B 227ef43c4d16afa16f90006ea35f71f0c7ae4cdf5dc714cc56a078f46fb30a454a32f0e39aaee2b18e5ffb5fdd04a3bf78f8f481a9e8357dc7ebdee8d5943993 SHA512 f592b1d9c0d87d9b5b83672814d17aaa0c32d3609429cfc2e68165140ae707180202915f6e65d08785fdb5dcba214eadba29ffd02d0f2e411daceb1f1153aff4
-DIST chromeos-document-scanning-lib-x86_64-corei7-1.0.0.tar.zst 3816121 BLAKE2B 2002fabbb0741644c5215617a011cac755d8d534c66683b621e75ff5d09bd6ca15881ab881ef3c6079906da6bf340b73f2cd222dd47c4f3b8cfee2a27efea59d SHA512 8b483d72f148bbb8eab109c833c6d35f2fb7ce8a8eee5aa7c8ae8afb67f13a251987b091f8424eb85cf08d036b96b57177bd9a447dc3c093be907a40a6881631
-DIST chromeos-document-scanning-lib-x86_64-goldmont-1.0.0.tar.zst 3815161 BLAKE2B 20a25cb22709c986913f379224c212a4b30543e30055ae5388e5cda7aace07192dc7e62b3c382f04a29ac5eab399ae128699e8471a8e1747c0496f4b43a1c270 SHA512 9b92128f4fee69de132e1c51045dc992b228952f0a0db7deed8538a21eaad35f500deca01960ecaa6267b3f313837bf0f187007fadc1b96bce4758ac812c1af4
-DIST chromeos-document-scanning-lib-x86_64-silvermont-1.0.0.tar.zst 3759909 BLAKE2B 85de084324342e9e09fe97f29a4ed46cd39eba2513ba61bcb69b30c83de027bfce0dca600684c5b7670f16cd96dc8d9d190865489fd50201771b45ed136f0493 SHA512 ce44114faac57c2c221e72f930e817d952a2a7877416a25b0607fea71d0c41a135d69dfe2b87ff17606d04c02a180742460892b687bdd7774e1ae8d8ca93e22a
-DIST chromeos-document-scanning-lib-x86_64-skylake-1.0.0.tar.zst 4060755 BLAKE2B 6ee704ac5083e814b481028f911457932e34c58af8926a5547711b8947866ae5ace02c4ddeec155443ff7024325535ca6274ff17bc5032c0822c7c65eb1baa0b SHA512 eba76d721216c7367188db025ad9727b0ec20f507183e59133ee6733f64c772ca5cc3a81c1d6b159cfdbf3c7e43daad4112ef2c758c79ccf85db83a0d587e5d7
-DIST chromeos-document-scanning-lib-x86_64-tigerlake-1.0.0.tar.zst 4026272 BLAKE2B d2b736a21ecfc37a50de8f5e46a76a13b9c95812f440088e03859cec1e3558b658a012916e682a1c40636064010bbac883b006bd821ce483c88e21f8db2e4ade SHA512 109b8b12d8fa3fc7bb28108787b04d6d138c254b63b21cf5cd3de0f8ea9d67b6cffaad5e253ae75d3f95e54b9e9b626a379bd52502aeebe668989a4183efc34f
-DIST chromeos-document-scanning-lib-x86_64-tremont-1.0.0.tar.zst 3815261 BLAKE2B 69f6f205ac9b1a772170e50736431b997ad2eb4a1cac37d931aae5f605de15268544424acb3b4adb9a99517b23f7fc2bb24b6faab9ee4b72322e8af25679ff5e SHA512 242f955699398c5f90c63a85209a185b61464c8730c2889f9748b9dc3e9c3a8e9edbbf071513fed02208ef7b51106c0155288c06814724d484132da5029d363e
-DIST chromeos-document-scanning-lib-x86_64-znver1-1.0.0.tar.zst 3876298 BLAKE2B f23001b881eeb5d0c4b912b375f691afb787db4be15c610bb56f222db5e042bd077882cd0a5ee302ce325d145430164d59b95ec81cbe23b9368d74000fe5f72d SHA512 d9bb34be212f475ecbb225d9aeea6bf3173897a46ac704dd740ffcda86e6adbe15c8484f9e4c746ef299d55e87846672bac180212cb6070894d2f7ec32f89486
-DIST chromeos-document-scanning-lib-armv7-1.0.0.tar.zst 3562962 BLAKE2B a8d060fb26964e39d62435376315e7d4ab796ecc0f807aee2aa4ecddade2c8e5945d8ff58bdaa61495de2145c5532db95bbd09724ae2e7c47cf6cd94628b3eb6 SHA512 63e08eedea2a038b7a16d76943fbdb5224f2f348a283b844e8afa62224becbd07156124a0d2bbf66cc515fd55b1af4aedc34e822eb216c9d2d67d2a5cb832ef2
-DIST chromeos-document-scanning-lib-armv7-armv8-1.0.0.tar.zst 3562964 BLAKE2B 8bb06c74f01d56a8b0c4ad8b68e001a371c4d3e4a17c8516b9233c55924cad1559b4ae353661d0b706c2b3e3f34d2f1dfe8b708aefab28e9e7a068fe5c280832 SHA512 8b495c394b875fbb89d87ae1a440517ee4ec04a814004736d741eacfb1ac3f68e3897a4156d8d88536b1e5cfb6784d2776a5e95d19f237f4b6c90253d9b21e2d
-DIST chromeos-document-scanning-lib-arm-1.0.0.tar.zst 3688257 BLAKE2B 912ae44ac7f6c1fa3a81f6deb9ce5f0cb38cb3863be7a4c69a72d15d68a6acda494bf9204e7f833d91061521b3139dca077feba7c5e62557ed9048d7f126eb1a SHA512 27e33af0621cc537b4c9c08f2001ad7f30181b9f0051ee240d795247a01bbff22de017e257aa1145f1ac187b8a7eb3e1e94bf39705345f03f1745ad1eab3aba5
+DIST chromeos-camera-libautoframing-x86_64-2022.09.06.tar.zst 7749380 BLAKE2B e675b05eb8baaf33e8f9b179837c2db545a1d8e844ec8f944ba000261cc4a189e5c9941ae4d73a4e14b6087a1861d1fe1810d58800320154e0eadd3311f58b41 SHA512 89ad50fc34ff9983daa562758048bdd084b6725296a1d76cce23c35356e5330eb614204389808cc82ce297cad5132263cd31a8b93c682eebe7f2b392f445a6ed
+DIST chromeos-camera-libgcam-x86_64-alderlake-2023.01.11.tar.zst 38271514 BLAKE2B c2478b15c73a7bf7649be80a3602d89358b4ca52d7d7fc8e4190cd996c399fe4a5d789151c2637b639411494674c123d0dfcf22b8ca660c9a685b97fd4131061 SHA512 605dc6187b9259cc2967b32f03b836f9c4a23fe18fd0a794191564712ee1f059bba1617d6398dd9ba77f35d937f390f824b28e06ad810c4574a6269ba5492938
+DIST chromeos-camera-libgcam-x86_64-skylake-2023.01.11.tar.zst 38271390 BLAKE2B 428d8b226602ab401fc56bac69529c9d7bf554455bf5a54444d052815c49d7144cf328f7047821f2313da0c2ead2c41159552998fedeff650f1ce79e4bcd7f92 SHA512 40a7122552956cb29b450bb7216a00cd7f742f43740dfb17e2d776c10c6dd3f5d9e4988e6498ec162d63e3193e53a1b3a166d5b6d95358ef93d637cd37cf7746
+DIST ml-core-libcros_ml_core_internal-0.0.25.tar.xz 22698320 BLAKE2B a0252172bfc539a7fb7ea41c8208fd42a73aea1a8cf30af4d32e07f46ffca4e14e0aba7e9f9cc80f0602375c24ddbac2bdedf0d1b4f0d7d7f457bff00e6398be SHA512 da468d210adfc3096b7bf169a1fe3d1b4cac5c996332844a7fe779c57213080a406daabb2dead8eed8560c953d6c02acfb50d3d01c32feefbbc6b8293d045d22
+DIST ml-core-opencl-cache-20230609.tar.xz 2900100 BLAKE2B f51e06e481b02751a34b64af3e7dbeac39894b5871f7268413dc154c288c70dcecb1ae6955ec161a2d2f04c5791008f401b282d6190007d9562d6144ffdfdf22 SHA512 eeed2365ce7fd0372e14684b7102b9772255b05abe45470d26a98e2b1daaa38cf75dc1a427a002420dbaa028de67aaf073afc249916ed4ab55355c0a0e9b6750
+DIST chromeos-document-scanning-lib-x86_64-1.1.0.tar.zst 3660803 BLAKE2B 4febf3043521e8ce924d8abc02a3c01da968521e017da6b47f278256f8ce672d7230ad9abd055dd5ce547bd3696c98273ffc58735e3376190a9dcaf30ee70525 SHA512 e6fafca207c53e6a89a4978a521f2b25781b18ca07385e581c277715453b2b9e5cb1a9c9f501a34cbac40de8ecce4c60b1e7f0fcb18bcec4afddcf634c0afb26
+DIST chromeos-document-scanning-lib-x86_64-alderlake-1.1.0.tar.zst 3967839 BLAKE2B ac62c0441adb8cf7261768f2e76013abe55a612a05339b42bd05a552b5003a31bb9afc01f12718a160c1ab28fc63da8f772563429394f4a14741ece96ece57ce SHA512 10ded2264a4cb142323f6fa4ed8d849699708aa3333b7e3508bdfbad992fb2a75463a894cf37fe621bce63e9e392096019c641dd904817c5ee993b3003fab199
+DIST chromeos-document-scanning-lib-x86_64-bdver4-1.1.0.tar.zst 3658003 BLAKE2B e82a50d52ca52e25a08bd258701a9af43688807b5640a4f1a382fcd20abe444b44d247127890410e09a0e78f942774cd3ada03f2b524261074b604154c84f614 SHA512 7ae9fd4d1fc13632ae0ab75264e881e111b6d83fa4bb8c33c16c2791deb774f00296390ad65eddf4d785b33985d25a14cad84d25faf2c833cf69d8238d54e11e
+DIST chromeos-document-scanning-lib-x86_64-corei7-1.1.0.tar.zst 3719392 BLAKE2B 069daad1b1312800f8759ede1d90c00e6c314704c2bac072d6a41e76c843f90bc998cb514aa54c09ac399342932afea2ed87faf34ecbd21ad7ba9022c62c07b7 SHA512 f299b63f4c6f377a16b578136084ea067a61790d5421a46b8e554035ee45757166b0fa7a1907222434ba1a7e7f82d074dd726c6ee1e2e7f32e9175da5e089b8e
+DIST chromeos-document-scanning-lib-x86_64-goldmont-1.1.0.tar.zst 3735332 BLAKE2B bc8ca5a27d1345b56c6d2dbf2f2d9f2b180d527696371af558debabb6396f966e091c4a3d7b684ff1ad58adb6d5d9ce068923c0fa45b242f3752e548bd9487f9 SHA512 07e8e18923d6dc5a988af5efbab4ae08d86eddc21033f7c2ac09db3c8ba42b4b41c94b339fef609f6738f807cea947c150f415428da8b30194504aafa86b53bc
+DIST chromeos-document-scanning-lib-x86_64-silvermont-1.1.0.tar.zst 3693641 BLAKE2B 3fce20877c0d33bf3837a4ad48c3a96e9d305b134d67ef95fc7b906f8b214d6292e60b78597b9ecd500214eaa18af51b643465d7c15c36a9aaa60dc0845129fd SHA512 5d3b7654757a7fdebecc79eb8d7d2a363a7161456e592a6ff830ff85ae94aaa8306f28fa4eb014ce7109c35bada11bf612aa0d61eca260946c0ab78227310bdc
+DIST chromeos-document-scanning-lib-x86_64-skylake-1.1.0.tar.zst 3912682 BLAKE2B 7492cd0cfdc8c2dce67a0f98da1cfe63604fc673278f3a6133b76d72929db3d54f0cd2c5ea1379e8615bc990d01ffdcf73db853165d75b4a8ff47b3358d8ef2b SHA512 0783968d710e2457267aaa5c1b7290074c08e008911fe6d7b767a9e6b048cd4aaf0fbe041d593366ed9b0a33ad52fad35f4e651faaf127d021d34634a07dc167
+DIST chromeos-document-scanning-lib-x86_64-tigerlake-1.1.0.tar.zst 3912799 BLAKE2B 593f49a621fa3d6fb4b3a7a00285d87286aaff7f652833261199c80795d09ff84ccf16159db576f8a8da036a1e15e443e5ccae04bd0f5c6ec6a8c46a476022c8 SHA512 cfcbf13bdde002bacc293633a7f077e6d65b194104d2704084e6c76a8229c7b8ca6257bd0860055c1caf2682ccf4ecfcd3efee1c1f7ba5ab86d5de32d4d2d040
+DIST chromeos-document-scanning-lib-x86_64-tremont-1.1.0.tar.zst 3735759 BLAKE2B b832eb32de95ff2ec239c27a69cc809159c0e92090198e5d968b1ad324adeeb2f77229ca14a6e9319ce89dc4feda6c5bea61b9012a904d1ab0894281ab9095e9 SHA512 ce9d1eb1be20f24eebbcef6f5a8a18dc7d4d905c2e39cadfe0065700907e5cb7e97e92eb3a330fa17249db985e9c97a9c9c6eacbef18543439f86a719fe54697
+DIST chromeos-document-scanning-lib-x86_64-znver1-1.1.0.tar.zst 3764962 BLAKE2B 42b8d9aa63100cc323d1bccb77ec0d7b8bdaa763de895ac72d90898204ab01856791d6bfbd2ded72456b34a81e78879652dc8199d0ae243c351f426e84ab6d9e SHA512 bd972fb3703507a1da9083aabde990d86df46adb41982cd85dec46a11608e9795e1a353c9e1315974ef04cb118443e33273e84886e156362fa9367d6ebede592
+DIST chromeos-document-scanning-lib-armv7-1.1.0.tar.zst 3432105 BLAKE2B 24ae85a6d0db1e32cc2dffbc777513309603e2d492fb1f4bb38b8051a2c99154d03b54b608c6903406f1e0a721a5c2bd2f062da56ba57daa88976f5efb562639 SHA512 182e2c2d79f5b1815e0e0237cfe34945e933f6d393fe75f9795e3fed6239acf633945e4e250be73ccb02a957081004d669db8ea947d2f994027ba684faf90eb3
+DIST chromeos-document-scanning-lib-armv7-armv8-1.1.0.tar.zst 3432103 BLAKE2B 5a3e9e94cdaec3059ed851744e56f59f632b8753cccfbf5369d9eedcaa2fdf86e0315eba6ab0452148a2707785a677f5b6363124c2cb5e5eba8a677d4bc556e5 SHA512 cb25050688ece2dcff17fbc20ab4b28517d918ee6950e3f9072ccad2d0714867b0e32474cc9d120eeb7b4ec9756d685a3625e0f5702a691649d3fb948fbc9a35
+DIST chromeos-document-scanning-lib-arm-1.1.0.tar.zst 3485327 BLAKE2B 21960afaf7d0bc6ac74080e5a39113f0bf87e0001c40daeb8dbf7f99d623ef9b0b5f019a98b28b314a886ce6ed1ea4e5ae72cc7a2d9794d4d84afe8fb1709afc SHA512 b5e84c099b6c8ea93cd63624e07cc15950da8a7a059f725b9c456d4270a0d64c7d0ee7ef84d8a32c98b5a0078fc791b3ac6a9bcb9b27d8837abfa09562241b44
+DIST chromeos-facessd-lib-x86_64-1.1.0.tar.zst 2610788 BLAKE2B dec4a8bc6328044a84f138cb83630591a0c574ccc2a9b321cd87a32fb25a2aa68937159d4a6413e67be71e619800ba8f5958da13fa5911de2818e5230a6779da SHA512 076d94c071696bd2b7da86e4bd4e151f4670082fd08d9cc4b03241d59d65ca860d25760435f95b5152b878c8e46e6e7030f4f87add230adecee47a3a35adb8d7
+DIST chromeos-facessd-lib-x86_64-alderlake-1.1.0.tar.zst 2891808 BLAKE2B b29de9e17656d048b564a367a6004e5127773627ef88b5ae70d966b93d75fbe72a365d8b53fa05c46d31355243618ce51cd17c4d09a667ad8f7b883621cb20b2 SHA512 d69d7d4301e958801313725ddc996027b7a46b7c22c1a08a3c358a82d78e2899917ef8b4e28c67d8fe573c1c33acc18232ba540cd619bc105c7f84b7dc9c82da
+DIST chromeos-facessd-lib-x86_64-bdver4-1.1.0.tar.zst 2617184 BLAKE2B d4cca0783c1c1969129c6d526d4b5190ddbd97fe08fbd75d2501a97dff1ca9c623cb47e8f2fce6439bc3ba73f80c9e88ac8cf49529018e93f417ec817f57943a SHA512 044f9dc283a53dd428710518ca7719f23a357b850ee87c29825ff7d03aef474a4010051cf37a28f6dcc813132793cc9bd42dca2d6cc1c63c4d4673d3499a0528
+DIST chromeos-facessd-lib-x86_64-corei7-1.1.0.tar.zst 2674871 BLAKE2B 6a406cb6d2ca6f526bc767b82813b27ffe5a2610a21da00353b3aa084428b78ee5a9415e054a3e3aa2fdf5e5587444c39b3d490407f5e6c1deb655bd9918f9bc SHA512 6f77ea87ba94b865c354fa07d9012345105c73b2e7de5258a0b5880b1f94d1e2ce556279e1e6c573c612bb5560cbc5302254fce6d885482d708db8cbab7d151c
+DIST chromeos-facessd-lib-x86_64-goldmont-1.1.0.tar.zst 2663706 BLAKE2B 9e9f39e359af702bafd54384578bbe284c78f12de757a33a94a628c783bc5077c1d78b0ead98ae8ff4b6a1fd5024011b0ffd01c54bf80c03669551cfb3e36fde SHA512 774bd0eafc28e61cde8bac58e6055de320d718da4e9b9a915b9d0b77d1b31425f0eb7846f3775639f77798d64589d9f7feef2e8add1b96685cd21c79bc1366fc
+DIST chromeos-facessd-lib-x86_64-silvermont-1.1.0.tar.zst 2637560 BLAKE2B b97afb0911a05a3708d9f863db811f94f5ef97d801e888363d34997c09b6eff94c1a3e6617cadbad0f7787152ed6e87a949b9f12b45fdeddfcda62b4a89946d8 SHA512 ae3ecbe8e9b00fc9d8528b6eefc4c0efbc7d6a2723959babb111301d3142eb6a8d0f0ce7fb8933a4534b3514c54e04f51175062c47d956580ac475c4b731302a
+DIST chromeos-facessd-lib-x86_64-skylake-1.1.0.tar.zst 2840853 BLAKE2B 0626d22ddd948eecbe1f8721968ae08eb582fa6d3bcfbff31d3d807b623c53f28bd92858058b98a62ca4bc69488c09ebe9d67eab4d57291f8eedccfb5e1e53f7 SHA512 24fa7520f208547f346fcada52f480635c322e18bf563638a86d21bbac5353bf89c7e9208c029842f56175a777f18872de6f0c6ef2e1c2f82722572f92d750dd
+DIST chromeos-facessd-lib-x86_64-tigerlake-1.1.0.tar.zst 2841037 BLAKE2B 6fd9431ff6fe76d072e771dacf53bad70d77f4411684722eb4a423f08abc0322be120a60249cb3ca83f2b89bee0ba218ed36c9695553012a0829b8b7875ec55e SHA512 7b5018b21b6ecc46d40f04da6a466adad462b20c25de0b7c9b224509edcdaa70e47885634b62e374551b592f1d6db25c5d8e64d304172c523ee2f3e5e56a1f77
+DIST chromeos-facessd-lib-x86_64-tremont-1.1.0.tar.zst 2663367 BLAKE2B 7f44cd390ec1c72024b8849d837c62d798c5359d142833800639dc8619f16b669952d20be219bec331cd43865fbdecb88c7be91e7b4efa6a7e47fd5f799cd223 SHA512 f98f7b1fd30aaba747b4fe93f0ce1f673b80f3d3fdf6cc27f0f3b62503c5ddef8a137d991c6aa291211a44f7fd2322368fd5f62c77730db66cfe022ae6271ebd
+DIST chromeos-facessd-lib-x86_64-znver1-1.1.0.tar.zst 2696777 BLAKE2B 6722abfe0e3194e7ea839583f14e3dd0363863ebd3c407d1c24f487f03044e5359371b9b9681d70b4ebcba3054b4bcb611763477f2ebfbb0300700b72abd55ba SHA512 94d8218fa8388482152e83956bb3fe2715243f3da0cb67964b6820c4d2926836143df44a7bb848771e067304547c341cff9256d90b32bcc59ed7f37f3828059e
+DIST chromeos-facessd-lib-armv7-1.1.0.tar.zst 2484015 BLAKE2B 92746efad1039f40f6b0dbeb40a958197c7eb9828ce5bf6a170d9131ea8dfed5f0a8ce4f98459604af038dd77a535096ce784f89ce09a34337a9db289bbda7e4 SHA512 408e3b3d4c51723594df527292e27853482c280c991ebc5a4e4a86797f9564f9794bd57bb854bfc630d8bea0219b8519a9c8d43043b6070b3789a9bf2d39a45b
+DIST chromeos-facessd-lib-armv7-armv8-1.1.0.tar.zst 2484020 BLAKE2B 44411dc6185f24fa258e045bcb739990b6e5a520ad71cbaff9b98bd3abebecd71fdd942f143e819e622e4fb987494f685b8b056c2f52cffbc66289d38382ab0e SHA512 7614e4118df7dc7ad31beb01e3d8bf94cb9ff52c280529a463887ac243d68d7d177f73f1982ee574cf88df88d34813266ac6ec6d20b70f0720a43c133fd66788
+DIST chromeos-facessd-lib-arm-1.1.0.tar.zst 2549908 BLAKE2B 3d52a729ca453b7426d2b52ba6b34bd3443c20212e5dd65eb31eedc27121dcb6efa11f2586974577e95c72c897b14e418585228248074c152324a1500222edba SHA512 156cd3434146eb2f39369a9c2c95aa53e158689724110656165da865d264f89aa85dc6e2da77cbe94b360d1b13c6c6a20619190027287e9de0279d80cc85c86e
+DIST portrait-processor-lib-x86_64-1.1.0.tar.zst 112594375 BLAKE2B 521c7e3a32f753cb2c048a0ad76ce8f0e3650a8e8e2c36841d89a46337887871dc8772c76f30d84f2bbf0ba9280246ea344358f75ee8712907d35e05a4e18d2e SHA512 dc615d95c529a690269aeff37fd8b81fc1b62afa0348ec622323b0520a6180f91f4c68f429cf75680dac741299827ae2e57add47e15b7549b5910684d0ab1d39
+DIST portrait-processor-lib-armv7-1.1.0.tar.zst 111755022 BLAKE2B 7e673ad5a6442e175fa6085da785a2624beae99b6405d2b39a547d31c62a220a86bf324b0a0fae09de1f7f9838d41e8d81240afa3e810cfb5a25d361c98c179b SHA512 cf7d2c4f4081a16423a704633f48d9be3717ebe84f94677ea07b6e42c996a0819e6dea95f3cbfa2d1c81e5bcae9f83e1675a943e0484f31fa24adb66a20294b1
+DIST portrait-processor-lib-arm-1.1.0.tar.zst 111575977 BLAKE2B 27e60aaee81407f2219ccb70e96a1cc39a635d37043cfc8bac1712e83766ab6a32454acf039e5f0804ddb594b1e96e82c6be559ef308a7b0888c2ea27df21f9a SHA512 309d708452a9b979933296693fb79defbfb06b17c764de62145165eaf8cd9b40bea58f1777aff814db275a55c0d861890790a0c3c30fd57c1f1a51594cc51983
diff --git a/media-libs/cros-camera-libfs/cros-camera-libfs-0.0.1-r167.ebuild b/media-libs/cros-camera-libfs/cros-camera-libfs-0.0.1-r236.ebuild
similarity index 66%
rename from media-libs/cros-camera-libfs/cros-camera-libfs-0.0.1-r167.ebuild
rename to media-libs/cros-camera-libfs/cros-camera-libfs-0.0.1-r236.ebuild
index 94cdf8f..3f38479 100644
--- a/media-libs/cros-camera-libfs/cros-camera-libfs-0.0.1-r167.ebuild
+++ b/media-libs/cros-camera-libfs/cros-camera-libfs-0.0.1-r236.ebuild
@@ -4,8 +4,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "ee46c272200c3bb842d0288afb22d9ebb36f02f7" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "ee46c272200c3bb842d0288afb22d9ebb36f02f7" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/libfs common-mk"
@@ -20,6 +20,7 @@
 
 IUSE="
 	camera_feature_auto_framing
+	camera_feature_effects
 	camera_feature_face_detection
 	camera_feature_hdrnet
 	camera_feature_portrait_mode
@@ -27,31 +28,32 @@
 	ondevice_document_scanner_dlc
 "
 
-# Auto face framing depends on the face detection feature.
 REQUIRED_USE="
-	camera_feature_auto_framing? ( camera_feature_face_detection )
 	?? ( ondevice_document_scanner ondevice_document_scanner_dlc )
 "
 
-LOCAL_MIRROR="gs://chromeos-localmirror/distfiles"
-PACAKGE_AUTOFRAMING="chromeos-camera-libautoframing-2022.09.06.tbz2"
-PACKAGE_DOCUMENT_SCANNING_PV="1.0.0"
-PACAKGE_FACESSD="chromeos-facessd-lib-2021.10.27.tar.bz2"
-PACKAGE_GCAM="chromeos-camera-libgcam-2023.01.11.tar.zst"
-PACKAGE_PORTRAIT_MODE_PV="2023.03.14"
+PACKAGE_AUTO_FRAMING_PV="2022.09.06"
+PACKAGE_DOCUMENT_SCANNING_PV="1.1.0"
+PACKAGE_FACESSD_PV="1.1.0"
+PACKAGE_GCAM_PV="2023.01.11"
+PACKAGE_PORTRAIT_MODE_PV="1.1.0"
 
 SRC_URI="
 		camera_feature_auto_framing? (
-				${LOCAL_MIRROR}/${PACAKGE_AUTOFRAMING}
+				$(cros-camera_generate_auto_framing_package_SRC_URI ${PACKAGE_AUTO_FRAMING_PV})
 		)
-		${LOCAL_MIRROR}/${PACAKGE_FACESSD}
+		$(cros-camera_generate_facessd_package_SRC_URI ${PACKAGE_FACESSD_PV})
 		camera_feature_hdrnet? (
-				${LOCAL_MIRROR}/${PACKAGE_GCAM}
+				$(cros-camera_generate_gcam_package_SRC_URI ${PACKAGE_GCAM_PV})
 		)
 		camera_feature_portrait_mode? (
 				$(cros-camera_generate_portrait_mode_package_SRC_URI ${PACKAGE_PORTRAIT_MODE_PV})
 		)
 		$(cros-camera_generate_document_scanning_package_SRC_URI ${PACKAGE_DOCUMENT_SCANNING_PV})
+		camera_feature_effects? (
+			gs://chromeos-localmirror/distfiles/ml-core-libcros_ml_core_internal-0.0.25.tar.xz
+			gs://chromeos-localmirror/distfiles/ml-core-opencl-cache-20230609.tar.xz
+		)
 "
 
 LICENSE="BSD-Google"
@@ -66,12 +68,16 @@
 	!media-libs/cros-camera-libgcam
 "
 
+BDEPEND="
+	sys-fs/squashfs-tools
+"
+
 src_unpack() {
 	unpacker
 	platform_src_unpack
 	# Override unpacked data by files/* for local development.
 	if [[ "${PV}" == "9999" ]]; then
-		cp -r "${FILESDIR}"/* "${WORKDIR}"
+		cp -fpr "${FILESDIR}"/* "${WORKDIR}" || die
 	fi
 }
 
@@ -82,12 +88,17 @@
 
 	local lib_name=$(basename "${lib_src_path}")
 
+	if [[ "${lib_name}" != *".so" ]]; then
+		die "${lib_name} does not end with \".so\", which is required for a shared library."
+	fi
+
 	# For building binary, but won't be installed into the image.
+	chmod 755 "${lib_src_path}"
 	insinto /build/share/cros_camera
 	doins "${lib_src_path}"
 
 	# Put into the squashfs image without debug symbols.
-	$(tc-getSTRIP) -s "${lib_src_path}" -o "${so_files_path}/${lib_name}"
+	$(tc-getSTRIP) -s "${lib_src_path}" -o "${so_files_path}/${lib_name}" || die
 }
 
 src_install() {
@@ -96,8 +107,6 @@
 	insinto /etc/init
 	doins init/cros-camera-libfs.conf
 
-	local arch_march=$(cros-camera_get_arch_march_path)
-
 	local so_files_path="${WORKDIR}/camera_libs"
 	mkdir -p "${so_files_path}"
 
@@ -110,13 +119,21 @@
 	if use ondevice_document_scanner; then
 		install_lib "${WORKDIR}/libdocumentscanner.so" "${so_files_path}"
 	fi
-	install_lib "${WORKDIR}/${arch_march}/libfacessd_cros.so" "${so_files_path}"
-	if use camera_feature_hdrnet && (use march_skylake || use march_alderlake || use amd64); then
-		install_lib "${WORKDIR}/${arch_march}/libgcam_cros.so" "${so_files_path}"
+	install_lib "${WORKDIR}/libfacessd_cros.so" "${so_files_path}"
+	if use camera_feature_hdrnet && (use march_skylake || use march_alderlake); then
+		install_lib "${WORKDIR}/libgcam_cros.so" "${so_files_path}"
 	fi
 	if use camera_feature_portrait_mode; then
 		install_lib "${WORKDIR}/libportrait_cros.so" "${so_files_path}"
 	fi
+	if use camera_feature_effects; then
+		# install the library
+		install_lib "${WORKDIR}/libcros_ml_core_internal.so" "${so_files_path}"
+		# install the opencl cache and fix permissions to be readable
+		cp -r "${WORKDIR}/cl_cache" "${so_files_path}"
+		chmod a+x "${so_files_path}/cl_cache"
+		chmod -R a+r "${so_files_path}/cl_cache"
+	fi
 
 	# Compress the .so files to a single .squash file and install it.
 	mksquashfs "${so_files_path}" "${camera_g3_libs_path}" \
diff --git a/media-libs/cros-camera-libfs/cros-camera-libfs-9999.ebuild b/media-libs/cros-camera-libfs/cros-camera-libfs-9999.ebuild
index f258bec..a22cd68 100644
--- a/media-libs/cros-camera-libfs/cros-camera-libfs-9999.ebuild
+++ b/media-libs/cros-camera-libfs/cros-camera-libfs-9999.ebuild
@@ -18,6 +18,7 @@
 
 IUSE="
 	camera_feature_auto_framing
+	camera_feature_effects
 	camera_feature_face_detection
 	camera_feature_hdrnet
 	camera_feature_portrait_mode
@@ -25,31 +26,32 @@
 	ondevice_document_scanner_dlc
 "
 
-# Auto face framing depends on the face detection feature.
 REQUIRED_USE="
-	camera_feature_auto_framing? ( camera_feature_face_detection )
 	?? ( ondevice_document_scanner ondevice_document_scanner_dlc )
 "
 
-LOCAL_MIRROR="gs://chromeos-localmirror/distfiles"
-PACAKGE_AUTOFRAMING="chromeos-camera-libautoframing-2022.09.06.tbz2"
-PACKAGE_DOCUMENT_SCANNING_PV="1.0.0"
-PACAKGE_FACESSD="chromeos-facessd-lib-2021.10.27.tar.bz2"
-PACKAGE_GCAM="chromeos-camera-libgcam-2023.01.11.tar.zst"
-PACKAGE_PORTRAIT_MODE_PV="2023.03.14"
+PACKAGE_AUTO_FRAMING_PV="2022.09.06"
+PACKAGE_DOCUMENT_SCANNING_PV="1.1.0"
+PACKAGE_FACESSD_PV="1.1.0"
+PACKAGE_GCAM_PV="2023.01.11"
+PACKAGE_PORTRAIT_MODE_PV="1.1.0"
 
 SRC_URI="
 		camera_feature_auto_framing? (
-				${LOCAL_MIRROR}/${PACAKGE_AUTOFRAMING}
+				$(cros-camera_generate_auto_framing_package_SRC_URI ${PACKAGE_AUTO_FRAMING_PV})
 		)
-		${LOCAL_MIRROR}/${PACAKGE_FACESSD}
+		$(cros-camera_generate_facessd_package_SRC_URI ${PACKAGE_FACESSD_PV})
 		camera_feature_hdrnet? (
-				${LOCAL_MIRROR}/${PACKAGE_GCAM}
+				$(cros-camera_generate_gcam_package_SRC_URI ${PACKAGE_GCAM_PV})
 		)
 		camera_feature_portrait_mode? (
 				$(cros-camera_generate_portrait_mode_package_SRC_URI ${PACKAGE_PORTRAIT_MODE_PV})
 		)
 		$(cros-camera_generate_document_scanning_package_SRC_URI ${PACKAGE_DOCUMENT_SCANNING_PV})
+		camera_feature_effects? (
+			gs://chromeos-localmirror/distfiles/ml-core-libcros_ml_core_internal-0.0.25.tar.xz
+			gs://chromeos-localmirror/distfiles/ml-core-opencl-cache-20230609.tar.xz
+		)
 "
 
 LICENSE="BSD-Google"
@@ -64,12 +66,16 @@
 	!media-libs/cros-camera-libgcam
 "
 
+BDEPEND="
+	sys-fs/squashfs-tools
+"
+
 src_unpack() {
 	unpacker
 	platform_src_unpack
 	# Override unpacked data by files/* for local development.
 	if [[ "${PV}" == "9999" ]]; then
-		cp -r "${FILESDIR}"/* "${WORKDIR}"
+		cp -fpr "${FILESDIR}"/* "${WORKDIR}" || die
 	fi
 }
 
@@ -80,12 +86,17 @@
 
 	local lib_name=$(basename "${lib_src_path}")
 
+	if [[ "${lib_name}" != *".so" ]]; then
+		die "${lib_name} does not end with \".so\", which is required for a shared library."
+	fi
+
 	# For building binary, but won't be installed into the image.
+	chmod 755 "${lib_src_path}"
 	insinto /build/share/cros_camera
 	doins "${lib_src_path}"
 
 	# Put into the squashfs image without debug symbols.
-	$(tc-getSTRIP) -s "${lib_src_path}" -o "${so_files_path}/${lib_name}"
+	$(tc-getSTRIP) -s "${lib_src_path}" -o "${so_files_path}/${lib_name}" || die
 }
 
 src_install() {
@@ -94,8 +105,6 @@
 	insinto /etc/init
 	doins init/cros-camera-libfs.conf
 
-	local arch_march=$(cros-camera_get_arch_march_path)
-
 	local so_files_path="${WORKDIR}/camera_libs"
 	mkdir -p "${so_files_path}"
 
@@ -108,13 +117,21 @@
 	if use ondevice_document_scanner; then
 		install_lib "${WORKDIR}/libdocumentscanner.so" "${so_files_path}"
 	fi
-	install_lib "${WORKDIR}/${arch_march}/libfacessd_cros.so" "${so_files_path}"
-	if use camera_feature_hdrnet && (use march_skylake || use march_alderlake || use amd64); then
-		install_lib "${WORKDIR}/${arch_march}/libgcam_cros.so" "${so_files_path}"
+	install_lib "${WORKDIR}/libfacessd_cros.so" "${so_files_path}"
+	if use camera_feature_hdrnet && (use march_skylake || use march_alderlake); then
+		install_lib "${WORKDIR}/libgcam_cros.so" "${so_files_path}"
 	fi
 	if use camera_feature_portrait_mode; then
 		install_lib "${WORKDIR}/libportrait_cros.so" "${so_files_path}"
 	fi
+	if use camera_feature_effects; then
+		# install the library
+		install_lib "${WORKDIR}/libcros_ml_core_internal.so" "${so_files_path}"
+		# install the opencl cache and fix permissions to be readable
+		cp -r "${WORKDIR}/cl_cache" "${so_files_path}"
+		chmod a+x "${so_files_path}/cl_cache"
+		chmod -R a+r "${so_files_path}/cl_cache"
+	fi
 
 	# Compress the .so files to a single .squash file and install it.
 	mksquashfs "${so_files_path}" "${camera_g3_libs_path}" \
diff --git a/media-libs/cros-camera-libjea_test/OWNERS b/media-libs/cros-camera-libjea_test/OWNERS
index db7e695..8f44c3e 100644
--- a/media-libs/cros-camera-libjea_test/OWNERS
+++ b/media-libs/cros-camera-libjea_test/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r1064.ebuild b/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r1159.ebuild
similarity index 68%
rename from media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r1064.ebuild
rename to media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r1159.ebuild
index 9d8c99d5..64c9c46 100644
--- a/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r1064.ebuild
+++ b/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r1159.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2018 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "4905252d7c2626874b087f7fedb988e06769a3d0" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
diff --git a/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-9999.ebuild b/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-9999.ebuild
index 5cbe465..800588a 100644
--- a/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-9999.ebuild
+++ b/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2018 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
diff --git a/media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-0.0.1-r368.ebuild b/media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-0.0.1-r571.ebuild
similarity index 60%
rename from media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-0.0.1-r368.ebuild
rename to media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-0.0.1-r571.ebuild
index 5a6745b..1d4be4b 100644
--- a/media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-0.0.1-r368.ebuild
+++ b/media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-0.0.1-r571.ebuild
@@ -3,12 +3,12 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "ddb7cf2ecd4ddddcdb48872581ff50992714e916" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "4905252d7c2626874b087f7fedb988e06769a3d0" "ccd70993df3dbf4fff4325967037745b83ccbde8" "f2431337126663ce80d01b13755ed940d700e70a" "1647a468f15f85e89d45c799e27359e3e664c67b" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "d60fbd9fd8eba6e1fecd04816242b111eb1c36ef" "fa6f6d4bf420ee9b84e4174ac9cc48e278c06b3d")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "21bea9b039270722a2838496f241927aab594088" "56d11be3eee2e1ae4822f70f73b6e8cc7a4082c8" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "6004a0e1699013ec8cf7e1061b6ed785e492f1a1" "9942607d3de36a375711502f44f44d28aac7bd3a" "41d899585b7a07ea908a0cca2944a7b8a4d13655" "1e601fb1df98e9ea9f5803aeb50bd6fbec835a2a" "e40ac435946a5417104d844a323350d04e9d3b2e" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "cceb75d9e5555d3cccb273c52847819feabc9c65" "f9d448b071fa10e2a2149cdc09b1cb04c5a1634a")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # iioservice/ is included just to make sandbox happy when running `gn gen`.
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/features camera/gpu camera/include camera/mojo chromeos-config common-mk iioservice/libiioservice_ipc iioservice/mojo metrics ml_core"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/features camera/gpu camera/include camera/mojo chromeos-config common-mk iioservice/libiioservice_ipc iioservice/mojo metrics ml_core mojo_service_manager"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -30,11 +30,13 @@
 	chromeos-base/cros-camera-android-deps:=
 	chromeos-base/cros-camera-libs:=
 	chromeos-base/metrics:=
+	chromeos-base/mojo_service_manager:=
 	dev-cpp/gtest:=
 	media-libs/libyuv:=
 "
 
 DEPEND="
+	chromeos-base/system_api:=
 	x11-drivers/opengles-headers:=
 	${RDEPEND}
 "
diff --git a/media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-9999.ebuild b/media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-9999.ebuild
index 107e135..062451f 100644
--- a/media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-9999.ebuild
+++ b/media-libs/cros-camera-sw-privacy-switch-test/cros-camera-sw-privacy-switch-test-9999.ebuild
@@ -6,7 +6,7 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # iioservice/ is included just to make sandbox happy when running `gn gen`.
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/features camera/gpu camera/include camera/mojo chromeos-config common-mk iioservice/libiioservice_ipc iioservice/mojo metrics ml_core"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/features camera/gpu camera/include camera/mojo chromeos-config common-mk iioservice/libiioservice_ipc iioservice/mojo metrics ml_core mojo_service_manager"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -28,11 +28,13 @@
 	chromeos-base/cros-camera-android-deps:=
 	chromeos-base/cros-camera-libs:=
 	chromeos-base/metrics:=
+	chromeos-base/mojo_service_manager:=
 	dev-cpp/gtest:=
 	media-libs/libyuv:=
 "
 
 DEPEND="
+	chromeos-base/system_api:=
 	x11-drivers/opengles-headers:=
 	${RDEPEND}
 "
diff --git a/media-libs/cros-camera-test/OWNERS b/media-libs/cros-camera-test/OWNERS
index db7e695..8f44c3e 100644
--- a/media-libs/cros-camera-test/OWNERS
+++ b/media-libs/cros-camera-test/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-test/cros-camera-test-0.0.1-r1281.ebuild b/media-libs/cros-camera-test/cros-camera-test-0.0.1-r1421.ebuild
similarity index 67%
rename from media-libs/cros-camera-test/cros-camera-test-0.0.1-r1281.ebuild
rename to media-libs/cros-camera-test/cros-camera-test-0.0.1-r1421.ebuild
index bfbb9a5..b52da1e 100644
--- a/media-libs/cros-camera-test/cros-camera-test-0.0.1-r1281.ebuild
+++ b/media-libs/cros-camera-test/cros-camera-test-0.0.1-r1421.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2017 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "bbbae47cb8dbf94e0604edf29e565fb13317ab73" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "4905252d7c2626874b087f7fedb988e06769a3d0" "f2431337126663ce80d01b13755ed940d700e70a" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "b9c2f723fa977a521c315c410f60cb56177cc23b" "da79a0cb46b293055987ed8190b88d813d8df81e" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "9942607d3de36a375711502f44f44d28aac7bd3a" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
@@ -32,6 +32,7 @@
 	virtual/jpeg:0"
 
 DEPEND="${RDEPEND}
+	chromeos-base/system_api
 	dev-cpp/gtest:=
 	media-libs/libyuv
 	virtual/pkgconfig"
diff --git a/media-libs/cros-camera-test/cros-camera-test-9999.ebuild b/media-libs/cros-camera-test/cros-camera-test-9999.ebuild
index 16685fd..a4770ea 100644
--- a/media-libs/cros-camera-test/cros-camera-test-9999.ebuild
+++ b/media-libs/cros-camera-test/cros-camera-test-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2017 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI="7"
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
@@ -30,6 +30,7 @@
 	virtual/jpeg:0"
 
 DEPEND="${RDEPEND}
+	chromeos-base/system_api
 	dev-cpp/gtest:=
 	media-libs/libyuv
 	virtual/pkgconfig"
diff --git a/media-libs/cros-camera-usb-tests/OWNERS b/media-libs/cros-camera-usb-tests/OWNERS
index db7e695..8f44c3e 100644
--- a/media-libs/cros-camera-usb-tests/OWNERS
+++ b/media-libs/cros-camera-usb-tests/OWNERS
@@ -1,2 +1 @@
-# TODO: Add per-package OWNERS and delete this when done.
-*
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-usb-tests/cros-camera-usb-tests-0.0.1-r392.ebuild b/media-libs/cros-camera-usb-tests/cros-camera-usb-tests-0.0.1-r502.ebuild
similarity index 68%
rename from media-libs/cros-camera-usb-tests/cros-camera-usb-tests-0.0.1-r392.ebuild
rename to media-libs/cros-camera-usb-tests/cros-camera-usb-tests-0.0.1-r502.ebuild
index 84f28de..d364c24 100644
--- a/media-libs/cros-camera-usb-tests/cros-camera-usb-tests-0.0.1-r392.ebuild
+++ b/media-libs/cros-camera-usb-tests/cros-camera-usb-tests-0.0.1-r502.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "6c6fe21162ea08ec90c2c7d7674913fa726d72af" "96478ec1bedd40a5eb7c2d392dd4630e3aadfd04" "4905252d7c2626874b087f7fedb988e06769a3d0" "152f7a4c3a86075c9718b0df309dda5757ae3bfe" "1647a468f15f85e89d45c799e27359e3e664c67b")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "d5188fec8e14c2a9a2c16c9645dc83908534149c" "da79a0cb46b293055987ed8190b88d813d8df81e" "f12a2f998297133c0e97f61e1fa8f901e7f6852b" "30bfaefc2eed36d56ffbbb2151a90e6ade095d6a" "41d899585b7a07ea908a0cca2944a7b8a4d13655")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/hal/usb common-mk"
diff --git a/net-print/cups_proxy/cups_proxy-0.0.1-r411.ebuild b/net-print/cups_proxy/cups_proxy-0.0.1-r474.ebuild
similarity index 79%
rename from net-print/cups_proxy/cups_proxy-0.0.1-r411.ebuild
rename to net-print/cups_proxy/cups_proxy-0.0.1-r474.ebuild
index db92fe1..a21fdef 100644
--- a/net-print/cups_proxy/cups_proxy-0.0.1-r411.ebuild
+++ b/net-print/cups_proxy/cups_proxy-0.0.1-r474.ebuild
@@ -1,10 +1,10 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "2c10e9ea99100d03c56494a5e8b66a877f297ea7" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "fccf3ed7a69d8d741b10d936101447b9509f2c3f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
diff --git a/net-print/cups_proxy/cups_proxy-9999.ebuild b/net-print/cups_proxy/cups_proxy-9999.ebuild
index 9d0b9bc..05e371b 100644
--- a/net-print/cups_proxy/cups_proxy-9999.ebuild
+++ b/net-print/cups_proxy/cups_proxy-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The ChromiumOS Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="../platform2"
diff --git a/net-print/pwgtocanonij/pwgtocanonij-0.0.1-r43.ebuild b/net-print/pwgtocanonij/pwgtocanonij-0.0.1-r103.ebuild
similarity index 79%
rename from net-print/pwgtocanonij/pwgtocanonij-0.0.1-r43.ebuild
rename to net-print/pwgtocanonij/pwgtocanonij-0.0.1-r103.ebuild
index 4a0f0df..cbc1fd8 100644
--- a/net-print/pwgtocanonij/pwgtocanonij-0.0.1-r43.ebuild
+++ b/net-print/pwgtocanonij/pwgtocanonij-0.0.1-r103.ebuild
@@ -2,8 +2,8 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "d26891fa9a4fb058250c8cb1b32fbe6b8edfbfc1" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "4d4c80670cea6d1ce2091e03a258966f44f6e859" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
diff --git a/net-wireless/floss/OWNERS b/net-wireless/floss/OWNERS
index b138a06..7e792fc 100644
--- a/net-wireless/floss/OWNERS
+++ b/net-wireless/floss/OWNERS
@@ -2,3 +2,5 @@
 alainm@chromium.org
 mcchou@chromium.org
 sonnysasaka@chromium.org
+michaelfsun@chromium.org
+yinghsu@chromium.org
diff --git a/net-wireless/floss/files/config/bt_stack.conf b/net-wireless/floss/files/config/bt_stack.conf
new file mode 100644
index 0000000..c7d8348
--- /dev/null
+++ b/net-wireless/floss/files/config/bt_stack.conf
@@ -0,0 +1,5 @@
+# Copyright 2023 The ChromiumOS Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+TraceConf=true
diff --git a/net-wireless/floss/files/config/interop_database.conf b/net-wireless/floss/files/config/interop_database.conf
new file mode 100644
index 0000000..66d636b
--- /dev/null
+++ b/net-wireless/floss/files/config/interop_database.conf
@@ -0,0 +1,340 @@
+# Below are the guidelines/instructions for editing this database file.
+# Note 1: User should turn off the BT, before updating this database file.
+# Note 2: Line started with the # is treated as comments.
+# Note 3: Comment lines in between the entries are not allowed.
+# Note 4: All duplicated entries including main BL types will be ignored.
+#
+#1. Below are the four tags for denylist
+#   A. Address_Based   C. Manufacturer_based
+#   B. Name_Based      D. Vndr_Prdt_Based
+#   E. SSR_Max_Lat_Based F. Version_Based
+#   G. LMP_Version_Based H. Address_Range_Based
+##
+#   A. Address_Based :  This tag refers to Address based denylist
+#   Input Type       :   Input value should be only 3 to 4 bytes of BD address
+#   Format Type      :   Address should be in XX:XX:XX format
+#   Examples         :   00:01:03 = Address_Based
+###
+#   B. Name_Based :   This tag refers to Name based denylist.
+#   Input type    :   Input should be only string and length of the string
+#                     should not be more than 248 characters.
+#   Format Type   :   string
+#   Examples      :   Sample Headset name = Name_Based
+####
+#   C. Manufacturer_Based :  This tag refers to Manufacturer based denylist
+#   Input type  : Input should be in Hexadecimal Number of Manufacturer
+#   Format Type : 2 Bytes Hexadecimal Value
+#   Examples    : 0X0023 = Manufacturer_Based
+#####
+#   D. Vndr_Prdt_Based : This tag refers to vendor and product based denylist
+#   Input type  : Input should be in Hexadecimal value
+#   Format Type : 4 bytes hex value( 2 bytes of vendor  and 2 bytes of product),
+#                 Vendor and product hex values should be separated with delimiter(-).
+#   Examples    : 0X00AB-0X00BC = Vndr_Prdt_Based
+#####
+#   E. SSR_Max_Lat_Based : This tag refers to SSR Max Latency based denylist
+#   Input type  : Input value should be combination of first 3 bytes of BD address and
+#                 Hexadecimal value of SSR Max Latency
+#   Format Type : Address should be in XX:XX:XX format followed by 2 bytes hex value
+#                 of max latency Address and Max Latency should be separated with delimiter(-).
+#   Examples    : 00:01:03-0X00AB = SSR_Max_Lat_Based
+#####
+#   F. Version_Based : This tag refers to DID Version based denylist
+#   Input type  : Input value should be Hexadecimal value
+#   Format Type : 2 bytes hex value
+#   Examples    : 0X00AB = Version_Based
+#####
+#   G. LMP_Version_Based : This tag refers to LMP Version based denylist
+#   Input type  : Input value should be combination of first 3 bytes of BD address and
+#                 Hexadecimal value of LMP version and Sub version
+#   Format Type : Address should be in XX:XX:XX format followed by 1 bytes hex value
+#                 of LMP versiion and 2 bytes of sub version
+#                 Address, LMP version and sub version should be separated with delimiter(-).
+#   Examples    : 00:01:03-0X01-0XABCD = LMP_Version_Based
+##
+#   H. Address_Range_Based :  This tag refers to Address Range based denylist
+#   Input Type       :   Input value should be only 6 bytes of start BD address
+#                        & 6 bytes of end BD address.
+#   Format Type      :   Start Address should be XX:XX:XX:XX:XX:XX format followed by
+#                        End BD address should be XX:XX:XX:XX:XX:XX format
+#   Examples         :   00:0f:59:50:00:00-00:0f:59:6f:ff:ff = Address_Range_Based
+#####
+# ******************************* Start of denylist Database ********************************
+#Disable secure connections
+#This is for pre BT 4.1/2 devices that do not handle secure mode very well.
+[INTEROP_DISABLE_LE_SECURE_CONNECTIONS]
+
+# Devices requiring this workaround do not handle Bluetooth Absolute Volume
+# control correctly, leading to undesirable (potentially harmful) volume levels
+# or general lack of controlability.
+# 04:CB:88 - JBL TUNE125TWS
+[INTEROP_DISABLE_ABSOLUTE_VOLUME]
+04:CB:88 = Address_Based
+
+# Disable automatic pairing with headsets/car-kits
+# Some car kits do not react kindly to a failed pairing attempt and
+# do not allow immediate re-pairing. Denylist these so that the initial
+# pairing attempt makes it to the user instead
+[INTEROP_DISABLE_AUTO_PAIRING]
+
+# Use a fixed pin for specific keyboards
+# Keyboards should use a variable pin at all times. However, some keyboards
+# require a fixed pin of all 0000. This workaround enables auto pairing for
+# those keyboards.
+[INTEROP_KEYBOARD_REQUIRES_FIXED_PIN]
+
+# Some headsets have audio jitter issues because of increased re-transmissions as the
+# 3 Mbps packets have a lower link margin, and are more prone to interference. We can
+# disable 3DH packets (use only 2DH packets) for the ACL link to improve sensitivity
+# when streaming A2DP audio to the headset. Air sniffer logs show reduced
+# re-transmissions after switching to 2DH packets.
+# Disable 3Mbps packets and use only 2Mbps packets for ACL links when streaming audio.
+[INTEROP_2MBPS_LINK_ONLY]
+
+# Some HID pointing devices have proven problematic behaviour if pairing is initiated with
+# them, resulting in no response for authentication request and ultimately resulting
+# in connection failure.
+# To avoid degrading the user experience with those devices, authentication request
+# is not requested explicitly.
+[INTEROP_DISABLE_AUTH_FOR_HID_POINTING]
+
+# HID Keyboards that claim support for multitouch functionality have issue with
+# normal functioning of keyboard because of issues in USB HID kernel driver.
+# To avoid degrading the user experience with those devices, digitizer record
+# is removed from the report descriptor.
+[INTEROP_REMOVE_HID_DIG_DESCRIPTOR]
+
+# Some HID devices have problematic behaviour where when hid link is in Sniff
+# and DUT is in Slave role for SCO link ( not eSCO) any solution cannot maintain
+# the link as  SCO scheduling over a short period will overlap with Sniff link due to
+# slave drift.
+# To avoid degrading the user experience with those devices, sniff is disabled from
+# link policy when sco is active, and enabled when sco is disabled.
+[INTEROP_DISABLE_SNIFF_DURING_SCO]
+
+# Few carkits take long time to start sending AT commands
+# Increase AG_CONN TIMEOUT so that AG connection go through
+[INTEROP_INCREASE_AG_CONN_TIMEOUT]
+
+# Some HOGP devices do not respond well when we switch from default LE conn parameters
+# to preferred conn params immediately post connection. Disable automatic switching to
+# preferred conn params for such devices and allow them to explicitly ask for it.
+[INTEROP_DISABLE_LE_CONN_PREFERRED_PARAMS]
+
+# Disable role switch for headsets/car-kits
+# Some car kits allow role switch but when DUT initiates role switch
+# Remote will go to bad state and its leads to LMP time out.
+[INTEROP_DISABLE_ROLE_SWITCH]
+
+# Disable role switch policy for headsets/car-kits
+# Some car kits initiate a role switch but won't initiate encryption
+# after role switch complete
+[INTEROP_DISABLE_ROLE_SWITCH_POLICY]
+
+# certain remote A2DP sinks have issue playing back Music in AAC format.
+# disable AAC for those headsets so that it switch to SBC
+# 1. byte alignment issues with encoder (solo3::20:3c:ae,airpods::4c:32:75)
+# 2. remote sending 128 instead of 128k as bitrate (cadillac::28:a1:83, Chevrolet Tahoe,
+#    buick_verano::ac:7a:4d(moved to name based, maruti_brezzai:28:a1:83,
+#    cadillac cue::e0:75:0a, 30:C3:D9)
+# 3. remote supporting only 44.1Khz (BIG-JAM-BOX::00-21-3c,JVC CK::00:1D:86,BMW CK::9C:DF:03)
+[INTEROP_DISABLE_AAC_CODEC]
+
+# certain remote A2DP sinks have issue playing back Music in AAC VBR mode.
+# disable AAC VBR for those headsets so that it switch to either AAC CBR
+# or SBC codec
+[INTEROP_DISABLE_AAC_VBR_CODEC]
+
+[INTEROP_ENABLE_AAC_CODEC]
+
+# Devices requiring this workaround do not handle Bluetooth PBAP 1.2
+# version correctly, leading them to go in bad state. So for better
+# interoperability respond with PBAP 1.1 as supported version.
+[INTEROP_ADV_PBAP_VER_1_1]
+
+# Devices requiring this workaround do not handle Bluetooth PBAP 1.1
+# version correctly, leading them to go in bad state. So for better
+# interoperability respond with PBAP 1.2 as supported version.
+[INTEROP_ADV_PBAP_VER_1_2]
+
+# Devices requiring this workaround do not handle PBAP SDP request correctly,
+# and lead to connection failures. To prevent this scenario, device requiring this
+# workaorund need to avoid sending SDP request during pairing time
+# 00:1F:20 - Logitech Bluetooth Mouse M555b
+[INTEROP_DISABLE_PCE_SDP_AFTER_PAIRING]
+00:1F:20 = Address_Based
+
+# Devices requiring this workaround do not handle SSR max latency values as mentioned,
+# in their SDP HID Record properly and lead to connection timeout or lags. To prevent
+# such scenarios, device requiring this workaorund need to use specific ssr max latency
+# values.
+[INTEROP_UPDATE_HID_SSR_MAX_LAT]
+DC:2C:26-0x0000 = SSR_Max_Lat_Based
+
+#Some device reports support for hf indicator, but it's HFP version as 1.5. The
+#behaviour violates spec and shall cause problem when DUT support HFP1.7, thus
+#denylisting such devices and remove remote's hf indicator bit if not support HFP1.7.
+[INTEROP_DISABLE_HF_INDICATOR]
+
+#Ensure that call active indicator is sent prior to SCO connection
+#request by adding some delay. Some remotes are very strict in the
+#order of call indicator and SCO connection request.
+[INTEROP_DELAY_SCO_FOR_MT_CALL]
+
+# Some remotes ara taking longer to respond to +BCS during codec negotiation.
+# Disable codec negotiation and directly initiate SCO connection for those.
+[INTEROP_DISABLE_CODEC_NEGOTIATION]
+
+# Disallow sending Player Application Setting Commands for some CK as they are unable
+# to send Passthrough Command while Streaming is in progress
+[INTEROP_DISABLE_PLAYER_APPLICATION_SETTING_CMDS]
+
+[INTEROP_DISABLE_CONNECTION_AFTER_COLLISION]
+
+# Do not use supervision timeout value received from preferred connection
+# parameters, use 3s instead. Use with HID only.
+[INTEROP_HID_PREF_CONN_SUP_TIMEOUT_3S]
+
+# Do not use AVDTP RECONFIGURE when reconfiguring A2DP streams.
+# Some A2DP Sink devices report SUCCESS to the AVDTP RECONFIGURE command,
+# but fail to play the reconfigured audio stream.
+[INTEROP_DISABLE_AVDTP_RECONFIGURE]
+
+[INTEROP_GATTC_NO_SERVICE_CHANGED_IND]
+
+#Some LE devices have proven problematic behaviour if LE connection update is initiated with
+#them, resulting in no response after initiating LE connection update and ultimately resulting
+#in connection timeout. To avoid degrading the user experience with those devices,
+#LE connection update is not requested explicitly for those devices.
+[INTEROP_DISABLE_LE_CONN_UPDATES]
+
+[INTEROP_AVRCP_BROWSE_OPEN_CHANNEL_COLLISION]
+
+#Some remote devices don't support sniff mode when the SCO is connected.
+#For such devices, disable sniff mode after SCO is connected and make
+#the link as active.
+[INTEROP_DISABLE_SNIFF_LINK_DURING_SCO]
+
+#For some remote devices, disable sniff mode during the call
+#as some remotes need call indicators in active mode
+[INTEROP_DISABLE_SNIFF_DURING_CALL]
+
+#Skip sending incoming call state to denylisted devices
+[INTEROP_SKIP_INCOMING_STATE]
+
+#Nintendo Switch Pro Controller - does not set sniff interval dynamically.
+#Requires custom HID report command to change mode.
+[INTEROP_HID_HOST_LIMIT_SNIFF_INTERVAL]
+
+#For some remote devices disable setting of refresh_sig_timer while responding
+#to incoming AVDTP signalling. While incoming connection remote device is sending
+#set_config and delay report back to back, which is violating spec(As per the spec,
+#remote should wait for set_config response and then it should send delay report).
+#Due to which HOST is responding BAD_STATE for delay_report sent by remote, which
+#resulted in remote is going to bad state and sent AVDTP_OPEN with ACP Stream
+#Endpoint ID: 0, for which DUT responded with Error Code: BAD_ACP_SEID
+[INTEROP_DISABLE_REFRESH_ACCEPT_SIG_TIMER]
+
+# List of Media Players allowed to be considered as potential
+# candidates of supporting AVRCP Browsing featute are to be
+# included in this Name Based Allowlist
+# Name Based Format addition must be made with the string having
+# Player's package Name (Not Player's displayable Name) like below:
+# Player's Package Name = Name Based
+#
+# Like below players are part of our Allowlist
+# Youtube(YT) Music = Name Based
+# Gaana = Name Based
+[INTEROP_BROWSE_PLAYER_ALLOW_LIST]
+
+# For some certain remote devices, when a2dp is playing and music
+# player is paused, if we update avrcp paused to remote device, remote device will
+# not output audio even after avrcp becomes playing again. Denylist these devices
+# to not update avrcp paused to them when a2dp is playing.
+# This denylist is migrated from playerStateUpdateBlackListed of Avrcp_ext.java
+[INTEROP_NOT_UPDATE_AVRCP_PAUSED_TO_REMOTE]
+
+# Some certain devices reject DUT initiated connection
+# when DUT tries to connect other auto-connectable profiles 6s after
+# peer connects the first one. To avoid such race condition, raised
+# connect other profiles timeout to 10s to make sure there is no
+# connection rejection from remote because of connection collision.
+# This denylist is migrated from delayConnectTimeoutDevice
+# of PhonePolicy.java.
+[INTEROP_PHONE_POLICY_INCREASED_DELAY_CONNECT_OTHER_PROFILES]
+
+# As per the implementation for the incoming connection scenario if one
+# profile got connected and other profile didn't get connected, DUT starts
+# connect other profiles after 6sec timeout. For some certain device,
+# this timeout has been reduced to 2sec for triggering auto connect to
+# otherprofiles from DUT. So that Audio will get routed to BT device with
+# reduced delay.
+# This denylist is migrated from delayReducedConnectTimeoutDevice
+# of PhonePolicy.java.
+[INTEROP_PHONE_POLICY_REDUCED_DELAY_CONNECT_OTHER_PROFILES]
+
+# Some remote devices are misbehaving when there is an active
+# call and MT call is in progress. We send call indicators for
+# active call and MT Call in progess. When active call is
+# terminated, we send call end indicator only to remote. This
+# is confusing remote and remotes are going into bad state.
+# Denylist remote devices to disconnect SCO when active call is
+# ended, fake MT call indicator again with some delay.
+# This denylist is migrated from BlacklistDeviceAddrToDelayCallInd
+# of HeadsetStateMachine.java.
+[INTEROP_HFP_FAKE_INCOMING_CALL_INDICATOR]
+
+# Some certain devices not rendering VOIP call audio if call indicators
+# are sent with a delay. Denylist the devices to send call
+# indicators back to back.
+# This denylist is migrated from BlacklistDeviceForSendingVOIPCallIndsBackToBack
+# of HeadsetStateMachine.java.
+[INTEROP_HFP_SEND_CALL_INDICATORS_BACK_TO_BACK]
+
+# Some CKs need SCO immediately after SLC if there is an ongoing call on phone
+[INTEROP_SETUP_SCO_WITH_NO_DELAY_AFTER_SLC_DURING_CALL]
+
+#Some LE mouses need preferred connection parameters
+[INTEROP_ENABLE_PREFERRED_CONN_PARAMETER]
+
+# Some CKs drop SCO connection immediately after accept,
+# Retry setup SCO once for those remote devices.
+[INTEROP_RETRY_SCO_AFTER_REMOTE_REJECT_SCO]
+
+# some remotes not able to render the voice for VOIP calls if call
+# ougoing indicators are sent and sco is opened immediately.
+# Adding such devices to denylist, to do the sco open after
+# indicators are sent with slight delay.
+[INTEROP_DELAY_SCO_FOR_MO_CALL]
+
+# some remote hid devices cannot work properly as they laod special hid usb driver in kernel,
+# so modify their vid/pid so that generic hid driver are loaded.
+[INTEROP_CHANGE_HID_VID_PID]
+
+# Some remote always set DUT as slave during connection which restricts
+# setting supervision timeout to the required value. This interop will allow
+# local device to be only master as role switch would be restricted during connection.
+[INTEROP_DISABLE_ROLE_SWITCH_DURING_CONNECTION]
+
+# Disable auto repairing
+[INTEROP_AUTO_RETRY_PAIRING]
+
+# Disable Name Request
+[INTEROP_DISABLE_NAME_REQUEST]
+
+# AVRCP 1_4 Only device
+[INTEROP_AVRCP_1_4_ONLY]
+
+# Few remote devices do not understand AVRCP version greater than 1.3. For these
+# devices, we would like to denylist them and advertise AVRCP version as 1.3
+[INTEROP_AVRCP_1_3_ONLY]
+
+# Disable Sniff
+[INTEROP_DISABLE_SNIFF]
+
+# HFP AT+BIND missing
+[INTEROP_SLC_SKIP_BIND_COMMAND]
+
+# Some remote devices have LMP version in [5.0, 5.2] but do not support robust caching
+# or correctly response with an error. We disable the database hash lookup for such devices.
+[INTEROP_DISABLE_ROBUST_CACHING]
diff --git a/net-wireless/floss/files/dbus/org.chromium.bluetooth.conf b/net-wireless/floss/files/dbus/org.chromium.bluetooth.conf
index 492e191..c3b2b42 100644
--- a/net-wireless/floss/files/dbus/org.chromium.bluetooth.conf
+++ b/net-wireless/floss/files/dbus/org.chromium.bluetooth.conf
@@ -89,6 +89,17 @@
     <allow send_interface="org.chromium.bluetooth.Manager"/>
   </policy>
 
+  <!-- Allow cros_healthd to query information about the BT stack -->
+  <policy user="cros_healthd">
+    <allow send_destination="org.chromium.bluetooth"/>
+    <allow send_destination="org.chromium.bluetooth.Manager"/>
+
+    <allow send_interface="org.chromium.bluetooth.Bluetooth"/>
+    <allow send_interface="org.chromium.bluetooth.BluetoothCallback"/>
+    <allow send_interface="org.chromium.bluetooth.Manager"/>
+    <allow send_interface="org.chromium.bluetooth.ManagerCallback"/>
+  </policy>
+
   <policy context="default">
     <deny send_destination="org.chromium.bluetooth"/>
     <deny send_destination="org.chromium.bluetooth.Manager"/>
diff --git a/net-wireless/floss/files/seccomp/floss-seccomp-amd64.policy b/net-wireless/floss/files/seccomp/floss-seccomp-amd64.policy
new file mode 100644
index 0000000..f64c1c0
--- /dev/null
+++ b/net-wireless/floss/files/seccomp/floss-seccomp-amd64.policy
@@ -0,0 +1,100 @@
+# Copyright 2023 The ChromiumOS Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# rseq should be first due to frequency and purpose to decrease nptl latency
+rseq: 1
+
+accept: 1
+access: 1
+bind: 1
+brk: 1
+chmod: 1
+chown: 1
+clock_getres: 1
+clock_gettime: 1
+clock_nanosleep: 1
+clone: 1
+close: 1
+connect: 1
+epoll_create1: 1
+epoll_ctl: 1
+epoll_wait: 1
+eventfd2: 1
+exit: 1
+exit_group: 1
+fchmod: 1
+fcntl: 1
+fstat: 1
+fstatfs: 1
+fsync: 1
+futex: 1
+getdents64: 1
+geteuid: 1
+getpid: 1
+getrandom: 1
+getresgid: 1
+getresuid: 1
+getrlimit: 1
+getsockname: 1
+gettid: 1
+kill: 1
+link: 1
+listen: 1
+lseek: 1
+madvise: 1
+munmap: 1
+newfstatat: 1
+openat: 1
+poll: 1
+prlimit64: 1
+process_vm_readv: 1
+pselect6: 1
+read: 1
+readlink: 1
+recvfrom: 1
+recvmsg: 1
+rename: 1
+restart_syscall: 1
+rt_sigaction: 1
+rt_sigprocmask: 1
+rt_sigreturn: 1
+rt_sigtimedwait: 1
+sched_get_priority_max: 1
+sched_get_priority_min: 1
+sched_getaffinity: 1
+sched_getparam: 1
+sched_getscheduler: 1
+sched_setscheduler: 1
+sendmsg: 1
+sendto: 1
+set_robust_list: 1
+setsockopt: 1
+shutdown: 1
+sigaltstack: 1
+socketpair: 1
+statx: 1
+tgkill: 1
+timer_create: 1
+timer_delete: 1
+timer_gettime: 1
+timer_settime: 1
+timerfd_create: 1
+timerfd_settime: 1
+uname: 1
+unlink: 1
+write: 1
+writev: 1
+
+mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+
+mprotect: arg2 in ~PROT_EXEC
+
+socket: arg0 == AF_UNIX || arg0 == AF_BLUETOOTH || arg0 == AF_LOCAL
+
+prctl: arg0 == PR_SET_NAME || arg0 == PR_GET_NAME
+
+# ioctl:
+# TUNSETIFF: 0x400454ca
+# Type 'U' commands: 0x....55..
+ioctl: arg1 == 0x400454ca || arg1 in 0xffff55ff && arg1 & 0x00005500 || arg1 == FIONREAD || arg1 == SIOCGIFHWADDR || arg1 == SIOCSIFHWADDR || arg1 == SIOCSIFFLAGS
diff --git a/net-wireless/floss/files/seccomp/floss-seccomp-arm.policy b/net-wireless/floss/files/seccomp/floss-seccomp-arm.policy
new file mode 100644
index 0000000..0ec3446
--- /dev/null
+++ b/net-wireless/floss/files/seccomp/floss-seccomp-arm.policy
@@ -0,0 +1,115 @@
+# Copyright 2023 The ChromiumOS Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# rseq should be first due to frequency and purpose to decrease nptl latency
+
+_llseek: 1
+accept: 1
+access: 1
+bind: 1
+brk: 1
+chmod: 1
+chown32: 1
+clock_getres_time64: 1
+clock_gettime64: 1
+clock_nanosleep: 1
+clone: 1
+close: 1
+connect: 1
+epoll_create1: 1
+epoll_ctl: 1
+epoll_pwait: 1
+epoll_wait: 1
+eventfd2: 1
+exit: 1
+exit_group: 1
+faccessat: 1
+fchmod: 1
+fchmodat: 1
+fchownat: 1
+fcntl64: 1
+fcntl: 1
+fstat64: 1
+fstatat64: 1
+fstatfs64: 1
+fsync: 1
+futex: 1
+getdents64: 1
+geteuid32: 1
+getpid: 1
+getrandom: 1
+getresgid32: 1
+getresuid32: 1
+getsockname: 1
+gettid: 1
+kill: 1
+link: 1
+listen: 1
+lseek: 1
+lstat64: 1
+madvise: 1
+munmap: 1
+openat: 1
+poll: 1
+ppoll: 1
+prlimit64: 1
+process_vm_readv: 1
+pselect6: 1
+read: 1
+readlink: 1
+readlinkat: 1
+recv: 1
+recvfrom: 1
+recvmsg: 1
+rename: 1
+renameat: 1
+restart_syscall: 1
+rseq: 1
+rt_sigaction: 1
+rt_sigprocmask: 1
+rt_sigreturn: 1
+rt_sigtimedwait: 1
+sched_get_priority_max: 1
+sched_get_priority_min: 1
+sched_getaffinity: 1
+sched_getparam: 1
+sched_getscheduler: 1
+sched_setscheduler: 1
+send: 1
+sendmsg: 1
+sendto: 1
+set_robust_list: 1
+setsockopt: 1
+shutdown: 1
+sigaltstack: 1
+socketpair: 1
+statx: 1
+tgkill: 1
+timer_create: 1
+timer_delete: 1
+timer_gettime64: 1
+timer_gettime: 1
+timer_settime64: 1
+timer_settime: 1
+timerfd_create: 1
+timerfd_settime: 1
+ugetrlimit: 1
+uname: 1
+unlink: 1
+unlinkat: 1
+write: 1
+writev: 1
+
+mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+
+mprotect: arg2 in ~PROT_EXEC
+
+socket: arg0 == AF_UNIX || arg0 == AF_BLUETOOTH || arg0 == AF_LOCAL
+
+prctl: arg0 == PR_SET_NAME || arg0 == PR_GET_NAME
+
+# ioctl:
+# TUNSETIFF: 0x400454ca
+# Type 'U' commands: 0x....55..
+ioctl: arg1 == 0x400454ca || arg1 in 0xffff55ff && arg1 & 0x00005500 || arg1 == FIONREAD || arg1 == SIOCGIFHWADDR || arg1 == SIOCSIFHWADDR || arg1 == SIOCSIFFLAGS
diff --git a/net-wireless/floss/files/seccomp/floss-seccomp-arm64.policy b/net-wireless/floss/files/seccomp/floss-seccomp-arm64.policy
new file mode 100644
index 0000000..d5959b6
--- /dev/null
+++ b/net-wireless/floss/files/seccomp/floss-seccomp-arm64.policy
@@ -0,0 +1,101 @@
+# Copyright 2023 The ChromiumOS Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# rseq should be first due to frequency and purpose to decrease nptl latency
+rseq: 1
+
+accept: 1
+bind: 1
+brk: 1
+clock_getres: 1
+clock_gettime: 1
+clock_nanosleep: 1
+clone: 1
+close: 1
+connect: 1
+epoll_create1: 1
+epoll_ctl: 1
+epoll_pwait: 1
+eventfd2: 1
+exit: 1
+exit_group: 1
+faccessat: 1
+fchmod: 1
+fchmodat: 1
+fchown: 1
+fchownat: 1
+fcntl: 1
+fstat: 1
+fstatfs: 1
+fsync: 1
+futex: 1
+getdents64: 1
+geteuid: 1
+getpid: 1
+getrandom: 1
+getresgid: 1
+getresuid: 1
+getrlimit: 1
+getsockname: 1
+gettid: 1
+kill: 1
+linkat: 1
+listen: 1
+lseek: 1
+madvise: 1
+munmap: 1
+newfstatat: 1
+openat: 1
+ppoll: 1
+prlimit64: 1
+process_vm_readv: 1
+pselect6: 1
+read: 1
+readlinkat: 1
+recvfrom: 1
+recvmsg: 1
+renameat: 1
+restart_syscall: 1
+rt_sigaction: 1
+rt_sigprocmask: 1
+rt_sigreturn: 1
+rt_sigtimedwait: 1
+sched_get_priority_max: 1
+sched_get_priority_min: 1
+sched_getaffinity: 1
+sched_getparam: 1
+sched_getscheduler: 1
+sched_setscheduler: 1
+sendmsg: 1
+sendto: 1
+set_robust_list: 1
+setsockopt: 1
+shutdown: 1
+sigaltstack: 1
+socketpair: 1
+statx: 1
+tgkill: 1
+timer_create: 1
+timer_delete: 1
+timer_gettime: 1
+timer_settime: 1
+timerfd_create: 1
+timerfd_settime: 1
+uname: 1
+unlinkat: 1
+write: 1
+writev: 1
+
+mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+
+mprotect: arg2 in ~PROT_EXEC
+
+socket: arg0 == AF_UNIX || arg0 == AF_BLUETOOTH || arg0 == AF_LOCAL
+
+prctl: arg0 == PR_SET_NAME || arg0 == PR_GET_NAME
+
+# ioctl:
+# TUNSETIFF: 0x400454ca
+# Type 'U' commands: 0x....55..
+ioctl: arg1 == 0x400454ca || arg1 in 0xffff55ff && arg1 & 0x00005500 || arg1 == FIONREAD || arg1 == SIOCGIFHWADDR || arg1 == SIOCSIFHWADDR || arg1 == SIOCSIFFLAGS
diff --git a/net-wireless/floss/files/sysprops.conf b/net-wireless/floss/files/sysprops.conf
index 9c94baf..b24f72b 100644
--- a/net-wireless/floss/files/sysprops.conf
+++ b/net-wireless/floss/files/sysprops.conf
@@ -29,6 +29,9 @@
 bluetooth.device_id.vendor_id = 224 # Google: 0xE0
 bluetooth.device_id.vendor_id_source = 1 # Bluetooth Sig: 0x1
 
+# When inquiry db is full, evict low RSSI devices for higher RSSI devices
+persist.bluetooth.inq_by_rssi=true
+
 # Classic
 # The following values are used to load default adapter parameters for BR/EDR.
 # The Bluetooth Core Specification should be consulted for the meaning and valid
diff --git a/net-wireless/floss/files/tmpfiles.d/floss.conf b/net-wireless/floss/files/tmpfiles.d/floss.conf
index c28aff4..9adcba8 100644
--- a/net-wireless/floss/files/tmpfiles.d/floss.conf
+++ b/net-wireless/floss/files/tmpfiles.d/floss.conf
@@ -10,8 +10,10 @@
 
 # Copy configuration files to /var/lib/bluetooth to make it editable
 C= /var/lib/bluetooth/bt_did.conf 0640 bluetooth bluetooth - /etc/bluetooth/bt_did.conf
+C= /var/lib/bluetooth/bt_stack.conf 0640 bluetooth bluetooth - /etc/bluetooth/bt_stack.conf
 C= /var/lib/bluetooth/sysprops.conf 0640 bluetooth bluetooth - /etc/bluetooth/sysprops.conf
 C= /var/lib/bluetooth/admin_policy.json 0640 bluetooth bluetooth - /etc/bluetooth/admin_policy.json
+C= /var/lib/bluetooth/interop_database.conf 0640 bluetooth bluetooth - /etc/bluetooth/interop_database.conf
 
 # For dogfood: Select which daemon to use (bluez vs floss).
 f= /var/lib/bluetooth/bluetooth-daemon.current 0640 bluetooth bluetooth
diff --git a/net-wireless/floss/files/upstart/btadapterd.conf b/net-wireless/floss/files/upstart/btadapterd.conf
index e318db8..f2874b7 100644
--- a/net-wireless/floss/files/upstart/btadapterd.conf
+++ b/net-wireless/floss/files/upstart/btadapterd.conf
@@ -13,6 +13,9 @@
 # the cost of an interruption in Bluetooth connectivity.
 oom score -100
 
+# Wait 10 seconds before sending KILL after TERM
+kill timeout 10
+
 # Physical adapter index
 import HCI
 instance $HCI
@@ -51,11 +54,13 @@
   # -g bluetooth changes group.
   # -G inherit bluetooth's supplementary groups.
   # -n prevents that execve gains privileges, required for seccomp filters.
+  # -S sets seccomp filter.
   # -c 803500 = cap_sys_nice  (1 << 23) | cap_net_raw          (1 << 13) | \
   #             cap_net_admin (1 << 12) | cap_net_bind_service (1 << 10) | \
   #             cap_setpcap   (1 << 8)
   exec minijail0 \
   -u bluetooth -g bluetooth -G -n \
+  -S /usr/share/policy/floss-seccomp.policy \
   -c 803500 \
   -- /usr/bin/btadapterd --index=$INDEX --hci=$HCI ${BTADAPTERD_FLAGS} ${GD_FLAGS}
 end script
diff --git a/net-wireless/floss/files/upstart/btmanagerd.conf b/net-wireless/floss/files/upstart/btmanagerd.conf
index 66da2a7..d0cb9f2 100644
--- a/net-wireless/floss/files/upstart/btmanagerd.conf
+++ b/net-wireless/floss/files/upstart/btmanagerd.conf
@@ -31,6 +31,37 @@
   # Set the product version based on Chrome OS version.
   pv_rule="^(bluetooth.device_id.product_version) = .*#autofill$"
   sed -i -E "s/${pv_rule}/\1 = ${os_version} #autofill/" "${sysprop_file}"
+
+  # Set the major and minor class of device based on DMI chassis type.
+  dmi_chassis_file="/sys/class/dmi/id/chassis_type"
+  chassis=0
+  if [ -f "${dmi_chassis_file}" ]; then
+    chassis="$(cat "${dmi_chassis_file}")"
+  fi
+  case "$chassis" in
+    3|4|6|7)
+      # Desktops
+      minor_class=4 ;;
+    8|9|10|14)
+      # Laptops
+      minor_class=12 ;;
+    11)
+      # Handsets
+      minor_class=192 ;;
+    17|28)
+      # Servers
+      minor_class=8 ;;
+    *)
+      # Unknown
+      minor_class=0
+  esac
+  sed -i -E "s/#(bluetooth.device.class_of_device)/\1=0,1,${minor_class}/" "${sysprop_file}"
+
+  if [ -f /usr/bin/process_flex_bluetooth_overrides ]; then
+    exec minijail0 \
+    -u bluetooth -g bluetooth -G -n \
+    -- /usr/bin/process_flex_bluetooth_overrides
+  fi
 end script
 
 script
diff --git a/net-wireless/floss/floss-0.0.2-r3599.ebuild b/net-wireless/floss/floss-0.0.2-r4279.ebuild
similarity index 78%
rename from net-wireless/floss/floss-0.0.2-r3599.ebuild
rename to net-wireless/floss/floss-0.0.2-r4279.ebuild
index 70a81f0..1b0fa9c 100644
--- a/net-wireless/floss/floss-0.0.2-r3599.ebuild
+++ b/net-wireless/floss/floss-0.0.2-r4279.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT=("22d6d4ca8b0910eb812b15f2216cb44e9c7a2483" "c8553e8ae9c639bd5862e9a27ba9cf7b78cb86e4" "7b1d3570f892f4869f955d277509f40bf75b60dc" "a7d6a7cd435acb9fd405f96b83ff5e43f8cc966f")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "29cb544d00c178fc2726937ae2c43b92c3d26e68" "e7482e5541cbd00c6b5dfd7b02e6283c7c71eadf" "e65e1a07161a4bd8d6aef57c91726d815fff444f")
+CROS_WORKON_COMMIT=("63150342c81b7d2c6e55b02852c0837a782f27f6" "2b34585b049b7631adadabf07791f850d5bfb13f" "ac9bc7b5de05ea73dfd9a732d4ac83a88de40916" "a7d6a7cd435acb9fd405f96b83ff5e43f8cc966f")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "07db639a32655a8f9a570bfa340fcb604a92366d" "0ab5ab31e04e6acb1a36c06e9572d3bc6b6e698b" "e65e1a07161a4bd8d6aef57c91726d815fff444f")
 CROS_WORKON_PROJECT=(
 	"chromiumos/platform2"
 	"aosp/platform/packages/modules/Bluetooth"
@@ -24,7 +24,7 @@
 	"${S}/platform2/external/proto_logging"
 )
 CROS_WORKON_SUBTREE=("common-mk .gn" "" "" "")
-CROS_WORKON_EGIT_BRANCH=("main" "main" "upstream/master" "master")
+CROS_WORKON_EGIT_BRANCH=("main" "main" "upstream/main" "master")
 CROS_WORKON_OPTIONAL_CHECKOUT=(
 	""
 	"use !floss_upstream"
@@ -36,9 +36,11 @@
 
 # floss_upstream: Use AOSP upstream branch instead of default Chrome OS branch.
 # floss_strict: Treat warnings as errors
-IUSE="bt_dynlib floss_upstream floss_strict"
+IUSE="bt_dynlib floss_upstream floss_strict bt_nonstandard_codecs bt_leaudio flex_bluetooth"
+# floss_mmc: Contains SWBLC3/AAC in Minijail. Enable this by default once it is stable (b/294165109).
+IUSE+=" floss_mmc"
 
-inherit cros-workon toolchain-funcs cros-rust platform tmpfiles udev
+inherit cros-workon toolchain-funcs cros-rust platform tmpfiles user udev
 
 DESCRIPTION="Bluetooth Tools and System Daemons for Linux"
 HOMEPAGE="https://android.googlesource.com/platform/packages/modules/Bluetooth"
@@ -47,7 +49,6 @@
 LICENSE="Apache-2.0"
 
 KEYWORDS="*"
-
 #
 # TODO(b/188819708)
 # Floss continues to depend on bluez for a few things:
@@ -63,15 +64,29 @@
 	dev-libs/tinyxml2:=
 	dev-libs/openssl:=
 	net-wireless/bluez
+	media-sound/liblc3
 "
 
 BDEPEND="
+	chromeos-base/minijail
+	dev-libs/flatbuffers
+	dev-libs/protobuf
 	dev-libs/tinyxml2:=
+	dev-util/cmake
+	dev-util/cxxbridge-cmd
 	net-wireless/floss_tools
+	dev-util/pdl-compiler
 "
 
-RDEPEND="${DEPEND}"
+RDEPEND="
+	${DEPEND}
+	flex_bluetooth? ( chromeos-base/flex_bluetooth )
+"
 
+# Nonstandard codecs are associated with 3P libs and must be contained in MMC
+REQUIRED_USE="
+	bt_nonstandard_codecs? ( floss_mmc )
+"
 DOCS=( README.md )
 
 src_unpack() {
@@ -110,6 +125,9 @@
 	# to using -lstdc++ which fails to link.
 	use asan && rustflags+=( '-lc++' )
 
+	# These may have license issues, be careful about enabling the flag.
+	use bt_nonstandard_codecs && rustflags+=( '-lavutil -lavcodec -lavformat' )
+
 	export EXTRA_RUSTFLAGS="${rustflags[*]}"
 	export TARGET_OS_VARIANT="chromeos"
 	export BINDGEN_EXTRA_CLANG_ARGS="${bindgen_extra_clang_args[*]}"
@@ -182,6 +200,14 @@
 		dolib.so "${OUT}/lib/libbluetooth.so"
 	fi
 
+	if use floss_mmc; then
+		dobin "${OUT}/mmc_service"
+	fi
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "${FILESDIR}/seccomp/floss-seccomp-${ARCH}.policy" floss-seccomp.policy
+
 	# Install D-Bus config
 	insinto /etc/dbus-1/system.d
 	doins "${FILESDIR}/dbus/org.chromium.bluetooth.conf"
@@ -207,14 +233,23 @@
 	# Install config files
 	insinto /etc/bluetooth/
 	doins "${FILESDIR}/config/bt_did.conf"
+	doins "${FILESDIR}/config/bt_stack.conf"
 	doins "${FILESDIR}/config/admin_policy.json"
+	doins "${FILESDIR}/config/interop_database.conf"
 
 	# Install udev rules
 	udev_dorules "${FILESDIR}/udev/99-floss-chown-properties.rules"
 }
 
+pkg_preinst() {
+	if use floss_mmc; then
+		enewuser mmc_service
+		enewgroup mmc_service
+	fi
+}
+
 platform_pkg_test() {
-	#local tests=(
+	local tests=(
 		#"bluetoothtbd_test"
 		#"bluetooth_test_common"
 		#"net_test_avrcp"
@@ -224,16 +259,22 @@
 		## TODO(b/178740721) - This test wasn't compiling. Need to fix
 		## this and re-enable it.
 		## "net_test_btpackets"
-	#)
+	)
+	if use floss_mmc; then
+		tests+=(
+			"hfp_lc3_mmc_encoder_test"
+			"hfp_lc3_mmc_decoder_test"
+		)
+	fi
 
 	# Run rust tests
 	# TODO(b/210127355) - Fix flaky tests and re-enable
 	# cros-rust_src_test
 
 	# TODO(b/190750167) - Re-enable once we're fully Bazel build
-	#local test_bin
-	#for test_bin in "${tests[@]}"; do
-		#platform_test run "${OUT}/${test_bin}"
-	#done
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
 	:
 }
diff --git a/net-wireless/floss/floss-9999.ebuild b/net-wireless/floss/floss-9999.ebuild
index e8e17fa..bd25535 100644
--- a/net-wireless/floss/floss-9999.ebuild
+++ b/net-wireless/floss/floss-9999.ebuild
@@ -22,7 +22,7 @@
 	"${S}/platform2/external/proto_logging"
 )
 CROS_WORKON_SUBTREE=("common-mk .gn" "" "" "")
-CROS_WORKON_EGIT_BRANCH=("main" "main" "upstream/master" "master")
+CROS_WORKON_EGIT_BRANCH=("main" "main" "upstream/main" "master")
 CROS_WORKON_OPTIONAL_CHECKOUT=(
 	""
 	"use !floss_upstream"
@@ -34,9 +34,11 @@
 
 # floss_upstream: Use AOSP upstream branch instead of default Chrome OS branch.
 # floss_strict: Treat warnings as errors
-IUSE="bt_dynlib floss_upstream floss_strict"
+IUSE="bt_dynlib floss_upstream floss_strict bt_nonstandard_codecs bt_leaudio flex_bluetooth"
+# floss_mmc: Contains SWBLC3/AAC in Minijail. Enable this by default once it is stable (b/294165109).
+IUSE+=" floss_mmc"
 
-inherit cros-workon toolchain-funcs cros-rust platform tmpfiles udev
+inherit cros-workon toolchain-funcs cros-rust platform tmpfiles user udev
 
 DESCRIPTION="Bluetooth Tools and System Daemons for Linux"
 HOMEPAGE="https://android.googlesource.com/platform/packages/modules/Bluetooth"
@@ -45,7 +47,6 @@
 LICENSE="Apache-2.0"
 
 KEYWORDS="~*"
-
 #
 # TODO(b/188819708)
 # Floss continues to depend on bluez for a few things:
@@ -61,15 +62,29 @@
 	dev-libs/tinyxml2:=
 	dev-libs/openssl:=
 	net-wireless/bluez
+	media-sound/liblc3
 "
 
 BDEPEND="
+	chromeos-base/minijail
+	dev-libs/flatbuffers
+	dev-libs/protobuf
 	dev-libs/tinyxml2:=
+	dev-util/cmake
+	dev-util/cxxbridge-cmd
 	net-wireless/floss_tools
+	dev-util/pdl-compiler
 "
 
-RDEPEND="${DEPEND}"
+RDEPEND="
+	${DEPEND}
+	flex_bluetooth? ( chromeos-base/flex_bluetooth )
+"
 
+# Nonstandard codecs are associated with 3P libs and must be contained in MMC
+REQUIRED_USE="
+	bt_nonstandard_codecs? ( floss_mmc )
+"
 DOCS=( README.md )
 
 src_unpack() {
@@ -108,6 +123,9 @@
 	# to using -lstdc++ which fails to link.
 	use asan && rustflags+=( '-lc++' )
 
+	# These may have license issues, be careful about enabling the flag.
+	use bt_nonstandard_codecs && rustflags+=( '-lavutil -lavcodec -lavformat' )
+
 	export EXTRA_RUSTFLAGS="${rustflags[*]}"
 	export TARGET_OS_VARIANT="chromeos"
 	export BINDGEN_EXTRA_CLANG_ARGS="${bindgen_extra_clang_args[*]}"
@@ -180,6 +198,14 @@
 		dolib.so "${OUT}/lib/libbluetooth.so"
 	fi
 
+	if use floss_mmc; then
+		dobin "${OUT}/mmc_service"
+	fi
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "${FILESDIR}/seccomp/floss-seccomp-${ARCH}.policy" floss-seccomp.policy
+
 	# Install D-Bus config
 	insinto /etc/dbus-1/system.d
 	doins "${FILESDIR}/dbus/org.chromium.bluetooth.conf"
@@ -205,14 +231,23 @@
 	# Install config files
 	insinto /etc/bluetooth/
 	doins "${FILESDIR}/config/bt_did.conf"
+	doins "${FILESDIR}/config/bt_stack.conf"
 	doins "${FILESDIR}/config/admin_policy.json"
+	doins "${FILESDIR}/config/interop_database.conf"
 
 	# Install udev rules
 	udev_dorules "${FILESDIR}/udev/99-floss-chown-properties.rules"
 }
 
+pkg_preinst() {
+	if use floss_mmc; then
+		enewuser mmc_service
+		enewgroup mmc_service
+	fi
+}
+
 platform_pkg_test() {
-	#local tests=(
+	local tests=(
 		#"bluetoothtbd_test"
 		#"bluetooth_test_common"
 		#"net_test_avrcp"
@@ -222,16 +257,22 @@
 		## TODO(b/178740721) - This test wasn't compiling. Need to fix
 		## this and re-enable it.
 		## "net_test_btpackets"
-	#)
+	)
+	if use floss_mmc; then
+		tests+=(
+			"hfp_lc3_mmc_encoder_test"
+			"hfp_lc3_mmc_decoder_test"
+		)
+	fi
 
 	# Run rust tests
 	# TODO(b/210127355) - Fix flaky tests and re-enable
 	# cros-rust_src_test
 
 	# TODO(b/190750167) - Re-enable once we're fully Bazel build
-	#local test_bin
-	#for test_bin in "${tests[@]}"; do
-		#platform_test run "${OUT}/${test_bin}"
-	#done
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
 	:
 }
diff --git a/net-wireless/floss_tools/floss_tools-0.0.1-r2295.ebuild b/net-wireless/floss_tools/floss_tools-0.0.1-r2960.ebuild
similarity index 79%
rename from net-wireless/floss_tools/floss_tools-0.0.1-r2295.ebuild
rename to net-wireless/floss_tools/floss_tools-0.0.1-r2960.ebuild
index 3dcd832..4b231ec 100644
--- a/net-wireless/floss_tools/floss_tools-0.0.1-r2295.ebuild
+++ b/net-wireless/floss_tools/floss_tools-0.0.1-r2960.ebuild
@@ -3,8 +3,8 @@
 
 EAPI="7"
 
-CROS_WORKON_COMMIT=("22d6d4ca8b0910eb812b15f2216cb44e9c7a2483" "c8553e8ae9c639bd5862e9a27ba9cf7b78cb86e4" "7b1d3570f892f4869f955d277509f40bf75b60dc" "a7d6a7cd435acb9fd405f96b83ff5e43f8cc966f")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "29cb544d00c178fc2726937ae2c43b92c3d26e68" "e7482e5541cbd00c6b5dfd7b02e6283c7c71eadf" "e65e1a07161a4bd8d6aef57c91726d815fff444f")
+CROS_WORKON_COMMIT=("63150342c81b7d2c6e55b02852c0837a782f27f6" "2b34585b049b7631adadabf07791f850d5bfb13f" "ac9bc7b5de05ea73dfd9a732d4ac83a88de40916" "a7d6a7cd435acb9fd405f96b83ff5e43f8cc966f")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "07db639a32655a8f9a570bfa340fcb604a92366d" "0ab5ab31e04e6acb1a36c06e9572d3bc6b6e698b" "e65e1a07161a4bd8d6aef57c91726d815fff444f")
 CROS_WORKON_PROJECT=(
 	"chromiumos/platform2"
 	"aosp/platform/packages/modules/Bluetooth"
@@ -55,6 +55,8 @@
 	dev-libs/tinyxml2
 	chromeos-base/libchrome
 	dev-libs/flatbuffers
+	sys-devel/bison
+	sys-devel/flex
 "
 RDEPEND="${DEPEND}"
 
diff --git a/net-wireless/floss_tools/floss_tools-9999.ebuild b/net-wireless/floss_tools/floss_tools-9999.ebuild
index 209387a..5f8f3e1 100644
--- a/net-wireless/floss_tools/floss_tools-9999.ebuild
+++ b/net-wireless/floss_tools/floss_tools-9999.ebuild
@@ -53,6 +53,8 @@
 	dev-libs/tinyxml2
 	chromeos-base/libchrome
 	dev-libs/flatbuffers
+	sys-devel/bison
+	sys-devel/flex
 "
 RDEPEND="${DEPEND}"
 
diff --git a/sys-apps/cecservice/cecservice-0.0.2-r49.ebuild b/sys-apps/cecservice/cecservice-0.0.2-r111.ebuild
similarity index 83%
rename from sys-apps/cecservice/cecservice-0.0.2-r49.ebuild
rename to sys-apps/cecservice/cecservice-0.0.2-r111.ebuild
index 9940791..9a1b652 100644
--- a/sys-apps/cecservice/cecservice-0.0.2-r49.ebuild
+++ b/sys-apps/cecservice/cecservice-0.0.2-r111.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT="424149d2a083ff5213897ca292ab4f986f0b58c0"
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "209ce457a63b7b2e1d3f5d0e89e38e508878e43e")
+CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6" "9c976c7a0d8acd768ab2185b3ac76f01357677af")
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_SUBTREE=("common-mk .gn cecservice")
diff --git a/sys-apps/mosys/mosys-1.2.3-r1567.ebuild b/sys-apps/mosys/mosys-1.2.3-r1633.ebuild
similarity index 71%
rename from sys-apps/mosys/mosys-1.2.3-r1567.ebuild
rename to sys-apps/mosys/mosys-1.2.3-r1633.ebuild
index 4efb78b..ba5fb47 100644
--- a/sys-apps/mosys/mosys-1.2.3-r1567.ebuild
+++ b/sys-apps/mosys/mosys-1.2.3-r1633.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 
-CROS_WORKON_COMMIT=("424149d2a083ff5213897ca292ab4f986f0b58c0" "01c6b5797da9c53fd68667519329299df8cb0a34")
-CROS_WORKON_TREE=("1647a468f15f85e89d45c799e27359e3e664c67b" "931aa1e7878cce1c0b73e2e4c9fbb7c66017d28f")
+CROS_WORKON_COMMIT=("8b6e11a069e490c761cdab7ab3ff59434806cd9c" "507f6e1e983df5fd04863f1bfeaa40f566b1df34")
+CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "abdfa83348ddbb4c1c595bc0df043b1539bd4f17")
 CROS_WORKON_PROJECT=(
 	"chromiumos/platform2"
 	"chromiumos/platform/mosys"
@@ -26,19 +26,15 @@
 WANT_LIBCHROME="no"
 WANT_LIBBRILLO="no"
 
-inherit meson flag-o-matic toolchain-funcs cros-unibuild cros-workon platform
+inherit meson flag-o-matic toolchain-funcs cros-workon platform
 
 PLATFORM_NAMES=(
-	"Asuka"
 	"Asurada"
-	"Caroline"
-	"Chell"
 	"Cherry"
 	"Corsola"
 	"Generic"
 	"Geralt"
 	"Gru"
-	"Herobrine"
 	"Kukui"
 	"Oak"
 	"Trogdor"
@@ -54,12 +50,17 @@
 LICENSE="BSD-Google BSD Apache-2.0 MIT ISC Unlicense"
 SLOT="0/0"
 KEYWORDS="*"
-IUSE="unibuild ${PLATFORM_NAME_USE_FLAGS[*]}"
-REQUIRED_USE="^^ ( ${PLATFORM_NAME_USE_FLAGS[*]} )"
+IUSE="
+	unibuild
+	${PLATFORM_NAME_USE_FLAGS[*]}
+"
+REQUIRED_USE="
+	unibuild
+	^^ ( ${PLATFORM_NAME_USE_FLAGS[*]} )
+"
 
 RDEPEND="
 	dev-util/cmocka
-	!unibuild? ( chromeos-base/minijail:= )
 "
 DEPEND="${RDEPEND}"
 
@@ -71,10 +72,7 @@
 
 src_configure() {
 	local platform_intf=""
-	local emesonargs=(
-		"$(meson_use unibuild)"
-		-Darch=$(tc-arch)
-	)
+	local emesonargs=()
 
 	for ((i = 0; i < ${#PLATFORM_NAMES[@]}; i++)); do
 		if use "${PLATFORM_NAME_USE_FLAGS[${i}]}"; then
@@ -102,8 +100,6 @@
 platform_pkg_test() {
 	local tests=(
 		file_unittest
-		math_unittest
-		vpd_unittest
 	)
 	local test_bin
 	for test_bin in "${tests[@]}"; do
@@ -114,9 +110,4 @@
 
 src_install() {
 	dosbin "${BUILD_DIR}/mains/mosys"
-
-	if ! use unibuild; then
-		insinto /usr/share/policy
-		newins "seccomp/mosys-seccomp-${ARCH}.policy" mosys-seccomp.policy
-	fi
 }
diff --git a/sys-apps/mosys/mosys-9999.ebuild b/sys-apps/mosys/mosys-9999.ebuild
index 0846865..109d1bd 100644
--- a/sys-apps/mosys/mosys-9999.ebuild
+++ b/sys-apps/mosys/mosys-9999.ebuild
@@ -24,19 +24,15 @@
 WANT_LIBCHROME="no"
 WANT_LIBBRILLO="no"
 
-inherit meson flag-o-matic toolchain-funcs cros-unibuild cros-workon platform
+inherit meson flag-o-matic toolchain-funcs cros-workon platform
 
 PLATFORM_NAMES=(
-	"Asuka"
 	"Asurada"
-	"Caroline"
-	"Chell"
 	"Cherry"
 	"Corsola"
 	"Generic"
 	"Geralt"
 	"Gru"
-	"Herobrine"
 	"Kukui"
 	"Oak"
 	"Trogdor"
@@ -52,12 +48,17 @@
 LICENSE="BSD-Google BSD Apache-2.0 MIT ISC Unlicense"
 SLOT="0/0"
 KEYWORDS="~*"
-IUSE="unibuild ${PLATFORM_NAME_USE_FLAGS[*]}"
-REQUIRED_USE="^^ ( ${PLATFORM_NAME_USE_FLAGS[*]} )"
+IUSE="
+	unibuild
+	${PLATFORM_NAME_USE_FLAGS[*]}
+"
+REQUIRED_USE="
+	unibuild
+	^^ ( ${PLATFORM_NAME_USE_FLAGS[*]} )
+"
 
 RDEPEND="
 	dev-util/cmocka
-	!unibuild? ( chromeos-base/minijail:= )
 "
 DEPEND="${RDEPEND}"
 
@@ -69,10 +70,7 @@
 
 src_configure() {
 	local platform_intf=""
-	local emesonargs=(
-		"$(meson_use unibuild)"
-		-Darch=$(tc-arch)
-	)
+	local emesonargs=()
 
 	for ((i = 0; i < ${#PLATFORM_NAMES[@]}; i++)); do
 		if use "${PLATFORM_NAME_USE_FLAGS[${i}]}"; then
@@ -100,8 +98,6 @@
 platform_pkg_test() {
 	local tests=(
 		file_unittest
-		math_unittest
-		vpd_unittest
 	)
 	local test_bin
 	for test_bin in "${tests[@]}"; do
@@ -112,9 +108,4 @@
 
 src_install() {
 	dosbin "${BUILD_DIR}/mains/mosys"
-
-	if ! use unibuild; then
-		insinto /usr/share/policy
-		newins "seccomp/mosys-seccomp-${ARCH}.policy" mosys-seccomp.policy
-	fi
 }